[LLVMdev] isLCSSAForm failed

Eli Friedman eli.friedman at gmail.com
Sun Sep 12 21:14:25 PDT 2010


On Sun, Sep 12, 2010 at 7:41 PM, Neal  N. Wang <neal.wang at gmail.com> wrote:
> Hi folk,
>
> I have a Module pass.  I tested the pass against  the following code.
>
> ./gcc.dg/20030721-1.c
> extern void abort(void);
>
> void foo(int) __attribute__((__noinline__));
>
> void foo(int i)
> {
>   abort();
> }
>
> int main()
> {
>   int i;
>   int first= 0;
>   int last= 0;
>
>   while (last<3) {
>     last = first;
>
>     while (first<=last) {
>       first++;
>
>       for (i=0;i<3;i++)
>         last++;
>
>       if (last>10)
>         return 0;
>     }
>
>     foo(first);
>   }
>
>   return 0;
> }
> ~
>
>
> If I test my pass with "gcc -fmypass ./gcc.dg/20030721-1.c -fno-show-column
> -S -o 20030721-1.s", it works.
> But when I add -O2 to the above command line, I get the following error
> message:
>
> LCSSA.cpp:167: virtual bool<unnamed>::LCSSA::runOnLoop(llvm::Loop*,
> llvm::LPPassManager&): Assertion `L->isLCSSAForm()' failed.
> ./gcc.dg/20030721-1.c:41: internal compiler error: Aborted
>
> Any thought what "isLCSSAForm" fails mean?

My first guess is that your pass is claiming to preserve dominance
information when it doesn't... try passing -mllvm -verify-dom-info to
llvm-gcc.

-Eli




More information about the llvm-dev mailing list