aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorAndreas Arnez <arnez@linux.vnet.ibm.com>2015-11-26 17:52:01 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2015-11-26 17:52:01 +0000
commit9daf14d44298a602ff7be05efe6c9a65e9c97350 (patch)
tree5eae90745f9615cff7702a18c61fa8b4addce20c /gcc/cp
parent8b95719a65ecb381c194b06700c87d2a015f6fab (diff)
downloadgcc-9daf14d44298a602ff7be05efe6c9a65e9c97350.zip
gcc-9daf14d44298a602ff7be05efe6c9a65e9c97350.tar.gz
gcc-9daf14d44298a602ff7be05efe6c9a65e9c97350.tar.bz2
cp-gimplify.c (genericize_cp_loop): Change LOOP_EXPR's location to start of loop body instead of start of loop.
gcc/cp/ChangeLog: 2015-11-26 Andreas Arnez <arnez@linux.vnet.ibm.com> * cp-gimplify.c (genericize_cp_loop): Change LOOP_EXPR's location to start of loop body instead of start of loop. gcc/testsuite/ChangeLog: 2015-11-26 Andreas Arnez <arnez@linux.vnet.ibm.com> * g++.dg/guality/pr67192.C: New test. From-SVN: r230979
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/cp-gimplify.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 90d86dc..1d6e252 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2015-11-26 Andreas Arnez <arnez@linux.vnet.ibm.com>
+
+ * cp-gimplify.c (genericize_cp_loop): Change LOOP_EXPR's location
+ to start of loop body instead of start of loop.
+
2015-11-26 Jakub Jelinek <jakub@redhat.com>
PR c++/68508
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index 8fdcb6d..a9a34cd 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -263,7 +263,12 @@ genericize_cp_loop (tree *stmt_p, location_t start_locus, tree cond, tree body,
loop = stmt_list;
}
else
- loop = build1_loc (start_locus, LOOP_EXPR, void_type_node, stmt_list);
+ {
+ location_t loc = EXPR_LOCATION (expr_first (body));
+ if (loc == UNKNOWN_LOCATION)
+ loc = start_locus;
+ loop = build1_loc (loc, LOOP_EXPR, void_type_node, stmt_list);
+ }
stmt_list = NULL;
append_to_statement_list (loop, &stmt_list);