brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 088739e Raw
130 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals2; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal  -attributor-annotate-decl-cs  -S < %s | FileCheck %s --check-prefixes=CHECK,TUNIT3; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal  -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,CGSCC4 5define dso_local void @entry(i1 %cond) #0 {6; TUNIT-LABEL: define {{[^@]+}}@entry7; TUNIT-SAME: (i1 [[COND:%.*]]) #[[ATTR0:[0-9]+]] {8; TUNIT-NEXT:  entry:9; TUNIT-NEXT:    call void @foo(i1 [[COND]]) #[[ATTR1:[0-9]+]]10; TUNIT-NEXT:    call void @bar() #[[ATTR2:[0-9]+]]11; TUNIT-NEXT:    call void @qux() #[[ATTR1]]12; TUNIT-NEXT:    ret void13;14; CGSCC-LABEL: define {{[^@]+}}@entry15; CGSCC-SAME: (i1 noundef [[COND:%.*]]) #[[ATTR0:[0-9]+]] {16; CGSCC-NEXT:  entry:17; CGSCC-NEXT:    call void @foo(i1 noundef [[COND]]) #[[ATTR1:[0-9]+]]18; CGSCC-NEXT:    call void @bar() #[[ATTR2:[0-9]+]]19; CGSCC-NEXT:    call void @qux() #[[ATTR1]]20; CGSCC-NEXT:    ret void21;22entry:23  call void @foo(i1 %cond)24  call void @bar()25  call void @qux() #126  ret void27}28 29define internal void @foo(i1 %cond) #1 {30; TUNIT-LABEL: define {{[^@]+}}@foo31; TUNIT-SAME: (i1 [[COND:%.*]]) #[[ATTR1]] {32; TUNIT-NEXT:  entry:33; TUNIT-NEXT:    call void @baz(i1 [[COND]]) #[[ATTR1]]34; TUNIT-NEXT:    ret void35;36; CGSCC-LABEL: define {{[^@]+}}@foo37; CGSCC-SAME: (i1 noundef [[COND:%.*]]) #[[ATTR1]] {38; CGSCC-NEXT:  entry:39; CGSCC-NEXT:    call void @baz(i1 noundef [[COND]]) #[[ATTR1]]40; CGSCC-NEXT:    ret void41;42entry:43  call void @baz(i1 %cond)44  ret void45}46 47define internal void @bar() #2 {48; CHECK-LABEL: define {{[^@]+}}@bar49; CHECK-SAME: () #[[ATTR2:[0-9]+]] {50; CHECK-NEXT:  entry:51; CHECK-NEXT:    call void @baz(i1 noundef false) #[[ATTR2]]52; CHECK-NEXT:    ret void53;54entry:55  call void @baz(i1 0)56  ret void57}58 59define internal void @baz(i1 %Cond) {60; TUNIT-LABEL: define {{[^@]+}}@baz61; TUNIT-SAME: (i1 [[COND:%.*]]) #[[ATTR1]] {62; TUNIT-NEXT:  entry:63; TUNIT-NEXT:    br i1 [[COND]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]64; TUNIT:       if.then:65; TUNIT-NEXT:    call void @baz(i1 noundef false) #[[ATTR1]]66; TUNIT-NEXT:    br label [[IF_END]]67; TUNIT:       if.end:68; TUNIT-NEXT:    call void @qux() #[[ATTR1]]69; TUNIT-NEXT:    ret void70;71; CGSCC-LABEL: define {{[^@]+}}@baz72; CGSCC-SAME: (i1 noundef [[COND:%.*]]) #[[ATTR3:[0-9]+]] {73; CGSCC-NEXT:  entry:74; CGSCC-NEXT:    br i1 [[COND]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]75; CGSCC:       if.then:76; CGSCC-NEXT:    call void @baz(i1 noundef false) #[[ATTR3]]77; CGSCC-NEXT:    br label [[IF_END]]78; CGSCC:       if.end:79; CGSCC-NEXT:    call void @qux() #[[ATTR3]]80; CGSCC-NEXT:    ret void81;82entry:83  %tobool = icmp ne i1 %Cond, 084  br i1 %tobool, label %if.then, label %if.end85 86if.then:87  call void @baz(i1 0)88  br label %if.end89 90if.end:91  call void @qux()92  ret void93}94 95define internal void @qux() {96; TUNIT-LABEL: define {{[^@]+}}@qux97; TUNIT-SAME: () #[[ATTR1]] {98; TUNIT-NEXT:  entry:99; TUNIT-NEXT:    call void @call() #[[ATTR2]]100; TUNIT-NEXT:    ret void101;102; CGSCC-LABEL: define {{[^@]+}}@qux() {103; CGSCC-NEXT:  entry:104; CGSCC-NEXT:    call void @call() #[[ATTR2]]105; CGSCC-NEXT:    ret void106;107entry:108  call void @call()109  ret void110}111 112declare void @call() #3113 114attributes #0 = { "llvm.assume"="A" }115attributes #1 = { "llvm.assume"="B" }116attributes #2 = { "llvm.assume"="B,C" }117attributes #3 = { "llvm.assume"="B,C,A" }118;.119; TUNIT: attributes #[[ATTR0]] = { "llvm.assume"="A" }120; TUNIT: attributes #[[ATTR1]] = { "llvm.assume"="A,B" }121; TUNIT: attributes #[[ATTR2]] = { "llvm.assume"="A,B,C" }122; TUNIT: attributes #[[ATTR3:[0-9]+]] = { "llvm.assume"="B,C,A" }123;.124; CGSCC: attributes #[[ATTR0]] = { "llvm.assume"="A" }125; CGSCC: attributes #[[ATTR1]] = { "llvm.assume"="A,B" }126; CGSCC: attributes #[[ATTR2]] = { "llvm.assume"="A,B,C" }127; CGSCC: attributes #[[ATTR3]] = { "llvm.assume"="B" }128; CGSCC: attributes #[[ATTR4:[0-9]+]] = { "llvm.assume"="B,C,A" }129;.130