[gcc r14-8486] debug/103047 - argument order of inlined functions

Richard Biener rguenth@gcc.gnu.org
Mon Jan 29 07:47:20 GMT 2024


https://gcc.gnu.org/g:b702dc980215074a06535e3aa52a766bef38af4c

commit r14-8486-gb702dc980215074a06535e3aa52a766bef38af4c
Author: Richard Biener <rguenther@suse.de>
Date:   Fri Jan 26 15:11:47 2024 +0100

    debug/103047 - argument order of inlined functions
    
    The inliner puts variables for parameters of the inlined functions
    in the inline scope in reverse order.  The following reverses them
    again so that we get consistent ordering between the
    DW_TAG_subprogram DW_TAG_formal_parameter and the
    DW_TAG_inlined_subroutine DW_TAG_formal_parameter set.
    
    I failed to create a testcase with regexps since the inline
    instances have just abstract origins and so I can't match them up.
    
            PR debug/103047
            * tree-inline.cc (initialize_inlined_parameters): Reverse
            the decl chain of inlined parameters.

Diff:
---
 gcc/tree-inline.cc | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/gcc/tree-inline.cc b/gcc/tree-inline.cc
index 1a2541ad9523..75c10eb7dfc2 100644
--- a/gcc/tree-inline.cc
+++ b/gcc/tree-inline.cc
@@ -3684,6 +3684,10 @@ initialize_inlined_parameters (copy_body_data *id, gimple *stmt,
       setup_one_parameter (id, p, static_chain, fn, bb, &vars);
     }
 
+  /* Reverse so the variables appear in the correct order in DWARF
+     debug info.  */
+  vars = nreverse (vars);
+
   declare_inline_vars (id->block, vars);
 }


More information about the Gcc-cvs mailing list