Changes in directory llvm/tools/llvmc:

CompilerDriver.cpp updated: 1.37 -> 1.38
Configuration.cpp updated: 1.24 -> 1.25
Makefile updated: 1.20 -> 1.21
c updated: 1.1 -> 1.2
---
Log message:

Patches to correct several bugs in llvmc. 
Patches contributed by Bram Adams. Thanks Bram.


---
Diffs of the changes:  (+58 -7)

 CompilerDriver.cpp |   53 +++++++++++++++++++++++++++++++++++++++++++++++++----
 Configuration.cpp  |    7 +++++++
 Makefile           |    2 +-
 c                  |    3 +--
 4 files changed, 58 insertions(+), 7 deletions(-)


Index: llvm/tools/llvmc/CompilerDriver.cpp
diff -u llvm/tools/llvmc/CompilerDriver.cpp:1.37 
llvm/tools/llvmc/CompilerDriver.cpp:1.38
--- llvm/tools/llvmc/CompilerDriver.cpp:1.37    Tue Aug  1 13:12:29 2006
+++ llvm/tools/llvmc/CompilerDriver.cpp Wed Aug 16 15:31:44 2006
@@ -227,9 +227,54 @@
     assert(pat != 0 && "Invalid command pattern");
 
     // Copy over some pattern things that don't need to change
-    action->program = pat->program;
     action->flags = pat->flags;
 
+    // See if program starts with wildcard...
+    std::string programName=pat->program.toString();
+    if (programName[0] == '%' && programName.length() >2) {
+      switch(programName[1]){
+      case 'b':
+       if (programName.substr(0,8) == "%bindir%") {
+         std::string tmp(LLVM_BINDIR);
+         tmp.append(programName.substr(8));
+         pat->program.set(tmp);
+       }
+       break;
+      case 'l':
+       if (programName.substr(0,12) == "%llvmgccdir%"){
+         std::string tmp(LLVMGCCDIR);
+         tmp.append(programName.substr(12));
+         pat->program.set(tmp);
+       }else if (programName.substr(0,13) == "%llvmgccarch%"){
+         std::string tmp(LLVMGCCARCH);
+         tmp.append(programName.substr(13));
+         pat->program.set(tmp);
+       }else if (programName.substr(0,9) == "%llvmgcc%"){
+         std::string tmp(LLVMGCC);
+         tmp.append(programName.substr(9));
+         pat->program.set(tmp);
+       }else if (programName.substr(0,9) == "%llvmgxx%"){
+         std::string tmp(LLVMGXX);
+         tmp.append(programName.substr(9));
+         pat->program.set(tmp);
+       }else if (programName.substr(0,9) == "%llvmcc1%"){
+         std::string tmp(LLVMCC1);
+         tmp.append(programName.substr(9));
+         pat->program.set(tmp);
+       }else if (programName.substr(0,13) == "%llvmcc1plus%"){
+         std::string tmp(LLVMCC1PLUS);
+         tmp.append(programName.substr(13));
+         pat->program.set(tmp);
+       }else if (programName.substr(0,8) == "%libdir%") {
+         std::string tmp(LLVM_LIBDIR);
+         tmp.append(programName.substr(8));
+         pat->program.set(tmp);
+       }
+         break;
+      }
+    }
+    action->program = pat->program;
+
     // Do the substitutions from the pattern to the actual
     StringVector::iterator PI = pat->args.begin();
     StringVector::iterator PE = pat->args.end();
@@ -426,9 +471,9 @@
       const char** Args = (const char**)
         alloca(sizeof(const char*)*(action->args.size()+2));
       Args[0] = action->program.toString().c_str();
-      for (unsigned i = 1; i != action->args.size(); ++i)
-        Args[i] = action->args[i].c_str();
-      Args[action->args.size()] = 0;  // null terminate list.
+      for (unsigned i = 1; i <= action->args.size(); ++i)
+        Args[i] = action->args[i-1].c_str();
+      Args[action->args.size()+1] = 0;  // null terminate list.
       if (isSet(TIME_ACTIONS_FLAG)) {
         Timer timer(action->program.toString());
         timer.startTimer();


Index: llvm/tools/llvmc/Configuration.cpp
diff -u llvm/tools/llvmc/Configuration.cpp:1.24 
llvm/tools/llvmc/Configuration.cpp:1.25
--- llvm/tools/llvmc/Configuration.cpp:1.24     Mon May 29 13:52:05 2006
+++ llvm/tools/llvmc/Configuration.cpp  Wed Aug 16 15:31:44 2006
@@ -116,6 +116,8 @@
       result.clear();
       while (next_is_real()) {
         switch (token ) {
+       case LLVMGCCDIR_SUBST:
+       case LLVMGCCARCH_SUBST:
           case STRING :
           case OPTION :
             result += ConfigLexerState.StringVal;
@@ -260,6 +262,11 @@
       str.clear();
       do {
         switch (token) {
+       case BINDIR_SUBST:
+       case LLVMGCC_SUBST:
+       case LLVMGXX_SUBST:
+       case LLVMCC1_SUBST:
+       case LLVMCC1PLUS_SUBST:
           case OPTION:
           case STRING:
           case ARGS_SUBST:


Index: llvm/tools/llvmc/Makefile
diff -u llvm/tools/llvmc/Makefile:1.20 llvm/tools/llvmc/Makefile:1.21
--- llvm/tools/llvmc/Makefile:1.20      Thu Jul  6 19:46:19 2006
+++ llvm/tools/llvmc/Makefile   Wed Aug 16 15:31:44 2006
@@ -24,7 +24,7 @@
           -DLLVMGCC="\"$(LLVMGCC)\"" \
           -DLLVMGXX="\"$(LLVMGXX)\"" \
           -DLLVMCC1="\"$(LLVMCC1)\"" \
-          -DLLVMCC1PLUS="$(LLVMCC1PLUS)"
+          -DLLVMCC1PLUS="\"$(LLVMCC1PLUS)\""
 
 include $(LEVEL)/Makefile.common
 


Index: llvm/tools/llvmc/c
diff -u llvm/tools/llvmc/c:1.1 llvm/tools/llvmc/c:1.2
--- llvm/tools/llvmc/c:1.1      Wed May 18 19:52:29 2005
+++ llvm/tools/llvmc/c  Wed Aug 16 15:31:44 2006
@@ -9,8 +9,7 @@
   lang.opt3=-O3
   lang.opt4=-O3
   lang.opt5=-O3
-  lang.libs=%llvmgccdir%/lib %llvmgccdir%/lib \
-    %llvmgccdir%/lib/gcc/%llvmgccarch%
+  lang.libs=%llvmgccdir%/lib %llvmgccdir%/lib 
%llvmgccdir%/lib/gcc/%llvmgccarch%
 
 ##########################################################
 # Pre-processor definitions



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to