122 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals2; REQUIRES: asserts3; RUN: opt -S -passes=attributor --attributor-seed-allow-list asd < %s | FileCheck %s --check-prefixes=CHECK_DISABLED4; RUN: opt -S -passes=attributor --attributor-seed-allow-list AAValueSimplify < %s | FileCheck %s --check-prefixes=CHECK_ENABLED5 6; RUN: opt -S -passes=attributor --attributor-function-seed-allow-list asd < %s | FileCheck %s --check-prefixes=CHECK_DISABLED_FUNCTION7 8; RUN: opt -S -passes=attributor --attributor-function-seed-allow-list range_use1 < %s | FileCheck %s --check-prefixes=CHECK_ENABLED_FUNCTION9 10 11 12 13target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"14 15; Function Attrs: nounwind uwtable16define internal i32 @range_test(i32 %a) #0 {17; CHECK_DISABLED: Function Attrs: noinline nounwind uwtable18; CHECK_DISABLED-LABEL: define {{[^@]+}}@range_test19; CHECK_DISABLED-SAME: (i32 [[A:%.*]]) #[[ATTR0:[0-9]+]] {20; CHECK_DISABLED-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[A]], 10021; CHECK_DISABLED-NEXT: [[TMP2:%.*]] = zext i1 [[TMP1]] to i3222; CHECK_DISABLED-NEXT: ret i32 [[TMP2]]23;24; CHECK_ENABLED: Function Attrs: noinline nounwind uwtable25; CHECK_ENABLED-LABEL: define {{[^@]+}}@range_test26; CHECK_ENABLED-SAME: (i32 [[A:%.*]]) #[[ATTR0:[0-9]+]] {27; CHECK_ENABLED-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[A]], 10028; CHECK_ENABLED-NEXT: [[TMP2:%.*]] = zext i1 [[TMP1]] to i3229; CHECK_ENABLED-NEXT: ret i32 [[TMP2]]30;31; CHECK_DISABLED_FUNCTION: Function Attrs: noinline nounwind uwtable32; CHECK_DISABLED_FUNCTION-LABEL: define {{[^@]+}}@range_test33; CHECK_DISABLED_FUNCTION-SAME: (i32 [[A:%.*]]) #[[ATTR0:[0-9]+]] {34; CHECK_DISABLED_FUNCTION-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[A]], 10035; CHECK_DISABLED_FUNCTION-NEXT: [[TMP2:%.*]] = zext i1 [[TMP1]] to i3236; CHECK_DISABLED_FUNCTION-NEXT: ret i32 [[TMP2]]37;38; CHECK_ENABLED_FUNCTION: Function Attrs: noinline nounwind uwtable39; CHECK_ENABLED_FUNCTION-LABEL: define {{[^@]+}}@range_test40; CHECK_ENABLED_FUNCTION-SAME: (i32 [[A:%.*]]) #[[ATTR0:[0-9]+]] {41; CHECK_ENABLED_FUNCTION-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[A]], 10042; CHECK_ENABLED_FUNCTION-NEXT: [[TMP2:%.*]] = zext i1 [[TMP1]] to i3243; CHECK_ENABLED_FUNCTION-NEXT: ret i32 [[TMP2]]44;45 %1 = icmp sgt i32 %a, 10046 %2 = zext i1 %1 to i3247 ret i32 %248}49 50; Function Attrs: nounwind uwtable51define i32 @range_use1() #0 {52; CHECK_DISABLED: Function Attrs: noinline nounwind uwtable53; CHECK_DISABLED-LABEL: define {{[^@]+}}@range_use154; CHECK_DISABLED-SAME: () #[[ATTR0]] {55; CHECK_DISABLED-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 noundef 123)56; CHECK_DISABLED-NEXT: ret i32 [[TMP1]]57;58; CHECK_ENABLED: Function Attrs: noinline nounwind uwtable59; CHECK_ENABLED-LABEL: define {{[^@]+}}@range_use160; CHECK_ENABLED-SAME: () #[[ATTR0]] {61; CHECK_ENABLED-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 noundef 123)62; CHECK_ENABLED-NEXT: ret i32 [[TMP1]]63;64; CHECK_DISABLED_FUNCTION: Function Attrs: noinline nounwind uwtable65; CHECK_DISABLED_FUNCTION-LABEL: define {{[^@]+}}@range_use166; CHECK_DISABLED_FUNCTION-SAME: () #[[ATTR0]] {67; CHECK_DISABLED_FUNCTION-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 noundef 123)68; CHECK_DISABLED_FUNCTION-NEXT: ret i32 [[TMP1]]69;70; CHECK_ENABLED_FUNCTION: Function Attrs: noinline norecurse nounwind uwtable71; CHECK_ENABLED_FUNCTION-LABEL: define {{[^@]+}}@range_use172; CHECK_ENABLED_FUNCTION-SAME: () #[[ATTR1:[0-9]+]] {73; CHECK_ENABLED_FUNCTION-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 noundef 123) #[[ATTR2:[0-9]+]]74; CHECK_ENABLED_FUNCTION-NEXT: ret i32 [[TMP1]]75;76 %1 = call i32 @range_test(i32 123)77 ret i32 %178}79 80; Function Attrs: nounwind uwtable81define i32 @range_use2() #0 {82; CHECK_DISABLED: Function Attrs: noinline nounwind uwtable83; CHECK_DISABLED-LABEL: define {{[^@]+}}@range_use284; CHECK_DISABLED-SAME: () #[[ATTR0]] {85; CHECK_DISABLED-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 noundef 123)86; CHECK_DISABLED-NEXT: ret i32 [[TMP1]]87;88; CHECK_ENABLED: Function Attrs: noinline nounwind uwtable89; CHECK_ENABLED-LABEL: define {{[^@]+}}@range_use290; CHECK_ENABLED-SAME: () #[[ATTR0]] {91; CHECK_ENABLED-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 noundef 123)92; CHECK_ENABLED-NEXT: ret i32 [[TMP1]]93;94; CHECK_DISABLED_FUNCTION: Function Attrs: noinline nounwind uwtable95; CHECK_DISABLED_FUNCTION-LABEL: define {{[^@]+}}@range_use296; CHECK_DISABLED_FUNCTION-SAME: () #[[ATTR0]] {97; CHECK_DISABLED_FUNCTION-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 noundef 123)98; CHECK_DISABLED_FUNCTION-NEXT: ret i32 [[TMP1]]99;100; CHECK_ENABLED_FUNCTION: Function Attrs: noinline nounwind uwtable101; CHECK_ENABLED_FUNCTION-LABEL: define {{[^@]+}}@range_use2102; CHECK_ENABLED_FUNCTION-SAME: () #[[ATTR0]] {103; CHECK_ENABLED_FUNCTION-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 noundef 123)104; CHECK_ENABLED_FUNCTION-NEXT: ret i32 [[TMP1]]105;106 %1 = call i32 @range_test(i32 123)107 ret i32 %1108}109 110attributes #0 = { nounwind uwtable noinline }111;.112; CHECK_DISABLED: attributes #[[ATTR0]] = { noinline nounwind uwtable }113;.114; CHECK_ENABLED: attributes #[[ATTR0]] = { noinline nounwind uwtable }115;.116; CHECK_DISABLED_FUNCTION: attributes #[[ATTR0]] = { noinline nounwind uwtable }117;.118; CHECK_ENABLED_FUNCTION: attributes #[[ATTR0]] = { noinline nounwind uwtable }119; CHECK_ENABLED_FUNCTION: attributes #[[ATTR1]] = { noinline norecurse nounwind uwtable }120; CHECK_ENABLED_FUNCTION: attributes #[[ATTR2]] = { nounwind }121;.122