On 06/21/2011 06:10 PM, Jakub Jelinek wrote:
> gcc.c-torture/execute/builtin-bitops-1.c fails on x86_64-linux, because
> there is no SImode libcall, only DImode, and it was zero-extending instead
> of sign-extending the argument, and not subtracting the mode difference
> afterwards. So int foo (int x) { return __builtin_clrsb (x); }
> expanded the same as
> int foo (int x) { return __builtin_clrsbl ((unsigned) x); }
> instead of the correct
> int foo (int x) { return __builtin_clrsbl (x) - 32; }
>
> Fixed thusly, I've also added folding of constant arguments
> during tree optimizations for it.
>
> Ok for trunk?
Ok.
> (fold_builtin_bitop): Fix masking for width > HOST_BITS_PER_WIDE_INT
> and < 2 * HOST_BITS_PER_WIDE_INT. Optimize BUILT_IN_CLRSB*.
Oh that's where the folders were hiding? I thought we didn't have any
for this family of builtins.
Bernd