88
99declare void @bar ()
1010
11+ ;.
12+ ; INSTRUMENT: @foo_alias = weak_odr unnamed_addr alias void (i32, ptr), ptr @foo
1113;.
1214; LOWERING: @__llvm_ctx_profile_callsite = external hidden thread_local global ptr
1315; LOWERING: @__llvm_ctx_profile_expected_callee = external hidden thread_local global ptr
@@ -19,6 +21,8 @@ declare void @bar()
1921; LOWERING: @[[GLOB5:[0-9]+]] = internal global { ptr, ptr, ptr, ptr, i8 } zeroinitializer
2022; LOWERING: @[[GLOB6:[0-9]+]] = internal global { ptr, ptr, ptr, ptr, i8 } zeroinitializer
2123; LOWERING: @[[GLOB7:[0-9]+]] = internal global { ptr, ptr, ptr, ptr, i8 } { ptr null, ptr null, ptr inttoptr (i64 1 to ptr), ptr null, i8 0 }
24+ ; LOWERING: @[[GLOB8:[0-9]+]] = internal global { ptr, ptr, ptr, ptr, i8 } zeroinitializer
25+ ; LOWERING: @foo_alias = weak_odr unnamed_addr alias void (i32, ptr), ptr @foo
2226;.
2327define void @foo (i32 %a , ptr %fct ) {
2428; INSTRUMENT-LABEL: define void @foo(
@@ -335,6 +339,41 @@ define void @unreachable() {
335339;
336340 unreachable
337341}
342+
343+ @foo_alias = weak_odr unnamed_addr alias void (i32 , ptr ), ptr @foo
344+
345+ define void @call_alias (ptr %a ) {
346+ ; INSTRUMENT-LABEL: define void @call_alias(
347+ ; INSTRUMENT-SAME: ptr [[A:%.*]]) {
348+ ; INSTRUMENT-NEXT: entry:
349+ ; INSTRUMENT-NEXT: call void @llvm.instrprof.increment(ptr @call_alias, i64 742261418966908927, i32 1, i32 0)
350+ ; INSTRUMENT-NEXT: call void @llvm.instrprof.callsite(ptr @call_alias, i64 742261418966908927, i32 1, i32 0, ptr @foo_alias)
351+ ; INSTRUMENT-NEXT: call void @foo_alias(i32 0, ptr [[A]])
352+ ; INSTRUMENT-NEXT: ret void
353+ ;
354+ ; LOWERING-LABEL: define void @call_alias(
355+ ; LOWERING-SAME: ptr [[A:%.*]]) !guid [[META10:![0-9]+]] {
356+ ; LOWERING-NEXT: entry:
357+ ; LOWERING-NEXT: [[TMP0:%.*]] = call ptr @__llvm_ctx_profile_get_context(ptr @[[GLOB8]], ptr @call_alias, i64 2172368043968427688, i32 1, i32 1)
358+ ; LOWERING-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[TMP0]] to i64
359+ ; LOWERING-NEXT: [[TMP2:%.*]] = and i64 [[TMP1]], 1
360+ ; LOWERING-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @__llvm_ctx_profile_expected_callee)
361+ ; LOWERING-NEXT: [[TMP4:%.*]] = getelementptr ptr, ptr [[TMP3]], i64 [[TMP2]]
362+ ; LOWERING-NEXT: [[TMP5:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @__llvm_ctx_profile_callsite)
363+ ; LOWERING-NEXT: [[TMP6:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[TMP2]]
364+ ; LOWERING-NEXT: [[TMP7:%.*]] = and i64 [[TMP1]], -2
365+ ; LOWERING-NEXT: [[TMP8:%.*]] = inttoptr i64 [[TMP7]] to ptr
366+ ; LOWERING-NEXT: store volatile ptr @foo_alias, ptr [[TMP4]], align 8
367+ ; LOWERING-NEXT: [[TMP9:%.*]] = getelementptr { { i64, ptr, i32, i32 }, [1 x i64], [1 x ptr] }, ptr [[TMP0]], i32 0, i32 2, i32 0
368+ ; LOWERING-NEXT: store volatile ptr [[TMP9]], ptr [[TMP6]], align 8
369+ ; LOWERING-NEXT: call void @foo_alias(i32 0, ptr [[A]])
370+ ; LOWERING-NEXT: call void @__llvm_ctx_profile_release_context(ptr @[[GLOB8]])
371+ ; LOWERING-NEXT: ret void
372+ ;
373+ entry:
374+ call void @foo_alias (i32 0 , ptr %a )
375+ ret void
376+ }
338377;.
339378; LOWERING: attributes #[[ATTR0]] = { noreturn }
340379; LOWERING: attributes #[[ATTR1:[0-9]+]] = { nounwind }
@@ -353,4 +392,5 @@ define void @unreachable() {
353392; LOWERING: [[META7]] = !{i64 -4680624981836544329}
354393; LOWERING: [[META8]] = !{i64 5519225910966780583}
355394; LOWERING: [[META9]] = !{i64 -565652589829076809}
395+ ; LOWERING: [[META10]] = !{i64 2172368043968427688}
356396;.
0 commit comments