1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals 2; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,TUNIT 3; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,CGSCC 4target datalayout = "E-m:e-i64:64-n32:64" 5target triple = "powerpc64le-unknown-linux" 6 7define void @test(i32 signext %n, i1 %arg) { 8; CHECK: Function Attrs: nofree norecurse nosync nounwind memory(none) 9; CHECK-LABEL: define {{[^@]+}}@test 10; CHECK-SAME: (i32 signext [[N:%.*]], i1 noundef [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 11; CHECK-NEXT: entry: 12; CHECK-NEXT: br i1 [[ARG]], label [[IF_THEN:%.*]], label [[IF_END:%.*]] 13; CHECK: if.then: 14; CHECK-NEXT: ret void 15; CHECK: if.end: 16; CHECK-NEXT: br i1 [[ARG]], label [[IF_THEN2:%.*]], label [[IF_END4:%.*]] 17; CHECK: if.then2: 18; CHECK-NEXT: unreachable 19; CHECK: if.end4: 20; CHECK-NEXT: switch i32 [[N]], label [[IF_ELSE14:%.*]] [ 21; CHECK-NEXT: i32 0, label [[IF_THEN9:%.*]] 22; CHECK-NEXT: i32 1, label [[IF_THEN12:%.*]] 23; CHECK-NEXT: ] 24; CHECK: if.then9: 25; CHECK-NEXT: unreachable 26; CHECK: if.then12: 27; CHECK-NEXT: unreachable 28; CHECK: if.else14: 29; CHECK-NEXT: br label [[DO_BODY:%.*]] 30; CHECK: do.body: 31; CHECK-NEXT: [[SCALE_0:%.*]] = phi ppc_fp128 [ 0xM3FF00000000000000000000000000000, [[IF_ELSE14]] ], [ [[SCALE_0]], [[DO_BODY]] ] 32; CHECK-NEXT: br i1 [[ARG]], label [[DO_BODY]], label [[IF_THEN33:%.*]] 33; CHECK: if.then33: 34; CHECK-NEXT: br i1 [[ARG]], label [[_ZN5BOOST4MATH4SIGNIGEEIRKT__EXIT30:%.*]], label [[COND_FALSE_I28:%.*]] 35; CHECK: cond.false.i28: 36; CHECK-NEXT: [[TMP0:%.*]] = bitcast ppc_fp128 [[SCALE_0]] to i128 37; CHECK-NEXT: [[TOBOOL_I26:%.*]] = icmp slt i128 [[TMP0]], 0 38; CHECK-NEXT: br label [[_ZN5BOOST4MATH4SIGNIGEEIRKT__EXIT30]] 39; CHECK: _ZN5boost4math4signIgEEiRKT_.exit30: 40; CHECK-NEXT: unreachable 41; 42 43entry: 44 br i1 %arg, label %if.then, label %if.end 45 46if.then: ; preds = %entry 47 ret void 48 49if.end: ; preds = %entry 50 br i1 %arg, label %if.then2, label %if.end4 51 52if.then2: ; preds = %if.end 53 unreachable 54 55if.end4: ; preds = %if.end 56 switch i32 %n, label %if.else14 [ 57 i32 0, label %if.then9 58 i32 1, label %if.then12 59 ] 60 61if.then9: ; preds = %if.end4 62 unreachable 63 64if.then12: ; preds = %if.end4 65 unreachable 66 67if.else14: ; preds = %if.end4 68 br label %do.body 69 70do.body: ; preds = %do.body, %if.else14 71 %scale.0 = phi ppc_fp128 [ 0xM3FF00000000000000000000000000000, %if.else14 ], [ %scale.0, %do.body ] 72 br i1 %arg, label %do.body, label %if.then33 73 74if.then33: ; preds = %do.body 75 br i1 %arg, label %_ZN5boost4math4signIgEEiRKT_.exit30, label %cond.false.i28 76 77cond.false.i28: ; preds = %if.then33 78 %0 = bitcast ppc_fp128 %scale.0 to i128 79 %tobool.i26 = icmp slt i128 %0, 0 80 br label %_ZN5boost4math4signIgEEiRKT_.exit30 81 82_ZN5boost4math4signIgEEiRKT_.exit30: ; preds = %cond.false.i28, %if.then33 83 unreachable 84} 85 86;. 87; CHECK: attributes #[[ATTR0]] = { nofree norecurse nosync nounwind memory(none) } 88;. 89;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 90; CGSCC: {{.*}} 91; TUNIT: {{.*}} 92