Add a TargetMachine hook that verifies DataLayout compatibility

Summary: Also provide the associated assertion when CodeGen starts.

Reviewers: echristo

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D11654

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243682 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Mehdi Amini 2015-07-30 20:33:18 +00:00
parent 4db6728b3a
commit 93204d28b8
2 changed files with 13 additions and 0 deletions

View File

@ -133,6 +133,15 @@ public:
/// Create a DataLayout.
const DataLayout createDataLayout() const { return DL; }
/// Test if a DataLayout if compatible with the CodeGen for this target.
///
/// The LLVM Module owns a DataLayout that is used for the target independent
/// optimizations and code generation. This hook provides a target specific
/// check on the validity of this DataLayout.
bool isCompatibleDataLayout(const DataLayout &Candidate) const {
return DL == Candidate;
}
/// Get the pointer size for this target.
///
/// This is the only time the DataLayout in the TargetMachine is used.

View File

@ -85,6 +85,10 @@ MachineFunction::MachineFunction(const Function *F, const TargetMachine &TM,
FunctionNumber = FunctionNum;
JumpTableInfo = nullptr;
assert(TM.isCompatibleDataLayout(getDataLayout()) &&
"Can't create a MachineFunction using a Module with a "
"Target-incompatible DataLayout attached\n");
}
MachineFunction::~MachineFunction() {