diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2015-07-06 23:59:45 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2015-07-06 23:59:45 +0000 |
commit | 1a15f2ec578ae476c76135dbffd1fc6eb8d16486 (patch) | |
tree | afd32dcb1d67c5fa4281bfad0d8dd5132aded45e | |
parent | 4ea14a671d9cc8e141438d7db7ccbdbae2caf6eb (diff) | |
download | bcm5719-llvm-1a15f2ec578ae476c76135dbffd1fc6eb8d16486.tar.gz bcm5719-llvm-1a15f2ec578ae476c76135dbffd1fc6eb8d16486.zip |
[Driver] Use llvm::Triple methods to handle -EL and -EB.
Add a test for ppc64(le), which wasn't handled before.
llvm-svn: 241528
-rw-r--r-- | clang/lib/Driver/Driver.cpp | 18 | ||||
-rw-r--r-- | clang/test/Driver/ppc-endian.c | 9 |
2 files changed, 15 insertions, 12 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index b9dc35d6219..c23768e6860 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -1932,19 +1932,13 @@ static llvm::Triple computeTargetTriple(StringRef DefaultTargetTriple, if (Arg *A = Args.getLastArg(options::OPT_mlittle_endian, options::OPT_mbig_endian)) { if (A->getOption().matches(options::OPT_mlittle_endian)) { - if (Target.getArch() == llvm::Triple::mips) - Target.setArch(llvm::Triple::mipsel); - else if (Target.getArch() == llvm::Triple::mips64) - Target.setArch(llvm::Triple::mips64el); - else if (Target.getArch() == llvm::Triple::aarch64_be) - Target.setArch(llvm::Triple::aarch64); + llvm::Triple LE = Target.getLittleEndianArchVariant(); + if (LE.getArch() != llvm::Triple::UnknownArch) + Target = std::move(LE); } else { - if (Target.getArch() == llvm::Triple::mipsel) - Target.setArch(llvm::Triple::mips); - else if (Target.getArch() == llvm::Triple::mips64el) - Target.setArch(llvm::Triple::mips64); - else if (Target.getArch() == llvm::Triple::aarch64) - Target.setArch(llvm::Triple::aarch64_be); + llvm::Triple BE = Target.getBigEndianArchVariant(); + if (BE.getArch() != llvm::Triple::UnknownArch) + Target = std::move(BE); } } diff --git a/clang/test/Driver/ppc-endian.c b/clang/test/Driver/ppc-endian.c new file mode 100644 index 00000000000..4d8db38943b --- /dev/null +++ b/clang/test/Driver/ppc-endian.c @@ -0,0 +1,9 @@ +// RUN: %clang -target powerpc64le -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-LE %s +// RUN: %clang -target powerpc64le -mlittle-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-LE %s +// RUN: %clang -target powerpc64 -mlittle-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-LE %s +// CHECK-LE: "-cc1"{{.*}} "-triple" "powerpc64le{{.*}}" + +// RUN: %clang -target powerpc64 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE %s +// RUN: %clang -target powerpc64 -mbig-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE %s +// RUN: %clang -target powerpc64le -mbig-endian -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-BE %s +// CHECK-BE: "-cc1"{{.*}} "-triple" "powerpc64{{.*}}" |