[llvm-dev] Possible soundness issue with available_externally (split from "RFC: Add guard intrinsics")
Sanjoy Das via llvm-dev
llvm-dev at lists.llvm.org
Thu Feb 25 20:11:28 PST 2016
On Thu, Feb 25, 2016 at 6:35 PM, Duncan P. N. Exon Smith
<dexonsmith at apple.com> wrote:
>> // In C
>> void foo() {
>> int c;
>> if (c) print("X");
>> escape(&c); // escape is an empty function
>> }
>>
>> which I think is not UB in C (is it?), but will boil down to the kind
>> of IR above.
>
> I'm pretty sure the `if (c)` is UB because it's branching on an uninitialized
> value, which could have a trap representation.
I am *way* out of my depth here, but what if 'c' was an 'unsigned
char' (and not an 'int')? Wouldn't that prevent UB, since it is
escaped (cannot be a register variable), and is an 'unsigned char'
(doesn't have a trap representation)?
-- Sanjoy
More information about the llvm-dev
mailing list