This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: IA32 redundant stack adjusts


On Fri, Jan 14, 2000 at 06:06:24PM -0800, Mike Stump wrote:
> > Date:   Fri, 14 Jan 2000 12:31:26 -0800
> > From: Zack Weinberg <zack@wolery.cumb.org>
> 
> > What's wrong with this picture?  The LOG_LINKS list of insn 11 is
> > nil.  That is because flow.c has a general policy of not generating
> > data flow info for the stack pointer.
> 
> Sounds like we should data flow the stack pointer.

I do agree, but I discovered that the scheduler cannot cope with
having data flow info for the stack pointer.  Trivial code like

float xabs (float x) { return __builtin_fabs (x); }

hits an abort in haifa-sched.c where it is expecting that the number
of register deaths did not change before and after scheduling, but
flow says the stack pointer dies in the middle of the basic block
because it wasn't asked for flow info for the entire function.  I
think.  Anyway I don't understand flow.c or haifa-sched.c well enough
to fix it, and the problem can be completely papered over with a
peephole in i386.md (which you have to add anyway to deal with the
adjusts in the prologue keeping the stack aligned), and I'm supposed
to be working on the preprocessor anyway :)

zw

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]