[LLVMdev] The nsw story
David A. Greene
greened at obbligato.org
Mon Dec 5 15:50:13 PST 2011
Dan Gohman <gohman at apple.com> writes:
> And it would still mean that non-volatile store instructions suddenly
> can have side effects beyond just writing to their addressed memory.
> That would be surprising.
No more surprising than any hardware architecture that implements this
kind of poison tracking. You see the fault or undefined behavior at the
store. Yes, a compiler IR is not an ISA but we do get to define the IR
semantics. It's a contract where we get to specify all of the rules.
:)
If you're more worried about things like the above rather than the high
static analysis cost these various suggestions are trying to address,
that's simply a particular tradeoff you'd rather make. There's no rule
that says any particular semantic is "surprising."
We make the tradeoffs we want and implement the semantics based on that.
> I think Dave also suggested making select instructions be
> observation points. That would mean that select instructions would
> have side effects. Again, that would be surprising.
How so? It certainly is an observable point. A select is just a branch
by another name. If the program behavior was undefined in the presence
of a branch, why shoudln't it be undefined in the presence of a select?
-Dave
More information about the llvm-dev
mailing list