mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-16 12:24:03 +00:00
Add doInitialization/doFinalization to DataLayoutPass.
With this a DataLayoutPass can be reused for multiple modules. Once we have doInitialization/doFinalization, it doesn't seem necessary to pass a Module to the constructor. Overall this change seems in line with the idea of making DataLayout a required part of Module. With it the only way of having a DataLayout used is to add it to the Module. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217548 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -345,6 +345,10 @@ void DataLayout::parseSpecifier(StringRef Desc) {
|
||||
}
|
||||
|
||||
DataLayout::DataLayout(const Module *M) : LayoutMap(nullptr) {
|
||||
init(M);
|
||||
}
|
||||
|
||||
void DataLayout::init(const Module *M) {
|
||||
const DataLayout *Other = M->getDataLayout();
|
||||
if (Other)
|
||||
*this = *Other;
|
||||
@ -796,17 +800,17 @@ unsigned DataLayout::getPreferredAlignmentLog(const GlobalVariable *GV) const {
|
||||
}
|
||||
|
||||
DataLayoutPass::DataLayoutPass() : ImmutablePass(ID), DL("") {
|
||||
report_fatal_error("Bad DataLayoutPass ctor used. Tool did not specify a "
|
||||
"DataLayout to use?");
|
||||
initializeDataLayoutPassPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
DataLayoutPass::~DataLayoutPass() {}
|
||||
|
||||
DataLayoutPass::DataLayoutPass(const DataLayout &DL)
|
||||
: ImmutablePass(ID), DL(DL) {
|
||||
initializeDataLayoutPassPass(*PassRegistry::getPassRegistry());
|
||||
bool DataLayoutPass::doInitialization(Module &M) {
|
||||
DL.init(&M);
|
||||
return false;
|
||||
}
|
||||
|
||||
DataLayoutPass::DataLayoutPass(const Module *M) : ImmutablePass(ID), DL(M) {
|
||||
initializeDataLayoutPassPass(*PassRegistry::getPassRegistry());
|
||||
bool DataLayoutPass::doFinalization(Module &M) {
|
||||
DL.reset("");
|
||||
return false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user