forked from OSchip/llvm-project
[Driver][OpenBSD] Some improvements to the external assembler handling
- Pass CPU variant for ARM - Pass MIPS CPU in addition to the ABI
This commit is contained in:
parent
b75f3dd88e
commit
34188f237f
|
@ -7,6 +7,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "OpenBSD.h"
|
||||
#include "Arch/ARM.h"
|
||||
#include "Arch/Mips.h"
|
||||
#include "Arch/Sparc.h"
|
||||
#include "CommonArgs.h"
|
||||
|
@ -30,6 +31,8 @@ void openbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
const char *LinkingOutput) const {
|
||||
const toolchains::OpenBSD &ToolChain =
|
||||
static_cast<const toolchains::OpenBSD &>(getToolChain());
|
||||
const Driver &D = ToolChain.getDriver();
|
||||
const llvm::Triple &Triple = ToolChain.getTriple();
|
||||
|
||||
claimNoWarnArgs(Args);
|
||||
ArgStringList CmdArgs;
|
||||
|
@ -41,6 +44,15 @@ void openbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
CmdArgs.push_back("--32");
|
||||
break;
|
||||
|
||||
case llvm::Triple::arm:
|
||||
case llvm::Triple::armeb: {
|
||||
StringRef MArch, MCPU;
|
||||
arm::getARMArchCPUFromArgs(Args, MArch, MCPU, /*FromAs*/ true);
|
||||
std::string Arch = arm::getARMTargetCPU(MCPU, MArch, Triple);
|
||||
CmdArgs.push_back(Args.MakeArgString("-mcpu=" + Arch));
|
||||
break;
|
||||
}
|
||||
|
||||
case llvm::Triple::ppc:
|
||||
CmdArgs.push_back("-mppc");
|
||||
CmdArgs.push_back("-many");
|
||||
|
@ -48,10 +60,8 @@ void openbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
|
||||
case llvm::Triple::sparcv9: {
|
||||
CmdArgs.push_back("-64");
|
||||
std::string CPU = getCPUName(ToolChain.getDriver(), Args,
|
||||
ToolChain.getTriple());
|
||||
CmdArgs.push_back(
|
||||
sparc::getSparcAsmModeForCPU(CPU, ToolChain.getTriple()));
|
||||
std::string CPU = getCPUName(D, Args, Triple);
|
||||
CmdArgs.push_back(sparc::getSparcAsmModeForCPU(CPU, Triple));
|
||||
AddAssemblerKPIC(ToolChain, Args, CmdArgs);
|
||||
break;
|
||||
}
|
||||
|
@ -60,12 +70,15 @@ void openbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
case llvm::Triple::mips64el: {
|
||||
StringRef CPUName;
|
||||
StringRef ABIName;
|
||||
mips::getMipsCPUAndABI(Args, ToolChain.getTriple(), CPUName, ABIName);
|
||||
mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName);
|
||||
|
||||
CmdArgs.push_back("-march");
|
||||
CmdArgs.push_back(CPUName.data());
|
||||
|
||||
CmdArgs.push_back("-mabi");
|
||||
CmdArgs.push_back(mips::getGnuCompatibleMipsABIName(ABIName).data());
|
||||
|
||||
if (ToolChain.getTriple().isLittleEndian())
|
||||
if (Triple.isLittleEndian())
|
||||
CmdArgs.push_back("-EL");
|
||||
else
|
||||
CmdArgs.push_back("-EB");
|
||||
|
|
|
@ -56,6 +56,8 @@
|
|||
// Check passing options to the assembler for various OpenBSD targets
|
||||
// RUN: %clang -target amd64-pc-openbsd -m32 -### -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK-AMD64-M32 %s
|
||||
// RUN: %clang -target arm-unknown-openbsd -### -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK-ARM %s
|
||||
// RUN: %clang -target powerpc-unknown-openbsd -### -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK-POWERPC %s
|
||||
// RUN: %clang -target sparc64-unknown-openbsd -### -no-integrated-as -c %s 2>&1 \
|
||||
|
@ -69,10 +71,11 @@
|
|||
// RUN: %clang -target mips64el-unknown-openbsd -fPIC -### -no-integrated-as -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK-MIPS64EL-PIC %s
|
||||
// CHECK-AMD64-M32: as{{.*}}" "--32"
|
||||
// CHECK-ARM: as{{.*}}" "-mcpu=cortex-a8"
|
||||
// CHECK-POWERPC: as{{.*}}" "-mppc" "-many"
|
||||
// CHECK-SPARC64: as{{.*}}" "-64" "-Av9a"
|
||||
// CHECK-MIPS64: as{{.*}}" "-mabi" "64" "-EB"
|
||||
// CHECK-MIPS64-PIC: as{{.*}}" "-mabi" "64" "-EB" "-KPIC"
|
||||
// CHECK-MIPS64: as{{.*}}" "-march" "mips3" "-mabi" "64" "-EB"
|
||||
// CHECK-MIPS64-PIC: as{{.*}}" "-march" "mips3" "-mabi" "64" "-EB" "-KPIC"
|
||||
// CHECK-MIPS64EL: as{{.*}}" "-mabi" "64" "-EL"
|
||||
// CHECK-MIPS64EL-PIC: as{{.*}}" "-mabi" "64" "-EL" "-KPIC"
|
||||
|
||||
|
|
Loading…
Reference in New Issue