From: Joerg Sonnenberger Date: Tue, 10 Nov 2015 00:40:29 +0000 (+0000) Subject: Use the generic Sparc CPU handling for Linux, FreeBSD and OpenBSD, too. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cf22e53990915d032047eb0dbd2b7f1bdf966a91;p=clang Use the generic Sparc CPU handling for Linux, FreeBSD and OpenBSD, too. This currently changes the default toward the more historic -Av8/-Av9, but as discussed with James Y Knight, consistency is for now more important than figuring out which default CPU each OS should be using. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252571 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index de9e4003d0..033e41ec2a 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -7156,7 +7156,6 @@ void openbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA, const char *LinkingOutput) const { claimNoWarnArgs(Args); ArgStringList CmdArgs; - bool NeedsKPIC = false; switch (getToolChain().getArch()) { case llvm::Triple::x86: @@ -7171,16 +7170,21 @@ void openbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA, break; case llvm::Triple::sparc: - case llvm::Triple::sparcel: + case llvm::Triple::sparcel: { CmdArgs.push_back("-32"); - NeedsKPIC = true; + std::string CPU = getCPUName(Args, getToolChain().getTriple()); + CmdArgs.push_back(getSparcAsmModeForCPU(CPU, getToolChain().getTriple())); + AddAssemblerKPIC(getToolChain(), Args, CmdArgs); break; + } - case llvm::Triple::sparcv9: + case llvm::Triple::sparcv9: { CmdArgs.push_back("-64"); - CmdArgs.push_back("-Av9a"); - NeedsKPIC = true; + std::string CPU = getCPUName(Args, getToolChain().getTriple()); + CmdArgs.push_back(getSparcAsmModeForCPU(CPU, getToolChain().getTriple())); + AddAssemblerKPIC(getToolChain(), Args, CmdArgs); break; + } case llvm::Triple::mips64: case llvm::Triple::mips64el: { @@ -7196,7 +7200,7 @@ void openbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA, else CmdArgs.push_back("-EL"); - NeedsKPIC = true; + AddAssemblerKPIC(getToolChain(), Args, CmdArgs); break; } @@ -7204,9 +7208,6 @@ void openbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA, break; } - if (NeedsKPIC) - AddAssemblerKPIC(getToolChain(), Args, CmdArgs); - Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); CmdArgs.push_back("-o"); @@ -7545,15 +7546,13 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA, } case llvm::Triple::sparc: case llvm::Triple::sparcel: - case llvm::Triple::sparcv9: - if (getToolChain().getArch() == llvm::Triple::sparc) - CmdArgs.push_back("-Av8plusa"); - else - CmdArgs.push_back("-Av9a"); - + case llvm::Triple::sparcv9: { + std::string CPU = getCPUName(Args, getToolChain().getTriple()); + CmdArgs.push_back(getSparcAsmModeForCPU(CPU, getToolChain().getTriple())); AddAssemblerKPIC(getToolChain(), Args, CmdArgs); break; } + } Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); @@ -8056,7 +8055,6 @@ void gnutools::Assembler::ConstructJob(Compilation &C, const JobAction &JA, llvm::Triple Triple = llvm::Triple(TripleStr); ArgStringList CmdArgs; - bool NeedsKPIC = false; llvm::Reloc::Model RelocationModel; unsigned PICLevel; @@ -8095,16 +8093,20 @@ void gnutools::Assembler::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-mlittle-endian"); break; case llvm::Triple::sparc: - case llvm::Triple::sparcel: + case llvm::Triple::sparcel: { CmdArgs.push_back("-32"); - CmdArgs.push_back("-Av8plusa"); - NeedsKPIC = true; + std::string CPU = getCPUName(Args, getToolChain().getTriple()); + CmdArgs.push_back(getSparcAsmModeForCPU(CPU, getToolChain().getTriple())); + AddAssemblerKPIC(getToolChain(), Args, CmdArgs); break; - case llvm::Triple::sparcv9: + } + case llvm::Triple::sparcv9: { CmdArgs.push_back("-64"); - CmdArgs.push_back("-Av9a"); - NeedsKPIC = true; + std::string CPU = getCPUName(Args, getToolChain().getTriple()); + CmdArgs.push_back(getSparcAsmModeForCPU(CPU, getToolChain().getTriple())); + AddAssemblerKPIC(getToolChain(), Args, CmdArgs); break; + } case llvm::Triple::arm: case llvm::Triple::armeb: case llvm::Triple::thumb: @@ -8227,7 +8229,7 @@ void gnutools::Assembler::ConstructJob(Compilation &C, const JobAction &JA, Args.AddLastArg(CmdArgs, options::OPT_modd_spreg, options::OPT_mno_odd_spreg); - NeedsKPIC = true; + AddAssemblerKPIC(getToolChain(), Args, CmdArgs); break; } case llvm::Triple::systemz: { @@ -8239,11 +8241,6 @@ void gnutools::Assembler::ConstructJob(Compilation &C, const JobAction &JA, } } - if (NeedsKPIC) { - if (RelocationModel != llvm::Reloc::Static) - CmdArgs.push_back("-KPIC"); - } - Args.AddAllArgs(CmdArgs, options::OPT_I); Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); diff --git a/test/Driver/freebsd.c b/test/Driver/freebsd.c index a7448c11bf..d773504e72 100644 --- a/test/Driver/freebsd.c +++ b/test/Driver/freebsd.c @@ -135,4 +135,4 @@ // RUN: %clang -mcpu=ultrasparc -target sparc64-unknown-freebsd8 %s -### -no-integrated-as 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-SPARC-CPU %s // CHECK-SPARC-CPU: cc1{{.*}}" "-target-cpu" "ultrasparc" -// CHECK-SPARC-CPU: as{{.*}}" "-Av9a +// CHECK-SPARC-CPU: as{{.*}}" "-Av9 diff --git a/test/Driver/linux-as.c b/test/Driver/linux-as.c index 8aa323ab5b..a07abc17e5 100644 --- a/test/Driver/linux-as.c +++ b/test/Driver/linux-as.c @@ -110,7 +110,7 @@ // RUN: | FileCheck -check-prefix=CHECK-SPARCV9 %s // CHECK-SPARCV9: as // CHECK-SPARCV9: -64 -// CHECK-SPARCV9: -Av9a +// CHECK-SPARCV9: -Av9 // CHECK-SPARCV9-NOT: -KPIC // CHECK-SPARCV9: -o // @@ -119,7 +119,7 @@ // RUN: | FileCheck -check-prefix=CHECK-SPARCV9PIC %s // CHECK-SPARCV9PIC: as // CHECK-SPARCV9PIC: -64 -// CHECK-SPARCV9PIC: -Av9a +// CHECK-SPARCV9PIC: -Av9 // CHECK-SPARCV9PIC: -KPIC // CHECK-SPARCV9PIC: -o // @@ -128,7 +128,7 @@ // RUN: | FileCheck -check-prefix=CHECK-SPARCV8 %s // CHECK-SPARCV8: as // CHECK-SPARCV8: -32 -// CHECK-SPARCV8: -Av8plusa +// CHECK-SPARCV8: -Av8 // CHECK-SPARCV8: -o // // RUN: %clang -target sparcel-linux -mcpu=invalid-cpu -### \ @@ -136,7 +136,7 @@ // RUN: | FileCheck -check-prefix=CHECK-SPARCV8EL %s // CHECK-SPARCV8EL: as // CHECK-SPARCV8EL: -32 -// CHECK-SPARCV8EL: -Av8plusa +// CHECK-SPARCV8EL: -Av8 // CHECK-SPARCV8EL: -o // // RUN: %clang -target s390x-linux -### -no-integrated-as -c %s 2>&1 \ diff --git a/test/Driver/openbsd.c b/test/Driver/openbsd.c index 74fef5092a..95b9e6ad4f 100644 --- a/test/Driver/openbsd.c +++ b/test/Driver/openbsd.c @@ -61,8 +61,8 @@ // RUN: | FileCheck -check-prefix=CHECK-MIPS64EL-PIC %s // CHECK-AMD64-M32: as{{.*}}" "--32" // CHECK-POWERPC: as{{.*}}" "-mppc" "-many" -// CHECK-SPARC: as{{.*}}" "-32" -// CHECK-SPARC64: as{{.*}}" "-64" "-Av9a" +// CHECK-SPARC: as{{.*}}" "-32" "-Av8" +// CHECK-SPARC64: as{{.*}}" "-64" "-Av9" // CHECK-MIPS64: as{{.*}}" "-mabi" "64" "-EB" // CHECK-MIPS64-PIC: as{{.*}}" "-mabi" "64" "-EB" "-KPIC" // CHECK-MIPS64EL: as{{.*}}" "-mabi" "64" "-EL"