Re: [PATCH] remove abs64()

From: Randy Dunlap
Date: Tue Apr 12 2011 - 17:40:39 EST


On Tue, 12 Apr 2011 14:33:40 -0700 Andrew Morton wrote:

> On Wed, 13 Apr 2011 00:16:58 +0300
> Alexey Dobriyan <adobriyan@xxxxxxxxx> wrote:
>
> > On Tue, Apr 12, 2011 at 02:10:40PM -0700, Andrew Morton wrote:
> > > On Tue, 12 Apr 2011 14:07:26 -0700
> > > Randy Dunlap <rdunlap@xxxxxxxxxxxx> wrote:
> > >
> > > > > + __builtin_choose_expr( \
> > > > > + __builtin_types_compatible_p(typeof(_x), long long), \
> > > > > + (unsigned long long)({ _x < 0 ? -_x : _x; }), \
> > > > > + _x))))); \
> > > > > +})
> > > >
> > > > that is better?
> > >
> > > I think so.
> > >
> > > It's a bit concerning that it changes the return type of abs().
> >
> > I haven't read every abs() user, but, yes, sizeof(abs()) silently
> > changing is the issue.
>
> It changes signedness_of(abs(signed_expr)) as well. That changes the
> signedness of expressions which use abs() and on and on.
> --

thanks for the further explanations.

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/