summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-08-10 17:39:05 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-08-10 17:39:05 +0000
commitce25f33e2a825c9260c834f029ff206672645d7c (patch)
tree9a8c8ed81df593198451cb2e63a38c3b31d765da /clang/lib
parentd215976208312f179213c6b9b830cf52331f5fcf (diff)
downloadbcm5719-llvm-ce25f33e2a825c9260c834f029ff206672645d7c.tar.gz
bcm5719-llvm-ce25f33e2a825c9260c834f029ff206672645d7c.zip
Driver/FreeBSD: Infer the right arch name in the presence of -m32,-m64, for the
cases we care about. - This is eventually going to be unified outside the host specific code. llvm-svn: 110693
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/HostInfo.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Driver/HostInfo.cpp b/clang/lib/Driver/HostInfo.cpp
index 62358f84a52..cf5e382e600 100644
--- a/clang/lib/Driver/HostInfo.cpp
+++ b/clang/lib/Driver/HostInfo.cpp
@@ -345,8 +345,20 @@ ToolChain *FreeBSDHostInfo::CreateToolChain(const ArgList &Args,
assert(!ArchName &&
"Unexpected arch name on platform without driver driver support.");
+ // Automatically handle some instances of -m32/-m64 we know about.
std::string Arch = getArchName();
ArchName = Arch.c_str();
+ if (Arg *A = Args.getLastArg(options::OPT_m32, options::OPT_m64)) {
+ if (Triple.getArch() == llvm::Triple::x86 ||
+ Triple.getArch() == llvm::Triple::x86_64) {
+ ArchName =
+ (A->getOption().matches(options::OPT_m32)) ? "i386" : "x86_64";
+ } else if (Triple.getArch() == llvm::Triple::ppc ||
+ Triple.getArch() == llvm::Triple::ppc64) {
+ ArchName =
+ (A->getOption().matches(options::OPT_m32)) ? "powerpc" : "powerpc64";
+ }
+ }
ToolChain *&TC = ToolChains[ArchName];
if (!TC) {
OpenPOWER on IntegriCloud