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: Leaf optimization/call stuff?


> Date: Thu, 29 Apr 1999 11:59:57 -0700
> From: Richard Henderson <rth@cygnus.com>

> Whee.  The initialization code gen doesn't play by the rules [ ... ]

> Here's a fix.  [ ... ]

> +   NO_DEFER_POP; [... ]
> +   OK_DEFER_POP;

Here is the documentation from the .h files for OK_DEFER_POP and NO_DEFER_POP:

Now, here is the documentation from the .texi files:

Ok, that seems to cover all the documented rules...  Now, onto the
related documentation, for inhibit_defer_pop:

/* Nonzero means stack pops must not be deferred, and deferred stack
   pops must not be output.  It is nonzero inside a function call,
   inside a conditional expression, inside a statement expression, and
   in other cases as well.  */

But you have to know to do this or know to look for it...  I must
admit that I don't know all the rules, and I suspect the EH code may
in fact be missing some of these types of things every now and then.
I can't help but also think this is wrong, that it would have been
better to express this some other way...  but because I don't deeply
understand it, what do I know.

Anyway, this message is just to alert people to possible shortcomings
of my code, and to maybe raise the red flag, that says, next time
somebody does an overhaul in this area, to consider removing
OK_DEFER_POP.

I have a lot of {push|start}_sequences in my code, and now I think
they all may be suspect.


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