From c63d4fac4f2a726e1fe214dabbe574ef863fe896 Mon Sep 17 00:00:00 2001 From: wren romano <2998727+wrengr@users.noreply.github.com> Date: Tue, 31 May 2022 13:06:10 -0700 Subject: [PATCH] [mlir][sparse] Improving the FATAL macro The previous macro definition using `{...}` would fail to compile when the callsite uses a semicolon followed by an else-statement (i.e., `if (...) FATAL(...); else ...;`). Replacing the simple braces with `do{...}while(0)` (n.b., semicolon not included in the macro definition) enables callsites to use the semicolon plus else-statement syntax without problems. The new definition now requires the semicolon at all callsites, but since it was already being called that way nothing changes. For more explanation, see Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D126514 --- mlir/lib/ExecutionEngine/SparseTensorUtils.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mlir/lib/ExecutionEngine/SparseTensorUtils.cpp b/mlir/lib/ExecutionEngine/SparseTensorUtils.cpp index da3b705..d307e52 100644 --- a/mlir/lib/ExecutionEngine/SparseTensorUtils.cpp +++ b/mlir/lib/ExecutionEngine/SparseTensorUtils.cpp @@ -83,10 +83,10 @@ static inline uint64_t checkedMul(uint64_t lhs, uint64_t rhs) { // to track down whether an error is coming from our code vs somewhere else // in MLIR.) #define FATAL(...) \ - { \ + do { \ fprintf(stderr, "SparseTensorUtils: " __VA_ARGS__); \ exit(1); \ - } + } while (0) // TODO: try to unify this with `SparseTensorFile::assertMatchesShape` // which is used by `openSparseTensorCOO`. It's easy enough to resolve -- 2.7.4