[llvm-dev] A tagged architecture, the elephant in the undef / poison room
Krzysztof Parzyszek via llvm-dev
llvm-dev at lists.llvm.org
Tue Jun 13 10:51:37 PDT 2017
On 6/13/2017 12:27 PM, Peter Lawrence via llvm-dev wrote:
> Here’s what seems to really be going on
>
> “undef” === models an uninitialized register, but
>
> “poison” === turns the entire IR into a tagged architecture
The problem with undef was that while "cmp eq i32 %x, %x" was always
true, if %x turned out to be undef, then we end up with "cmp eq i32
undef, undef", which may be folded either way.
Poison is meant to avoid that issue by saying that once you establish a
certain property of it, that property of it remains. Maybe there is an
interpretation of it that matches a tagged architecture, but I don't see
how that's significant. Do you have any particular concern regarding
it? (Other than about the ability to represent a C program.)
-Krzysztof
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
More information about the llvm-dev
mailing list