96 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt %s -mtriple=arm64-apple-macosx -passes="default<O3>" -inline-threshold=2 -inline-call-penalty=5 -S | FileCheck %s3 4declare i64 @llvm.objectsize.i64.p0(ptr, i1, i1, i1)5declare ptr @__memcpy_chk(ptr, ptr, i64, i64)6declare ptr @__memmove_chk(ptr, ptr, i64, i64)7declare ptr @__mempcpy_chk(ptr, ptr, i64, i64)8declare ptr @__memset_chk(ptr, i32, i64, i64)9 10define void @callee_memcpy(ptr %dst, ptr %src, i64 %size) {11; CHECK-LABEL: define void @callee_memcpy12; CHECK-SAME: (ptr [[DST:%.*]], ptr readonly captures(none) [[SRC:%.*]], i64 [[SIZE:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {13; CHECK-NEXT: tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 [[DST]], ptr align 1 [[SRC]], i64 [[SIZE]], i1 false)14; CHECK-NEXT: ret void15;16 %objsize = call i64 @llvm.objectsize.i64.p0(ptr %dst, i1 false, i1 true, i1 false)17 %call.memcpy = call ptr @__memcpy_chk(ptr %dst, ptr %src, i64 %size, i64 %objsize)18 ret void19}20 21define void @callee_memmove(ptr %dst, ptr %src, i64 %size) {22; CHECK-LABEL: define void @callee_memmove23; CHECK-SAME: (ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[SIZE:%.*]]) local_unnamed_addr #[[ATTR1:[0-9]+]] {24; CHECK-NEXT: tail call void @llvm.memmove.p0.p0.i64(ptr align 1 [[DST]], ptr align 1 [[SRC]], i64 [[SIZE]], i1 false)25; CHECK-NEXT: ret void26;27 %objsize = call i64 @llvm.objectsize.i64.p0(ptr %dst, i1 false, i1 true, i1 false)28 %call.memmove = call ptr @__memmove_chk(ptr %dst, ptr %src, i64 %size, i64 %objsize)29 ret void30}31 32define void @callee_mempcpy(ptr %dst, ptr %src, i64 %size) {33; CHECK-LABEL: define void @callee_mempcpy34; CHECK-SAME: (ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[SIZE:%.*]]) local_unnamed_addr #[[ATTR1]] {35; CHECK-NEXT: tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 [[DST]], ptr align 1 [[SRC]], i64 [[SIZE]], i1 false)36; CHECK-NEXT: ret void37;38 %objsize = call i64 @llvm.objectsize.i64.p0(ptr %dst, i1 false, i1 true, i1 false)39 %call.mempcpy = call ptr @__mempcpy_chk(ptr %dst, ptr %src, i64 %size, i64 %objsize)40 ret void41}42 43define void @callee_memset(ptr %dst, i64 %size) {44; CHECK-LABEL: define void @callee_memset45; CHECK-SAME: (ptr [[DST:%.*]], i64 [[SIZE:%.*]]) local_unnamed_addr #[[ATTR0]] {46; CHECK-NEXT: tail call void @llvm.memset.p0.i64(ptr align 1 [[DST]], i8 0, i64 [[SIZE]], i1 false)47; CHECK-NEXT: ret void48;49 %objsize = call i64 @llvm.objectsize.i64.p0(ptr %dst, i1 false, i1 true, i1 false)50 %call.mempcpy = call ptr @__memset_chk(ptr %dst, i32 0, i64 %size, i64 %objsize)51 ret void52}53 54define void @caller_memcpy(ptr %dst, ptr %src) {55; CHECK-LABEL: define void @caller_memcpy56; CHECK-SAME: (ptr [[DST:%.*]], ptr readonly captures(none) [[SRC:%.*]]) local_unnamed_addr #[[ATTR0]] {57; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[SRC]], align 158; CHECK-NEXT: store i32 [[TMP1]], ptr [[DST]], align 159; CHECK-NEXT: ret void60;61 call void @callee_memcpy(ptr %dst, ptr %src, i64 4)62 ret void63}64 65define void @caller_memmove(ptr %dst, ptr %src) {66; CHECK-LABEL: define void @caller_memmove67; CHECK-SAME: (ptr [[DST:%.*]], ptr [[SRC:%.*]]) local_unnamed_addr #[[ATTR1]] {68; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[SRC]], align 169; CHECK-NEXT: store i32 [[TMP1]], ptr [[DST]], align 170; CHECK-NEXT: ret void71;72 call void @callee_memmove(ptr %dst, ptr %src, i64 4)73 ret void74}75 76define void @caller_mempcpy(ptr %dst, ptr %src) {77; CHECK-LABEL: define void @caller_mempcpy78; CHECK-SAME: (ptr [[DST:%.*]], ptr [[SRC:%.*]]) local_unnamed_addr #[[ATTR1]] {79; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[SRC]], align 180; CHECK-NEXT: store i32 [[TMP1]], ptr [[DST]], align 181; CHECK-NEXT: ret void82;83 call void @callee_mempcpy(ptr %dst, ptr %src, i64 4)84 ret void85}86 87define void @caller_memset(ptr %dst) {88; CHECK-LABEL: define void @caller_memset89; CHECK-SAME: (ptr [[DST:%.*]]) local_unnamed_addr #[[ATTR0]] {90; CHECK-NEXT: store i32 0, ptr [[DST]], align 191; CHECK-NEXT: ret void92;93 call void @callee_memset(ptr %dst, i64 4)94 ret void95}96