[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 <https://gcc.gnu.org/onlinedocs/cpp/Swallowing-the-Semicolon.html>

Reviewed By: aartbik

Differential Revision: https://reviews.llvm.org/D126514
This commit is contained in:
wren romano 2022-05-31 13:06:10 -07:00
parent da9d41cb87
commit c63d4fac4f
1 changed files with 2 additions and 2 deletions

View File

@ -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