This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: how can I split 1 mov insn into 2 sub_mov and 1 combine?


On Thu, Mar 31, 2011 at 2:57 PM, Ian Lance Taylor <iant@google.com> wrote:
> 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
>

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]