This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: how can I split 1 mov insn into 2 sub_mov and 1 combine?
Liu <proljc@gmail.com> writes:
> On Wed, Mar 30, 2011 at 11:45 PM, Ian Lance Taylor <iant@google.com> wrote:
>> Liu <proljc@gmail.com> writes:
>>
>>> Â Â Â if (GET_MODE (dest) == V32QImode)
>>> Â Â Â Â tmp_reg = gen_reg_rtx (V32QImode);
>>
>>> vpaddd.c:33:1: internal compiler error: in gen_reg_rtx, at emit-rtl.c:863
>>> Please submit a full bug report,
>>> with preprocessed source if appropriate.
>>> See <http://gcc.gnu.org/bugs.html> for instructions.
>>>
>>> emit-rtl.c:863 is Âgcc_assert (can_create_pseudo_p ());
>>
>> You can only call gen_reg_rtx if can_create_pseudo_p returns true. ÂIt
>> will return false during and after register allocation. ÂYour code is
>> being called at that time somehow, probably during reload. ÂYou have to
>> either ensure that that does not happen, or, more likely, you have to
>> arrange to use an existing register rather than create a new one. ÂFor
>> example, look for uses of can_create_pseudo_p in mips.c.
>>
>> Ian
>>
>
> Thank you very much Ian!
>
> Does SCRATCH will be OK?
Not directly, no. You can use match_scratch as part of a secondary
reload, though. I don't know whether you need a secondary reload here
or not.
Ian