]> gcc.gnu.org Git - gcc.git/commitdiff
re PR rtl-optimization/54294 ([alpha] Bootstrap comparison failure due to fwprop...
authorJakub Jelinek <jakub@redhat.com>
Mon, 20 Aug 2012 18:56:49 +0000 (20:56 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 20 Aug 2012 18:56:49 +0000 (20:56 +0200)
PR rtl-optimization/54294
* fwprop.c (all_uses_available_at): Ignore debug insns in between
def_insn and target_insn when checking whether the shortcut is
possible.

From-SVN: r190541

gcc/ChangeLog
gcc/fwprop.c

index 0bec6d278224e15960efae4eae61e0078b42aa87..83cda06ef3e9d21203f1fd7dd53cc78096ab4d03 100644 (file)
@@ -1,3 +1,10 @@
+2012-08-20  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/54294
+       * fwprop.c (all_uses_available_at): Ignore debug insns in between
+       def_insn and target_insn when checking whether the shortcut is
+       possible.
+
 2012-08-20  Eric Botcazou  <ebotcazou@adacore.com>
 
        * config/sparc/sparc.h (MAX_FIXED_MODE_SIZE): Define.
index d1cba8810ef873ad4623ebc2529b856b673ccae4..e64e76da221a7217f5b621a5b3de5ae19bc94277 100644 (file)
@@ -1,5 +1,5 @@
 /* RTL-based forward propagation pass for GNU compiler.
-   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
+   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
    Free Software Foundation, Inc.
    Contributed by Paolo Bonzini and Steven Bosscher.
 
@@ -799,13 +799,17 @@ all_uses_available_at (rtx def_insn, rtx target_insn)
   df_ref *use_rec;
   struct df_insn_info *insn_info = DF_INSN_INFO_GET (def_insn);
   rtx def_set = single_set (def_insn);
+  rtx next;
 
   gcc_assert (def_set);
 
   /* If target_insn comes right after def_insn, which is very common
-     for addresses, we can use a quicker test.  */
-  if (NEXT_INSN (def_insn) == target_insn
-      && REG_P (SET_DEST (def_set)))
+     for addresses, we can use a quicker test.  Ignore debug insns
+     other than target insns for this.  */
+  next = NEXT_INSN (def_insn);
+  while (next && next != target_insn && DEBUG_INSN_P (next))
+    next = NEXT_INSN (next);
+  if (next == target_insn && REG_P (SET_DEST (def_set)))
     {
       rtx def_reg = SET_DEST (def_set);
 
This page took 0.08528 seconds and 5 git commands to generate.