[LLVMdev] poison and select

John Regehr regehr at cs.utah.edu
Wed Sep 10 08:34:00 PDT 2014


http://llvm.org/bugs/show_bug.cgi?id=20895

On Wed, 10 Sep 2014, John Regehr wrote:

>> While the documentation may not match the facts on the 
>> ground, InstructionSimplify does (in my opinion) the
>> right thing; an undef operand doesn't mean the entire SelectInst folds away 
>> to undef:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/InstructionSimplify.cpp?revision=217342&view=m
>> arkup#l2880
>
> It seems pretty clear that this is the right semantics for select.
>
> If we believe the documentation, then select is only useful when we can prove 
> that it won't introduce a spurious poison value. This will not often be the 
> case.
>
> I'll go file a bug against the LLVM instruction reference to remind someone 
> to tweak the doc. My proposed fix would be:
>
> * Values other than phi nodes and select instructions depend on their 
> operands.
>
> * Phi nodes depend on the operand corresponding to their dynamic predecessor 
> basic block.
>
> * Select instructions depend on their selected operand.
>
> John


More information about the llvm-dev mailing list