mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-27 16:17:17 +00:00
Fix resetting the DataLayout in a Module.
No tool does this currently, but as everything else in a module we should be able to change its DataLayout. Most of the fix is in DataLayout to make sure it can be reset properly. The test uses Module::setDataLayout since the fact that we mutate a DataLayout is an implementation detail. The module could hold a OwningPtr<DataLayout> and the DataLayout itself could be immutable. Thanks to Philip Reames for pushing me in the right direction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202198 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -339,17 +339,21 @@ void Module::addModuleFlag(MDNode *Node) {
|
||||
}
|
||||
|
||||
void Module::setDataLayout(StringRef Desc) {
|
||||
DL.reset(Desc);
|
||||
|
||||
if (Desc.empty()) {
|
||||
DataLayoutStr = "";
|
||||
} else {
|
||||
DL.init(Desc);
|
||||
DataLayoutStr = DL.getStringRepresentation();
|
||||
// DataLayoutStr is now equivalent to Desc, but since the representation
|
||||
// is not unique, they may not be identical.
|
||||
}
|
||||
}
|
||||
|
||||
void Module::setDataLayout(const DataLayout *Other) {
|
||||
if (!Other) {
|
||||
DataLayoutStr = "";
|
||||
DL.reset("");
|
||||
} else {
|
||||
DL = *Other;
|
||||
DataLayoutStr = DL.getStringRepresentation();
|
||||
|
Reference in New Issue
Block a user