diff options
author | Daniel Sanders <daniel.sanders@imgtec.com> | 2015-06-16 09:57:38 +0000 |
---|---|---|
committer | Daniel Sanders <daniel.sanders@imgtec.com> | 2015-06-16 09:57:38 +0000 |
commit | c535d93b47c79add08a84917e3dcad1daf0323dd (patch) | |
tree | e3df857ad682406c963302672c4a74b319ad4bf9 /llvm/tools/llvm-mc/llvm-mc.cpp | |
parent | c8a694fd27ae7becb8041f40d1a2a8d81033042f (diff) | |
download | bcm5719-llvm-c535d93b47c79add08a84917e3dcad1daf0323dd.tar.gz bcm5719-llvm-c535d93b47c79add08a84917e3dcad1daf0323dd.zip |
[llvm-mc] The object form of the GNU triple should be the same as the string form.
Summary:
GetTarget() may modify TripleName without also updating TheTriple.
This can lead to situations where the MCObjectStreamer has a different triple
to the rest of LLVM.
This inconsistency caused sparc-little-endian.s to pass on Windows because most
of LLVM had sparcel-pc-win32 while MCObjectStreamer had "". I believe the same
kind of thing was also true of Darwin.
Reviewers: rengolin
Reviewed By: rengolin
Subscribers: llvm-commits, rengolin, rafael
Differential Revision: http://reviews.llvm.org/D10450
llvm-svn: 239808
Diffstat (limited to 'llvm/tools/llvm-mc/llvm-mc.cpp')
-rw-r--r-- | llvm/tools/llvm-mc/llvm-mc.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/tools/llvm-mc/llvm-mc.cpp b/llvm/tools/llvm-mc/llvm-mc.cpp index 9a9185c7523..d53596ea57e 100644 --- a/llvm/tools/llvm-mc/llvm-mc.cpp +++ b/llvm/tools/llvm-mc/llvm-mc.cpp @@ -383,7 +383,6 @@ int main(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n"); MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags(); TripleName = Triple::normalize(TripleName); - Triple TheTriple(TripleName); setDwarfDebugFlags(argc, argv); setDwarfDebugProducer(); @@ -392,6 +391,9 @@ int main(int argc, char **argv) { const Target *TheTarget = GetTarget(ProgName); if (!TheTarget) return 1; + // Now that GetTarget() has (potentially) replaced TripleName, it's safe to + // construct the Triple object. + Triple TheTriple(TripleName); ErrorOr<std::unique_ptr<MemoryBuffer>> BufferPtr = MemoryBuffer::getFileOrSTDIN(InputFilename); |