Provide target data from the module if the target machine doesn't have any.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77973 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar 2009-08-03 17:34:19 +00:00
parent d5fe92efbc
commit 4e02eb0f67

View File

@ -310,7 +310,13 @@ int main(int argc, char **argv) {
// used by strange things like the C backend.
if (Target.WantsWholeFile()) {
PassManager PM;
PM.add(new TargetData(*Target.getTargetData()));
// Add the target data from the target machine, if it exists, or the module.
if (const TargetData *TD = Target.getTargetData())
PM.add(new TargetData(*TD));
else
PM.add(new TargetData(&mod));
if (!NoVerify)
PM.add(createVerifierPass());
@ -328,7 +334,12 @@ int main(int argc, char **argv) {
// Build up all of the passes that we want to do to the module.
ExistingModuleProvider Provider(M.release());
FunctionPassManager Passes(&Provider);
Passes.add(new TargetData(*Target.getTargetData()));
// Add the target data from the target machine, if it exists, or the module.
if (const TargetData *TD = Target.getTargetData())
Passes.add(new TargetData(*TD));
else
Passes.add(new TargetData(&mod));
#ifndef NDEBUG
if (!NoVerify)