https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66444

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to vries from comment #7)
> (In reply to Jakub Jelinek from comment #6)
> > The 0xe000000000UL constant is probably not very good for ilp32 targets. 
> > Try some < 4GB one if it still reproduces without the patch, or
> > conditionalize it on __SIZEOF_POINTER__.
> 
> I've tried with 0xe0000000U. The m64 case still reproduces. 
> 
> With -m32 -mregparm=1 we get:
> ...
>               .cfi_startproc
>         call    bar
>         sall    $4, %eax
>         leal    -536870912(%eax), %edx
>       movl    %edx, %eax
>         call    fn1
>         movl    %edx, %eax
>         call    fn2
>         xorl    %eax, %eax
>         ret
> ...
> The reload_combine doesn't trigger for this case.

It is very well possible it triggers only on x86_64-linux (or perhaps some
other 64-bit targets), but still it would be better if the testcase could be
compiled and run everywhere, so I'm all for using 0xe0000000UL or similar
constant instead.

Reply via email to