On Tue, Jun 15, 2010 at 9:17 AM, Paulo J. Matos <pocma...@gmail.com> wrote:
> On Mon, Jun 14, 2010 at 8:56 PM, Joseph S. Myers
> <jos...@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

Reply via email to