mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 04:09:45 +00:00
[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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239808 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
443838d8aa
commit
a8cc053519
@ -1,5 +1,5 @@
|
||||
! RUN: llvm-mc %s -arch=sparcel -show-encoding | FileCheck %s
|
||||
! RUN: llvm-mc -arch=sparcel -filetype=obj < %s | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-OBJ
|
||||
! RUN: llvm-mc %s -triple=sparcel-linux-gnu -show-encoding | FileCheck %s
|
||||
! RUN: llvm-mc -triple=sparcel-linux-gnu -filetype=obj < %s | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-OBJ
|
||||
|
||||
! CHECK-OBJ: .text:
|
||||
.BB0:
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user