aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-05-24 11:31:11 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-05-24 11:31:11 +0000
commitdbd595151e5d560aa8aa80198b35b9a3da311e4d (patch)
tree5b585983ffe7669b6ef450bc3880e4140d99ba47
parent3258c2d6fb886798b320b33b832ee5747f7c0de8 (diff)
downloadgcc-dbd595151e5d560aa8aa80198b35b9a3da311e4d.zip
gcc-dbd595151e5d560aa8aa80198b35b9a3da311e4d.tar.gz
gcc-dbd595151e5d560aa8aa80198b35b9a3da311e4d.tar.bz2
re PR middle-end/90607 (gcc.dg/pr53265.c FAILs)
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
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr53265.c3
-rw-r--r--gcc/tree-loop-distribution.c7
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9c7cd73..d731bed 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 13679af0..95b0c9d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/gcc.dg/pr53265.c b/gcc/testsuite/gcc.dg/pr53265.c
index d641822..a727211 100644
--- a/gcc/testsuite/gcc.dg/pr53265.c
+++ b/gcc/testsuite/gcc.dg/pr53265.c
@@ -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);
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
index 5f03b87..b2f2fd2 100644
--- a/gcc/tree-loop-distribution.c
+++ b/gcc/tree-loop-distribution.c
@@ -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);