[LLVMdev] Loop Unrolling

Eli Friedman eli.friedman at gmail.com
Sat Jun 25 01:36:33 PDT 2011


On Sat, Jun 25, 2011 at 12:49 AM, Suresh Purini <suresh.purini at gmail.com> wrote:
> Hello,
>
>  I tried to do some small experiments on the loop unroll
> transformation. Following is the Test Program. I compiled it as
> follows:
>
> $ opt -loop-rotate -debug-only=loop-unroll -loop-unroll
> -unroll-count=2 test1.o -S -o test1.s
>
> ------------------
> int a[1024];
> int main()
> {
>  int i, sum=0;
>
>  for(i=0; i<1024; ++i)
>        sum += a[i];
>
>  printf("%d",sum);
> }
> -------------------
>
> I got the following compilation error. Any thoughts on why it is
> happening. It is not supposed to crash right?
>
> -------------------------------
> Loop Unroll: F[main] Loop %for.body
>  Loop Size = 7
> UNROLLING loop %for.body by 2!
> PHINode should have one entry for each predecessor of its parent basic block!
>  %sum.0.lcssa = phi i32 [ %add.1, %for.inc.1 ]
>  Broken module found, compilation aborted!
> 0  opt       0x0894589a
> 1  opt       0x08945627
> 2            0x00d9c400 __kernel_sigreturn + 0
> 3  libc.so.6 0x0013e34e abort + 382
> 4  opt       0x088f1d0d
> 5  opt       0x088f1a04
> 6  opt       0x088c9fc5
> llvm::FPPassManager::runOnFunction(llvm::Function&) + 313
> 7  opt       0x088ca17f llvm::FPPassManager::runOnModule(llvm::Module&) + 109
> 8  opt       0x088ca46a llvm::MPPassManager::runOnModule(llvm::Module&) + 400
> 9  opt       0x088ca920 llvm::PassManagerImpl::run(llvm::Module&) + 122
> 10 opt       0x088cace5 llvm::PassManager::run(llvm::Module&) + 39
> 11 opt       0x084a6484 main + 4873
> 12 libc.so.6 0x00126e37 __libc_start_main + 231
> 13 opt       0x08496c21
> Stack dump:
> 0.      Program arguments: /home/purini/llvmdbg/bin/opt -loop-rotate
> -debug-only=loop-unroll -loop-unroll -unroll-count=4 test1.o -S -o
> test1.s
> 1.      Running pass 'Function Pass Manager' on module 'test1.o'.
> 2.      Running pass 'Module Verifier' on function '@main'
> Aborted

http://llvm.org/bugs/show_bug.cgi?id=2253 ?  -unroll-count isn't
really useful normally...

-Eli




More information about the llvm-dev mailing list