http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49828
Summary: reversed order of inlined function parameters
Product: gcc
Version: 4.4.7
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: debug
AssignedTo: [email protected]
ReportedBy: [email protected]
Target: x86_64-unknown-linux-gnu
FAIL: gcc (GCC) 4.4.7 20110724 (prerelease)
FAIL: gcc (GCC) 4.5.4 20110724 (prerelease)
FAIL: gcc (GCC) 4.6.2 20110724 (prerelease)
FAIL: gcc (GCC) 4.7.0 20110719 (experimental)
--------------------------------------------------------------------------------
int v;
__attribute__((always_inline)) static void
f (int a, int b, int c)
{
v = a + b + c;
}
int
main (void)
{
f (1, 2, 3);
return 0;
}
--------------------------------------------------------------------------------
gcc -Wall -g
(it occurs also with -O2 and without explicit always_inline)
--------------------------------------------------------------------------------
OK:
<1><2d>: Abbrev Number: 2 (DW_TAG_subprogram)
<2e> DW_AT_name : f
<2><38>: Abbrev Number: 3 (DW_TAG_formal_parameter)
<39> DW_AT_name : a
<2><41>: Abbrev Number: 3 (DW_TAG_formal_parameter)
<42> DW_AT_name : b
but the instance has them in reversed order:
<2><81>: Abbrev Number: 6 (DW_TAG_inlined_subroutine)
<82> DW_AT_abstract_origin: <0x2d>
<86> DW_AT_low_pc : 0x40046d
<8e> DW_AT_high_pc : 0x40047e
<3><a0>: Abbrev Number: 7 (DW_TAG_formal_parameter)
<a1> DW_AT_abstract_origin: <0x41>
<a5> DW_AT_location : 2 byte block: 91 68 (DW_OP_fbreg: -24)
<3><a8>: Abbrev Number: 7 (DW_TAG_formal_parameter)
<a9> DW_AT_abstract_origin: <0x38>
<ad> DW_AT_location : 2 byte block: 91 6c (DW_OP_fbreg: -20)
--------------------------------------------------------------------------------
GDB output is reversed then:
f (c=3, b=2, a=1) at 16.c:5