From dbd595151e5d560aa8aa80198b35b9a3da311e4d Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 24 May 2019 11:31:11 +0000 Subject: [PATCH] re PR middle-end/90607 (gcc.dg/pr53265.c FAILs) 2019-05-24 Richard Biener 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 | 12 ++++++++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr53265.c | 3 ++- gcc/tree-loop-distribution.c | 7 +++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9c7cd73cd8b..d731bed21a3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2019-05-24 Richard Biener + + 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 * config/gcn/gcn.c (gcn_expand_prologue): Use gen_addsi3_scalar_carry diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 13679af015a..95b0c9db567 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-05-24 Richard Biener + + PR testsuite/90607 + * gcc.dg/pr53265.c: Amend for new expected diagnostic. + 2019-05-24 Jakub Jelinek PR tree-optimization/90106 diff --git a/gcc/testsuite/gcc.dg/pr53265.c b/gcc/testsuite/gcc.dg/pr53265.c index d6418228c3b..a72721194c1 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 5f03b87f9c1..b2f2fd225a4 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); -- 2.30.2