Commit 599824d2 by Andreas Krebbel Committed by Andreas Krebbel

global.c (find_reg): Mark the eh regs as used if necessary.

2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>

	* global.c (find_reg): Mark the eh regs as used if necessary.
	* ra-conflict.c (global_conflicts): Set no_eh_reg flag.
	* ra.h (struct allocno): no_eh_reg field added.  Changed
	no_stack_reg type to bitfield.

From-SVN: r131601
parent 9328dd57
2008-01-17 Andreas Krebbel <krebbel1@de.ibm.com>
* global.c (find_reg): Mark the eh regs as used if necessary.
* ra-conflict.c (global_conflicts): Set no_eh_reg flag.
* ra.h (struct allocno): no_eh_reg field added. Changed
no_stack_reg type to bitfield.
2008-01-17 Eric Botcazou <ebotcazou@adacore.com>
* tree.c (substitute_in_expr): Add missing 'break'.
......
......@@ -1011,6 +1011,16 @@ find_reg (int num, HARD_REG_SET losers, int alt_regs_p, int accept_call_clobbere
IOR_HARD_REG_SET (used1, losers);
IOR_COMPL_HARD_REG_SET (used1, reg_class_contents[(int) class]);
#ifdef EH_RETURN_DATA_REGNO
if (allocno[num].no_eh_reg)
{
unsigned int j;
for (j = 0; EH_RETURN_DATA_REGNO (j) != INVALID_REGNUM; j++)
SET_HARD_REG_BIT (used1, EH_RETURN_DATA_REGNO (j));
}
#endif
COPY_HARD_REG_SET (used2, used1);
IOR_HARD_REG_SET (used1, allocno[num].hard_reg_conflicts);
......
......@@ -1184,6 +1184,11 @@ global_conflicts (void)
break;
record_one_conflict (allocnos_live, &hard_regs_live, regno);
}
EXECUTE_IF_SET_IN_SPARSESET (allocnos_live, i)
{
allocno[i].no_eh_reg = 1;
}
}
#endif
......
......@@ -75,9 +75,14 @@ struct allocno
HARD_REG_SET regs_someone_prefers;
#ifdef EH_RETURN_DATA_REGNO
/* Set to true if allocno can't be allocated in an eh register. */
unsigned int no_eh_reg:1;
#endif
#ifdef STACK_REGS
/* Set to true if allocno can't be allocated in the stack register. */
bool no_stack_reg;
unsigned int no_stack_reg:1;
#endif
};
extern struct allocno *allocno;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment