[Bug rtl-optimization/50427] IRA fails to detect conflict

lalhee at wanadoo dot fr gcc-bugzilla@gcc.gnu.org
Thu Aug 30 15:32:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50427

Catherine Gasnier <lalhee at wanadoo dot fr> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |lalhee at wanadoo dot fr

--- Comment #2 from Catherine Gasnier <lalhee at wanadoo dot fr> 2012-08-30 15:31:15 UTC ---
Hi,
I had exactly the same problem, where IRA did not see the dependency between a
register and one of it subreg. In our back, we also have hard registers in
HImode, with adjacent register sequences used for SImode and DImode. For me,
the issue was the way I defined the macro REGMODE_NATURAL_SIZE. I've had a look
at your code and you defined it roughly the same way as I did:

#define REGMODE_NATURAL_SIZE(MODE) (PSImode == (MODE) ? 2*UNITS_PER_WORD :
UNITS_PER_WORD)

This seems to be wrong. I think this macro is useful only if the natural size
for a specific mode is smaller than UNIT_PER_WORD, which is not your case. You
should try not to define this macro.

--- Comment #3 from Catherine Gasnier <lalhee at wanadoo dot fr> 2012-08-30 15:31:54 UTC ---
Hi,
I had exactly the same problem, where IRA did not see the dependency between a
register and one of it subreg. In our back, we also have hard registers in
HImode, with adjacent register sequences used for SImode and DImode. For me,
the issue was the way I defined the macro REGMODE_NATURAL_SIZE. I've had a look
at your code and you defined it roughly the same way as I did:

#define REGMODE_NATURAL_SIZE(MODE) (PSImode == (MODE) ? 2*UNITS_PER_WORD :
UNITS_PER_WORD)

This seems to be wrong. I think this macro is useful only if the natural size
for a specific mode is smaller than UNIT_PER_WORD, which is not your case. You
should try not to define this macro.



More information about the Gcc-bugs mailing list