This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] GCSE after reload - resubmit (SPECint +1.5% fp -0.5%).
I may have found a possible place where the failure occurs.
--- 930628-1.s 2004-03-14 17:19:51.127149017 -0500
+++ 930628-1.s.1 2004-03-14 17:19:47.127159693 -0500
@@ -31,8 +31,8 @@
+ sub.l er3,er3
- mov.l @(12,er7),er3
The above is a part of the diff between the results without and with
-fgcse-after-reload. That is, gcse replaces a load from the stack,
with loading constant 0 into register er3
Looking at 930628-1.c.24.lreg, I am pretty sure this stack location
contains variable "i".
I just generated the assembly code without -fgcse-after-reload and
applied the above "patch". Then I got abort(). Note that at label
L14, we have code to do
if (&tp[i][ki][1 + mi] == &tp[j][kj])
If "i" is fixed to 0 (by gcse), then this comparison would fail when
j = 1. In fact, without above "patch", I watched er3 at
"cmp.l er3,er5" above, and I saw 0 twice and 1 once. That is, er3
shouldn't be fixed to 0.
Hope this helps,