]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Backport r245998
authorMartin Liska <mliska@suse.cz>
Wed, 22 Mar 2017 12:29:56 +0000 (13:29 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Wed, 22 Mar 2017 12:29:56 +0000 (12:29 +0000)
2017-03-22  Martin Liska  <mliska@suse.cz>

Backport from mainline
2017-03-09  Martin Liska  <mliska@suse.cz>

PR tree-optimization/79631
* tree-chkp-opt.c (chkp_is_constant_addr): Call
tree_int_cst_sign_bit just for INTEGER constants.
2017-03-22  Martin Liska  <mliska@suse.cz>

Backport from mainline
2017-03-09  Martin Liska  <mliska@suse.cz>

PR tree-optimization/79631
* gcc.target/i386/mpx/pr79631.c: New test.

From-SVN: r246372

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

index dfabfa856eef666dcb1a944949355d607bfef54b..1fb90dbb7a07a6b959b974a05497773bf897082e 100644 (file)
@@ -1,3 +1,12 @@
+2017-03-22  Martin Liska  <mliska@suse.cz>
+
+       Backport from mainline
+       2017-03-09  Martin Liska  <mliska@suse.cz>
+
+       PR tree-optimization/79631
+       * tree-chkp-opt.c (chkp_is_constant_addr): Call
+       tree_int_cst_sign_bit just for INTEGER constants.
+
 2017-03-22  Martin Liska  <mliska@suse.cz>
 
        Backport from mainline
index e8524cb0f804d19ef0c531a798e01dba207f80e5..93c381c7ba73c4844b48b2d89e2f32b979511a2f 100644 (file)
@@ -1,3 +1,11 @@
+2017-03-22  Martin Liska  <mliska@suse.cz>
+
+       Backport from mainline
+       2017-03-09  Martin Liska  <mliska@suse.cz>
+
+       PR tree-optimization/79631
+       * gcc.target/i386/mpx/pr79631.c: New test.
+
 2017-03-22  Martin Liska  <mliska@suse.cz>
 
        Backport from mainline
diff --git a/gcc/testsuite/gcc.target/i386/mpx/pr79631.c b/gcc/testsuite/gcc.target/i386/mpx/pr79631.c
new file mode 100644 (file)
index 0000000..075d46b
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do compile { target { ! x32 } } } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx -O2" } */
+
+typedef struct { int _mp_size; } mpz_t[1];
+int a, b;
+void fn1()
+{
+  mpz_t c[1][b];
+  for (;;) {
+      int d = 0 >= 0 ? 0 == 0 ? c[0][0]->_mp_size ? -1 : 0 : 0 : 0,
+         e = 0 >= 0 ? 0 == 0 ? c[1][1]->_mp_size ? -1 : 0 : 0 : 0;
+      if (d != e)
+       a++;
+  }
+}
index 3fa2380d4bf621b3e9b43eeb9cee7e99f2f4de46..e594b332d7679a203e3179f9f6f72c8670c8b0d6 100644 (file)
@@ -282,9 +282,11 @@ chkp_is_constant_addr (const address_t &addr, int *sign)
     return false;
   else if (addr.pol[0].var)
     return false;
+  else if (TREE_CODE (addr.pol[0].cst) != INTEGER_CST)
+    return false;
   else if (integer_zerop (addr.pol[0].cst))
     *sign = 0;
-  else if  (tree_int_cst_sign_bit (addr.pol[0].cst))
+  else if (tree_int_cst_sign_bit (addr.pol[0].cst))
     *sign = -1;
   else
     *sign = 1;