On Thu, Mar 31, 2011 at 2:57 PM, Ian Lance Taylor <i...@google.com> wrote:
> Liu <pro...@gmail.com> writes:
>
>> On Wed, Mar 30, 2011 at 11:45 PM, Ian Lance Taylor <i...@google.com> wrote:
>>> Liu <pro...@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
>

Thanks.
 I'll go to look into can_create_pseudo_p, maybe reload.c, it is really complex.

Reply via email to