On Fri, Jun 24, 2011 at 1:58 AM, Eric Botcazou <ebotca...@adacore.com> wrote: >> I just don't see how nonzero_bits1 can assume if pointers extend unsigned >> and this is an addition or subtraction to a pointer in Pmode, all the bits >> bove ptr_mode are known to be zero. We never run into it before x32 >> since x32 is the first such target. > > I agree that this is overly optimistical, but this was done on purpose: > http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00316.html > > Could you evaluate the pessimization that the patch introduces (if any) for > the > generated code on x32? If there is none or it is negligible, the patch is OK > if completed by the removal of the equivalent code in num_sign_bit_copies1. > If it isn't negligible, we may need to be clever and devise something else. >
I compared x32 glibc built with the old x32 gcc against x32 glibc built with this patch and http://gcc.gnu.org/ml/gcc-patches/2011-06/msg00913.html reverted, the new glibc is little smaller: New: [hjl@gnu-33 build-x86_64-linux]$ size libc.so text data bss dec hex filename 1537648 10076 12944 1560668 17d05c libc.so [hjl@gnu-33 build-x86_64-linux]$ Old: [hjl@gnu-33 build-x86_64-linux.old]$ size libc.so text data bss dec hex filename 1538968 10076 12944 1561988 17d584 libc.so [hjl@gnu-33 build-x86_64-linux.old]$ I looked at assembly codes. The new one is better. I will check it in. Thanks. -- H.J.