On 02/01/2018 12:10 PM, Richard Sandiford wrote:
Vladimir Makarov <vmaka...@redhat.com> writes: Not sure about the E_<mode>/genmodes reference here. Isn't it simply "because it might be the mode a pseudo register"? Is it OK to expand the explanation a bit, as below?
Yes, it is OK. It is a better explanation. Thank you, Richard.
2018-02-01 Richard Sandiford <richard.sandif...@linaro.org> gcc/ * ira.c (ira_init_register_move_cost): Adjust comment. Index: gcc/ira.c =================================================================== --- gcc/ira.c 2018-02-01 17:09:45.998165072 +0000 +++ gcc/ira.c 2018-02-01 17:09:46.150158481 +0000 @@ -1578,8 +1578,10 @@ ira_init_register_move_cost (machine_mod ira_assert (ira_register_move_cost[mode] == NULL && ira_may_move_in_cost[mode] == NULL && ira_may_move_out_cost[mode] == NULL); - /* have_regs_of_mode[mode] might be false because it might be - E_<mode> (see genmodes) of pseudo with <mode>. */ + /* Note that we might be asked about the move costs of modes that + cannot be stored in any hard register, for example if an inline + asm tries to create a register operand with an impossible mode. + We therefore can't assert have_regs_of_mode[mode] here. */ for (cl1 = 0; cl1 < N_REG_CLASSES; cl1++) for (cl2 = 0; cl2 < N_REG_CLASSES; cl2++) {