[llvm-dev] A tagged architecture, the elephant in the undef / poison room

Peter Lawrence via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 13 10:27:26 PDT 2017


Here’s what seems to really be going on

	“undef”  ===  models an uninitialized register,  but

	“poison”  ===  turns the entire IR into a tagged architecture


Is this really the way to go ?

It seems like a odd choice given that none of our current targets
are tagged architectures, all of this tagged IR has to somehow be
reduced back down to normal target machine instructions.



This question is meant to be thought provoking,
I’m not looking for quick rhetorical answers.

Correct me if I am wrong, but it seems no one has outlined a proof
that C programs can be translated into IR+”poison", optimized according
to the definition of “poison”, and always be guaranteed to still
be the same C program. Right now all we have are beliefs
based on intuition that this can be done, but no actual proof.

In other words,  everyone believed that “undef” was the way to go until
counter examples started showing up, and now everyone believes
that “poison” is the way to go, which will be true until counter examples
start showing up. We are jumping from one shaky precipice to another,
we still are not yet on solid ground.


Peter Lawrence.


More information about the llvm-dev mailing list