fix memory leak in scop-detection
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 21 Jan 2016 02:13:24 +0000 (02:13 +0000)
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 21 Jan 2016 02:13:24 +0000 (02:13 +0000)
        * graphite-scop-detection.c
        (scop_detection::harmful_loop_in_region): Free dom and loops.
        (scop_detection::loop_body_is_valid_scop): Free bbs.

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

gcc/ChangeLog
gcc/graphite-scop-detection.c

index ca0bb51..3d9efe2 100644 (file)
@@ -1,6 +1,13 @@
 2016-01-21  Aditya Kumar  <aditya.k7@samsung.com>
            Sebastian Pop  <s.pop@samsung.com>
 
+        * graphite-scop-detection.c
+        (scop_detection::harmful_loop_in_region): Free dom and loops.
+        (scop_detection::loop_body_is_valid_scop): Free bbs.
+
+2016-01-21  Aditya Kumar  <aditya.k7@samsung.com>
+           Sebastian Pop  <s.pop@samsung.com>
+
        * graphite-scop-detection.c (record_loop_in_sese): New.
        (gather_bbs::before_dom_children): Call record_loop_in_sese.
        (build_scops): Remove call to build_sese_loop_nests.
index 68b9f4d..d1b0fec 100644 (file)
@@ -1088,7 +1088,11 @@ scop_detection::harmful_loop_in_region (sese_l scop) const
             any loop fully contained in the scop: other bbs are checked below
             in loop_is_valid_in_scop.  */
          if (harmful_stmt_in_bb (scop, bb))
-           return true;
+           {
+             dom.release ();
+             BITMAP_FREE (loops);
+             return true;
+           }
        }
 
     }
@@ -1104,13 +1108,14 @@ scop_detection::harmful_loop_in_region (sese_l scop) const
 
       if (!loop_is_valid_in_scop (loop, scop))
        {
+         dom.release ();
          BITMAP_FREE (loops);
          return true;
        }
     }
 
-  BITMAP_FREE (loops);
   dom.release ();
+  BITMAP_FREE (loops);
   return false;
 }
 
@@ -1503,7 +1508,10 @@ scop_detection::loop_body_is_valid_scop (loop_p loop, sese_l scop) const
       basic_block bb = bbs[i];
 
       if (harmful_stmt_in_bb (scop, bb))
-       return false;
+       {
+         free (bbs);
+         return false;
+       }
     }
   free (bbs);