summaryrefslogtreecommitdiff
path: root/gcc/ira-lives.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2009-01-14 03:35:35 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2009-01-14 03:35:35 +0000
commitcf0c2a602b4a703140279e456b3a8148e2513ea7 (patch)
treee860f6b335f1534025cc69de344ff6c2a804bea8 /gcc/ira-lives.c
parent41d3c949435acca1fbaa05a98de8e56629ccec54 (diff)
downloadgcc-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.c8
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);
+ }
}
}