gcc/
authorkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 23 Sep 2014 08:26:34 +0000 (08:26 +0000)
committerkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 23 Sep 2014 08:26:34 +0000 (08:26 +0000)
* cfgcleanup.c (try_optimize_cfg): Do not remove label
with LABEL_PRESERVE_P flag set.

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

gcc/ChangeLog
gcc/cfgcleanup.c

index ca76b17..61de16a 100644 (file)
@@ -1,3 +1,8 @@
+2014-09-23  Ilya Enkovich  <ilya.enkovich@intel.com>
+
+       * cfgcleanup.c (try_optimize_cfg): Do not remove label
+       with LABEL_PRESERVE_P flag set.
+
 2014-09-23  Alexander Ivchenko  <alexander.ivchenko@intel.com>
            Maxim Kuznetsov  <maxim.kuznetsov@intel.com>
            Anna Tikhonova  <anna.tikhonova@intel.com>
index a008168..9325ea0 100644 (file)
@@ -2701,6 +2701,7 @@ try_optimize_cfg (int mode)
                  && (single_pred_edge (b)->flags & EDGE_FALLTHRU)
                  && !(single_pred_edge (b)->flags & EDGE_COMPLEX)
                  && LABEL_P (BB_HEAD (b))
+                 && !LABEL_PRESERVE_P (BB_HEAD (b))
                  /* If the previous block ends with a branch to this
                     block, we can't delete the label.  Normally this
                     is a condjump that is yet to be simplified, but