forked from OSchip/llvm-project
Driver/Darwin: The -arch argument values aren't exactly the arch names from a
triple. - Translate the special case of powerpc to its expected -arch name. llvm-svn: 167571
This commit is contained in:
parent
2ffcf43a13
commit
c3bd9f5c50
|
@ -85,6 +85,10 @@ public:
|
|||
StringRef getPlatform() const { return Triple.getVendorName(); }
|
||||
StringRef getOS() const { return Triple.getOSName(); }
|
||||
|
||||
/// \brief Provide the default architecture name (as expected by -arch) for
|
||||
/// this toolchain. Note t
|
||||
std::string getDefaultUniversalArchName() const;
|
||||
|
||||
std::string getTripleString() const {
|
||||
return Triple.getTriple();
|
||||
}
|
||||
|
|
|
@ -806,7 +806,7 @@ void Driver::BuildUniversalActions(const ToolChain &TC,
|
|||
// When there is no explicit arch for this platform, make sure we still bind
|
||||
// the architecture (to the default) so that -Xarch_ is handled correctly.
|
||||
if (!Archs.size())
|
||||
Archs.push_back(Args.MakeArgString(TC.getArchName()));
|
||||
Archs.push_back(Args.MakeArgString(TC.getDefaultUniversalArchName()));
|
||||
|
||||
// FIXME: We killed off some others but these aren't yet detected in a
|
||||
// functional manner. If we added information to jobs about which "auxiliary"
|
||||
|
|
|
@ -33,6 +33,21 @@ const Driver &ToolChain::getDriver() const {
|
|||
return D;
|
||||
}
|
||||
|
||||
std::string ToolChain::getDefaultUniversalArchName() const {
|
||||
// In universal driver terms, the arch name accepted by -arch isn't exactly
|
||||
// the same as the ones that appear in the triple. Roughly speaking, this is
|
||||
// an inverse of the darwin::getArchTypeForDarwinArchName() function, but the
|
||||
// only interesting special case is powerpc.
|
||||
switch (Triple.getArch()) {
|
||||
case llvm::Triple::ppc:
|
||||
return "ppc";
|
||||
case llvm::Triple::ppc64:
|
||||
return "ppc64";
|
||||
default:
|
||||
return Triple.getArchName();
|
||||
}
|
||||
}
|
||||
|
||||
bool ToolChain::IsUnwindTablesDefault() const {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
// Check that the name of the arch we bind is "ppc" not "powerpc".
|
||||
//
|
||||
// RUN: %clang -target powerpc-apple-darwin8 -### \
|
||||
// RUN: -ccc-print-phases %s 2> %t
|
||||
// RUN: FileCheck --check-prefix=CHECK-POWERPC < %t %s
|
||||
//
|
||||
// CHECK-POWERPC: bind-arch, "ppc"
|
Loading…
Reference in New Issue