diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2009-01-14 03:35:35 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2009-01-14 03:35:35 +0000 |
commit | cf0c2a602b4a703140279e456b3a8148e2513ea7 (patch) | |
tree | e860f6b335f1534025cc69de344ff6c2a804bea8 /gcc/ira-lives.c | |
parent | 41d3c949435acca1fbaa05a98de8e56629ccec54 (diff) | |
download | gcc-cf0c2a602b4a703140279e456b3a8148e2513ea7.tar.gz |
re PR target/38811 (internal compiler error: in compensate_edge, at reg-stack.c:2754)
2009-01-13 Vladimir Makarov <vmakarov@redhat.com>
PR target/38811
* Makefile.in (ira-lives.o): Add except.h.
* ira-lives.c: Include except.h.
(process_bb_node_lives): Process can_throw_internal.
From-SVN: r143362
Diffstat (limited to 'gcc/ira-lives.c')
-rw-r--r-- | gcc/ira-lives.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c index c7868f39a54..0d1e402d82b 100644 --- a/gcc/ira-lives.c +++ b/gcc/ira-lives.c @@ -28,6 +28,7 @@ along with GCC; see the file COPYING3. If not see #include "tm_p.h" #include "target.h" #include "flags.h" +#include "except.h" #include "hard-reg-set.h" #include "basic-block.h" #include "insn-config.h" @@ -985,6 +986,13 @@ process_bb_node_lives (ira_loop_tree_node_t loop_tree_node) SET_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a)); SET_HARD_REG_SET (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a)); } + if (can_throw_internal (insn)) + { + IOR_HARD_REG_SET (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a), + call_used_reg_set); + IOR_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a), + call_used_reg_set); + } } } |