recompute opt flags after opt level change
authorAlexandre Oliva <oliva@adacore.com>
Tue, 1 Oct 2019 11:37:01 +0000 (11:37 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Tue, 1 Oct 2019 11:37:01 +0000 (11:37 +0000)
commit6bc89193bcf3c616e22d0f422e42e685f1d7796a
tree548d9520fce6bd3e177933daf0c2a81e8d7533ef
parent676e38c2a93311bc847c1034637efc935e527f8f
recompute opt flags after opt level change

flag_omit_frame_pointer is set in machine-independent code depending
on the optimization level.  It is then overridden in x86
target-specific code depending on a macro defined by
--enable-frame-pointer.

Uses of attribute optimize go through machine-independent overriding
of flag_omit_frame_pointer, but the x86-specific overriding code did
NOT cover this flag, so, even if the attribute does not change the
optimization level, flag_omit_frame_pointer may end up with a
different value, and prevent inlining because of incompatible flags,
as detected by the gcc.dg/ipa/iinline-attr.c test on an
--enable-frame-pointer x86 toolchain.

for  gcc/ChangeLog

* config/i386/i386-options.c
(ix86_recompute_optlev_based_flags): New, moved out of...
(ix86_option_override_internal): ... this.  Call it.
(ix86_override_options_after_change): Call it here too.

From-SVN: r276405
gcc/ChangeLog
gcc/config/i386/i386-options.c