Skip to content

Commit 40840e0

Browse files
committed
rebase
Created using spr 1.3.4
2 parents 28592a5 + f4d1105 commit 40840e0

File tree

7 files changed

+91
-42
lines changed

7 files changed

+91
-42
lines changed

clang/docs/UsersManual.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3051,7 +3051,7 @@ indexed format, regardeless whether it is produced by frontend or the IR pass.
30513051
$ llvm-profdata merge -o code.profdata yyy/zzz
30523052
30533053
Using the resulting profile, we can generate a function order to pass to the
3054-
linker via `--symbol-ordering-file` for ELF or `-order_file` for Mach-O.
3054+
linker via ``--symbol-ordering-file`` for ELF or ``-order_file`` for Mach-O.
30553055

30563056
.. code-block:: console
30573057

clang/lib/Driver/ToolChains/WebAssembly.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,8 @@ void WebAssembly::addClangTargetOptions(const ArgList &DriverArgs,
422422
}
423423
}
424424

425-
for (const auto *Option : {"-wasm-enable-eh", "-wasm-enable-sjlj"}) {
425+
for (const auto *Option :
426+
{"-wasm-enable-eh", "-wasm-enable-sjlj", "-wasm-use-legacy-eh"}) {
426427
if (Opt.starts_with(Option)) {
427428
BanIncompatibleOptionsForWasmEHSjLj(Option);
428429
EnableFeaturesForWasmEHSjLj();

clang/test/CodeGen/allow-ubsan-check.c

Lines changed: 52 additions & 28 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 5
2-
// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -O1 -o - %s -fsanitize=signed-integer-overflow,integer-divide-by-zero,local-bounds -mllvm -ubsan-guard-checks | FileCheck %s
3-
// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -O1 -o - %s -fsanitize=signed-integer-overflow,integer-divide-by-zero,local-bounds -mllvm -ubsan-guard-checks -fsanitize-trap=signed-integer-overflow,integer-divide-by-zero,local-bounds | FileCheck %s --check-prefixes=TR
4-
// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -O1 -o - %s -fsanitize=signed-integer-overflow,integer-divide-by-zero,local-bounds -mllvm -ubsan-guard-checks -fsanitize-recover=signed-integer-overflow,integer-divide-by-zero,local-bounds | FileCheck %s --check-prefixes=REC
2+
// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -O1 -o - %s -fsanitize=signed-integer-overflow,integer-divide-by-zero,null,local-bounds -mllvm -ubsan-guard-checks | FileCheck %s
3+
// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -O1 -o - %s -fsanitize=signed-integer-overflow,integer-divide-by-zero,null,local-bounds -mllvm -ubsan-guard-checks -fsanitize-trap=signed-integer-overflow,integer-divide-by-zero,null,local-bounds | FileCheck %s --check-prefixes=TR
4+
// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -O1 -o - %s -fsanitize=signed-integer-overflow,integer-divide-by-zero,null,local-bounds -mllvm -ubsan-guard-checks -fsanitize-recover=signed-integer-overflow,integer-divide-by-zero,null,local-bounds | FileCheck %s --check-prefixes=REC
55

66

77
// CHECK-LABEL: define dso_local noundef i32 @div(
@@ -18,7 +18,7 @@
1818
// CHECK: [[HANDLER_DIVREM_OVERFLOW]]:
1919
// CHECK-NEXT: [[TMP4:%.*]] = zext i32 [[X]] to i64, !nosanitize [[META2]]
2020
// CHECK-NEXT: [[TMP5:%.*]] = zext i32 [[Y]] to i64, !nosanitize [[META2]]
21-
// CHECK-NEXT: tail call void @__ubsan_handle_divrem_overflow_abort(ptr nonnull @[[GLOB1:[0-9]+]], i64 [[TMP4]], i64 [[TMP5]]) #[[ATTR7:[0-9]+]], !nosanitize [[META2]]
21+
// CHECK-NEXT: tail call void @__ubsan_handle_divrem_overflow_abort(ptr nonnull @[[GLOB1:[0-9]+]], i64 [[TMP4]], i64 [[TMP5]]) #[[ATTR6:[0-9]+]], !nosanitize [[META2]]
2222
// CHECK-NEXT: unreachable, !nosanitize [[META2]]
2323
// CHECK: [[CONT]]:
2424
// CHECK-NEXT: [[DIV:%.*]] = sdiv i32 [[X]], [[Y]]
@@ -36,7 +36,7 @@
3636
// TR-NEXT: [[DOTNOT1:%.*]] = and i1 [[DOTNOT3]], [[TMP3]]
3737
// TR-NEXT: br i1 [[DOTNOT1]], label %[[TRAP:.*]], label %[[CONT:.*]], !nosanitize [[META2]]
3838
// TR: [[TRAP]]:
39-
// TR-NEXT: tail call void @llvm.ubsantrap(i8 3) #[[ATTR6:[0-9]+]], !nosanitize [[META2]]
39+
// TR-NEXT: tail call void @llvm.ubsantrap(i8 3) #[[ATTR5:[0-9]+]], !nosanitize [[META2]]
4040
// TR-NEXT: unreachable, !nosanitize [[META2]]
4141
// TR: [[CONT]]:
4242
// TR-NEXT: [[DIV:%.*]] = sdiv i32 [[X]], [[Y]]
@@ -56,7 +56,7 @@
5656
// REC: [[HANDLER_DIVREM_OVERFLOW]]:
5757
// REC-NEXT: [[TMP4:%.*]] = zext i32 [[X]] to i64, !nosanitize [[META2]]
5858
// REC-NEXT: [[TMP5:%.*]] = zext i32 [[Y]] to i64, !nosanitize [[META2]]
59-
// REC-NEXT: tail call void @__ubsan_handle_divrem_overflow(ptr nonnull @[[GLOB1:[0-9]+]], i64 [[TMP4]], i64 [[TMP5]]) #[[ATTR7:[0-9]+]], !nosanitize [[META2]]
59+
// REC-NEXT: tail call void @__ubsan_handle_divrem_overflow(ptr nonnull @[[GLOB1:[0-9]+]], i64 [[TMP4]], i64 [[TMP5]]) #[[ATTR6:[0-9]+]], !nosanitize [[META2]]
6060
// REC-NEXT: br label %[[CONT]], !nosanitize [[META2]]
6161
// REC: [[CONT]]:
6262
// REC-NEXT: [[DIV:%.*]] = sdiv i32 [[X]], [[Y]]
@@ -67,22 +67,46 @@ int div(int x, int y) {
6767
}
6868

6969
// CHECK-LABEL: define dso_local i32 @null(
70-
// CHECK-SAME: ptr nocapture noundef readonly [[X:%.*]]) local_unnamed_addr #[[ATTR3:[0-9]+]] {
70+
// CHECK-SAME: ptr noundef readonly [[X:%.*]]) local_unnamed_addr #[[ATTR0]] {
7171
// CHECK-NEXT: [[ENTRY:.*:]]
72-
// CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[X]], align 4, !tbaa [[TBAA4:![0-9]+]]
73-
// CHECK-NEXT: ret i32 [[TMP0]]
72+
// CHECK-NEXT: [[TMP0:%.*]] = icmp eq ptr [[X]], null, !nosanitize [[META2]]
73+
// CHECK-NEXT: [[TMP1:%.*]] = tail call i1 @llvm.allow.ubsan.check(i8 22), !nosanitize [[META2]]
74+
// CHECK-NEXT: [[DOTNOT1:%.*]] = and i1 [[TMP0]], [[TMP1]]
75+
// CHECK-NEXT: br i1 [[DOTNOT1]], label %[[HANDLER_TYPE_MISMATCH:.*]], label %[[CONT:.*]], !prof [[PROF3]], !nosanitize [[META2]]
76+
// CHECK: [[HANDLER_TYPE_MISMATCH]]:
77+
// CHECK-NEXT: tail call void @__ubsan_handle_type_mismatch_v1_abort(ptr nonnull @[[GLOB2:[0-9]+]], i64 0) #[[ATTR6]], !nosanitize [[META2]]
78+
// CHECK-NEXT: unreachable, !nosanitize [[META2]]
79+
// CHECK: [[CONT]]:
80+
// CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[X]], align 4, !tbaa [[TBAA4:![0-9]+]]
81+
// CHECK-NEXT: ret i32 [[TMP2]]
7482
//
7583
// TR-LABEL: define dso_local i32 @null(
76-
// TR-SAME: ptr nocapture noundef readonly [[X:%.*]]) local_unnamed_addr #[[ATTR3:[0-9]+]] {
84+
// TR-SAME: ptr noundef readonly [[X:%.*]]) local_unnamed_addr #[[ATTR0]] {
7785
// TR-NEXT: [[ENTRY:.*:]]
78-
// TR-NEXT: [[TMP0:%.*]] = load i32, ptr [[X]], align 4, !tbaa [[TBAA3:![0-9]+]]
79-
// TR-NEXT: ret i32 [[TMP0]]
86+
// TR-NEXT: [[TMP0:%.*]] = icmp eq ptr [[X]], null, !nosanitize [[META2]]
87+
// TR-NEXT: [[TMP1:%.*]] = tail call i1 @llvm.allow.ubsan.check(i8 22), !nosanitize [[META2]]
88+
// TR-NEXT: [[DOTNOT1:%.*]] = and i1 [[TMP0]], [[TMP1]]
89+
// TR-NEXT: br i1 [[DOTNOT1]], label %[[TRAP:.*]], label %[[CONT:.*]], !nosanitize [[META2]]
90+
// TR: [[TRAP]]:
91+
// TR-NEXT: tail call void @llvm.ubsantrap(i8 22) #[[ATTR5]], !nosanitize [[META2]]
92+
// TR-NEXT: unreachable, !nosanitize [[META2]]
93+
// TR: [[CONT]]:
94+
// TR-NEXT: [[TMP2:%.*]] = load i32, ptr [[X]], align 4, !tbaa [[TBAA3:![0-9]+]]
95+
// TR-NEXT: ret i32 [[TMP2]]
8096
//
8197
// REC-LABEL: define dso_local i32 @null(
82-
// REC-SAME: ptr nocapture noundef readonly [[X:%.*]]) local_unnamed_addr #[[ATTR3:[0-9]+]] {
98+
// REC-SAME: ptr noundef readonly [[X:%.*]]) local_unnamed_addr #[[ATTR0]] {
8399
// REC-NEXT: [[ENTRY:.*:]]
84-
// REC-NEXT: [[TMP0:%.*]] = load i32, ptr [[X]], align 4, !tbaa [[TBAA4:![0-9]+]]
85-
// REC-NEXT: ret i32 [[TMP0]]
100+
// REC-NEXT: [[TMP0:%.*]] = icmp eq ptr [[X]], null, !nosanitize [[META2]]
101+
// REC-NEXT: [[TMP1:%.*]] = tail call i1 @llvm.allow.ubsan.check(i8 22), !nosanitize [[META2]]
102+
// REC-NEXT: [[DOTNOT1:%.*]] = and i1 [[TMP0]], [[TMP1]]
103+
// REC-NEXT: br i1 [[DOTNOT1]], label %[[HANDLER_TYPE_MISMATCH:.*]], label %[[CONT:.*]], !prof [[PROF3]], !nosanitize [[META2]]
104+
// REC: [[HANDLER_TYPE_MISMATCH]]:
105+
// REC-NEXT: tail call void @__ubsan_handle_type_mismatch_v1(ptr nonnull @[[GLOB2:[0-9]+]], i64 0) #[[ATTR6]], !nosanitize [[META2]]
106+
// REC-NEXT: br label %[[CONT]], !nosanitize [[META2]]
107+
// REC: [[CONT]]:
108+
// REC-NEXT: [[TMP2:%.*]] = load i32, ptr [[X]], align 4, !tbaa [[TBAA4:![0-9]+]]
109+
// REC-NEXT: ret i32 [[TMP2]]
86110
//
87111
int null(int* x) {
88112
return *x;
@@ -99,7 +123,7 @@ int null(int* x) {
99123
// CHECK: [[HANDLER_ADD_OVERFLOW]]:
100124
// CHECK-NEXT: [[TMP3:%.*]] = zext i32 [[X]] to i64, !nosanitize [[META2]]
101125
// CHECK-NEXT: [[TMP4:%.*]] = zext i32 [[Y]] to i64, !nosanitize [[META2]]
102-
// CHECK-NEXT: tail call void @__ubsan_handle_add_overflow_abort(ptr nonnull @[[GLOB2:[0-9]+]], i64 [[TMP3]], i64 [[TMP4]]) #[[ATTR7]], !nosanitize [[META2]]
126+
// CHECK-NEXT: tail call void @__ubsan_handle_add_overflow_abort(ptr nonnull @[[GLOB3:[0-9]+]], i64 [[TMP3]], i64 [[TMP4]]) #[[ATTR6]], !nosanitize [[META2]]
103127
// CHECK-NEXT: unreachable, !nosanitize [[META2]]
104128
// CHECK: [[CONT]]:
105129
// CHECK-NEXT: [[TMP5:%.*]] = extractvalue { i32, i1 } [[TMP0]], 0, !nosanitize [[META2]]
@@ -114,7 +138,7 @@ int null(int* x) {
114138
// TR-NEXT: [[DOTDEMORGAN:%.*]] = and i1 [[TMP1]], [[TMP2]]
115139
// TR-NEXT: br i1 [[DOTDEMORGAN]], label %[[TRAP:.*]], label %[[CONT:.*]], !nosanitize [[META2]]
116140
// TR: [[TRAP]]:
117-
// TR-NEXT: tail call void @llvm.ubsantrap(i8 0) #[[ATTR6]], !nosanitize [[META2]]
141+
// TR-NEXT: tail call void @llvm.ubsantrap(i8 0) #[[ATTR5]], !nosanitize [[META2]]
118142
// TR-NEXT: unreachable, !nosanitize [[META2]]
119143
// TR: [[CONT]]:
120144
// TR-NEXT: [[TMP3:%.*]] = extractvalue { i32, i1 } [[TMP0]], 0, !nosanitize [[META2]]
@@ -131,7 +155,7 @@ int null(int* x) {
131155
// REC: [[HANDLER_ADD_OVERFLOW]]:
132156
// REC-NEXT: [[TMP3:%.*]] = zext i32 [[X]] to i64, !nosanitize [[META2]]
133157
// REC-NEXT: [[TMP4:%.*]] = zext i32 [[Y]] to i64, !nosanitize [[META2]]
134-
// REC-NEXT: tail call void @__ubsan_handle_add_overflow(ptr nonnull @[[GLOB2:[0-9]+]], i64 [[TMP3]], i64 [[TMP4]]) #[[ATTR7]], !nosanitize [[META2]]
158+
// REC-NEXT: tail call void @__ubsan_handle_add_overflow(ptr nonnull @[[GLOB3:[0-9]+]], i64 [[TMP3]], i64 [[TMP4]]) #[[ATTR6]], !nosanitize [[META2]]
135159
// REC-NEXT: br label %[[CONT]], !nosanitize [[META2]]
136160
// REC: [[CONT]]:
137161
// REC-NEXT: [[TMP5:%.*]] = extractvalue { i32, i1 } [[TMP0]], 0, !nosanitize [[META2]]
@@ -143,12 +167,12 @@ int overflow(int x, int y) {
143167

144168
void use(double*);
145169

146-
// CHECK-LABEL: define dso_local double @f1(
170+
// CHECK-LABEL: define dso_local double @lbounds(
147171
// CHECK-SAME: i32 noundef [[B:%.*]], i32 noundef [[I:%.*]]) local_unnamed_addr #[[ATTR0]] {
148172
// CHECK-NEXT: [[ENTRY:.*:]]
149173
// CHECK-NEXT: [[TMP0:%.*]] = zext i32 [[B]] to i64
150174
// CHECK-NEXT: [[VLA:%.*]] = alloca double, i64 [[TMP0]], align 16
151-
// CHECK-NEXT: call void @use(ptr noundef nonnull [[VLA]]) #[[ATTR8:[0-9]+]]
175+
// CHECK-NEXT: call void @use(ptr noundef nonnull [[VLA]]) #[[ATTR7:[0-9]+]]
152176
// CHECK-NEXT: [[IDXPROM:%.*]] = sext i32 [[I]] to i64
153177
// CHECK-NEXT: [[DOTNOT:%.*]] = icmp ugt i64 [[TMP0]], [[IDXPROM]]
154178
// CHECK-NEXT: br i1 [[DOTNOT]], label %[[BB1:.*]], label %[[TRAP:.*]]
@@ -157,15 +181,15 @@ void use(double*);
157181
// CHECK-NEXT: [[TMP2:%.*]] = load double, ptr [[ARRAYIDX]], align 8, !tbaa [[TBAA8:![0-9]+]]
158182
// CHECK-NEXT: ret double [[TMP2]]
159183
// CHECK: [[TRAP]]:
160-
// CHECK-NEXT: call void @__ubsan_handle_local_out_of_bounds_abort() #[[ATTR7]], !nosanitize [[META2]]
184+
// CHECK-NEXT: call void @__ubsan_handle_local_out_of_bounds_abort() #[[ATTR6]], !nosanitize [[META2]]
161185
// CHECK-NEXT: unreachable, !nosanitize [[META2]]
162186
//
163-
// TR-LABEL: define dso_local double @f1(
187+
// TR-LABEL: define dso_local double @lbounds(
164188
// TR-SAME: i32 noundef [[B:%.*]], i32 noundef [[I:%.*]]) local_unnamed_addr #[[ATTR0]] {
165189
// TR-NEXT: [[ENTRY:.*:]]
166190
// TR-NEXT: [[TMP0:%.*]] = zext i32 [[B]] to i64
167191
// TR-NEXT: [[VLA:%.*]] = alloca double, i64 [[TMP0]], align 16
168-
// TR-NEXT: call void @use(ptr noundef nonnull [[VLA]]) #[[ATTR7:[0-9]+]]
192+
// TR-NEXT: call void @use(ptr noundef nonnull [[VLA]]) #[[ATTR6:[0-9]+]]
169193
// TR-NEXT: [[IDXPROM:%.*]] = sext i32 [[I]] to i64
170194
// TR-NEXT: [[DOTNOT:%.*]] = icmp ugt i64 [[TMP0]], [[IDXPROM]]
171195
// TR-NEXT: br i1 [[DOTNOT]], label %[[BB1:.*]], label %[[TRAP:.*]]
@@ -174,15 +198,15 @@ void use(double*);
174198
// TR-NEXT: [[TMP2:%.*]] = load double, ptr [[ARRAYIDX]], align 8, !tbaa [[TBAA7:![0-9]+]]
175199
// TR-NEXT: ret double [[TMP2]]
176200
// TR: [[TRAP]]:
177-
// TR-NEXT: call void @llvm.ubsantrap(i8 3) #[[ATTR6]], !nosanitize [[META2]]
201+
// TR-NEXT: call void @llvm.ubsantrap(i8 3) #[[ATTR5]], !nosanitize [[META2]]
178202
// TR-NEXT: unreachable, !nosanitize [[META2]]
179203
//
180-
// REC-LABEL: define dso_local double @f1(
204+
// REC-LABEL: define dso_local double @lbounds(
181205
// REC-SAME: i32 noundef [[B:%.*]], i32 noundef [[I:%.*]]) local_unnamed_addr #[[ATTR0]] {
182206
// REC-NEXT: [[ENTRY:.*:]]
183207
// REC-NEXT: [[TMP0:%.*]] = zext i32 [[B]] to i64
184208
// REC-NEXT: [[VLA:%.*]] = alloca double, i64 [[TMP0]], align 16
185-
// REC-NEXT: call void @use(ptr noundef nonnull [[VLA]]) #[[ATTR6:[0-9]+]]
209+
// REC-NEXT: call void @use(ptr noundef nonnull [[VLA]]) #[[ATTR5:[0-9]+]]
186210
// REC-NEXT: [[IDXPROM:%.*]] = sext i32 [[I]] to i64
187211
// REC-NEXT: [[DOTNOT:%.*]] = icmp ugt i64 [[TMP0]], [[IDXPROM]]
188212
// REC-NEXT: br i1 [[DOTNOT]], label %[[BB1:.*]], label %[[TRAP:.*]]
@@ -191,10 +215,10 @@ void use(double*);
191215
// REC-NEXT: [[TMP2:%.*]] = load double, ptr [[ARRAYIDX]], align 8, !tbaa [[TBAA8:![0-9]+]]
192216
// REC-NEXT: ret double [[TMP2]]
193217
// REC: [[TRAP]]:
194-
// REC-NEXT: call void @__ubsan_handle_local_out_of_bounds() #[[ATTR7]], !nosanitize [[META2]]
218+
// REC-NEXT: call void @__ubsan_handle_local_out_of_bounds() #[[ATTR6]], !nosanitize [[META2]]
195219
// REC-NEXT: br label %[[BB1]], !nosanitize [[META2]]
196220
//
197-
double f1(int b, int i) {
221+
double lbounds(int b, int i) {
198222
double a[b];
199223
use(a);
200224
return a[i];

clang/test/Driver/wasm-toolchain.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,28 @@
202202
// RUN: | FileCheck -check-prefix=WASM_SJLJ_NO_REFERENCE_TYPES %s
203203
// WASM_SJLJ_NO_REFERENCE_TYPES: invalid argument '-wasm-enable-sjlj' not allowed with '-mno-reference-types'
204204

205+
// '-mllvm -wasm-use-legacy-eh' not allowed with
206+
// '-mllvm -enable-emscripten-cxx-exceptions'
207+
// RUN: not %clang -### --target=wasm32-unknown-unknown \
208+
// RUN: --sysroot=/foo %s -mllvm -wasm-use-legacy-eh \
209+
// RUN: -mllvm -enable-emscripten-cxx-exceptions 2>&1 \
210+
// RUN: | FileCheck -check-prefix=WASM_LEGACY_EH_EMSCRIPTEN_EH %s
211+
// WASM_LEGACY_EH_EMSCRIPTEN_EH: invalid argument '-wasm-use-legacy-eh' not allowed with '-enable-emscripten-cxx-exceptions'
212+
213+
// '-mllvm -wasm-use-legacy-eh' not allowed with '-mllvm -enable-emscripten-sjlj'
214+
// RUN: not %clang -### --target=wasm32-unknown-unknown \
215+
// RUN: --sysroot=/foo %s -mllvm -wasm-use-legacy-eh \
216+
// RUN: -mllvm -enable-emscripten-sjlj 2>&1 \
217+
// RUN: | FileCheck -check-prefix=WASM_LEGACY_EH_EMSCRIPTEN_SJLJ %s
218+
// WASM_LEGACY_EH_EMSCRIPTEN_SJLJ: invalid argument '-wasm-use-legacy-eh' not allowed with '-enable-emscripten-sjlj'
219+
220+
// '-mllvm -wasm-use-legacy-eh' not allowed with '-mno-exception-handling'
221+
// RUN: not %clang -### --target=wasm32-unknown-unknown \
222+
// RUN: --sysroot=/foo %s -mllvm -wasm-use-legacy-eh \
223+
// RUN: -mno-exception-handling 2>&1 \
224+
// RUN: | FileCheck -check-prefix=WASM_LEGACY_EH_NO_EH %s
225+
// WASM_LEGACY_EH_NO_EH: invalid argument '-wasm-use-legacy-eh' not allowed with '-mno-exception-handling'
226+
205227
// RUN: %clang -### %s -fsanitize=address --target=wasm32-unknown-emscripten 2>&1 | FileCheck -check-prefix=CHECK-ASAN-EMSCRIPTEN %s
206228
// CHECK-ASAN-EMSCRIPTEN: "-fsanitize=address"
207229
// CHECK-ASAN-EMSCRIPTEN: "-fsanitize-address-globals-dead-stripping"

llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2479,14 +2479,15 @@ bool NVPTXDAGToDAGISel::SelectDirectAddr(SDValue N, SDValue &Address) {
24792479
}
24802480

24812481
// symbol+offset
2482-
bool NVPTXDAGToDAGISel::SelectADDRsi_imp(
2483-
SDNode *OpNode, SDValue Addr, SDValue &Base, SDValue &Offset, MVT mvt) {
2482+
bool NVPTXDAGToDAGISel::SelectADDRsi_imp(SDNode *OpNode, SDValue Addr,
2483+
SDValue &Base, SDValue &Offset,
2484+
MVT VT) {
24842485
if (isAddLike(Addr)) {
24852486
if (ConstantSDNode *CN = dyn_cast<ConstantSDNode>(Addr.getOperand(1))) {
24862487
SDValue base = Addr.getOperand(0);
24872488
if (SelectDirectAddr(base, Base)) {
2488-
Offset = CurDAG->getTargetConstant(CN->getZExtValue(), SDLoc(OpNode),
2489-
mvt);
2489+
Offset =
2490+
CurDAG->getTargetConstant(CN->getZExtValue(), SDLoc(OpNode), VT);
24902491
return true;
24912492
}
24922493
}
@@ -2507,11 +2508,12 @@ bool NVPTXDAGToDAGISel::SelectADDRsi64(SDNode *OpNode, SDValue Addr,
25072508
}
25082509

25092510
// register+offset
2510-
bool NVPTXDAGToDAGISel::SelectADDRri_imp(
2511-
SDNode *OpNode, SDValue Addr, SDValue &Base, SDValue &Offset, MVT mvt) {
2511+
bool NVPTXDAGToDAGISel::SelectADDRri_imp(SDNode *OpNode, SDValue Addr,
2512+
SDValue &Base, SDValue &Offset,
2513+
MVT VT) {
25122514
if (FrameIndexSDNode *FIN = dyn_cast<FrameIndexSDNode>(Addr)) {
2513-
Base = CurDAG->getTargetFrameIndex(FIN->getIndex(), mvt);
2514-
Offset = CurDAG->getTargetConstant(0, SDLoc(OpNode), mvt);
2515+
Base = CurDAG->getTargetFrameIndex(FIN->getIndex(), VT);
2516+
Offset = CurDAG->getTargetConstant(0, SDLoc(OpNode), VT);
25152517
return true;
25162518
}
25172519
if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
@@ -2526,7 +2528,7 @@ bool NVPTXDAGToDAGISel::SelectADDRri_imp(
25262528
if (FrameIndexSDNode *FIN =
25272529
dyn_cast<FrameIndexSDNode>(Addr.getOperand(0)))
25282530
// Constant offset from frame ref.
2529-
Base = CurDAG->getTargetFrameIndex(FIN->getIndex(), mvt);
2531+
Base = CurDAG->getTargetFrameIndex(FIN->getIndex(), VT);
25302532
else
25312533
Base = Addr.getOperand(0);
25322534

llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,13 @@ class LLVM_LIBRARY_VISIBILITY NVPTXDAGToDAGISel : public SelectionDAGISel {
106106
bool SelectDirectAddr(SDValue N, SDValue &Address);
107107

108108
bool SelectADDRri_imp(SDNode *OpNode, SDValue Addr, SDValue &Base,
109-
SDValue &Offset, MVT mvt);
109+
SDValue &Offset, MVT VT);
110110
bool SelectADDRri(SDNode *OpNode, SDValue Addr, SDValue &Base,
111111
SDValue &Offset);
112112
bool SelectADDRri64(SDNode *OpNode, SDValue Addr, SDValue &Base,
113113
SDValue &Offset);
114114
bool SelectADDRsi_imp(SDNode *OpNode, SDValue Addr, SDValue &Base,
115-
SDValue &Offset, MVT mvt);
115+
SDValue &Offset, MVT VT);
116116
bool SelectADDRsi(SDNode *OpNode, SDValue Addr, SDValue &Base,
117117
SDValue &Offset);
118118
bool SelectADDRsi64(SDNode *OpNode, SDValue Addr, SDValue &Base,

offload/DeviceRTL/include/DeviceUtils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ inline constexpr bool is_same_v = is_same<T, U>::value;
4444

4545
template <typename T> struct is_floating_point {
4646
inline static constexpr bool value =
47-
is_same_v<remove_cv<T>, float> || is_same_v<remove_cv<T>, double>;
47+
is_same_v<remove_cv_t<T>, float> || is_same_v<remove_cv_t<T>, double>;
4848
};
4949
template <typename T>
5050
inline constexpr bool is_floating_point_v = is_floating_point<T>::value;

0 commit comments

Comments
 (0)