patch-r262262-clang-r198911-sparc.diff revision 269012
1Pull in r198911 from upstream clang trunk (by Jakob Stoklund Olesen):
2
3  Pass -32/-64 to the assembler when building for sparc/sparc64.
4
5Introduced here: http://svnweb.freebsd.org/changeset/base/262262
6
7Index: tools/clang/test/Driver/linux-as.c
8===================================================================
9--- tools/clang/test/Driver/linux-as.c
10+++ tools/clang/test/Driver/linux-as.c
11@@ -60,6 +60,20 @@
12 // RUN:   | FileCheck -check-prefix=CHECK-PPC-NO-MCPU %s
13 // CHECK-PPC-NO-MCPU-NOT: as{{.*}} "-mcpu=invalid-cpu"
14 //
15+// RUN: %clang -target sparc64-linux -mcpu=invalid-cpu -### \
16+// RUN:   -no-integrated-as -c %s 2>&1 \
17+// RUN:   | FileCheck -check-prefix=CHECK-SPARCV9 %s
18+// CHECK-SPARCV9: as
19+// CHECK-SPARCV9: -64
20+// CHECK-SPARCV9: -o
21+//
22+// RUN: %clang -target sparc-linux -mcpu=invalid-cpu -### \
23+// RUN:   -no-integrated-as -c %s 2>&1 \
24+// RUN:   | FileCheck -check-prefix=CHECK-SPARCV8 %s
25+// CHECK-SPARCV8: as
26+// CHECK-SPARCV8: -32
27+// CHECK-SPARCV8: -o
28+//
29 // RUN: %clang -target s390x-linux -### -no-integrated-as -c %s 2>&1 \
30 // RUN:   | FileCheck -check-prefix=CHECK-Z-DEFAULT-ARCH %s
31 // CHECK-Z-DEFAULT-ARCH: as{{.*}} "-march=z10"
32Index: tools/clang/lib/Driver/Tools.cpp
33===================================================================
34--- tools/clang/lib/Driver/Tools.cpp
35+++ tools/clang/lib/Driver/Tools.cpp
36@@ -6226,6 +6226,10 @@ void gnutools::Assemble::ConstructJob(Compilation
37     CmdArgs.push_back("-a64");
38     CmdArgs.push_back("-mppc64le");
39     CmdArgs.push_back("-many");
40+  } else if (getToolChain().getArch() == llvm::Triple::sparc) {
41+    CmdArgs.push_back("-32");
42+  } else if (getToolChain().getArch() == llvm::Triple::sparcv9) {
43+    CmdArgs.push_back("-64");
44   } else if (getToolChain().getArch() == llvm::Triple::arm) {
45     StringRef MArch = getToolChain().getArchName();
46     if (MArch == "armv7" || MArch == "armv7a" || MArch == "armv7-a")
47