This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/70873] [7 Regressio] 20% performance regression at 482.sphinx3 after r235442 with -O2 -m32 on Haswell.
- From: "bernds at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 03 May 2016 09:58:42 +0000
- Subject: [Bug rtl-optimization/70873] [7 Regressio] 20% performance regression at 482.sphinx3 after r235442 with -O2 -m32 on Haswell.
- Auto-submitted: auto-generated
- References: <bug-70873-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70873
--- Comment #10 from Bernd Schmidt <bernds at gcc dot gnu.org> ---
Looks to me like epilogue_completed would be a good predicate. I'll put the
following in a bootstrap, let me know if you're OK with this patch.
Index: i386.md
===================================================================
--- i386.md (revision 235808)
+++ i386.md (working copy)
@@ -5196,12 +5196,13 @@ (define_split
;; Break partial reg stall for cvtsd2ss.
-(define_peephole2
+(define_split
[(set (match_operand:SF 0 "register_operand")
(float_truncate:SF
(match_operand:DF 1 "nonimmediate_operand")))]
"TARGET_SSE2 && TARGET_SSE_MATH
&& TARGET_SSE_PARTIAL_REG_DEPENDENCY
+ && epilogue_completed
&& optimize_function_for_speed_p (cfun)
&& SSE_REG_P (operands[0])
&& (!SSE_REG_P (operands[1])
@@ -5223,13 +5224,14 @@ (define_peephole2
;; Break partial reg stall for cvtss2sd.
-(define_peephole2
+(define_split
[(set (match_operand:DF 0 "register_operand")
(float_extend:DF
(match_operand:SF 1 "nonimmediate_operand")))]
"TARGET_SSE2 && TARGET_SSE_MATH
&& TARGET_SSE_PARTIAL_REG_DEPENDENCY
+ && epilogue_completed
&& optimize_function_for_speed_p (cfun)
&& SSE_REG_P (operands[0])
&& (!SSE_REG_P (operands[1])
|| REGNO (operands[0]) != REGNO (operands[1]))