[llvm-dev] how LLVM deals with 'undef'

Krzysztof Parzyszek via llvm-dev llvm-dev at lists.llvm.org
Tue Aug 25 12:16:40 PDT 2015

On 8/25/2015 2:09 PM, Xiangyang Guo via llvm-dev wrote:
> I'm using LLVM-3.8 (current SVN version) to optimize my code. After loop
> unrolling, I find there is 'undef' in the IR. For example,
> "/%.lcssa21.unr = phi double [ undef, %.lr.ph9 ], [ %13, %7 ]/". I have
> two questions:
> (1) Why this 'undef' is generated?  Because before 'loop unrolling',
> there is no such 'undef'.

Most likely to satisfy the syntax of a phi node.  If everything is 
correct, that value will never be used.  If things weren't exactly 
correct, this may be a result of a load from an uninitialized memory, or 
something like that.

> (2) How LLVM backend deals with this 'undef'?

In general, undef will propagate itself through instructions.  How it 
will deal with this specific one, it's impossible to say without the 


Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation

More information about the llvm-dev mailing list