diff options
author | krebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-01-17 16:18:59 +0000 |
---|---|---|
committer | krebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-01-17 16:18:59 +0000 |
commit | 74748e47c7c3af646d70012caeff51f5531d60cd (patch) | |
tree | 5121992dd80b8b1bb8673bf19c1c5051d0828766 /gcc/global.c | |
parent | a13ff5904a508ab8c3bc31344a2f29921f3de1d1 (diff) | |
download | gcc-74748e47c7c3af646d70012caeff51f5531d60cd.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131601 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/global.c')
-rw-r--r-- | gcc/global.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/global.c b/gcc/global.c index 8be113df60a..c805f572c7f 100644 --- a/gcc/global.c +++ b/gcc/global.c @@ -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); |