mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-23 13:50:11 +00:00
[mlir] Change ABI breaking use of NDEBUG to LLVM_ENABLE_ABI_BREAKING_CHECKS
The `DataLayout` class currently contains the member `layoutStack` which is hidden behind a preprocessor region dependant on the NDEBUG macro. Code wise this makes a lot of sense, as the `layoutStack` is used for extra assertions that users will want when compiling a debug build.
It however has the uncomfortable consequence of leading to a different ABI in Debug and Release builds. This I think is a bit annoying for downstream projects and others as they may want to build against a stable Release of MLIR in Release mode, but be able to debug their own project depending on MLIR.
This patch changes the related uses of NDEBUG to LLVM_ENABLE_ABI_BREAKING_CHECKS. As the macro is computed at configure time of LLVM, it may not change based on compiler settings of a downstream projects like NDEBUG would.
Differential Revision: https://reviews.llvm.org/D107227
(cherry picked from commit 97335ad13f
)
This commit is contained in:
parent
d6974c0108
commit
a7eab64b7c
@ -163,7 +163,7 @@ private:
|
||||
/// Combined layout spec at the given scope.
|
||||
const DataLayoutSpecInterface originalLayout;
|
||||
|
||||
#ifndef NDEBUG
|
||||
#if LLVM_ENABLE_ABI_BREAKING_CHECKS
|
||||
/// List of enclosing layout specs.
|
||||
SmallVector<DataLayoutSpecInterface, 2> layoutStack;
|
||||
#endif
|
||||
|
@ -269,7 +269,7 @@ mlir::DataLayout::DataLayout() : DataLayout(ModuleOp()) {}
|
||||
|
||||
mlir::DataLayout::DataLayout(DataLayoutOpInterface op)
|
||||
: originalLayout(getCombinedDataLayout(op)), scope(op) {
|
||||
#ifndef NDEBUG
|
||||
#if LLVM_ENABLE_ABI_BREAKING_CHECKS
|
||||
checkMissingLayout(originalLayout, op);
|
||||
collectParentLayouts(op, layoutStack);
|
||||
#endif
|
||||
@ -277,7 +277,7 @@ mlir::DataLayout::DataLayout(DataLayoutOpInterface op)
|
||||
|
||||
mlir::DataLayout::DataLayout(ModuleOp op)
|
||||
: originalLayout(getCombinedDataLayout(op)), scope(op) {
|
||||
#ifndef NDEBUG
|
||||
#if LLVM_ENABLE_ABI_BREAKING_CHECKS
|
||||
checkMissingLayout(originalLayout, op);
|
||||
collectParentLayouts(op, layoutStack);
|
||||
#endif
|
||||
@ -297,7 +297,7 @@ mlir::DataLayout mlir::DataLayout::closest(Operation *op) {
|
||||
}
|
||||
|
||||
void mlir::DataLayout::checkValid() const {
|
||||
#ifndef NDEBUG
|
||||
#if LLVM_ENABLE_ABI_BREAKING_CHECKS
|
||||
SmallVector<DataLayoutSpecInterface> specs;
|
||||
collectParentLayouts(scope, specs);
|
||||
assert(specs.size() == layoutStack.size() &&
|
||||
|
Loading…
Reference in New Issue
Block a user