re PR middle-end/90607 (gcc.dg/pr53265.c FAILs)
authorRichard Biener <rguenther@suse.de>
Fri, 24 May 2019 11:31:11 +0000 (11:31 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 24 May 2019 11:31:11 +0000 (11:31 +0000)
2019-05-24  Richard Biener  <rguenther@suse.de>

PR testsuite/90607
* tree-loop-distribution.c (struct partition): Add location
member.
(partition_alloc): Initialize all fields.
(generate_memset_builtin): Use the location recorded in the
partition for the generated call.
(generate_memcpy_builtin): Likewise.
(classify_partition): Record the location of a single store
as location for the partition.

* gcc.dg/pr53265.c: Amend for new expected diagnostic.

From-SVN: r271601

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr53265.c
gcc/tree-loop-distribution.c

index 9c7cd73cd8bd2f1f997416dc64a4a6c12202deaa..d731bed21a39f7c116557133ded444321496dda8 100644 (file)
@@ -1,3 +1,15 @@
+2019-05-24  Richard Biener  <rguenther@suse.de>
+
+       PR testsuite/90607
+       * tree-loop-distribution.c (struct partition): Add location
+       member.
+       (partition_alloc): Initialize all fields.
+       (generate_memset_builtin): Use the location recorded in the
+       partition for the generated call.
+       (generate_memcpy_builtin): Likewise.
+       (classify_partition): Record the location of a single store
+       as location for the partition.
+
 2019-05-24  Andrew Stubbs  <ams@codesourcery.com>
 
        * config/gcn/gcn.c (gcn_expand_prologue): Use gen_addsi3_scalar_carry
index 13679af015a43ea249885fc329d1f5894bd211d8..95b0c9db5674e0dd5eb034d15f2f27ae74eaab62 100644 (file)
@@ -1,3 +1,8 @@
+2019-05-24  Richard Biener  <rguenther@suse.de>
+
+       PR testsuite/90607
+       * gcc.dg/pr53265.c: Amend for new expected diagnostic.
+
 2019-05-24  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/90106
index d6418228c3bc63a08931967104afced19ff9b94c..a72721194c17631aba90eb0d5397e7a8a18e3d83 100644 (file)
@@ -38,7 +38,8 @@ fn3 (void)
   for (i = 0; i < (int) (sizeof (a) / sizeof (a[0])); i++)     /* { dg-message "note: within this loop" } */
     {
       c[i + 8] = b[i]; /* { dg-warning "8 invokes undefined behavior" } */
-      a[i + 8] = b[i + 8];
+       /* { dg-warning "out of the bounds" "" { target *-*-* } .-1 } */
+      a[i + 8] = b[i + 8]; /* { dg-warning "out of the bounds" } */
     }
   bar (a);
   bar (c);
index 5f03b87f9c1aa5cb325f7e170841d782750e3d28..b2f2fd225a47bab6483e2102cd2d449c4dc9aa73 100644 (file)
@@ -636,6 +636,7 @@ struct partition
   bitmap stmts;
   /* True if the partition defines variable which is used outside of loop.  */
   bool reduction_p;
+  location_t loc;
   enum partition_kind kind;
   enum partition_type type;
   /* Data references in the partition.  */
@@ -653,7 +654,9 @@ partition_alloc (void)
   partition *partition = XCNEW (struct partition);
   partition->stmts = BITMAP_ALLOC (NULL);
   partition->reduction_p = false;
+  partition->loc = UNKNOWN_LOCATION;
   partition->kind = PKIND_NORMAL;
+  partition->type = PTYPE_PARALLEL;
   partition->datarefs = BITMAP_ALLOC (NULL);
   return partition;
 }
@@ -1028,6 +1031,7 @@ generate_memset_builtin (struct loop *loop, partition *partition)
 
   fn = build_fold_addr_expr (builtin_decl_implicit (BUILT_IN_MEMSET));
   fn_call = gimple_build_call (fn, 3, mem, val, nb_bytes);
+  gimple_set_location (fn_call, partition->loc);
   gsi_insert_after (&gsi, fn_call, GSI_CONTINUE_LINKING);
   fold_stmt (&gsi);
 
@@ -1072,6 +1076,7 @@ generate_memcpy_builtin (struct loop *loop, partition *partition)
                                  false, GSI_CONTINUE_LINKING);
   fn = build_fold_addr_expr (builtin_decl_implicit (kind));
   fn_call = gimple_build_call (fn, 3, dest, src, nb_bytes);
+  gimple_set_location (fn_call, partition->loc);
   gsi_insert_after (&gsi, fn_call, GSI_CONTINUE_LINKING);
   fold_stmt (&gsi);
 
@@ -1706,6 +1711,8 @@ classify_partition (loop_p loop, struct graph *rdg, partition *partition,
   if (!find_single_drs (loop, rdg, partition, &single_st, &single_ld))
     return;
 
+  partition->loc = gimple_location (DR_STMT (single_st));
+
   /* Classify the builtin kind.  */
   if (single_ld == NULL)
     classify_builtin_st (loop, partition, single_st);