This is the mail archive of the
mailing list for the GCC project.
Re: GCC 4.3.4 is casting my QImode vars to SImode for libcall
On Tue, Jun 15, 2010 at 9:17 AM, Paulo J. Matos <firstname.lastname@example.org> wrote:
> On Mon, Jun 14, 2010 at 8:56 PM, Joseph S. Myers
> <email@example.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
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);