[llvm-dev] [compiler-rt] Undefined negation in float emulation functions
Joerg Sonnenberger via llvm-dev
llvm-dev at lists.llvm.org
Sun Oct 25 08:54:26 PDT 2015
On Sun, Oct 25, 2015 at 06:46:48AM -0400, Steve Canon via llvm-dev wrote:
> On Oct 24, 2015, at 6:02 PM, Chris Lattner <clattner at apple.com> wrote:
> >
> >
> >> On Oct 23, 2015, at 7:43 PM, Matthew Fernandez via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> >>> On 21/10/15 00:15, Stephen Canon wrote:
> >>> Yup, this is UB. If you want to propose a patch, I would do something like the following:
> >>>
> >>> rep_t sign = 0;
> >>> unsigned int aAbs = a;
> >>> if (a < 0) {
> >>> sign = signBit;
> >>> aAbs = -aAbs;
> >>> }
> >>> // Now use aAbs instead of a.
> >
> > FWIW, another way to avoid the UB is to use an unsigned value.
>
> I'm confused, that's exactly what this does.
At least in one place it is negating the signed variable, not creating a
new unsigned variable.
Joerg
More information about the llvm-dev
mailing list