[LLVMdev] RFC: Proposal for Poison Semantics
Sanjoy Das
sanjoy at playingwithpointers.com
Sun Feb 1 13:06:53 PST 2015
> I don't know how things work at the moment, but it seems to me that you can
> do lots of sensible things, and avoid lots of silly things, if you keep
> track of four possible values for each bit:
>
> - undef (the default)
> - poison
> - known to be 0
> - known to be 1
I'm not clear what you mean by "known to be X", but assuming you mean
"known" in the same sense of computeKnownBits, then I don't think such
a distinction will lead to intuitive semantics. If the semantics of a
program depended on what the compiler can prove about the program,
then the meaning of a program will change based on how smart the
compiler is (i.e. does the /compiler/ know that `add i32 10, 9` is
`i32 19`?). As a concrete example, outlining a function to a separate
module will no longer be a meaning preserving transform because then a
bit could go from "known to be 0" to "nothing is known".
Sorry for the tangent, in case you meant something completely
different by "known". :)
-- Sanjoy
More information about the llvm-dev
mailing list