diff options
-rw-r--r-- | include/clang/Driver/Job.h | 11 | ||||
-rw-r--r-- | lib/Driver/Job.cpp | 9 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 32 |
3 files changed, 30 insertions, 22 deletions
diff --git a/include/clang/Driver/Job.h b/include/clang/Driver/Job.h index 906d73128b..74ca083417 100644 --- a/include/clang/Driver/Job.h +++ b/include/clang/Driver/Job.h @@ -22,7 +22,8 @@ using llvm::dyn_cast_or_null; namespace clang { namespace driver { - class Command; +class Command; +class Tool; class Job { public: @@ -55,6 +56,9 @@ class Command : public Job { /// Source - The action which caused the creation of this job. const Action &Source; + /// Tool - The tool which caused the creation of this job. + const Tool &Creator; + /// The executable to run. const char *Executable; @@ -63,12 +67,15 @@ class Command : public Job { ArgStringList Arguments; public: - Command(const Action &_Source, const char *_Executable, + Command(const Action &_Source, const Tool &_Creator, const char *_Executable, const ArgStringList &_Arguments); /// getSource - Return the Action which caused the creation of this job. const Action &getSource() const { return Source; } + /// getCreator - Return the Tool which caused the creation of this job. + const Tool &getCreator() const { return Creator; } + const char *getExecutable() const { return Executable; } const ArgStringList &getArguments() const { return Arguments; } diff --git a/lib/Driver/Job.cpp b/lib/Driver/Job.cpp index 280e7c4a5a..1bd123e220 100644 --- a/lib/Driver/Job.cpp +++ b/lib/Driver/Job.cpp @@ -14,10 +14,11 @@ using namespace clang::driver; Job::~Job() {} -Command::Command(const Action &_Source, const char *_Executable, - const ArgStringList &_Arguments) - : Job(CommandClass), Source(_Source), Executable(_Executable), - Arguments(_Arguments) { +Command::Command(const Action &_Source, const Tool &_Creator, + const char *_Executable, const ArgStringList &_Arguments) + : Job(CommandClass), Source(_Source), Creator(_Creator), + Executable(_Executable), Arguments(_Arguments) +{ } PipedJob::PipedJob() : Job(PipedJobClass) {} diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index eb165cf6a5..083b08932c 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -1078,7 +1078,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "clang-cc")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); // Explicitly warn that these options are unsupported, even though // we are allowing compilation to continue. @@ -1200,7 +1200,7 @@ void gcc::Common::ConstructJob(Compilation &C, const JobAction &JA, getToolChain().getHost().getDriver().CCCGenericGCCName.c_str(); const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, GCCName)); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } void gcc::Preprocess::RenderExtraToolArgs(ArgStringList &CmdArgs) const { @@ -1589,7 +1589,7 @@ void darwin::Preprocess::ConstructJob(Compilation &C, const JobAction &JA, const char *CC1Name = getCC1Name(Inputs[0].getType()); const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, CC1Name)); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } void darwin::Compile::ConstructJob(Compilation &C, const JobAction &JA, @@ -1683,7 +1683,7 @@ void darwin::Compile::ConstructJob(Compilation &C, const JobAction &JA, const char *CC1Name = getCC1Name(Inputs[0].getType()); const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, CC1Name)); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA, @@ -1738,7 +1738,7 @@ void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "as")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } /// Helper routine for seeing if we should use dsymutil; this is a @@ -2152,7 +2152,7 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "ld")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); // Find the first non-empty base input (we want to ignore linker // inputs). @@ -2182,7 +2182,7 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA, Args.MakeArgString(getToolChain().GetProgramPath(C, "dsymutil")); ArgStringList CmdArgs; CmdArgs.push_back(Output.getFilename()); - C.getJobs().addCommand(new Command(JA, Exec, CmdArgs)); + C.getJobs().addCommand(new Command(JA, *this, Exec, CmdArgs)); } } } @@ -2208,7 +2208,7 @@ void darwin::Lipo::ConstructJob(Compilation &C, const JobAction &JA, } const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "lipo")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } void auroraux::Assemble::ConstructJob(Compilation &C, const JobAction &JA, @@ -2238,7 +2238,7 @@ void auroraux::Assemble::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "gas")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } void auroraux::Link::ConstructJob(Compilation &C, const JobAction &JA, @@ -2339,7 +2339,7 @@ void auroraux::Link::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "ld")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } void openbsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA, @@ -2369,7 +2369,7 @@ void openbsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "as")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } void openbsd::Link::ConstructJob(Compilation &C, const JobAction &JA, @@ -2469,7 +2469,7 @@ void openbsd::Link::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "ld")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } void freebsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA, @@ -2504,7 +2504,7 @@ void freebsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "as")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } void freebsd::Link::ConstructJob(Compilation &C, const JobAction &JA, @@ -2617,7 +2617,7 @@ void freebsd::Link::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "ld")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } /// DragonFly Tools @@ -2656,7 +2656,7 @@ void dragonfly::Assemble::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "as")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } void dragonfly::Link::ConstructJob(Compilation &C, const JobAction &JA, @@ -2780,5 +2780,5 @@ void dragonfly::Link::ConstructJob(Compilation &C, const JobAction &JA, const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "ld")); - Dest.addCommand(new Command(JA, Exec, CmdArgs)); + Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } |