re PR tree-optimization/69172 (ICE in make_ssa_name_fn, at tree-ssanames.c:266)
authorJakub Jelinek <jakub@redhat.com>
Fri, 8 Jan 2016 10:13:23 +0000 (11:13 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 8 Jan 2016 10:13:23 +0000 (11:13 +0100)
PR tree-optimization/69172
* gimple-fold.c (gimple_fold_builtin_memory_chk): Pass type to
gimple_build.

* gcc.dg/pr69172.c: New test.

From-SVN: r232155

gcc/ChangeLog
gcc/gimple-fold.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr69172.c [new file with mode: 0644]

index b9c6daf55fb5464dcbaed03ed352fc3f99286e06..ee2f4a9509d688d2d8c65812fb942051cb396451 100644 (file)
@@ -1,3 +1,9 @@
+2016-01-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/69172
+       * gimple-fold.c (gimple_fold_builtin_memory_chk): Pass type to
+       gimple_build.
+
 2016-01-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
        PR tree-optimization/67781
index f656502c7b52a73a66ff59ad1d037614af64b22f..2f379be4b28f0b785c56e7858d401b70090cbecb 100644 (file)
@@ -1710,7 +1710,8 @@ gimple_fold_builtin_memory_chk (gimple_stmt_iterator *gsi,
        {
          gimple_seq stmts = NULL;
          len = gimple_convert_to_ptrofftype (&stmts, loc, len);
-         tree temp = gimple_build (&stmts, loc, POINTER_PLUS_EXPR, dest, len);
+         tree temp = gimple_build (&stmts, loc, POINTER_PLUS_EXPR,
+                                   TREE_TYPE (dest), dest, len);
          gsi_insert_seq_before (gsi, stmts, GSI_SAME_STMT);
          replace_call_with_value (gsi, temp);
          return true;
index 6b30af01e567b9ec71e0d38b4c1816f4f97f850d..672a4961b09654a2d4ee1910f6e4eacf73c92e8d 100644 (file)
@@ -1,3 +1,8 @@
+2016-01-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/69172
+       * gcc.dg/pr69172.c: New test.
+
 2016-01-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
        PR tree-optimization/67781
diff --git a/gcc/testsuite/gcc.dg/pr69172.c b/gcc/testsuite/gcc.dg/pr69172.c
new file mode 100644 (file)
index 0000000..c0e7463
--- /dev/null
@@ -0,0 +1,45 @@
+/* PR tree-optimization/69172 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int a;
+
+void *
+f1 (void)
+{
+  int *b = &a, *c = &a;
+  return __builtin___mempcpy_chk (b, c, sizeof (int), 0);
+}
+
+void *
+f2 (void)
+{
+  int *b = &a;
+  return __builtin___mempcpy_chk (b, b, sizeof (int), 0);
+}
+
+void *
+f3 (void)
+{
+  return __builtin___mempcpy_chk (&a, &a, sizeof (int), 0);
+}
+
+void *
+f4 (int x)
+{
+  int *b = &a, *c = &a;
+  return __builtin___mempcpy_chk (b, c, x, 0);
+}
+
+void *
+f5 (int x)
+{
+  int *b = &a;
+  return __builtin___mempcpy_chk (b, b, x, 0);
+}
+
+void *
+f6 (int x)
+{
+  return __builtin___mempcpy_chk (&a, &a, x, 0);
+}