OSDN Git Service

Only reset the GIMPLE_DEBUG information in the code gen of if-conversion.
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 Jun 2010 16:39:37 +0000 (16:39 +0000)
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 Jun 2010 16:39:37 +0000 (16:39 +0000)
2010-06-02  Sebastian Pop  <sebastian.pop@amd.com>

* tree-if-conv.c (predicate_bbs): Do not reset the GIMPLE_DEBUG
information.
(remove_conditions_and_labels): Reset the GIMPLE_DEBUG information.

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

gcc/ChangeLog
gcc/tree-if-conv.c

index d64804d..de6cb5b 100644 (file)
@@ -1,5 +1,11 @@
 2010-06-02  Sebastian Pop  <sebastian.pop@amd.com>
 
+       * tree-if-conv.c (predicate_bbs): Do not reset the GIMPLE_DEBUG
+       information.
+       (remove_conditions_and_labels): Reset the GIMPLE_DEBUG information.
+
+2010-06-02  Sebastian Pop  <sebastian.pop@amd.com>
+
        PR middle-end/44363
        * tree-if-conv.c (predicate_bbs): Do not call gcc_unreachable,
        return false instead.
index f6e8c96..25cb918 100644 (file)
@@ -509,15 +509,7 @@ predicate_bbs (loop_p loop)
            case GIMPLE_LABEL:
            case GIMPLE_ASSIGN:
            case GIMPLE_CALL:
-             break;
-
            case GIMPLE_DEBUG:
-             /* ??? Should there be conditional GIMPLE_DEBUG_BINDs?  */
-             if (gimple_debug_bind_p (gsi_stmt (itr)))
-               {
-                 gimple_debug_bind_reset_value (gsi_stmt (itr));
-                 update_stmt (gsi_stmt (itr));
-               }
              break;
 
            case GIMPLE_COND:
@@ -900,7 +892,8 @@ process_phi_nodes (struct loop *loop)
 }
 
 /* Remove all GIMPLE_CONDs and GIMPLE_LABELs of all the basic blocks
-   other than the exit and latch of the LOOP.  */
+   other than the exit and latch of the LOOP.  Also resets the
+   GIMPLE_DEBUG information.  */
 
 static void
 remove_conditions_and_labels (loop_p loop)
@@ -917,11 +910,26 @@ remove_conditions_and_labels (loop_p loop)
       continue;
 
       for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); )
-      if (gimple_code (gsi_stmt (gsi)) == GIMPLE_COND
-          || gimple_code (gsi_stmt (gsi)) == GIMPLE_LABEL)
-        gsi_remove (&gsi, true);
-      else
-        gsi_next (&gsi);
+       switch (gimple_code (gsi_stmt (gsi)))
+         {
+         case GIMPLE_COND:
+         case GIMPLE_LABEL:
+           gsi_remove (&gsi, true);
+           break;
+
+         case GIMPLE_DEBUG:
+           /* ??? Should there be conditional GIMPLE_DEBUG_BINDs?  */
+           if (gimple_debug_bind_p (gsi_stmt (gsi)))
+             {
+               gimple_debug_bind_reset_value (gsi_stmt (gsi));
+               update_stmt (gsi_stmt (gsi));
+             }
+           gsi_next (&gsi);
+           break;
+
+         default:
+           gsi_next (&gsi);
+         }
     }
 }