This is the mail archive of the gcc-patches@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] |
Please use "if (! TEST_HARD_REG_BIT (call_used_reg_set, reg)" instead.+ for (reg = 0; reg < FIRST_PSEUDO_REGISTER; reg++) + if (!call_used_regs[reg]
+ && HARD_REGNO_CALL_PART_CLOBBERED (reg, a->mode))
Index: gcc/ira-lives.c
===================================================================
*** gcc/ira-lives.c.orig
--- gcc/ira-lives.c
*************** process_bb_node_lives (ira_loop_tree_nod
*** 1169,1174 ****
--- 1169,1185 ----
ira_object_t obj = ira_object_id_map[i];
ira_allocno_t a = OBJECT_ALLOCNO (obj);
int num = ALLOCNO_NUM (a);
+ int reg;
+ + /* Allocnos bigger than the saved part of call saved
+ regs must conflict with them. */
+ for (reg = 0; reg < FIRST_PSEUDO_REGISTER; reg++)
+ if (!call_used_regs[reg]
+ && HARD_REGNO_CALL_PART_CLOBBERED (reg, obj->allocno->mode))
+ {
+ SET_HARD_REG_BIT (OBJECT_CONFLICT_HARD_REGS (obj), reg);
+ SET_HARD_REG_BIT (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj), reg);
+ }
/* Don't allocate allocnos that cross setjmps or any
call, if this function receives a nonlocal
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |