Re: [PATCH, IRA] Fix ALLOCNO_MODE in the case of paradoxical subreg.

2013-10-03 Thread Vladimir Makarov
On 10/01/2013 01:55 AM, Wei Mi wrote: Probably the best place to add a code for this is in lra-constraints.c::simplify_operand_subreg by permitting subreg reload for paradoxical subregs whose hard regs are not fully in allocno class of the inner pseudo. It needs a good testing (i'd check

Re: [PATCH, IRA] Fix ALLOCNO_MODE in the case of paradoxical subreg.

2013-10-03 Thread Wei Mi
You removed conditition with LRA_SUBREG for non-paradoxical subreg generated for matched operands. I think that is important condition and the comment says why. There are some 32-bit insns constraints requiring different modes (int and fp ones) for matching operands in FP regs. The

Re: [PATCH, IRA] Fix ALLOCNO_MODE in the case of paradoxical subreg.

2013-10-01 Thread Wei Mi
Please check whether it is ok. Boostrap and regression ok. I am also verifying its performance effect on google applications (But most of them are 64 bits, so I cannot verify its performance effect on 32 bits apps). Have verified It has no performance impact on google applications. Thanks,

Re: [PATCH, IRA] Fix ALLOCNO_MODE in the case of paradoxical subreg.

2013-09-30 Thread Wei Mi
Probably the best place to add a code for this is in lra-constraints.c::simplify_operand_subreg by permitting subreg reload for paradoxical subregs whose hard regs are not fully in allocno class of the inner pseudo. It needs a good testing (i'd check that the generated code is not changed

Re: [PATCH, IRA] Fix ALLOCNO_MODE in the case of paradoxical subreg.

2013-09-25 Thread Vladimir Makarov
On 09/24/2013 07:57 PM, Wei Mi wrote: Hi, This patch is to address the problem described here: http://gcc.gnu.org/ml/gcc/2013-09/msg00187.html The patch changes ALLOCNO_MODE of a pseudo reg to be outermode if the pseudo reg is used in a paradoxical subreg, so IRA will not mistakenly assign

Re: [PATCH, IRA] Fix ALLOCNO_MODE in the case of paradoxical subreg.

2013-09-25 Thread Wei Mi
performance. For example, we have code ... (reg:DI) ... ... ... (subreg:TI (reg:DI)) ... ...(reg:DI) We need two hard regs only for the second place by transforming p = (reg:DI) ...(subreg:TI p) With this patch we requires two hard regs for the all live range of the original pseudo

Re: [PATCH, IRA] Fix ALLOCNO_MODE in the case of paradoxical subreg.

2013-09-25 Thread Vladimir Makarov
On 09/25/2013 12:42 PM, Wei Mi wrote: performance. For example, we have code ... (reg:DI) ... ... ... (subreg:TI (reg:DI)) ... ...(reg:DI) We need two hard regs only for the second place by transforming p = (reg:DI) ...(subreg:TI p) With this patch we requires two hard regs for the

Re: [PATCH, IRA] Fix ALLOCNO_MODE in the case of paradoxical subreg.

2013-09-25 Thread Wei Mi
To define for what occurrence of the pseudo we should do the transformation, we need to create allocnos and calculate reg classes to know what paradoxical subreg needs more hard regs (the transformations can not be done for all paradoxical subregs as my experience shows many RTL changes

Re: [PATCH, IRA] Fix ALLOCNO_MODE in the case of paradoxical subreg.

2013-09-25 Thread Vladimir Makarov
On 09/25/2013 02:00 PM, Wei Mi wrote: To define for what occurrence of the pseudo we should do the transformation, we need to create allocnos and calculate reg classes to know what paradoxical subreg needs more hard regs (the transformations can not be done for all paradoxical subregs as my

[PATCH, IRA] Fix ALLOCNO_MODE in the case of paradoxical subreg.

2013-09-24 Thread Wei Mi
Hi, This patch is to address the problem described here: http://gcc.gnu.org/ml/gcc/2013-09/msg00187.html The patch changes ALLOCNO_MODE of a pseudo reg to be outermode if the pseudo reg is used in a paradoxical subreg, so IRA will not mistakenly assign an operand with a bigger mode to a smaller