diff options
author | Richard Biener <rguenther@suse.de> | 2019-05-24 11:31:11 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-05-24 11:31:11 +0000 |
commit | dbd595151e5d560aa8aa80198b35b9a3da311e4d (patch) | |
tree | 5b585983ffe7669b6ef450bc3880e4140d99ba47 /gcc/tree-loop-distribution.c | |
parent | 3258c2d6fb886798b320b33b832ee5747f7c0de8 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc/tree-loop-distribution.c')
-rw-r--r-- | gcc/tree-loop-distribution.c | 7 |
1 files changed, 7 insertions, 0 deletions
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); |