[LLVMdev] Remove identical or redundant basic blocks?
Dale Johannesen
dalej at apple.com
Sat May 8 09:15:36 PDT 2010
The branch folding pass does this, but it operates later, on the
target-dependent form in llc.
On May 8, 2010, at 8:48 AM, Heinz Riener wrote:
> Dear all,
>
> after optimizing a small LLVM example program (i.e., with opt -O3),
> the
> resulting code contains several basic blocks, which I consider
> identical
> or redundant. For instance,
>
> return: ; preds = %min.exit
> ret i32 0
>
> bb15: ; preds = %min.exit
> ret i32 0
>
> or,
>
> bb7.i: ; preds = %bb1.i
> br label %bb3.i
>
> bb9.i: ; preds = %bb1.i
> br label %bb3.i
>
> I think it is safe to remove the blocks bb7.i, bb9.i, bb15 while
> replacing each jump to bb15 with return and jumps to bb7.i, bb9.i with
> bb3.i.
>
> Is there any opt pass I can apply to the code to merge or remove these
> blocks?
>
> Heinz
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list