[cfe-commits] r67162 - in /cfe/trunk: include/clang/Driver/Action.h include/clang/Driver/Driver.h lib/Driver/Driver.cpp
Daniel Dunbar
daniel at zuster.org
Tue Mar 17 20:13:22 PDT 2009
Author: ddunbar
Date: Tue Mar 17 22:13:20 2009
New Revision: 67162
URL: http://llvm.org/viewvc/llvm-project?rev=67162&view=rev
Log:
Driver: Ditch Driver::DefaultToolChain, this can vary between compilations.
Modified:
cfe/trunk/include/clang/Driver/Action.h
cfe/trunk/include/clang/Driver/Driver.h
cfe/trunk/lib/Driver/Driver.cpp
Modified: cfe/trunk/include/clang/Driver/Action.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Action.h?rev=67162&r1=67161&r2=67162&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/Action.h (original)
+++ cfe/trunk/include/clang/Driver/Action.h Tue Mar 17 22:13:20 2009
@@ -105,6 +105,8 @@
};
class BindArchAction : public Action {
+ /// The architecture to bind, or 0 if the default architecture
+ /// should be bound.
const char *ArchName;
public:
Modified: cfe/trunk/include/clang/Driver/Driver.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Driver.h?rev=67162&r1=67161&r2=67162&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/Driver.h (original)
+++ cfe/trunk/include/clang/Driver/Driver.h Tue Mar 17 22:13:20 2009
@@ -64,11 +64,6 @@
/// will generally be the actual host platform, but not always.
const HostInfo *Host;
- /// The default tool chain for this host.
- // FIXME: This shouldn't be here; this should be in a
- // CompilationInfo structure.
- ToolChain *DefaultToolChain;
-
/// Information about the host which can be overriden by the user.
std::string HostBits, HostMachine, HostSystem, HostRelease;
@@ -164,7 +159,7 @@
void PrintVersion() const;
/// PrintActions - Print the list of actions.
- void PrintActions(const ArgList &Args, const ActionList &Actions) const;
+ void PrintActions(const Compilation &C) const;
/// GetFilePath - Lookup \arg Name in the list of file search paths.
///
Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=67162&r1=67161&r2=67162&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Tue Mar 17 22:13:20 2009
@@ -162,12 +162,9 @@
ArgList *Args = ParseArgStrings(Start, End);
Host = GetHostInfo(HostTriple);
- // FIXME: This shouldn't live inside Driver, the default tool chain
- // is part of the compilation (it is arg dependent).
- DefaultToolChain = Host->getToolChain(*Args);
// The compilation takes ownership of Args.
- Compilation *C = new Compilation(*DefaultToolChain, Args);
+ Compilation *C = new Compilation(*Host->getToolChain(*Args), Args);
// FIXME: This behavior shouldn't be here.
if (CCCPrintOptions) {
@@ -188,7 +185,7 @@
BuildActions(C->getArgs(), C->getActions());
if (CCCPrintActions) {
- PrintActions(C->getArgs(), C->getActions());
+ PrintActions(*C);
return C;
}
@@ -255,7 +252,7 @@
return true;
}
-static unsigned PrintActions1(const ArgList &Args,
+static unsigned PrintActions1(const Compilation &C,
Action *A,
std::map<Action*, unsigned> &Ids) {
if (Ids.count(A))
@@ -266,14 +263,15 @@
os << Action::getClassName(A->getKind()) << ", ";
if (InputAction *IA = dyn_cast<InputAction>(A)) {
- os << "\"" << IA->getInputArg().getValue(Args) << "\"";
+ os << "\"" << IA->getInputArg().getValue(C.getArgs()) << "\"";
} else if (BindArchAction *BIA = dyn_cast<BindArchAction>(A)) {
- os << "\"" << BIA->getArchName() << "\", "
- << "{" << PrintActions1(Args, *BIA->begin(), Ids) << "}";
+ os << '"' << (BIA->getArchName() ? BIA->getArchName() :
+ C.getDefaultToolChain().getArchName()) << '"'
+ << ", {" << PrintActions1(C, *BIA->begin(), Ids) << "}";
} else {
os << "{";
for (Action::iterator it = A->begin(), ie = A->end(); it != ie;) {
- os << PrintActions1(Args, *it, Ids);
+ os << PrintActions1(C, *it, Ids);
++it;
if (it != ie)
os << ", ";
@@ -289,12 +287,11 @@
return Id;
}
-void Driver::PrintActions(const ArgList &Args,
- const ActionList &Actions) const {
+void Driver::PrintActions(const Compilation &C) const {
std::map<Action*, unsigned> Ids;
- for (ActionList::const_iterator it = Actions.begin(), ie = Actions.end();
- it != ie; ++it)
- PrintActions1(Args, *it, Ids);
+ for (ActionList::const_iterator it = C.getActions().begin(),
+ ie = C.getActions().end(); it != ie; ++it)
+ PrintActions1(C, *it, Ids);
}
void Driver::BuildUniversalActions(const ArgList &Args,
@@ -319,12 +316,11 @@
}
}
- // When there is no explicit arch for this platform, get one from
- // the host so that -Xarch_ is handled correctly.
- if (!Archs.size()) {
- const char *Arch = DefaultToolChain->getArchName().c_str();
- Archs.push_back(Arch);
- }
+ // 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(0);
// FIXME: We killed off some others but these aren't yet detected in
// a functional manner. If we added information to jobs about which
@@ -641,8 +637,7 @@
}
InputInfo II;
- BuildJobsForAction(C,
- A, DefaultToolChain,
+ BuildJobsForAction(C, A, &C.getDefaultToolChain(),
/*CanAcceptPipe*/ true,
/*AtTopLevel*/ true,
/*LinkingOutput*/ LinkingOutput,
@@ -679,6 +674,8 @@
if (const BindArchAction *BAA = dyn_cast<BindArchAction>(A)) {
const char *ArchName = BAA->getArchName();
+ if (!ArchName)
+ ArchName = C.getDefaultToolChain().getArchName().c_str();
BuildJobsForAction(C,
*BAA->begin(),
Host->getToolChain(C.getArgs(), ArchName),
More information about the cfe-commits
mailing list