Re: [PATCH] remove abs64()

From: Andrew Morton
Date: Tue Apr 12 2011 - 17:33:52 EST


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.
--
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/