]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/38811 (internal compiler error: in compensate_edge, at reg-stack.c:2754)
authorVladimir Makarov <vmakarov@redhat.com>
Wed, 14 Jan 2009 03:35:35 +0000 (03:35 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Wed, 14 Jan 2009 03:35:35 +0000 (03:35 +0000)
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

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

index 78c91fc10971d47309b5b54fc817d78532e30703..0eba871aafec634b9752f183959e55a8acd1a914 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 83c503621ae13e8283c4c9bf5ba09fa9e004c593..378a64f48262e2b914b49ef69f384d520c569d62 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 c7868f39a54fd8cb1a4477932531975b896f4e81..0d1e402d82b38a895e9b330d095e569241f886ca 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);
+                   }
                }
            }