From: Vladimir Makarov Date: Wed, 14 Jan 2009 03:35:35 +0000 (+0000) Subject: re PR target/38811 (internal compiler error: in compensate_edge, at reg-stack.c:2754) X-Git-Tag: releases/gcc-4.4.0~879 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cf0c2a602b4a703140279e456b3a8148e2513ea7;p=thirdparty%2Fgcc.git re PR target/38811 (internal compiler error: in compensate_edge, at reg-stack.c:2754) 2009-01-13 Vladimir Makarov 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78c91fc10971..0eba871aafec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2009-01-13 Vladimir Makarov + + 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. + 2009-01-13 Jakub Jelinek PR rtl-optimization/38774 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 83c503621ae1..378a64f48262 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -2936,7 +2936,7 @@ ira-emit.o: ira-emit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(EXPR_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) $(PARAMS_H) \ $(IRA_INT_H) ira-lives.o: ira-lives.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(TARGET_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \ + $(TARGET_H) $(RTL_H) $(REGS_H) except.h hard-reg-set.h $(FLAGS_H) \ insn-config.h $(RECOG_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) $(PARAMS_H) \ $(DF_H) sparseset.h $(IRA_INT_H) ira.o: ira.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c index c7868f39a54f..0d1e402d82b3 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); + } } }