]> granicus.if.org Git - clang/commitdiff
Driver: Add Source argument for Commands to hold the Action which caused a
authorDaniel Dunbar <daniel@zuster.org>
Wed, 1 Jul 2009 19:02:28 +0000 (19:02 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 1 Jul 2009 19:02:28 +0000 (19:02 +0000)
Command to be generated, to support more advanced diagnostics.
 - No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74627 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Job.h
lib/Driver/Job.cpp
lib/Driver/Tools.cpp

index f60f5146414c37e4cacf81fe360d3d66092ed10c..a23babdbb31a5704e913af5e7c93199223d3c791 100644 (file)
@@ -52,6 +52,9 @@ public:
   /// Command - An executable path/name and argument vector to
   /// execute.
 class Command : public Job {
+  /// Source - The action which caused the creation of this job.
+  const Action &Source;
+
   /// The executable to run.
   const char *Executable;
 
@@ -60,9 +63,14 @@ class Command : public Job {
   ArgStringList Arguments;
 
 public:
-  Command(const char *_Executable, const ArgStringList &_Arguments);
+  Command(const Action &_Source, const char *_Executable, 
+          const ArgStringList &_Arguments);
+
+  /// getSource - Return the Action which caused the creation of this job.
+  const Action &getSource() const { return Source; }
 
   const char *getExecutable() const { return Executable; }
+
   const ArgStringList &getArguments() const { return Arguments; }
 
   static bool classof(const Job *J) { 
index 222cf15db60f5b0bfb1ecc92af9ecd0da733a8fe..1b0ea18453d0660bfcea97c7ec55dc0aad88d5ab 100644 (file)
@@ -14,8 +14,10 @@ using namespace clang::driver;
 
 Job::~Job() {}
 
-Command::Command(const char *_Executable, const ArgStringList &_Arguments)
-  : Job(CommandClass), Executable(_Executable), Arguments(_Arguments) {
+Command::Command(const Action &_Source, const char *_Executable, 
+                 const ArgStringList &_Arguments)
+  : Job(CommandClass), Source(_Source), Executable(_Executable), 
+    Arguments(_Arguments) {
 }
 
 PipedJob::PipedJob() : Job(PipedJobClass) {}
index aaec0b4c8aed686955792d356a926cd1a98cf120..d198a54cf7dd6cd3557e491251d58c487344262e 100644 (file)
@@ -628,7 +628,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
 
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(C, "clang-cc").c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 
   // Explicitly warn that these options are unsupported, even though
   // we are allowing compilation to continue.
@@ -759,7 +759,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).c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }
 
 void gcc::Preprocess::RenderExtraToolArgs(ArgStringList &CmdArgs) const {
@@ -1135,7 +1135,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).c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }
 
 void darwin::Compile::ConstructJob(Compilation &C, const JobAction &JA,
@@ -1223,7 +1223,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).c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }
 
 void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
@@ -1276,7 +1276,7 @@ void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
 
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }
 
 /// Helper routine for seeing if we should use dsymutil; this is a
@@ -1700,7 +1700,7 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA,
 
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 
   // Find the first non-empty base input (we want to ignore linker
   // inputs).
@@ -1730,7 +1730,7 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA,
         Args.MakeArgString(getToolChain().GetProgramPath(C, "dsymutil").c_str());
       ArgStringList CmdArgs;
       CmdArgs.push_back(Output.getFilename());
-      C.getJobs().addCommand(new Command(Exec, CmdArgs));
+      C.getJobs().addCommand(new Command(JA, Exec, CmdArgs));
     }
   }
 }
@@ -1756,7 +1756,7 @@ void darwin::Lipo::ConstructJob(Compilation &C, const JobAction &JA,
   }
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(C, "lipo").c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }
 
 void openbsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
@@ -1787,7 +1787,7 @@ void openbsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
 
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }
 
 void openbsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
@@ -1869,7 +1869,7 @@ void openbsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
 
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }
 
 void freebsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
@@ -1905,7 +1905,7 @@ void freebsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
 
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }
 
 void freebsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
@@ -2016,7 +2016,7 @@ void freebsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
 
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }
 
 /// DragonFly Tools
@@ -2055,7 +2055,7 @@ void dragonfly::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
 
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(C, "as").c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }
 
 void dragonfly::Link::ConstructJob(Compilation &C, const JobAction &JA,
@@ -2179,5 +2179,5 @@ void dragonfly::Link::ConstructJob(Compilation &C, const JobAction &JA,
 
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(C, "ld").c_str());
-  Dest.addCommand(new Command(Exec, CmdArgs));
+  Dest.addCommand(new Command(JA, Exec, CmdArgs));
 }