[LLVMdev] Self-referential instruction from jump threading
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.
> > 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.
> Ciao, Duncan.
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-dev