[LLVMdev] Remove identical or redundant basic blocks?
John Criswell
criswell at illinois.edu
Sun May 9 04:36:31 PDT 2010
Eugene Toder wrote:
> Would it make sense to have a similar pass that operates on llvm main IR?
>
The unify exit return node (-mergereturn?) pass should take care of the
first example. The -simplifycfg option might take care of the second
example. Both work on LLVM IR.
-- John T.
> On Sat, May 8, 2010 at 5:15 PM, Dale Johannesen <dalej at apple.com> wrote:
>
>> 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
>>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>
> _______________________________________________
> 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