[cfe-dev] Intrinsics for signed arithmetic with well-defined overflow/underflow?
Jordan Rose
jordan_rose at apple.com
Fri Aug 3 16:05:41 PDT 2012
On Aug 3, 2012, at 16:00 , Eli Friedman <eli.friedman at gmail.com> wrote:
> On Fri, Aug 3, 2012 at 3:43 PM, Alex Rønne Petersen <xtzgzorex at gmail.com> wrote:
>> Hi cfe-dev,
>>
>> I'm doing a bit of a crazy project where I compile an IR to
>> 'Clang-flavored C99'. The IR guarantees sane overflow/underflow
>> semantics for signed arithmetic, but as far as I can tell, Clang
>> doesn't (which is in line with the standard). Does Clang provide any
>> intrinsics to achieve this, which the optimizers in LLVM will respect?
>
> What exactly does "sane" mean, in your context? If you want wrapping,
> you can just write (int)((unsigned)x+(unsigned)y).
>
> -Eli
-fwrapv should permit signed overflow as well, just like in GCC. Not sure if we pass this flag all the way down, but a quick look at CodeGen does look like we're using the same Add as unsigned integers when -fwrapv is passed.
Jordan
More information about the cfe-dev
mailing list