[LLVMdev] Self-referential instruction from jump threading

Hal Finkel hfinkel at anl.gov
Mon Oct 22 05:59:22 PDT 2012


----- Original Message -----
> From: "Duncan Sands" <baldrick at free.fr>
> To: llvmdev at cs.uiuc.edu
> Sent: Monday, October 22, 2012 4:40:50 AM
> Subject: Re: [LLVMdev] Self-referential instruction from jump threading
> 
> Hi Hal,
> 
> > After investigating PR14133, I've discovered that jump threading
> > can output self-referential instructions:
> > %inc.us = add nsw i32 %inc.us, 1
> 
> such instructions are valid in unreachable basic blocks.

Okay, thanks!

> 
> > At least in the test case for that bug report, the relevant code is
> > later deleted (perhaps it is unreachable), and so this does not
> > cause a problem. Unfortunately, when vectorization is enabled,
> > this instruction causes BBVectorize to hang. Should I make
> > BBVectorize ignore this kind of thing, on the assumption that it
> > occurs only in unreachable (or otherwise dead) code, or should
> > this be fixed at the source (in jump threading in this case)?
> 
> All such instructions are dead, as they always live in unreachable
> basic blocks,
> so there is no point in trying to optimize them.

Fair enough. I'll change BBVectorize to ignore blocks for which isReachableFromEntry is false.

 -Hal

> 
> Ciao, Duncan.
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 

-- 
Hal Finkel
Postdoctoral Appointee
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-dev mailing list