[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