[cfe-commits] r70641 - in /cfe/trunk: include/clang/Basic/DiagnosticDriverKinds.td lib/Driver/Tools.cpp test/Driver/emit-llvm.c
Daniel Dunbar
daniel at zuster.org
Sat May 2 13:14:53 PDT 2009
Author: ddunbar
Date: Sat May 2 15:14:53 2009
New Revision: 70641
URL: http://llvm.org/viewvc/llvm-project?rev=70641&view=rev
Log:
Driver: Generate an error when trying to pass an LLVM bc input to a
non-Darwin linker (sorry Gold + LTO-plugin users).
Added:
cfe/trunk/test/Driver/emit-llvm.c
Modified:
cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td
cfe/trunk/lib/Driver/Tools.cpp
Modified: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td?rev=70641&r1=70640&r2=70641&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td Sat May 2 15:14:53 2009
@@ -41,6 +41,8 @@
"invalid argument '%0' not allowed with '%1'">;
def err_drv_invalid_version_number : Error<
"invalid version number in '%0'">;
+def err_drv_no_linker_llvm_support : Error<
+ "'%0': unable to pass LLVM bit-code files to linker">;
def warn_drv_input_file_unused : Warning<
"%0: '%1' input unused when '%2' is present">;
Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=70641&r1=70640&r2=70641&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Sat May 2 15:14:53 2009
@@ -608,6 +608,7 @@
const InputInfoList &Inputs,
const ArgList &Args,
const char *LinkingOutput) const {
+ const Driver &D = getToolChain().getHost().getDriver();
ArgStringList CmdArgs;
for (ArgList::const_iterator
@@ -660,6 +661,12 @@
for (InputInfoList::const_iterator
it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) {
const InputInfo &II = *it;
+
+ // Don't try to pass LLVM inputs to a generic gcc.
+ if (II.getType() == types::TY_LLVMBC)
+ D.Diag(clang::diag::err_drv_no_linker_llvm_support)
+ << getToolChain().getTripleString().c_str();
+
if (types::canTypeBeUserSpecified(II.getType())) {
CmdArgs.push_back("-x");
CmdArgs.push_back(types::getTypeName(II.getType()));
@@ -1726,8 +1733,8 @@
Job &Dest, const InputInfo &Output,
const InputInfoList &Inputs,
const ArgList &Args,
- const char *LinkingOutput) const
-{
+ const char *LinkingOutput) const {
+ const Driver &D = getToolChain().getHost().getDriver();
ArgStringList CmdArgs;
if (Args.hasArg(options::OPT_static)) {
@@ -1778,6 +1785,12 @@
for (InputInfoList::const_iterator
it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) {
const InputInfo &II = *it;
+
+ // Don't try to pass LLVM inputs to a generic gcc.
+ if (II.getType() == types::TY_LLVMBC)
+ D.Diag(clang::diag::err_drv_no_linker_llvm_support)
+ << getToolChain().getTripleString().c_str();
+
if (II.isPipe())
CmdArgs.push_back("-");
else if (II.isFilename())
@@ -1871,6 +1884,7 @@
const InputInfoList &Inputs,
const ArgList &Args,
const char *LinkingOutput) const {
+ const Driver &D = getToolChain().getHost().getDriver();
ArgStringList CmdArgs;
if (Args.hasArg(options::OPT_static)) {
@@ -1920,6 +1934,12 @@
for (InputInfoList::const_iterator
it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) {
const InputInfo &II = *it;
+
+ // Don't try to pass LLVM inputs to a generic gcc.
+ if (II.getType() == types::TY_LLVMBC)
+ D.Diag(clang::diag::err_drv_no_linker_llvm_support)
+ << getToolChain().getTripleString().c_str();
+
if (II.isPipe())
CmdArgs.push_back("-");
else if (II.isFilename())
Added: cfe/trunk/test/Driver/emit-llvm.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/emit-llvm.c?rev=70641&view=auto
==============================================================================
--- cfe/trunk/test/Driver/emit-llvm.c (added)
+++ cfe/trunk/test/Driver/emit-llvm.c Sat May 2 15:14:53 2009
@@ -0,0 +1,3 @@
+// RUN: not clang -ccc-host-triple i386-pc-linux-gnu -emit-llvm -o %t %s 2> %t.log &&
+// RUN: grep 'unable to pass LLVM bit-code files to linker' %t.log
+
More information about the cfe-commits
mailing list