GCC 4.3.4 is casting my QImode vars to SImode for libcall
Paulo J. Matos
pocmatos@gmail.com
Tue Jun 15 09:07:00 GMT 2010
On Tue, Jun 15, 2010 at 9:17 AM, Paulo J. Matos <pocmatos@gmail.com> wrote:
> On Mon, Jun 14, 2010 at 8:56 PM, Joseph S. Myers
> <joseph@codesourcery.com> wrote:
>>
>> Every hardcoded reference to a mode other than QImode in the
>> target-independent compiler is suspicious and needs investigating if you
>> are doing such a port. In this case, the SImode references in
>> expand_float are likely the problem.
>>
>
> Thanks for the tip Joseph, I will look into it.
>
The code in expand_float like you said seems to be the one causing the problem.
if (GET_MODE_SIZE (GET_MODE (from)) < GET_MODE_SIZE (SImode))
from = convert_to_mode (SImode, from, unsignedp);
I can't really see a reason why if the from mode has smaller size than
SImode than it has to be converted. Simply removing these lines
actually works.
However I can imagine that there _might_ be archs where the
non-integer modes are smaller than QImode and then there would be a
problem so the correct solution would be to change it to:
if (GET_MODE_SIZE (GET_MODE (from)) < GET_MODE_SIZE (QImode))
from = convert_to_mode (QImode, from, unsignedp);
Cheers,
--
PMatos
More information about the Gcc
mailing list