Home | History | Annotate | Download | only in llvm
      1 --- a/llvm-3.1/tools/clang/lib/Driver/Driver.cpp	2012-09-12 14:26:52.000000000 -0700
      2 +++ b/llvm-3.1/tools/clang/lib/Driver/Driver.cpp	2012-09-18 01:07:22.957409591 -0700
      3 @@ -1534,8 +1534,16 @@
      4  
      5  std::string Driver::GetProgramPath(const char *Name, const ToolChain &TC,
      6                                     bool WantFile) const {
      7 +  std::string N(Name);
      8 +#ifdef __MINGW32__
      9 +  // We expect callers never pass Name ends with uppercase ".EXE"
     10 +  std::string Suffix(".exe");
     11 +  if (N.length() < Suffix.length() ||
     12 +      (N.compare(N.length() - Suffix.length(), Suffix.length(), Suffix)) != 0)
     13 +    N += ".exe";
     14 +#endif
     15    // FIXME: Needs a better variable than DefaultTargetTriple
     16 -  std::string TargetSpecificExecutable(DefaultTargetTriple + "-" + Name);
     17 +  std::string TargetSpecificExecutable(DefaultTargetTriple + "-" + N);
     18    // Respect a limited subset of the '-Bprefix' functionality in GCC by
     19    // attempting to use this prefix when lokup up program paths.
     20    for (Driver::prefix_list::const_iterator it = PrefixDirs.begin(),
     21 @@ -1544,7 +1552,7 @@
     22      P.appendComponent(TargetSpecificExecutable);
     23      if (isPathExecutable(P, WantFile)) return P.str();
     24      P.eraseComponent();
     25 -    P.appendComponent(Name);
     26 +    P.appendComponent(N);
     27      if (isPathExecutable(P, WantFile)) return P.str();
     28    }
     29  
     30 @@ -1555,7 +1563,7 @@
     31      P.appendComponent(TargetSpecificExecutable);
     32      if (isPathExecutable(P, WantFile)) return P.str();
     33      P.eraseComponent();
     34 -    P.appendComponent(Name);
     35 +    P.appendComponent(N);
     36      if (isPathExecutable(P, WantFile)) return P.str();
     37    }
     38  
     39 @@ -1565,10 +1573,11 @@
     40    if (!P.empty())
     41      return P.str();
     42  
     43 -  P = llvm::sys::Path(llvm::sys::Program::FindProgramByName(Name));
     44 +  P = llvm::sys::Path(llvm::sys::Program::FindProgramByName(N));
     45    if (!P.empty())
     46      return P.str();
     47  
     48 +  // Return the original Name, not N
     49    return Name;
     50  }
     51  
     52