This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: no_new_pseudos
On Jul 4, 2007, Richard Sandiford <richard@codesourcery.com> wrote:
> What about the earlier idea of keeping no_new_pseudos and making it
> equivalent to "reload_in_progress || reload_completed", either by being
> a macro or by being a variable?
Actually, how about replacing the three variables with a single
tri-state variable that indicates the progress into reload:
enum { BEFORE_RELOAD = -1, DURING_RELOAD = 0, AFTER_RELOAD = 1 } reload_status;
#define BEFORE_RELOAD_P() (reload_status < DURING_RELOAD)
#define DURING_RELOAD_P() (reload_status == DURING_RELOAD)
#define AFTER_RELOAD_P() (reload_status > DURING_RELOAD)
then no_new_pseudos becomes (!BEFORE_RELOAD_P ()), reload_in_progress
becomes DURING_RELOAD_P () and reload_completed becomes AFTER_RELOAD_P
(), and all conditions are equally simple to evaluate.
And then, if we ever need to distinguish between internal reload
stages, we just extend the enum, adjust the macros and introduce new
ones as needed.
--
Alexandre Oliva http://www.lsd.ic.unicamp.br/~oliva/
FSF Latin America Board Member http://www.fsfla.org/
Red Hat Compiler Engineer aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist oliva@{lsd.ic.unicamp.br, gnu.org}