Author: Stefan Gränitz Date: 2022-08-08T15:50:35-07:00 New Revision: 8371a291093ecd545fb6cb8d1de641f6d27847f9
URL: https://github.com/llvm/llvm-project/commit/8371a291093ecd545fb6cb8d1de641f6d27847f9 DIFF: https://github.com/llvm/llvm-project/commit/8371a291093ecd545fb6cb8d1de641f6d27847f9.diff LOG: Wrap `llvm_unreachable` macro in do-while loop Macros that expand into multiple terms can cause interesting preprocessor hickups depending on the context they are used in. https://github.com/llvm/llvm-project/issues/56867 reported a miscompilation of `llvm_unreachable(msg)` inside a `LLVM_DEBUG({ ... })` block. We were able to fix it by wrapping the expansion in a `do {} while(false)`. Differential Revision: https://reviews.llvm.org/D131337 (cherry picked from commit 7a66fe1075cfc7568554aeea9c40997dfb581979) Added: Modified: llvm/include/llvm/Support/ErrorHandling.h Removed: ################################################################################ diff --git a/llvm/include/llvm/Support/ErrorHandling.h b/llvm/include/llvm/Support/ErrorHandling.h index 004b3b7868fb5..9c8e3448f3a03 100644 --- a/llvm/include/llvm/Support/ErrorHandling.h +++ b/llvm/include/llvm/Support/ErrorHandling.h @@ -147,7 +147,11 @@ llvm_unreachable_internal(const char *msg = nullptr, const char *file = nullptr, #elif LLVM_UNREACHABLE_OPTIMIZE #define llvm_unreachable(msg) LLVM_BUILTIN_UNREACHABLE #else -#define llvm_unreachable(msg) LLVM_BUILTIN_TRAP, LLVM_BUILTIN_UNREACHABLE +#define llvm_unreachable(msg) \ + do { \ + LLVM_BUILTIN_TRAP; \ + LLVM_BUILTIN_UNREACHABLE; \ + } while (false) #endif #endif _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits