re PR target/65183 (ICE: verify_ssa failed: virtual use of statement not up-to-date...
authorIlya Enkovich <ilya.enkovich@intel.com>
Mon, 2 Mar 2015 10:41:09 +0000 (10:41 +0000)
committerIlya Enkovich <ienkovich@gcc.gnu.org>
Mon, 2 Mar 2015 10:41:09 +0000 (10:41 +0000)
gcc/

PR target/65183
* tree-chkp.c (chkp_check_lower): Don't check against
zero bounds for already instrumented functions.
(chkp_check_upper): Likewise.
(chkp_fini): Clean pass local data to avoid wrong reusage.

gcc/testsuite/

PR target/65183
* gcc.target/i386/pr65183.c: New.

From-SVN: r221105

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr65183.c [new file with mode: 0644]
gcc/tree-chkp.c

index 27b3a759276d79cd208aea5ed5afe79ef419ae02..5850dc40bbb35d62ccd9830faeca51fb1141569c 100644 (file)
@@ -1,3 +1,11 @@
+2015-03-02  Ilya Enkovich  <ilya.enkovich@intel.com>
+
+       PR target/65183
+       * tree-chkp.c (chkp_check_lower): Don't check against
+       zero bounds for already instrumented functions.
+       (chkp_check_upper): Likewise.
+       (chkp_fini): Clean pass local data to avoid wrong reusage.
+
 2015-02-28  Martin Liska  <mliska@suse.cz>
            Jan Hubicka   <hubicka@ucw.cz>
 
index c18c5e7fb75721818b4926294fc3f02b8ad74164..c1584168c8d42f3b14d280c93e9c8f4454cbf1bd 100644 (file)
@@ -1,3 +1,8 @@
+2015-03-02  Ilya Enkovich  <ilya.enkovich@intel.com>
+
+       PR target/65183
+       * gcc.target/i386/pr65183.c: New.
+
 2015-02-28  Martin Liska  <mliska@suse.cz>
            Jan Hubicka   <hubicka@ucw.cz>
 
diff --git a/gcc/testsuite/gcc.target/i386/pr65183.c b/gcc/testsuite/gcc.target/i386/pr65183.c
new file mode 100644 (file)
index 0000000..069a543
--- /dev/null
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target mpx } */
+/* { dg-options "-O -fcheck-pointer-bounds -fchkp-use-nochk-string-functions -mmpx" } */
+
+extern void bar(void *);
+extern void baz(void);
+
+static int lc[32];
+
+void foobar(void *c)
+{
+  bar(&c);
+  __builtin_memcpy (lc, c, lc[0]);
+}
+
+void foo ()
+{
+  baz ();
+  foobar(0);
+}
index b0a3a1547ffe965e59551e010129bb0ee5446e89..d2df4bad0fb934999c4cfcc2bed1b5f271c620f2 100644 (file)
@@ -1268,7 +1268,8 @@ chkp_check_lower (tree addr, tree bounds,
   gimple check;
   tree node;
 
-  if (bounds == chkp_get_zero_bounds ())
+  if (!chkp_function_instrumented_p (current_function_decl)
+      && bounds == chkp_get_zero_bounds ())
     return;
 
   if (dirflag == integer_zero_node
@@ -1314,7 +1315,8 @@ chkp_check_upper (tree addr, tree bounds,
   gimple check;
   tree node;
 
-  if (bounds == chkp_get_zero_bounds ())
+  if (!chkp_function_instrumented_p (current_function_decl)
+      && bounds == chkp_get_zero_bounds ())
     return;
 
   if (dirflag == integer_zero_node
@@ -4306,6 +4308,10 @@ chkp_fini (void)
   free_dominance_info (CDI_POST_DOMINATORS);
 
   bitmap_obstack_release (NULL);
+
+  entry_block = NULL;
+  zero_bounds = NULL_TREE;
+  none_bounds = NULL_TREE;
 }
 
 /* Main instrumentation pass function.  */