[cfe-dev] Clang as a compiler-only tool

Dmitri Gribenko gribozavr at gmail.com
Sun Nov 18 09:11:19 PST 2012


On Sun, Nov 18, 2012 at 7:06 PM, Roman Divacky <rdivacky at freebsd.org> wrote:
> On Sun, Nov 18, 2012 at 02:45:10PM +0200, Dmitri Gribenko wrote:
>> On Sun, Nov 18, 2012 at 2:16 PM, Roman Divacky <rdivacky at freebsd.org> wrote:
>> > I would like to ask about your opinion on the attached trivial patch, which
>> > introduces #ifndef CLANG_IS_COMPILER_ONLY in two places.
>>
>> --- lib/FrontendTool/ExecuteCompilerInvocation.cpp    (revision 168286)
>> +++ lib/FrontendTool/ExecuteCompilerInvocation.cpp    (working copy)
>> @@ -79,11 +81,13 @@
>>      return new PrintPreprocessedAction();
>>    }
>>
>> +#ifndef CLANG_IS_COMPILER_ONLY
>>    case RewriteMacros:          return new RewriteMacrosAction();
>>    case RewriteObjC:            return new RewriteObjCAction();
>>    case RewriteTest:            return new RewriteTestAction();
>>    case RunAnalysis:            return new ento::AnalysisAction();
>>    case MigrateSource:          return new arcmt::MigrateSourceAction();
>> +#endif
>>    case RunPreprocessorOnly:    return new PreprocessOnlyAction();
>>    }
>>    llvm_unreachable("Invalid program action!");
>>
>> Won't this cause Clang to crash if the user asks for an action that is
>> not compiled-in?
>
> It will execute llvm_unreachable("Invalid program action!"); which is fine
> for me. FreeBSD really needs just the compiler bits.
>
> Note that I am not advocating making this the default, just having a way
> to make this possible without modifying the sources.

Well, I am just suggesting that Clang crashing on command line
parameter invoking an action that is disabled during compile-time is
not the user experience we want to provide for any Clang
configuration.  A proper error message would be much better.

Dmitri

-- 
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/



More information about the cfe-dev mailing list