1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -passes='annotation2metadata' -pass-remarks-analysis='annotation-remarks' -S %s | FileCheck %s 3 4@.str = private unnamed_addr constant [10 x i8] c"_remarks1\00", section "llvm.metadata" 5@.str.1 = private unnamed_addr constant [6 x i8] c"ann.c\00", section "llvm.metadata" 6@.str.2 = private unnamed_addr constant [10 x i8] c"_remarks2\00", section "llvm.metadata" 7@llvm.global.annotations = appending global [8 x { ptr, ptr, ptr, i32 }] [ 8 { ptr, ptr, ptr, i32 } { ptr @test1, ptr @.str, ptr @.str.1, i32 2 }, 9 { ptr, ptr, ptr, i32 } { ptr @test1, ptr @.str.2, ptr @.str.1, i32 2 }, 10 { ptr, ptr, ptr, i32 } { ptr @test3, ptr @.str, ptr undef, i32 4 }, ; Invalid entry, make sure we do not crash. 11 { ptr, ptr, ptr, i32 } { ptr @test3, ptr undef, ptr @.str.1, i32 4 }, ; Invalid entry, make sure we do not crash. 12 { ptr, ptr, ptr, i32 } { ptr undef, ptr @.str, ptr @.str.1, i32 4 }, ; Invalid entry, make sure we do not crash. 13 { ptr, ptr, ptr, i32 } { ptr undef, ptr undef, ptr @.str.1, i32 4 }, ; Invalid entry, make sure we do not crash. 14 { ptr, ptr, ptr, i32 } { ptr undef, ptr undef, ptr undef, i32 300 }, ; Invalid entry, make sure we do not crash. 15 { ptr, ptr, ptr, i32 } { ptr @test3, ptr @.str, ptr @.str.1, i32 4 } 16 ], section "llvm.metadata" 17 18 19 20define void @test1(ptr %a) { 21; CHECK-LABEL: @test1( 22; CHECK-NEXT: entry: 23; CHECK-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 8, !annotation [[GROUP1:!.+]] 24; CHECK-NEXT: store ptr [[A:%.*]], ptr [[A_ADDR]], align 8, !annotation [[GROUP1]] 25; CHECK-NEXT: ret void, !annotation [[GROUP1]] 26; 27entry: 28 %a.addr = alloca ptr, align 8 29 store ptr %a, ptr %a.addr, align 8 30 ret void 31} 32 33define void @test2(ptr %a) { 34; CHECK-LABEL: @test2( 35; CHECK-NEXT: entry: 36; CHECK-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 8 37; CHECK-NEXT: store ptr [[A:%.*]], ptr [[A_ADDR]], align 8 38; CHECK-NEXT: ret void 39; 40entry: 41 %a.addr = alloca ptr, align 8 42 store ptr %a, ptr %a.addr, align 8 43 ret void 44} 45 46define void @test3(ptr %a) { 47; CHECK-LABEL: @test3( 48; CHECK-NEXT: entry: 49; CHECK-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 8, !annotation [[GROUP2:!.+]] 50; CHECK-NEXT: store ptr [[A:%.*]], ptr [[A_ADDR]], align 8, !annotation [[GROUP2]] 51; CHECK-NEXT: ret void, !annotation [[GROUP2]] 52; 53entry: 54 %a.addr = alloca ptr, align 8 55 store ptr %a, ptr %a.addr, align 8 56 ret void 57} 58 59; CHECK: [[GROUP1]] = !{!"_remarks1", !"_remarks2"} 60; CHECK-NEXT: [[GROUP2]] = !{!"_remarks1"} 61