diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2006-08-16 20:31:44 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2006-08-16 20:31:44 +0000 |
commit | 3b4c5d72e0e7eaf40a7a0d54d2cd8f07435f705f (patch) | |
tree | afc7523fcf01e8eeaaa06d94d19508f33734ebde /tools/llvmc | |
parent | ec46ea34dcc615558294e9e0dbd0dd0f2894f574 (diff) | |
download | external_llvm-3b4c5d72e0e7eaf40a7a0d54d2cd8f07435f705f.zip external_llvm-3b4c5d72e0e7eaf40a7a0d54d2cd8f07435f705f.tar.gz external_llvm-3b4c5d72e0e7eaf40a7a0d54d2cd8f07435f705f.tar.bz2 |
Patches to correct several bugs in llvmc.
Patches contributed by Bram Adams. Thanks Bram.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29729 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvmc')
-rw-r--r-- | tools/llvmc/CompilerDriver.cpp | 53 | ||||
-rw-r--r-- | tools/llvmc/Configuration.cpp | 7 | ||||
-rw-r--r-- | tools/llvmc/Makefile | 2 | ||||
-rw-r--r-- | tools/llvmc/c | 3 |
4 files changed, 58 insertions, 7 deletions
diff --git a/tools/llvmc/CompilerDriver.cpp b/tools/llvmc/CompilerDriver.cpp index 82dc547..64232f3 100644 --- a/tools/llvmc/CompilerDriver.cpp +++ b/tools/llvmc/CompilerDriver.cpp @@ -227,9 +227,54 @@ private: 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 @@ private: 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(); diff --git a/tools/llvmc/Configuration.cpp b/tools/llvmc/Configuration.cpp index ba3c93c..1364e9b 100644 --- a/tools/llvmc/Configuration.cpp +++ b/tools/llvmc/Configuration.cpp @@ -116,6 +116,8 @@ namespace { 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 @@ namespace { 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: diff --git a/tools/llvmc/Makefile b/tools/llvmc/Makefile index 0e63d13..2ccf85a 100644 --- a/tools/llvmc/Makefile +++ b/tools/llvmc/Makefile @@ -24,7 +24,7 @@ CPPFLAGS = -DLLVMGCCDIR="\"$(LLVMGCCDIR)\"" \ -DLLVMGCC="\"$(LLVMGCC)\"" \ -DLLVMGXX="\"$(LLVMGXX)\"" \ -DLLVMCC1="\"$(LLVMCC1)\"" \ - -DLLVMCC1PLUS="$(LLVMCC1PLUS)" + -DLLVMCC1PLUS="\"$(LLVMCC1PLUS)\"" include $(LEVEL)/Makefile.common diff --git a/tools/llvmc/c b/tools/llvmc/c index cbe6830..1f7d48e 100644 --- a/tools/llvmc/c +++ b/tools/llvmc/c @@ -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 |