From 563569be5ed93378df1e43fca7d7fd6ee0fc0c65 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Sat, 8 Mar 2008 10:57:28 +0000 Subject: [PATCH] trans.c (Loop_Statement_to_gnu): Set the SLOC of the loop label from that of the front-end's end label. * trans.c (Loop_Statement_to_gnu): Set the SLOC of the loop label from that of the front-end's end label. (gnat_gimplify_stmt) : Set the SLOC of the backward goto from that of the loop label. From-SVN: r133026 --- gcc/ada/ChangeLog | 7 +++++++ gcc/ada/trans.c | 10 +++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 5632ddfc694..4d6f170f317 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2008-03-08 Eric Botcazou + + * trans.c (Loop_Statement_to_gnu): Set the SLOC of the loop label + from that of the front-end's end label. + (gnat_gimplify_stmt) : Set the SLOC of the backward goto + from that of the loop label. + 2008-03-07 Eric Botcazou * decl.c (gnat_to_gnu_entity) : Add diff --git a/gcc/ada/trans.c b/gcc/ada/trans.c index 6a9af59095a..5cb02976627 100644 --- a/gcc/ada/trans.c +++ b/gcc/ada/trans.c @@ -1584,6 +1584,8 @@ Loop_Statement_to_gnu (Node_Id gnat_node) TREE_SIDE_EFFECTS (gnu_loop_stmt) = 1; LOOP_STMT_LABEL (gnu_loop_stmt) = create_artificial_label (); set_expr_location_from_node (gnu_loop_stmt, gnat_node); + Sloc_to_locus (Sloc (End_Label (gnat_node)), + &DECL_SOURCE_LOCATION (LOOP_STMT_LABEL (gnu_loop_stmt))); /* Save the end label of this LOOP_STMT in a stack so that the corresponding N_Exit_Statement can find it. */ @@ -5334,6 +5336,7 @@ gnat_gimplify_stmt (tree *stmt_p) { tree gnu_start_label = create_artificial_label (); tree gnu_end_label = LOOP_STMT_LABEL (stmt); + tree t; /* Set to emit the statements of the loop. */ *stmt_p = NULL_TREE; @@ -5370,9 +5373,10 @@ gnat_gimplify_stmt (tree *stmt_p) if (LOOP_STMT_UPDATE (stmt)) append_to_statement_list (LOOP_STMT_UPDATE (stmt), stmt_p); - append_to_statement_list (build1 (GOTO_EXPR, void_type_node, - gnu_start_label), - stmt_p); + t = build1 (GOTO_EXPR, void_type_node, gnu_start_label); + set_expr_location (t, DECL_SOURCE_LOCATION (gnu_end_label)); + append_to_statement_list (t, stmt_p); + append_to_statement_list (build1 (LABEL_EXPR, void_type_node, gnu_end_label), stmt_p); -- 2.30.2