Skip to content

Commit e36d7c4

Browse files
committed
[NVPTX] Cleanup error reporting
1 parent 5dc3e00 commit e36d7c4

File tree

2 files changed

+39
-70
lines changed

2 files changed

+39
-70
lines changed

llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "llvm/MC/MCSubtargetInfo.h"
2020
#include "llvm/MC/MCSymbol.h"
2121
#include "llvm/Support/ErrorHandling.h"
22+
#include "llvm/Support/FormatVariadic.h"
2223
#include "llvm/Support/FormattedStream.h"
2324
#include <cctype>
2425
using namespace llvm;
@@ -249,12 +250,9 @@ void NVPTXInstPrinter::printLdStCode(const MCInst *MI, int OpNum,
249250
O << ".mmio.relaxed.sys";
250251
break;
251252
default:
252-
SmallString<256> Msg;
253-
raw_svector_ostream OS(Msg);
254-
OS << "NVPTX LdStCode Printer does not support \"" << Ordering
255-
<< "\" sem modifier.";
256-
report_fatal_error(OS.str());
257-
break;
253+
report_fatal_error(formatv(
254+
"NVPTX LdStCode Printer does not support \"{}\" sem modifier.",
255+
toCString(Ordering)));
258256
}
259257
} else if (!strcmp(Modifier, "addsp")) {
260258
switch (Imm) {

llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp

Lines changed: 35 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "llvm/Support/CommandLine.h"
2323
#include "llvm/Support/Debug.h"
2424
#include "llvm/Support/ErrorHandling.h"
25+
#include "llvm/Support/FormatVariadic.h"
2526
#include "llvm/Support/raw_ostream.h"
2627
#include "llvm/Target/TargetIntrinsicInfo.h"
2728

@@ -828,12 +829,11 @@ getOperationOrderings(MemSDNode *N, const NVPTXSubtarget *Subtarget) {
828829
Ordering == AtomicOrdering::Unordered ||
829830
Ordering == AtomicOrdering::Monotonic) &&
830831
!HasMemoryOrdering) {
831-
SmallString<256> Msg;
832-
raw_svector_ostream OS(Msg);
833-
OS << "PTX does not support \"atomic\" for orderings different than"
834-
"\"NotAtomic\" or \"Monotonic\" for sm_60 or older, but order is: \""
835-
<< toIRString(Ordering) << "\".";
836-
report_fatal_error(OS.str());
832+
report_fatal_error(
833+
formatv("PTX does not support \"atomic\" for orderings different than"
834+
"\"NotAtomic\" or \"Monotonic\" for sm_60 or older, but order "
835+
"is: \"{}\".",
836+
toIRString(Ordering)));
837837
}
838838

839839
// [3]: TODO: these should eventually use .mmio<.atomic sem>; for now we drop
@@ -870,35 +870,25 @@ getOperationOrderings(MemSDNode *N, const NVPTXSubtarget *Subtarget) {
870870
// case AtomicOrdering::Consume: // If LLVM ever provides this, lower it to
871871
// Acquire.
872872
case AtomicOrdering::Acquire:
873-
if (!N->readMem()) {
874-
SmallString<256> Msg;
875-
raw_svector_ostream OS(Msg);
876-
OS << "PTX only supports Acquire Ordering on reads: "
877-
<< N->getOperationName();
878-
N->print(OS);
879-
report_fatal_error(OS.str());
880-
}
873+
if (!N->readMem())
874+
report_fatal_error(
875+
formatv("PTX only supports Acquire Ordering on reads: {}",
876+
N->getOperationName()));
881877
return AddrGenericOrGlobalOrShared ? NVPTX::Ordering::Acquire
882878
: NVPTX::Ordering::NotAtomic;
883879
case AtomicOrdering::Release:
884-
if (!N->writeMem()) {
885-
SmallString<256> Msg;
886-
raw_svector_ostream OS(Msg);
887-
OS << "PTX only supports Release Ordering on writes: "
888-
<< N->getOperationName();
889-
N->print(OS);
890-
report_fatal_error(OS.str());
891-
}
880+
if (!N->writeMem())
881+
report_fatal_error(
882+
formatv("PTX only supports Release Ordering on writes: {}",
883+
N->getOperationName()));
892884
return AddrGenericOrGlobalOrShared ? NVPTX::Ordering::Release
893885
: NVPTX::Ordering::NotAtomic;
894886
case AtomicOrdering::AcquireRelease: {
895-
SmallString<256> Msg;
896-
raw_svector_ostream OS(Msg);
897-
OS << "NVPTX does not support AcquireRelease Ordering on read-modify-write "
898-
"yet and PTX does not support it on loads or stores: "
899-
<< N->getOperationName();
900-
N->print(OS);
901-
report_fatal_error(OS.str());
887+
report_fatal_error(
888+
formatv("NVPTX does not support AcquireRelease Ordering on "
889+
"read-modify-write "
890+
"yet and PTX does not support it on loads or stores: {}",
891+
N->getOperationName()));
902892
}
903893
case AtomicOrdering::SequentiallyConsistent: {
904894
// LLVM-IR SequentiallyConsistent atomics map to a two-instruction PTX
@@ -913,27 +903,20 @@ getOperationOrderings(MemSDNode *N, const NVPTXSubtarget *Subtarget) {
913903
InstrOrder = NVPTX::Ordering::Acquire;
914904
else if (N->writeMem())
915905
InstrOrder = NVPTX::Ordering::Release;
916-
else {
917-
SmallString<256> Msg;
918-
raw_svector_ostream OS(Msg);
919-
OS << "NVPTX does not support SequentiallyConsistent Ordering on "
920-
"read-modify-writes yet: "
921-
<< N->getOperationName();
922-
N->print(OS);
923-
report_fatal_error(OS.str());
924-
}
906+
else
907+
report_fatal_error(
908+
formatv("NVPTX does not support SequentiallyConsistent Ordering on "
909+
"read-modify-writes yet: {}",
910+
N->getOperationName()));
925911
return AddrGenericOrGlobalOrShared
926912
? OperationOrderings(InstrOrder,
927913
NVPTX::Ordering::SequentiallyConsistent)
928914
: OperationOrderings(NVPTX::Ordering::NotAtomic);
929915
}
930916
}
931-
932-
SmallString<256> Msg;
933-
raw_svector_ostream OS(Msg);
934-
OS << "NVPTX backend does not support AtomicOrdering \""
935-
<< toIRString(Ordering) << "\" yet.";
936-
report_fatal_error(OS.str());
917+
report_fatal_error(
918+
formatv("NVPTX backend does not support AtomicOrdering \"{}\" yet.",
919+
toIRString(Ordering)));
937920
}
938921

939922
} // namespace
@@ -1166,11 +1149,8 @@ bool NVPTXDAGToDAGISel::tryLoad(SDNode *N) {
11661149
break;
11671150
}
11681151
default:
1169-
SmallString<256> Msg;
1170-
raw_svector_ostream OS(Msg);
1171-
OS << "Unexpected fence ordering: \"" << NVPTX::Ordering(FenceOrdering)
1172-
<< "\".";
1173-
report_fatal_error(OS.str());
1152+
report_fatal_error(formatv("Unexpected fence ordering: \"{}\".",
1153+
toCString(NVPTX::Ordering(FenceOrdering))));
11741154
}
11751155

11761156
// Type Setting: fromType + fromTypeWidth
@@ -1329,11 +1309,8 @@ bool NVPTXDAGToDAGISel::tryLoadVector(SDNode *N) {
13291309
break;
13301310
}
13311311
default:
1332-
SmallString<256> Msg;
1333-
raw_svector_ostream OS(Msg);
1334-
OS << "Unexpected fence ordering: \"" << NVPTX::Ordering(FenceOrdering)
1335-
<< "\".";
1336-
report_fatal_error(OS.str());
1312+
report_fatal_error(formatv("Unexpected fence ordering: \"{}\".",
1313+
toCString(NVPTX::Ordering(FenceOrdering))));
13371314
}
13381315

13391316
// Vector Setting
@@ -2001,11 +1978,8 @@ bool NVPTXDAGToDAGISel::tryStore(SDNode *N) {
20011978
break;
20021979
}
20031980
default:
2004-
SmallString<256> Msg;
2005-
raw_svector_ostream OS(Msg);
2006-
OS << "Unexpected fence ordering: \"" << NVPTX::Ordering(FenceOrdering)
2007-
<< "\".";
2008-
report_fatal_error(OS.str());
1981+
report_fatal_error(formatv("Unexpected fence ordering: \"{}\".",
1982+
toCString(NVPTX::Ordering(FenceOrdering))));
20091983
}
20101984

20111985
// Vector Setting
@@ -2161,11 +2135,8 @@ bool NVPTXDAGToDAGISel::tryStoreVector(SDNode *N) {
21612135
break;
21622136
}
21632137
default:
2164-
SmallString<256> Msg;
2165-
raw_svector_ostream OS(Msg);
2166-
OS << "Unexpected fence ordering: \"" << NVPTX::Ordering(FenceOrdering)
2167-
<< "\".";
2168-
report_fatal_error(OS.str());
2138+
report_fatal_error(formatv("Unexpected fence ordering: \"{}\".",
2139+
toCString(NVPTX::Ordering(FenceOrdering))));
21692140
}
21702141

21712142
// Type Setting: toType + toTypeWidth

0 commit comments

Comments
 (0)