Dear LLVMdev,

We have a question regarding the semantics of the undefined value in LLVM IR.

As far as we understand, in order to give a semantics to the undefined value, the semantics of LLVM IR is generalized to a rather unusual set-based semantics. More specifically, the notion of value in LLVM IR is generalized to a set of values, rather than a single value. Then the undefined value is simply defined as the set of all values.

Our question is simply why LLVM does not use the notion of trap representation of C11 standard to represent the undefined value, rather than using the set-based semantics.

We’d like to understand the motivation of the set-based semantics over the trap representation.

Thanks.

Chung-Kil Hur, Steve Zdancewic & Viktor Vafeiadis.