mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-11 11:35:02 +08:00
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) <LOOP_STMT>: Set the SLOC of the backward goto from that of the loop label. From-SVN: r133026
This commit is contained in:
parent
2725b75c33
commit
563569be5e
@ -1,3 +1,10 @@
|
|||||||
|
2008-03-08 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
|
* 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) <LOOP_STMT>: Set the SLOC of the backward goto
|
||||||
|
from that of the loop label.
|
||||||
|
|
||||||
2008-03-07 Eric Botcazou <ebotcazou@adacore.com>
|
2008-03-07 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
* decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Subtype>: Add
|
* decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Subtype>: Add
|
||||||
|
@ -1584,6 +1584,8 @@ Loop_Statement_to_gnu (Node_Id gnat_node)
|
|||||||
TREE_SIDE_EFFECTS (gnu_loop_stmt) = 1;
|
TREE_SIDE_EFFECTS (gnu_loop_stmt) = 1;
|
||||||
LOOP_STMT_LABEL (gnu_loop_stmt) = create_artificial_label ();
|
LOOP_STMT_LABEL (gnu_loop_stmt) = create_artificial_label ();
|
||||||
set_expr_location_from_node (gnu_loop_stmt, gnat_node);
|
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
|
/* Save the end label of this LOOP_STMT in a stack so that the corresponding
|
||||||
N_Exit_Statement can find it. */
|
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_start_label = create_artificial_label ();
|
||||||
tree gnu_end_label = LOOP_STMT_LABEL (stmt);
|
tree gnu_end_label = LOOP_STMT_LABEL (stmt);
|
||||||
|
tree t;
|
||||||
|
|
||||||
/* Set to emit the statements of the loop. */
|
/* Set to emit the statements of the loop. */
|
||||||
*stmt_p = NULL_TREE;
|
*stmt_p = NULL_TREE;
|
||||||
@ -5370,9 +5373,10 @@ gnat_gimplify_stmt (tree *stmt_p)
|
|||||||
if (LOOP_STMT_UPDATE (stmt))
|
if (LOOP_STMT_UPDATE (stmt))
|
||||||
append_to_statement_list (LOOP_STMT_UPDATE (stmt), stmt_p);
|
append_to_statement_list (LOOP_STMT_UPDATE (stmt), stmt_p);
|
||||||
|
|
||||||
append_to_statement_list (build1 (GOTO_EXPR, void_type_node,
|
t = build1 (GOTO_EXPR, void_type_node, gnu_start_label);
|
||||||
gnu_start_label),
|
set_expr_location (t, DECL_SOURCE_LOCATION (gnu_end_label));
|
||||||
stmt_p);
|
append_to_statement_list (t, stmt_p);
|
||||||
|
|
||||||
append_to_statement_list (build1 (LABEL_EXPR, void_type_node,
|
append_to_statement_list (build1 (LABEL_EXPR, void_type_node,
|
||||||
gnu_end_label),
|
gnu_end_label),
|
||||||
stmt_p);
|
stmt_p);
|
||||||
|
Loading…
Reference in New Issue
Block a user