i386: Schedule the only -O0 split pass on x86 after pro_and_epilogue/jump2 [PR92190]
authorJakub Jelinek <jakub@redhat.com>
Wed, 5 Feb 2020 14:35:46 +0000 (15:35 +0100)
committerJakub Jelinek <jakub@redhat.com>
Wed, 5 Feb 2020 14:35:46 +0000 (15:35 +0100)
commit17a2e8c0918c2ddda82ace9ed17464906f96633d
treef70ceb653262d53b6ac31f346bd290cd3041b644
parent9847df2c9573f1e4b948b5a7272c6aadf8e01c22
i386: Schedule the only -O0 split pass on x86 after pro_and_epilogue/jump2 [PR92190]

The problem is that x86 is the only target that defines HAVE_ATTR_length and
doesn't schedule any splitting pass at -O0 after pro_and_epilogue.

So, either we go back to handling this during vzeroupper output
(unconditionally, rather than flag_ipa_ra guarded), or we need to tweak the
split* passes for x86.

Seems there are 5 split passes, split1 is run unconditionally before reload,
split2 is run for optimize > 0 or STACK_REGS (x86) after ra but before
epilogue_completed, split3 is run before regstack for STACK_REGS and
optimize and -fno-schedule-insns2, split4 is run before sched2 if sched2 is
run and split5 is run before shorten_branches if HAVE_ATTR_length and not
STACK_REGS.

2020-02-05  Jakub Jelinek  <jakub@redhat.com>

PR target/92190
* recog.c (pass_split_after_reload::gate): For STACK_REGS targets,
don't run when !optimize.
(pass_split_before_regstack::gate): For STACK_REGS targets, run even
when !optimize.
gcc/ChangeLog
gcc/recog.c