Commit 2d3c7e4f by Eric Botcazou Committed by Eric Botcazou

trans.c (Case_Statement_to_gnu): Put the SLOC of the end-of-case on the end…

trans.c (Case_Statement_to_gnu): Put the SLOC of the end-of-case on the end label and its associated gotos, if any.

	* gcc-interface/trans.c (Case_Statement_to_gnu): Put the SLOC of the
	end-of-case on the end label and its associated gotos, if any.

From-SVN: r168458
parent 0394741f
2011-01-04 Eric Botcazou <ebotcazou@adacore.com> 2011-01-04 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (Case_Statement_to_gnu): Put the SLOC of the
end-of-case on the end label and its associated gotos, if any.
2011-01-04 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Evaluate the * gcc-interface/trans.c (Subprogram_Body_to_gnu): Evaluate the
expressions of the parameter cache within the statement group of expressions of the parameter cache within the statement group of
the CICO mechanism. the CICO mechanism.
......
...@@ -1954,6 +1954,7 @@ Case_Statement_to_gnu (Node_Id gnat_node) ...@@ -1954,6 +1954,7 @@ Case_Statement_to_gnu (Node_Id gnat_node)
{ {
tree gnu_result, gnu_expr, gnu_label; tree gnu_result, gnu_expr, gnu_label;
Node_Id gnat_when; Node_Id gnat_when;
location_t end_locus;
bool may_fallthru = false; bool may_fallthru = false;
gnu_expr = gnat_to_gnu (Expression (gnat_node)); gnu_expr = gnat_to_gnu (Expression (gnat_node));
...@@ -1977,7 +1978,10 @@ Case_Statement_to_gnu (Node_Id gnat_node) ...@@ -1977,7 +1978,10 @@ Case_Statement_to_gnu (Node_Id gnat_node)
/* We build a SWITCH_EXPR that contains the code with interspersed /* We build a SWITCH_EXPR that contains the code with interspersed
CASE_LABEL_EXPRs for each label. */ CASE_LABEL_EXPRs for each label. */
gnu_label = create_artificial_label (input_location); if (!Sloc_to_locus (Sloc (gnat_node) + UI_To_Int (End_Span (gnat_node)),
&end_locus))
end_locus = input_location;
gnu_label = create_artificial_label (end_locus);
start_stmt_group (); start_stmt_group ();
for (gnat_when = First_Non_Pragma (Alternatives (gnat_node)); for (gnat_when = First_Non_Pragma (Alternatives (gnat_node));
...@@ -2062,7 +2066,9 @@ Case_Statement_to_gnu (Node_Id gnat_node) ...@@ -2062,7 +2066,9 @@ Case_Statement_to_gnu (Node_Id gnat_node)
add_stmt (group); add_stmt (group);
if (group_may_fallthru) if (group_may_fallthru)
{ {
add_stmt (build1 (GOTO_EXPR, void_type_node, gnu_label)); tree stmt = build1 (GOTO_EXPR, void_type_node, gnu_label);
SET_EXPR_LOCATION (stmt, end_locus);
add_stmt (stmt);
may_fallthru = true; may_fallthru = true;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment