[Bug target/83905] ix86_expand_epilogue modifies the copy of cfun->machine->frame

2018-04-16 Thread hjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83905

--- Comment #5 from hjl at gcc dot gnu.org  ---
Author: hjl
Date: Mon Apr 16 18:44:43 2018
New Revision: 259411

URL: https://gcc.gnu.org/viewcvs?rev=259411=gcc=rev
Log:
i386: Use const reference of struct ix86_frame to avoid copy

We can use const reference of struct ix86_frame to avoid making a local
copy of ix86_frame.  ix86_expand_epilogue makes a local copy of struct
ix86_frame and uses the reg_save_offset field as a local variable.  This
patch uses a separate local variable for reg_save_offset.

Tested on x86-64 with ada.

Backport from mainline
PR target/83905
* config/i386/i386.c (ix86_expand_prologue): Use cost reference
of struct ix86_frame.
(ix86_expand_epilogue): Likewise.  Add a local variable for
the reg_save_offset field in struct ix86_frame.

Modified:
branches/gcc-6-branch/gcc/ChangeLog

[Bug target/83905] ix86_expand_epilogue modifies the copy of cfun->machine->frame

2018-01-27 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83905

H.J. Lu  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from H.J. Lu  ---
Fixed for GCC 8 and GCC 7.4.

[Bug target/83905] ix86_expand_epilogue modifies the copy of cfun->machine->frame

2018-01-27 Thread hjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83905

--- Comment #3 from hjl at gcc dot gnu.org  ---
Author: hjl
Date: Sat Jan 27 13:10:24 2018
New Revision: 257123

URL: https://gcc.gnu.org/viewcvs?rev=257123=gcc=rev
Log:
i386: Use const reference of struct ix86_frame to avoid copy

We can use const reference of struct ix86_frame to avoid making a local
copy of ix86_frame.  ix86_expand_epilogue makes a local copy of struct
ix86_frame and uses the reg_save_offset field as a local variable.  This
patch uses a separate local variable for reg_save_offset.

Tested on x86-64 with ada.

Backport from mainline
PR target/83905
* config/i386/i386.c (ix86_expand_prologue): Use cost reference
of struct ix86_frame.
(ix86_expand_epilogue): Likewise.  Add a local variable for
the reg_save_offset field in struct ix86_frame.

Modified:
branches/gcc-7-branch/gcc/ChangeLog
branches/gcc-7-branch/gcc/config/i386/i386.c

[Bug target/83905] ix86_expand_epilogue modifies the copy of cfun->machine->frame

2018-01-23 Thread hjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83905

--- Comment #2 from hjl at gcc dot gnu.org  ---
Author: hjl
Date: Tue Jan 23 19:30:32 2018
New Revision: 256996

URL: https://gcc.gnu.org/viewcvs?rev=256996=gcc=rev
Log:
i386: Use const reference of struct ix86_frame to avoid copy

We can use const reference of struct ix86_frame to avoid making a local
copy of ix86_frame.  ix86_expand_epilogue makes a local copy of struct
ix86_frame and uses the reg_save_offset field as a local variable.  This
patch uses a separate local variable for reg_save_offset.

Tested on x86-64 with ada.

PR target/83905
* config/i386/i386.c (ix86_expand_prologue): Use cost reference
of struct ix86_frame.
(ix86_expand_epilogue): Likewise.  Add a local variable for
the reg_save_offset field in struct ix86_frame.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c

[Bug target/83905] ix86_expand_epilogue modifies the copy of cfun->machine->frame

2018-01-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83905

--- Comment #1 from Richard Biener  ---
To catch such issues when changing by-value to reference _always_ use a const
reference.