OSDN Git Service

2009-01-13 Vladimir Makarov <vmakarov@redhat.com>
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 Jan 2009 03:35:35 +0000 (03:35 +0000)
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 Jan 2009 03:35:35 +0000 (03:35 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143362 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/Makefile.in
gcc/ira-lives.c

index 78c91fc..0eba871 100644 (file)
@@ -1,3 +1,11 @@
+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.
+
 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/38774
index 83c5036..378a64f 100644 (file)
@@ -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 \
index c7868f3..0d1e402 100644 (file)
@@ -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);
+                   }
                }
            }