[LLVMdev] poison and select

Adve, Vikram Sadanand vadve at illinois.edu
Wed Sep 10 13:54:06 PDT 2014


On Sep 10, 2014, at 6:38 PM, <llvmdev-request at cs.uiuc.edu>
 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.


Doesn't a select instruction also depend on the predicate (boolean) value?


> 
> John



--Vikram Adve
Professor, Department of Computer Science
University of Illinois at Urbana-Champaign
vadve at illinois.edu
http://llvm.org





More information about the llvm-dev mailing list