Skip to content

Commit 1228bec

Browse files
authored
[FuncAttrs] Deduce noundef attributes for return values (#76553)
This patch deduces `noundef` attributes for return values. IIUC, a function returns `noundef` values iff all of its return values are guaranteed not to be `undef` or `poison`. Definition of `noundef` from LangRef: ``` noundef This attribute applies to parameters and return values. If the value representation contains any undefined or poison bits, the behavior is undefined. Note that this does not refer to padding introduced by the type’s storage representation. ``` Alive2: https://alive2.llvm.org/ce/z/g8Eis6 Compile-time impact: http://llvm-compile-time-tracker.com/compare.php?from=30dcc33c4ea3ab50397a7adbe85fe977d4a400bd&to=c5e8738d4bfbf1e97e3f455fded90b791f223d74&stat=instructions:u |stage1-O3|stage1-ReleaseThinLTO|stage1-ReleaseLTO-g|stage1-O0-g|stage2-O3|stage2-O0-g|stage2-clang| |--|--|--|--|--|--|--| |+0.01%|+0.01%|-0.01%|+0.01%|+0.03%|-0.04%|+0.01%| The motivation of this patch is to reduce the number of `freeze` insts and enable more optimizations.
1 parent c7c912c commit 1228bec

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+317
-128
lines changed

clang/test/CodeGen/X86/ms-x86-intrinsics.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ unsigned __int64 test__shiftleft128(unsigned __int64 l, unsigned __int64 h,
145145
unsigned char d) {
146146
return __shiftleft128(l, h, d);
147147
}
148-
// CHECK-X64-LABEL: define dso_local i64 @test__shiftleft128(i64 noundef %l, i64 noundef %h, i8 noundef %d)
148+
// CHECK-X64-LABEL: define dso_local noundef i64 @test__shiftleft128(i64 noundef %l, i64 noundef %h, i8 noundef %d)
149149
// CHECK-X64: = zext i8 %{{.*}} to i64
150150
// CHECK-X64: = tail call i64 @llvm.fshl.i64(i64 %h, i64 %l, i64 %{{.*}})
151151
// CHECK-X64: ret i64 %
@@ -154,7 +154,7 @@ unsigned __int64 test__shiftright128(unsigned __int64 l, unsigned __int64 h,
154154
unsigned char d) {
155155
return __shiftright128(l, h, d);
156156
}
157-
// CHECK-X64-LABEL: define dso_local i64 @test__shiftright128(i64 noundef %l, i64 noundef %h, i8 noundef %d)
157+
// CHECK-X64-LABEL: define dso_local noundef i64 @test__shiftright128(i64 noundef %l, i64 noundef %h, i8 noundef %d)
158158
// CHECK-X64: = zext i8 %{{.*}} to i64
159159
// CHECK-X64: = tail call i64 @llvm.fshr.i64(i64 %h, i64 %l, i64 %{{.*}})
160160
// CHECK-X64: ret i64 %

clang/test/CodeGen/arm-bf16-params-returns.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
__bf16 test_ret_bf16(__bf16 v) {
1212
return v;
1313
}
14-
// CHECK32-HARD: define{{.*}} arm_aapcs_vfpcc bfloat @test_ret_bf16(bfloat noundef returned %v) {{.*}} {
14+
// CHECK32-HARD: define{{.*}} arm_aapcs_vfpcc noundef bfloat @test_ret_bf16(bfloat noundef returned %v) {{.*}} {
1515
// CHECK32-HARD: ret bfloat %v
1616
// CHECK32-SOFTFP: define{{.*}} bfloat @test_ret_bf16(bfloat noundef returned %v) {{.*}} {
1717
// CHECK32-SOFTFP: ret bfloat %v
@@ -23,11 +23,11 @@ __bf16 test_ret_bf16(__bf16 v) {
2323
bfloat16x4_t test_ret_bf16x4_t(bfloat16x4_t v) {
2424
return v;
2525
}
26-
// CHECK32-HARD: define{{.*}} arm_aapcs_vfpcc <4 x bfloat> @test_ret_bf16x4_t(<4 x bfloat> noundef returned %v) {{.*}} {
26+
// CHECK32-HARD: define{{.*}} arm_aapcs_vfpcc noundef <4 x bfloat> @test_ret_bf16x4_t(<4 x bfloat> noundef returned %v) {{.*}} {
2727
// CHECK32-HARD: ret <4 x bfloat> %v
28-
// CHECK32-SOFTFP: define{{.*}} <2 x i32> @test_ret_bf16x4_t(<2 x i32> [[V0:.*]]) {{.*}} {
28+
// CHECK32-SOFTFP: define{{.*}} noundef <2 x i32> @test_ret_bf16x4_t(<2 x i32> [[V0:.*]]) {{.*}} {
2929
// CHECK32-SOFTFP: ret <2 x i32> %v
30-
// CHECK64NEON: define{{.*}} <4 x bfloat> @test_ret_bf16x4_t(<4 x bfloat> noundef returned %v) {{.*}} {
30+
// CHECK64NEON: define{{.*}} noundef <4 x bfloat> @test_ret_bf16x4_t(<4 x bfloat> noundef returned %v) {{.*}} {
3131
// CHECK64NEON: ret <4 x bfloat> %v
3232

3333
#endif

clang/test/CodeGen/arm-vector_type-params-returns.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#endif
2828

2929
// function return types
30-
// CHECK-LABEL: define dso_local <8 x half> @test_ret_v8f16(
30+
// CHECK-LABEL: define dso_local noundef <8 x half> @test_ret_v8f16(
3131
// CHECK-SAME: <8 x half> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
3232
// CHECK-NEXT: entry:
3333
// CHECK-NEXT: ret <8 x half> [[V]]
@@ -36,7 +36,7 @@ float16x8_t test_ret_v8f16(float16x8_t v) {
3636
return v;
3737
}
3838

39-
// CHECK-LABEL: define dso_local <4 x float> @test_ret_v4f32(
39+
// CHECK-LABEL: define dso_local noundef <4 x float> @test_ret_v4f32(
4040
// CHECK-SAME: <4 x float> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
4141
// CHECK-NEXT: entry:
4242
// CHECK-NEXT: ret <4 x float> [[V]]
@@ -45,7 +45,7 @@ float32x4_t test_ret_v4f32(float32x4_t v) {
4545
return v;
4646
}
4747

48-
// CHECK-LABEL: define dso_local <2 x double> @test_ret_v2f64(
48+
// CHECK-LABEL: define dso_local noundef <2 x double> @test_ret_v2f64(
4949
// CHECK-SAME: <2 x double> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
5050
// CHECK-NEXT: entry:
5151
// CHECK-NEXT: ret <2 x double> [[V]]
@@ -54,7 +54,7 @@ float64x2_t test_ret_v2f64(float64x2_t v) {
5454
return v;
5555
}
5656

57-
// CHECK-LABEL: define dso_local <8 x bfloat> @test_ret_v8bf16(
57+
// CHECK-LABEL: define dso_local noundef <8 x bfloat> @test_ret_v8bf16(
5858
// CHECK-SAME: <8 x bfloat> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
5959
// CHECK-NEXT: entry:
6060
// CHECK-NEXT: ret <8 x bfloat> [[V]]
@@ -63,7 +63,7 @@ bfloat16x8_t test_ret_v8bf16(bfloat16x8_t v) {
6363
return v;
6464
}
6565

66-
// CHECK-LABEL: define dso_local <16 x i8> @test_ret_v16s8(
66+
// CHECK-LABEL: define dso_local noundef <16 x i8> @test_ret_v16s8(
6767
// CHECK-SAME: <16 x i8> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
6868
// CHECK-NEXT: entry:
6969
// CHECK-NEXT: ret <16 x i8> [[V]]
@@ -72,7 +72,7 @@ int8x16_t test_ret_v16s8(int8x16_t v) {
7272
return v;
7373
}
7474

75-
// CHECK-LABEL: define dso_local <8 x i16> @test_ret_v8s16(
75+
// CHECK-LABEL: define dso_local noundef <8 x i16> @test_ret_v8s16(
7676
// CHECK-SAME: <8 x i16> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
7777
// CHECK-NEXT: entry:
7878
// CHECK-NEXT: ret <8 x i16> [[V]]
@@ -81,7 +81,7 @@ int16x8_t test_ret_v8s16(int16x8_t v) {
8181
return v;
8282
}
8383

84-
// CHECK-LABEL: define dso_local <4 x i32> @test_ret_v32s4(
84+
// CHECK-LABEL: define dso_local noundef <4 x i32> @test_ret_v32s4(
8585
// CHECK-SAME: <4 x i32> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
8686
// CHECK-NEXT: entry:
8787
// CHECK-NEXT: ret <4 x i32> [[V]]
@@ -90,7 +90,7 @@ int32x4_t test_ret_v32s4(int32x4_t v) {
9090
return v;
9191
}
9292

93-
// CHECK-LABEL: define dso_local <2 x i64> @test_ret_v64s2(
93+
// CHECK-LABEL: define dso_local noundef <2 x i64> @test_ret_v64s2(
9494
// CHECK-SAME: <2 x i64> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
9595
// CHECK-NEXT: entry:
9696
// CHECK-NEXT: ret <2 x i64> [[V]]
@@ -99,7 +99,7 @@ int64x2_t test_ret_v64s2(int64x2_t v) {
9999
return v;
100100
}
101101

102-
// CHECK-LABEL: define dso_local <16 x i8> @test_ret_v16u8(
102+
// CHECK-LABEL: define dso_local noundef <16 x i8> @test_ret_v16u8(
103103
// CHECK-SAME: <16 x i8> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
104104
// CHECK-NEXT: entry:
105105
// CHECK-NEXT: ret <16 x i8> [[V]]
@@ -108,7 +108,7 @@ uint8x16_t test_ret_v16u8(uint8x16_t v) {
108108
return v;
109109
}
110110

111-
// CHECK-LABEL: define dso_local <8 x i16> @test_ret_v8u16(
111+
// CHECK-LABEL: define dso_local noundef <8 x i16> @test_ret_v8u16(
112112
// CHECK-SAME: <8 x i16> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
113113
// CHECK-NEXT: entry:
114114
// CHECK-NEXT: ret <8 x i16> [[V]]
@@ -117,7 +117,7 @@ uint16x8_t test_ret_v8u16(uint16x8_t v) {
117117
return v;
118118
}
119119

120-
// CHECK-LABEL: define dso_local <4 x i32> @test_ret_v32u4(
120+
// CHECK-LABEL: define dso_local noundef <4 x i32> @test_ret_v32u4(
121121
// CHECK-SAME: <4 x i32> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
122122
// CHECK-NEXT: entry:
123123
// CHECK-NEXT: ret <4 x i32> [[V]]
@@ -126,7 +126,7 @@ uint32x4_t test_ret_v32u4(uint32x4_t v) {
126126
return v;
127127
}
128128

129-
// CHECK-LABEL: define dso_local <2 x i64> @test_ret_v64u2(
129+
// CHECK-LABEL: define dso_local noundef <2 x i64> @test_ret_v64u2(
130130
// CHECK-SAME: <2 x i64> noundef returned [[V:%.*]]) local_unnamed_addr #[[ATTR0]] {
131131
// CHECK-NEXT: entry:
132132
// CHECK-NEXT: ret <2 x i64> [[V]]

clang/test/CodeGen/ifunc.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ void* goo_ifunc(void) {
5151
// CHECK: call i32 @foo(i32
5252
// CHECK: call void @goo()
5353

54-
// SAN: define internal nonnull ptr @foo_ifunc() #[[#FOO_IFUNC:]] {
55-
// MACSAN: define internal nonnull ptr @foo_ifunc() #[[#FOO_IFUNC:]] {
54+
// SAN: define internal nonnull {{(noundef )?}}ptr @foo_ifunc() #[[#FOO_IFUNC:]] {
55+
// MACSAN: define internal nonnull {{(noundef )?}}ptr @foo_ifunc() #[[#FOO_IFUNC:]] {
5656

57-
// SAN: define dso_local noalias ptr @goo_ifunc() #[[#GOO_IFUNC:]] {
58-
// MACSAN: define noalias ptr @goo_ifunc() #[[#GOO_IFUNC:]] {
57+
// SAN: define dso_local noalias {{(noundef )?}}ptr @goo_ifunc() #[[#GOO_IFUNC:]] {
58+
// MACSAN: define noalias {{(noundef )?}}ptr @goo_ifunc() #[[#GOO_IFUNC:]] {
5959

6060
// SAN-DAG: attributes #[[#FOO_IFUNC]] = {{{.*}} disable_sanitizer_instrumentation {{.*}}
6161
// MACSAN-DAG: attributes #[[#FOO_IFUNC]] = {{{.*}} disable_sanitizer_instrumentation {{.*}}

clang/test/CodeGen/isfpclass.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 2
22
// RUN: %clang_cc1 -triple aarch64-linux-gnu -S -O1 -emit-llvm %s -o - | FileCheck %s
33

4-
// CHECK-LABEL: define dso_local i1 @check_isfpclass_finite
4+
// CHECK-LABEL: define dso_local noundef i1 @check_isfpclass_finite
55
// CHECK-SAME: (float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
66
// CHECK-NEXT: entry:
77
// CHECK-NEXT: [[TMP0:%.*]] = tail call float @llvm.fabs.f32(float [[X]])
@@ -12,7 +12,7 @@ _Bool check_isfpclass_finite(float x) {
1212
return __builtin_isfpclass(x, 504 /*Finite*/);
1313
}
1414

15-
// CHECK-LABEL: define dso_local i1 @check_isfpclass_finite_strict
15+
// CHECK-LABEL: define dso_local noundef i1 @check_isfpclass_finite_strict
1616
// CHECK-SAME: (float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR2:[0-9]+]] {
1717
// CHECK-NEXT: entry:
1818
// CHECK-NEXT: [[TMP0:%.*]] = tail call i1 @llvm.is.fpclass.f32(float [[X]], i32 504) #[[ATTR6:[0-9]+]]
@@ -23,7 +23,7 @@ _Bool check_isfpclass_finite_strict(float x) {
2323
return __builtin_isfpclass(x, 504 /*Finite*/);
2424
}
2525

26-
// CHECK-LABEL: define dso_local i1 @check_isfpclass_nan_f32
26+
// CHECK-LABEL: define dso_local noundef i1 @check_isfpclass_nan_f32
2727
// CHECK-SAME: (float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR3:[0-9]+]] {
2828
// CHECK-NEXT: entry:
2929
// CHECK-NEXT: [[TMP0:%.*]] = fcmp uno float [[X]], 0.000000e+00
@@ -33,7 +33,7 @@ _Bool check_isfpclass_nan_f32(float x) {
3333
return __builtin_isfpclass(x, 3 /*NaN*/);
3434
}
3535

36-
// CHECK-LABEL: define dso_local i1 @check_isfpclass_nan_f32_strict
36+
// CHECK-LABEL: define dso_local noundef i1 @check_isfpclass_nan_f32_strict
3737
// CHECK-SAME: (float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR2]] {
3838
// CHECK-NEXT: entry:
3939
// CHECK-NEXT: [[TMP0:%.*]] = tail call i1 @llvm.is.fpclass.f32(float [[X]], i32 3) #[[ATTR6]]
@@ -44,7 +44,7 @@ _Bool check_isfpclass_nan_f32_strict(float x) {
4444
return __builtin_isfpclass(x, 3 /*NaN*/);
4545
}
4646

47-
// CHECK-LABEL: define dso_local i1 @check_isfpclass_snan_f64
47+
// CHECK-LABEL: define dso_local noundef i1 @check_isfpclass_snan_f64
4848
// CHECK-SAME: (double noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0]] {
4949
// CHECK-NEXT: entry:
5050
// CHECK-NEXT: [[TMP0:%.*]] = tail call i1 @llvm.is.fpclass.f64(double [[X]], i32 1)
@@ -54,7 +54,7 @@ _Bool check_isfpclass_snan_f64(double x) {
5454
return __builtin_isfpclass(x, 1 /*SNaN*/);
5555
}
5656

57-
// CHECK-LABEL: define dso_local i1 @check_isfpclass_snan_f64_strict
57+
// CHECK-LABEL: define dso_local noundef i1 @check_isfpclass_snan_f64_strict
5858
// CHECK-SAME: (double noundef [[X:%.*]]) local_unnamed_addr #[[ATTR2]] {
5959
// CHECK-NEXT: entry:
6060
// CHECK-NEXT: [[TMP0:%.*]] = tail call i1 @llvm.is.fpclass.f64(double [[X]], i32 1) #[[ATTR6]]
@@ -65,7 +65,7 @@ _Bool check_isfpclass_snan_f64_strict(double x) {
6565
return __builtin_isfpclass(x, 1 /*NaN*/);
6666
}
6767

68-
// CHECK-LABEL: define dso_local i1 @check_isfpclass_zero_f16
68+
// CHECK-LABEL: define dso_local noundef i1 @check_isfpclass_zero_f16
6969
// CHECK-SAME: (half noundef [[X:%.*]]) local_unnamed_addr #[[ATTR3]] {
7070
// CHECK-NEXT: entry:
7171
// CHECK-NEXT: [[TMP0:%.*]] = fcmp oeq half [[X]], 0xH0000
@@ -75,7 +75,7 @@ _Bool check_isfpclass_zero_f16(_Float16 x) {
7575
return __builtin_isfpclass(x, 96 /*Zero*/);
7676
}
7777

78-
// CHECK-LABEL: define dso_local i1 @check_isfpclass_zero_f16_strict
78+
// CHECK-LABEL: define dso_local noundef i1 @check_isfpclass_zero_f16_strict
7979
// CHECK-SAME: (half noundef [[X:%.*]]) local_unnamed_addr #[[ATTR2]] {
8080
// CHECK-NEXT: entry:
8181
// CHECK-NEXT: [[TMP0:%.*]] = tail call i1 @llvm.is.fpclass.f16(half [[X]], i32 96) #[[ATTR6]]
@@ -86,7 +86,7 @@ _Bool check_isfpclass_zero_f16_strict(_Float16 x) {
8686
return __builtin_isfpclass(x, 96 /*Zero*/);
8787
}
8888

89-
// CHECK-LABEL: define dso_local i1 @check_isnan
89+
// CHECK-LABEL: define dso_local noundef i1 @check_isnan
9090
// CHECK-SAME: (float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR2]] {
9191
// CHECK-NEXT: entry:
9292
// CHECK-NEXT: [[TMP0:%.*]] = tail call i1 @llvm.is.fpclass.f32(float [[X]], i32 3) #[[ATTR6]]
@@ -97,7 +97,7 @@ _Bool check_isnan(float x) {
9797
return __builtin_isnan(x);
9898
}
9999

100-
// CHECK-LABEL: define dso_local i1 @check_isinf
100+
// CHECK-LABEL: define dso_local noundef i1 @check_isinf
101101
// CHECK-SAME: (float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR2]] {
102102
// CHECK-NEXT: entry:
103103
// CHECK-NEXT: [[TMP0:%.*]] = tail call i1 @llvm.is.fpclass.f32(float [[X]], i32 516) #[[ATTR6]]
@@ -108,7 +108,7 @@ _Bool check_isinf(float x) {
108108
return __builtin_isinf(x);
109109
}
110110

111-
// CHECK-LABEL: define dso_local i1 @check_isfinite
111+
// CHECK-LABEL: define dso_local noundef i1 @check_isfinite
112112
// CHECK-SAME: (float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR2]] {
113113
// CHECK-NEXT: entry:
114114
// CHECK-NEXT: [[TMP0:%.*]] = tail call i1 @llvm.is.fpclass.f32(float [[X]], i32 504) #[[ATTR6]]
@@ -119,7 +119,7 @@ _Bool check_isfinite(float x) {
119119
return __builtin_isfinite(x);
120120
}
121121

122-
// CHECK-LABEL: define dso_local i1 @check_isnormal
122+
// CHECK-LABEL: define dso_local noundef i1 @check_isnormal
123123
// CHECK-SAME: (float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR2]] {
124124
// CHECK-NEXT: entry:
125125
// CHECK-NEXT: [[TMP0:%.*]] = tail call i1 @llvm.is.fpclass.f32(float [[X]], i32 264) #[[ATTR6]]
@@ -136,7 +136,7 @@ typedef double __attribute__((ext_vector_type(4))) double4;
136136
typedef int __attribute__((ext_vector_type(4))) int4;
137137
typedef long __attribute__((ext_vector_type(4))) long4;
138138

139-
// CHECK-LABEL: define dso_local <4 x i32> @check_isfpclass_nan_v4f32
139+
// CHECK-LABEL: define dso_local noundef <4 x i32> @check_isfpclass_nan_v4f32
140140
// CHECK-SAME: (<4 x float> noundef [[X:%.*]]) local_unnamed_addr #[[ATTR3]] {
141141
// CHECK-NEXT: entry:
142142
// CHECK-NEXT: [[TMP0:%.*]] = fcmp uno <4 x float> [[X]], zeroinitializer
@@ -147,7 +147,7 @@ int4 check_isfpclass_nan_v4f32(float4 x) {
147147
return __builtin_isfpclass(x, 3 /*NaN*/);
148148
}
149149

150-
// CHECK-LABEL: define dso_local <4 x i32> @check_isfpclass_nan_strict_v4f32
150+
// CHECK-LABEL: define dso_local noundef <4 x i32> @check_isfpclass_nan_strict_v4f32
151151
// CHECK-SAME: (<4 x float> noundef [[X:%.*]]) local_unnamed_addr #[[ATTR2]] {
152152
// CHECK-NEXT: entry:
153153
// CHECK-NEXT: [[TMP0:%.*]] = tail call <4 x i1> @llvm.is.fpclass.v4f32(<4 x float> [[X]], i32 3) #[[ATTR6]]

clang/test/CodeGen/ms-mixed-ptr-sizes.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ void test_other(struct Foo *f, __attribute__((address_space(10))) int *i) {
4949
}
5050

5151
int test_compare1(int *__ptr32 __uptr i, int *__ptr64 j) {
52-
// ALL-LABEL: define dso_local i32 @test_compare1
52+
// ALL-LABEL: define dso_local noundef i32 @test_compare1
5353
// X64: %{{.+}} = addrspacecast ptr %j to ptr addrspace(271)
5454
// X64: %cmp = icmp eq ptr addrspace(271) %{{.+}}, %i
5555
// X86: %{{.+}} = addrspacecast ptr addrspace(272) %j to ptr addrspace(271)
@@ -58,7 +58,7 @@ int test_compare1(int *__ptr32 __uptr i, int *__ptr64 j) {
5858
}
5959

6060
int test_compare2(int *__ptr32 __sptr i, int *__ptr64 j) {
61-
// ALL-LABEL: define dso_local i32 @test_compare2
61+
// ALL-LABEL: define dso_local noundef i32 @test_compare2
6262
// X64: %{{.+}} = addrspacecast ptr %j to ptr addrspace(270)
6363
// X64: %cmp = icmp eq ptr addrspace(270) %{{.+}}, %i
6464
// X86: %{{.+}} = addrspacecast ptr addrspace(272) %j to ptr
@@ -67,7 +67,7 @@ int test_compare2(int *__ptr32 __sptr i, int *__ptr64 j) {
6767
}
6868

6969
int test_compare3(int *__ptr32 __uptr i, int *__ptr64 j) {
70-
// ALL-LABEL: define dso_local i32 @test_compare3
70+
// ALL-LABEL: define dso_local noundef i32 @test_compare3
7171
// X64: %{{.+}} = addrspacecast ptr addrspace(271) %i to ptr
7272
// X64: %cmp = icmp eq ptr %{{.+}}, %j
7373
// X86: %{{.+}} = addrspacecast ptr addrspace(271) %i to ptr addrspace(272)
@@ -76,7 +76,7 @@ int test_compare3(int *__ptr32 __uptr i, int *__ptr64 j) {
7676
}
7777

7878
int test_compare4(int *__ptr32 __sptr i, int *__ptr64 j) {
79-
// ALL-LABEL: define dso_local i32 @test_compare4
79+
// ALL-LABEL: define dso_local noundef i32 @test_compare4
8080
// X64: %{{.+}} = addrspacecast ptr addrspace(270) %i to ptr
8181
// X64: %cmp = icmp eq ptr %{{.+}}, %j
8282
// X86: %{{.+}} = addrspacecast ptr %i to ptr addrspace(272)

clang/test/CodeGenCUDA/link-builtin-bitcode-denormal-fp-mode.cu

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -111,16 +111,16 @@ __global__ void kernel_f64(double* out, double* a, double* b, double* c) {
111111
}
112112
}
113113

114-
// INTERNALIZE: define internal half @do_f16_stuff({{.*}}) #[[$FUNCATTR:[0-9]+]]
115-
// INTERNALIZE: define internal float @do_f32_stuff({{.*}}) #[[$FUNCATTR]]
116-
// INTERNALIZE: define internal double @do_f64_stuff({{.*}}) #[[$FUNCATTR]]
117-
// INTERNALIZE: define internal float @weak_do_f32_stuff({{.*}}) #[[$WEAK_FUNCATTR:[0-9]+]]
114+
// INTERNALIZE: define internal {{(noundef )?}}half @do_f16_stuff({{.*}}) #[[$FUNCATTR:[0-9]+]]
115+
// INTERNALIZE: define internal {{(noundef )?}}float @do_f32_stuff({{.*}}) #[[$FUNCATTR]]
116+
// INTERNALIZE: define internal {{(noundef )?}}double @do_f64_stuff({{.*}}) #[[$FUNCATTR]]
117+
// INTERNALIZE: define internal {{(noundef )?}}float @weak_do_f32_stuff({{.*}}) #[[$WEAK_FUNCATTR:[0-9]+]]
118118

119119

120-
// NOINTERNALIZE: define dso_local half @do_f16_stuff({{.*}}) #[[$FUNCATTR:[0-9]+]]
121-
// NOINTERNALIZE: define dso_local float @do_f32_stuff({{.*}}) #[[$FUNCATTR]]
122-
// NOINTERNALIZE: define dso_local double @do_f64_stuff({{.*}}) #[[$FUNCATTR]]
123-
// NOINTERNALIZE: define weak float @weak_do_f32_stuff({{.*}}) #[[$WEAK_FUNCATTR:[0-9]+]]
120+
// NOINTERNALIZE: define dso_local {{(noundef )?}}half @do_f16_stuff({{.*}}) #[[$FUNCATTR:[0-9]+]]
121+
// NOINTERNALIZE: define dso_local {{(noundef )?}}float @do_f32_stuff({{.*}}) #[[$FUNCATTR]]
122+
// NOINTERNALIZE: define dso_local {{(noundef )?}}double @do_f64_stuff({{.*}}) #[[$FUNCATTR]]
123+
// NOINTERNALIZE: define weak {{(noundef )?}}float @weak_do_f32_stuff({{.*}}) #[[$WEAK_FUNCATTR:[0-9]+]]
124124

125125

126126

0 commit comments

Comments
 (0)