(LLVM up) Update to use llvm::sys::getHostTriple().
- Always pass -triple to clang-cc (-arch will be removed).
- clang-cc doesn't play guess work with the target triple anymore.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68119 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index e315a2f..cae0766 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -39,6 +39,11 @@
const char *LinkingOutput) const {
ArgStringList CmdArgs;
+ CmdArgs.push_back("-triple");
+ const char *TripleStr =
+ Args.MakeArgString(getToolChain().getTripleString().c_str());
+ CmdArgs.push_back(TripleStr);
+
if (isa<AnalyzeJobAction>(JA)) {
assert(JA.getType() == types::TY_Plist && "Invalid output type.");
CmdArgs.push_back("-analyze");
@@ -371,11 +376,6 @@
Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
- // FIXME: Always pass the full triple once we aren't concerned with
- // ccc compat.
- CmdArgs.push_back("-arch");
- CmdArgs.push_back(getToolChain().getArchName().c_str());
-
if (Output.getType() == types::TY_Dependencies) {
// Handled with other dependency code.
} else if (Output.isPipe()) {
diff --git a/test/Driver/clang-translation.c b/test/Driver/clang-translation.c
index b63a437..2421bd1 100644
--- a/test/Driver/clang-translation.c
+++ b/test/Driver/clang-translation.c
@@ -1,4 +1,5 @@
// RUN: clang -ccc-host-triple i386-unknown-unknown -### -S -O0 -Os %s -o %t.s -fverbose-asm 2> %t.log
+// RUN: grep '"-triple" "i386-unknown-unknown"' %t.log &&
// RUN: grep '"-S"' %t.log &&
// RUN: grep '"-disable-free"' %t.log &&
// RUN: grep '"--relocation-model" "static"' %t.log &&
@@ -6,7 +7,6 @@
// RUN: grep '"--unwind-tables=0"' %t.log &&
// RUN: grep '"--fmath-errno=1"' %t.log &&
// RUN: grep '"-Os"' %t.log &&
-// RUN: grep '"-arch" "i386"' %t.log &&
// RUN: grep '"-o" .*clang-translation\.c\.out\.tmp\.s' %t.log &&
// RUN: grep '"--asm-verbose"' %t.log &&
// RUN: true
diff --git a/tools/clang-cc/clang.cpp b/tools/clang-cc/clang.cpp
index 7541f80..bd6456b 100644
--- a/tools/clang-cc/clang.cpp
+++ b/tools/clang-cc/clang.cpp
@@ -764,7 +764,7 @@
if (MacOSVersionMinIsInvalid) {
fprintf(stderr,
- "-mmacosx-version-min=%s is invalid, expected something like '10.4'.\n",
+ "-mmacosx-version-min=%s is invalid, expected something like '10.4'.\n",
MacOSVersionMin.c_str());
exit(1);
}
@@ -776,25 +776,8 @@
// Initialize base triple. If a -triple option has been specified, use
// that triple. Otherwise, default to the host triple.
std::string Triple = TargetTriple;
- if (Triple.empty()) {
- Triple = LLVM_HOSTTRIPLE;
-
- // Force i<N>86 to i386 when using LLVM_HOSTTRIPLE.
- if (Triple[0] == 'i' && isdigit(Triple[1]) &&
- Triple[2] == '8' && Triple[3] == '6')
- Triple[1] = '3';
-
- // On darwin, we want to update the version to match that of the
- // host.
- std::string::size_type DarwinDashIdx = Triple.find("-darwin");
- if (DarwinDashIdx != std::string::npos) {
- Triple.resize(DarwinDashIdx + strlen("-darwin"));
-
- // Only add the major part of the os version.
- std::string Version = llvm::sys::getOSVersion();
- Triple += Version.substr(0, Version.find('.'));
- }
- }
+ if (Triple.empty())
+ Triple = llvm::sys::getHostTriple();
// If -arch foo was specified, remove the architecture from the triple we have
// so far and replace it with the specified one.
diff --git a/tools/driver/driver.cpp b/tools/driver/driver.cpp
index d968cc8..880a26a 100644
--- a/tools/driver/driver.cpp
+++ b/tools/driver/driver.cpp
@@ -23,6 +23,7 @@
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/raw_ostream.h"
+#include "llvm/System/Host.h"
#include "llvm/System/Path.h"
#include "llvm/System/Signals.h"
using namespace clang;
@@ -77,13 +78,10 @@
Diagnostic Diags(DiagClient.get());
- // FIXME: Use the triple of the host, not the triple that we were
- // compiled on.
- llvm::OwningPtr<Driver> TheDriver(new Driver(Path.getBasename().c_str(),
- Path.getDirname().c_str(),
- LLVM_HOSTTRIPLE,
- "a.out",
- Diags));
+ llvm::OwningPtr<Driver>
+ TheDriver(new Driver(Path.getBasename().c_str(), Path.getDirname().c_str(),
+ llvm::sys::getHostTriple().c_str(),
+ "a.out", Diags));
llvm::OwningPtr<Compilation> C(TheDriver->BuildCompilation(argc, argv));