[cfe-commits] r86697 - /cfe/trunk/tools/driver/driver.cpp

Chris Lattner clattner at apple.com
Tue Nov 10 13:53:29 PST 2009


On Nov 10, 2009, at 10:47 AM, Daniel Dunbar wrote:

> Author: ddunbar
> Date: Tue Nov 10 12:47:41 2009
> New Revision: 86697
>
> URL: http://llvm.org/viewvc/llvm-project?rev=86697&view=rev
> Log:
> Driver: Run 'clang' in C++ mode based on the name it was invoked by.  
> We match
> anything that ends with ++ or ++-FOO (e.g., c++, clang++, clang+ 
> +-1.1) as being
> a "C++ compiler".
>
> This allows easy testing of the C++ compiler by 'ln -s clang clang+ 
> +', or by 'cp
> clang clang++'.
>
> Based on patch by Roman Divacky.
>
> Modified:
>    cfe/trunk/tools/driver/driver.cpp
>
> Modified: cfe/trunk/tools/driver/driver.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/driver.cpp?rev=86697&r1=86696&r2=86697&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- cfe/trunk/tools/driver/driver.cpp (original)
> +++ cfe/trunk/tools/driver/driver.cpp Tue Nov 10 12:47:41 2009
> @@ -197,6 +197,15 @@
>                    llvm::sys::getHostTriple().c_str(),
>                    "a.out", IsProduction, Diags);
>
> +  // Check for ".*++" or ".*++-[^-]*" to determine if we are a C++
> +  // compiler. This matches things like "c++", "clang++", and "clang 
> ++-1.1".
> +  //
> +  // Note that we intentionally want to use argv[0] here, to  
> support "clang++"
> +  // being a symlink.
> +  llvm::StringRef ProgName(llvm::sys::Path(argv[0]).getBasename());

I don't think this is safe, the temporary is destroyed at the end of  
the statement.  Try:

std::string BaseName = llvm::sys::Path(argv[0]).getBasename();
> +  llvm::StringRef ProgName(BaseName);

or something.

-Chris



> +  if (ProgName.endswith("++") ||  
> ProgName.rsplit('-').first.endswith("++"))
> +    TheDriver.CCCIsCXX = true;
> +
>   llvm::OwningPtr<Compilation> C;
>
>   // Handle QA_OVERRIDE_GCC3_OPTIONS and CCC_ADD_ARGS, used for  
> editing a
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list