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

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

PR target/79769
PR target/79770
* tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
COMPLEX_CST and VECTOR_CST.
2017-03-22  Martin Liska  <mliska@suse.cz>

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

PR target/79769
PR target/79770
* g++.dg/pr79769.C: New test.
* gcc.target/i386/mpx/pr79770.c: New test.

From-SVN: r246376

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/pr79769.C [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/mpx/pr79770.c [new file with mode: 0644]
gcc/tree-chkp.c

index b87fe8a7e45938cd900af27254a7fafd9a31c310..f47095e9bfa1662a2044b0bf71e129c04c2eefba 100644 (file)
@@ -1,3 +1,13 @@
+2017-03-22  Martin Liska  <mliska@suse.cz>
+
+       Backport from mainline
+       2017-03-20  Martin Liska  <mliska@suse.cz>
+
+       PR target/79769
+       PR target/79770
+       * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
+       COMPLEX_CST and VECTOR_CST.
+
 2017-03-22  Martin Liska  <mliska@suse.cz>
 
        Backport from mainline
index 3dd132f35a85a1e21120acd199821ef36bc3aa47..416cddc5a575cd46cb8bb734219b269d33de0681 100644 (file)
@@ -1,3 +1,13 @@
+2017-03-22  Martin Liska  <mliska@suse.cz>
+
+       Backport from mainline
+       2017-03-20  Martin Liska  <mliska@suse.cz>
+
+       PR target/79769
+       PR target/79770
+       * g++.dg/pr79769.C: New test.
+       * gcc.target/i386/mpx/pr79770.c: New test.
+
 2017-03-22  Martin Liska  <mliska@suse.cz>
 
        Backport from mainline
diff --git a/gcc/testsuite/g++.dg/pr79769.C b/gcc/testsuite/g++.dg/pr79769.C
new file mode 100644 (file)
index 0000000..c318687
--- /dev/null
@@ -0,0 +1,4 @@
+/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && { ! x32 } } } } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx -mabi=ms" } */
+
+void a (_Complex) { a (3); }
diff --git a/gcc/testsuite/gcc.target/i386/mpx/pr79770.c b/gcc/testsuite/gcc.target/i386/mpx/pr79770.c
new file mode 100644 (file)
index 0000000..0890fcc
--- /dev/null
@@ -0,0 +1,19 @@
+/* { dg-do compile { target lp64 } } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx -mabi=ms -Wno-psabi" } */
+
+typedef unsigned U __attribute__ ((vector_size (64)));
+typedef unsigned __int128 V __attribute__ ((vector_size (64)));
+
+static inline V
+bar (U u, U x, V v)
+{
+  v = (V)(U) { 0, ~0 };
+  v[x[0]] <<= u[-63];
+  return v;
+}
+
+V
+foo (U u)
+{
+  return bar (u, (U) {}, (V) {});
+}
index 049bafae4e2d2d34e37b9916bb396b1b1bd36578..39a9f62df536402830b5e40faf7d58bfdb6ce303 100644 (file)
@@ -3618,6 +3618,8 @@ chkp_find_bounds_1 (tree ptr, tree ptr_src, gimple_stmt_iterator *iter)
       break;
 
     case INTEGER_CST:
+    case COMPLEX_CST:
+    case VECTOR_CST:
       if (integer_zerop (ptr_src))
        bounds = chkp_get_none_bounds ();
       else