From: Bernhard Reutner-Fischer Date: Sat, 6 Nov 2021 05:48:00 +0000 (+0100) Subject: c: Set the locus of the function result decl X-Git-Tag: basepoints/gcc-14~3073 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f467ea953431aa6af12aaed6d32f476f7ace1e5;p=thirdparty%2Fgcc.git c: Set the locus of the function result decl gcc/c/ChangeLog: * c-decl.cc (start_function): Set the result decl source location to the location of the typespec. --- diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc index 36de77814baa..098e475f65d5 100644 --- a/gcc/c/c-decl.cc +++ b/gcc/c/c-decl.cc @@ -10059,6 +10059,7 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, tree decl1, old_decl; tree restype, resdecl; location_t loc; + location_t result_loc; current_function_returns_value = 0; /* Assume, until we see it does. */ current_function_returns_null = 0; @@ -10285,8 +10286,11 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator, push_scope (); declare_parm_level (); + /* Set the result decl source location to the location of the typespec. */ + result_loc = (declspecs->locations[cdw_typespec] == UNKNOWN_LOCATION + ? loc : declspecs->locations[cdw_typespec]); restype = TREE_TYPE (TREE_TYPE (current_function_decl)); - resdecl = build_decl (loc, RESULT_DECL, NULL_TREE, restype); + resdecl = build_decl (result_loc, RESULT_DECL, NULL_TREE, restype); DECL_ARTIFICIAL (resdecl) = 1; DECL_IGNORED_P (resdecl) = 1; DECL_RESULT (current_function_decl) = resdecl;