<div dir="ltr">Looks like -mbig-endian and -mlittle-endian are GCC options.  We should implement them for compatibility.<div><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html">http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html</a><br>
</div><div><br></div><div>I don't think we should add -EL or -EB.  They don't fit in with the set of flags clang currently accepts.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Mar 28, 2014 at 1:14 PM, Christian Pirker <span dir="ltr"><<a href="mailto:cpirker@a-bix.com" target="_blank">cpirker@a-bix.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi All,<br>
<br>
I added -EL to select little endian and -EB to select big endian AArch64.<br>
I also added -mlittle-endian as alias for -EL and -mbig-endian as alias for -EB.<br>
<br>
Little endian:<br>
  --target=aarch64<br>
  --target=aarch64 -EL<br>
  --target=aarch64 -mlittle-endian<br>
  --target=aarch64_be -EL<br>
  --target=aarch64_be -mlittle-endian<br>
Big endian:<br>
  --target=aarch64_be<br>
  --target=aarch64 -EB<br>
  --target=aarch64 -mbig-endian<br>
  --target=aarch64_be -EB<br>
  --target=aarch64_be -mbig-endian<br>
<br>
Please review.<br>
<br>
Thanks,<br>
Christian<br>
<br>
<br>
<a href="http://llvm-reviews.chandlerc.com/D3215" target="_blank">http://llvm-reviews.chandlerc.com/D3215</a><br>
<br>
Files:<br>
  include/clang/Driver/Options.td<br>
  lib/Driver/Driver.cpp<br>
  test/Driver/aarch64-cpus.c<br>
<br>
Index: include/clang/Driver/Options.td<br>
===================================================================<br>
--- include/clang/Driver/Options.td<br>
+++ include/clang/Driver/Options.td<br>
@@ -987,6 +987,7 @@<br>
 def m64 : Flag<["-"], "m64">, Group<m_Group>, Flags<[DriverOption, CoreOption]>;<br>
 def mabi_EQ : Joined<["-"], "mabi=">, Group<m_Group>;<br>
 def march_EQ : Joined<["-"], "march=">, Group<m_Group>;<br>
+def mbig_endian : Flag<["-"], "mbig-endian">, Alias<EB>;<br>
 def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group<m_Group>;<br>
 def mconstant_cfstrings : Flag<["-"], "mconstant-cfstrings">, Group<clang_ignored_m_Group>;<br>
 def mcpu_EQ : Joined<["-"], "mcpu=">, Group<m_Group>;<br>
@@ -1007,6 +1008,7 @@<br>
 def mkernel : Flag<["-"], "mkernel">, Group<m_Group>;<br>
 def mlinker_version_EQ : Joined<["-"], "mlinker-version=">,<br>
   Flags<[DriverOption]>;<br>
+def mlittle_endian : Flag<["-"], "mlittle-endian">, Alias<EL>;<br>
 def mllvm : Separate<["-"], "mllvm">, Flags<[CC1Option]>,<br>
   HelpText<"Additional arguments to forward to LLVM's option processing">;<br>
 def mmacosx_version_min_EQ : Joined<["-"], "mmacosx-version-min=">, Group<m_Group>;<br>
Index: lib/Driver/Driver.cpp<br>
===================================================================<br>
--- lib/Driver/Driver.cpp<br>
+++ lib/Driver/Driver.cpp<br>
@@ -1870,11 +1870,15 @@<br>
         Target.setArch(llvm::Triple::mipsel);<br>
       else if (Target.getArch() == llvm::Triple::mips64)<br>
         Target.setArch(llvm::Triple::mips64el);<br>
+      else if (Target.getArch() == llvm::Triple::aarch64_be)<br>
+        Target.setArch(llvm::Triple::aarch64);<br>
     } else {<br>
       if (Target.getArch() == llvm::Triple::mipsel)<br>
         Target.setArch(llvm::Triple::mips);<br>
       else if (Target.getArch() == llvm::Triple::mips64el)<br>
         Target.setArch(llvm::Triple::mips64);<br>
+      else if (Target.getArch() == llvm::Triple::aarch64)<br>
+        Target.setArch(llvm::Triple::aarch64_be);<br>
     }<br>
   }<br>
<br>
Index: test/Driver/aarch64-cpus.c<br>
===================================================================<br>
--- test/Driver/aarch64-cpus.c<br>
+++ test/Driver/aarch64-cpus.c<br>
@@ -1,20 +1,44 @@<br>
 // Check target CPUs are correctly passed.<br>
<br>
 // RUN: %clang -target aarch64 -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC %s<br>
+// RUN: %clang -target aarch64 -mlittle-endian -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC %s<br>
+// RUN: %clang -target aarch64_be -mlittle-endian -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC %s<br>
+// RUN: %clang -target aarch64 -EL -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC %s<br>
+// RUN: %clang -target aarch64_be -EL -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC %s<br>
 // GENERIC: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "generic"<br>
<br>
 // RUN: %clang -target aarch64 -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53 %s<br>
+// RUN: %clang -target aarch64 -mlittle-endian -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53 %s<br>
+// RUN: %clang -target aarch64_be -mlittle-endian -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53 %s<br>
+// RUN: %clang -target aarch64 -EL -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53 %s<br>
+// RUN: %clang -target aarch64_be -EL -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53 %s<br>
 // CA53: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "cortex-a53"<br>
<br>
 // RUN: %clang -target aarch64 -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57 %s<br>
+// RUN: %clang -target aarch64 -mlittle-endian -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57 %s<br>
+// RUN: %clang -target aarch64_be -mlittle-endian -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57 %s<br>
+// RUN: %clang -target aarch64 -EL -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57 %s<br>
+// RUN: %clang -target aarch64_be -EL -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57 %s<br>
 // CA57: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "cortex-a57"<br>
<br>
 // RUN: %clang -target aarch64_be -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC-BE %s<br>
+// RUN: %clang -target aarch64 -mbig-endian -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC-BE %s<br>
+// RUN: %clang -target aarch64_be -mbig-endian -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC-BE %s<br>
+// RUN: %clang -target aarch64 -EB -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC-BE %s<br>
+// RUN: %clang -target aarch64_be -EB -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC-BE %s<br>
 // GENERIC-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "generic"<br>
<br>
 // RUN: %clang -target aarch64_be -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53-BE %s<br>
+// RUN: %clang -target aarch64 -mbig-endian -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53-BE %s<br>
+// RUN: %clang -target aarch64_be -mbig-endian -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53-BE %s<br>
+// RUN: %clang -target aarch64 -EB -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53-BE %s<br>
+// RUN: %clang -target aarch64_be -EB -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53-BE %s<br>
 // CA53-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "cortex-a53"<br>
<br>
 // RUN: %clang -target aarch64_be -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57-BE %s<br>
+// RUN: %clang -target aarch64 -mbig-endian -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57-BE %s<br>
+// RUN: %clang -target aarch64_be -mbig-endian -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57-BE %s<br>
+// RUN: %clang -target aarch64 -EB -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57-BE %s<br>
+// RUN: %clang -target aarch64_be -EB -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57-BE %s<br>
 // CA57-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "cortex-a57"<br>
<br>_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br></blockquote></div><br></div>