[LLVMdev] Remove an instruction through Dead Code Elimination pass of llvm

Devang Patel dpatel at apple.com
Mon Feb 13 09:45:30 PST 2012


Adarsh,

Usually the pass should handle such simple and clear clean ups itself. If you grep for Inst->eraseFromParent() in source based then you'll see that many transformations are doing it immediately after they know that they have replaced all occurrences of %7.

-
Devang

On Feb 11, 2012, at 1:43 AM, Duncan Sands <baldrick at free.fr> wrote:

> Hi Adarsh,
> 
> On 11/02/12 09:47, Adarsh Konchady wrote:
>> My pass in LLVM generates an IR like this
>>   %5 = icmp eq i32 %4, 0
>>   %7 = or i1 %5, %5
>>  ;. . .
>> Since the 'or' instruction is actually not needed(dead code), I replaced all
>> occurences of %7 with %5.
>> Now, the 'or' instruction should get deleted. How can I call Dead Code
>> Elimination pass of LLVM from my pass or is there any method to remove that 'or'
>> instruction?
> 
> in LLVM passes don't schedule other passes.  Whoever schedules your pass to run
> can just schedule a dead code elimination pass after yours (or instcombine, or
> some other pass that will zap this kind of thing).  Alternatively, your pass
> can use a utility function to do it, for example SimplifyInstructionsInBlock,
> defined in llvm/Transforms/Utils/Local.h
> 
> Ciao, Duncan.
> _______________________________________________
> 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