1 Commits

Author SHA1 Message Date
Hongyu Wang
5603bb17fc [SPR] i386: Only enable small loop unrolling in backend [PR 107692]
Followed by the discussion in pr107692, -munroll-only-small-loops
Does not turns on/off -funroll-loops, and current check in
pass_rtl_unroll_loops::gate would cause -fno-unroll-loops do not take
effect. Revert the change about targetm.loop_unroll_adjust and apply
the backend option change to strictly follow the rule that
-funroll-loops takes full control of loop unrolling, and
munroll-only-small-loops just change its behavior to unroll small size
loops.

gcc/ChangeLog:

	PR target/107692
	* common/config/i386/i386-common.cc (ix86_optimization_table):
	Enable loop unroll O2, disable -fweb and -frename-registers
       	by default.
       	* config/i386/i386-options.cc
       	(ix86_override_options_after_change):
       	Disable small loop unroll when funroll-loops enabled, reset
       	cunroll_grow_size when it is not explicitly enabled.
       	(ix86_option_override_internal): Call
       	ix86_override_options_after_change instead of calling
       	ix86_recompute_optlev_based_flags and ix86_default_align
       	separately.
	* config/i386/i386.cc (ix86_loop_unroll_adjust): Adjust unroll
	factor if -munroll-only-small-loops enabled.
	* loop-init.cc (pass_rtl_unroll_loops::gate): Do not enable
	loop unrolling for -O2-speed.
	(pass_rtl_unroll_loops::execute): Rmove
	targetm.loop_unroll_adjust check.

gcc/testsuite/ChangeLog:

	PR target/107692
       	* gcc.dg/guality/loop-1.c: Remove additional option for ia32.
       	* gcc.target/i386/pr86270.c: Add -fno-unroll-loops.
       	* gcc.target/i386/pr93002.c: Likewise.

url:https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=8caf155a3d6e23e47bf55068ad23c23d4655a054
2022-11-30 09:17:52 +08:00