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

James Molloy james at jamesmolloy.co.uk
Sun Nov 18 10:50:37 PST 2012


Agreed. If this is user facing, there should be a proper, explanatory
diagnostic message. Executing llvm_unreachable is a bug, not a feature!

On 18 November 2012 17:11, Dmitri Gribenko <gribozavr at gmail.com> wrote:

> 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>*/
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20121118/7fee69a5/attachment.html>


More information about the cfe-dev mailing list