diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 13e4df3c372..aa60d8a9f95 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2014-05-18 Eric Botcazou + + * gcc-interface/trans.c (Subprogram_Body_to_gnu): Rework comment and + set function_start_locus. + 2014-05-18 Eric Botcazou * utils.c (gnat_write_global_declarations): Adjust the flags put on diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 581c57f93a4..cd01d4d2420 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -3574,6 +3574,7 @@ Subprogram_Body_to_gnu (Node_Id gnat_node) /* The entry in the CI_CO_LIST that represents a function return, if any. */ tree gnu_return_var_elmt = NULL_TREE; tree gnu_result; + location_t locus; struct language_function *gnu_subprog_language; vec *cache; @@ -3610,14 +3611,15 @@ Subprogram_Body_to_gnu (Node_Id gnat_node) relayout_decl (gnu_result_decl); } - /* Set the line number in the decl to correspond to that of the body so that - the line number notes are written correctly. */ - Sloc_to_locus (Sloc (gnat_node), &DECL_SOURCE_LOCATION (gnu_subprog_decl)); + /* Set the line number in the decl to correspond to that of the body. */ + Sloc_to_locus (Sloc (gnat_node), &locus); + DECL_SOURCE_LOCATION (gnu_subprog_decl) = locus; /* Initialize the information structure for the function. */ allocate_struct_function (gnu_subprog_decl, false); gnu_subprog_language = ggc_cleared_alloc (); DECL_STRUCT_FUNCTION (gnu_subprog_decl)->language = gnu_subprog_language; + DECL_STRUCT_FUNCTION (gnu_subprog_decl)->function_start_locus = locus; set_cfun (NULL); begin_subprog_body (gnu_subprog_decl);