Store a DataLayout in Module.

Now that DataLayout is not a pass, store one in Module.

Since the C API expects to be able to get a char* to the datalayout description,
we have to keep a std::string somewhere. This patch keeps it in Module and also
uses it to represent modules without a DataLayout.

Once DataLayout is mandatory, we should probably move the string to DataLayout
itself since it won't be necessary anymore to represent the special case of a
module without a DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202190 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2014-02-25 20:01:08 +00:00
parent dbaa6ab8b5
commit aab87fe0ec
9 changed files with 62 additions and 24 deletions

View File

@ -429,11 +429,8 @@ int main(int argc, char **argv) {
Passes.add(TLI);
// Add an appropriate DataLayout instance for this module.
DataLayout *DL = 0;
const std::string &ModuleDataLayout = M.get()->getDataLayout();
if (!ModuleDataLayout.empty())
DL = new DataLayout(ModuleDataLayout);
else if (!DefaultDataLayout.empty())
const DataLayout *DL = M.get()->getDataLayout();
if (!DL && !DefaultDataLayout.empty())
DL = new DataLayout(DefaultDataLayout);
if (DL)