]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/patches/patch-r262262-clang-r199034-sparc.diff
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / patches / patch-r262262-clang-r199034-sparc.diff
1 Pull in r199034 from upstream clang trunk (by Jakob Stoklund Olesen):
2
3   MIPS and SPARC assemblers both take the -KPIC flag.
4
5 Introduced here: http://svnweb.freebsd.org/changeset/base/262262
6
7 Index: tools/clang/lib/Driver/Tools.cpp
8 ===================================================================
9 --- tools/clang/lib/Driver/Tools.cpp
10 +++ tools/clang/lib/Driver/Tools.cpp
11 @@ -6207,6 +6207,7 @@ void gnutools::Assemble::ConstructJob(Compilation
12                                        const ArgList &Args,
13                                        const char *LinkingOutput) const {
14    ArgStringList CmdArgs;
15 +  bool NeedsKPIC = false;
16  
17    // Add --32/--64 to make sure we get the format we want.
18    // This is incomplete
19 @@ -6229,9 +6230,11 @@ void gnutools::Assemble::ConstructJob(Compilation
20    } else if (getToolChain().getArch() == llvm::Triple::sparc) {
21      CmdArgs.push_back("-32");
22      CmdArgs.push_back("-Av8plusa");
23 +    NeedsKPIC = true;
24    } else if (getToolChain().getArch() == llvm::Triple::sparcv9) {
25      CmdArgs.push_back("-64");
26      CmdArgs.push_back("-Av9a");
27 +    NeedsKPIC = true;
28    } else if (getToolChain().getArch() == llvm::Triple::arm) {
29      StringRef MArch = getToolChain().getArchName();
30      if (MArch == "armv7" || MArch == "armv7a" || MArch == "armv7-a")
31 @@ -6291,6 +6294,15 @@ void gnutools::Assemble::ConstructJob(Compilation
32          CmdArgs.push_back(Args.MakeArgString("-mmsa"));
33      }
34  
35 +    NeedsKPIC = true;
36 +  } else if (getToolChain().getArch() == llvm::Triple::systemz) {
37 +    // Always pass an -march option, since our default of z10 is later
38 +    // than the GNU assembler's default.
39 +    StringRef CPUName = getSystemZTargetCPU(Args);
40 +    CmdArgs.push_back(Args.MakeArgString("-march=" + CPUName));
41 +  }
42 +
43 +  if (NeedsKPIC) {
44      Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
45                                        options::OPT_fpic, options::OPT_fno_pic,
46                                        options::OPT_fPIE, options::OPT_fno_PIE,
47 @@ -6302,11 +6314,6 @@ void gnutools::Assemble::ConstructJob(Compilation
48           LastPICArg->getOption().matches(options::OPT_fpie))) {
49        CmdArgs.push_back("-KPIC");
50      }
51 -  } else if (getToolChain().getArch() == llvm::Triple::systemz) {
52 -    // Always pass an -march option, since our default of z10 is later
53 -    // than the GNU assembler's default.
54 -    StringRef CPUName = getSystemZTargetCPU(Args);
55 -    CmdArgs.push_back(Args.MakeArgString("-march=" + CPUName));
56    }
57  
58    Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
59 Index: tools/clang/test/Driver/linux-as.c
60 ===================================================================
61 --- tools/clang/test/Driver/linux-as.c
62 +++ tools/clang/test/Driver/linux-as.c
63 @@ -66,8 +66,18 @@
64  // CHECK-SPARCV9: as
65  // CHECK-SPARCV9: -64
66  // CHECK-SPARCV9: -Av9a
67 +// CHECK-SPARCV9-NOT: -KPIC
68  // CHECK-SPARCV9: -o
69  //
70 +// RUN: %clang -target sparc64-linux -mcpu=invalid-cpu -### \
71 +// RUN:   -no-integrated-as -fpic -c %s 2>&1 \
72 +// RUN:   | FileCheck -check-prefix=CHECK-SPARCV9PIC %s
73 +// CHECK-SPARCV9PIC: as
74 +// CHECK-SPARCV9PIC: -64
75 +// CHECK-SPARCV9PIC: -Av9a
76 +// CHECK-SPARCV9PIC: -KPIC
77 +// CHECK-SPARCV9PIC: -o
78 +//
79  // RUN: %clang -target sparc-linux -mcpu=invalid-cpu -### \
80  // RUN:   -no-integrated-as -c %s 2>&1 \
81  // RUN:   | FileCheck -check-prefix=CHECK-SPARCV8 %s