This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Finally a main line version that passes LAPACK's test suite ...
- To: law at cygnus dot com
- Subject: Re: Finally a main line version that passes LAPACK's test suite ...
- From: Mark Mitchell <mark at markmitchell dot com>
- Date: Fri, 26 Feb 1999 12:12:15 -0800
- CC: craig at jcb-sc dot com, toon at moene dot indiv dot nluug dot nl, egcs at egcs dot cygnus dot com
- References: <24635.920058096@hurl.cygnus.com>
- Reply-to: mark at markmitchell dot com
The most likely cause for the stack-frame expansion is this change, by
yours truly.
Mon Feb 22 13:33:47 1999 Mark Mitchell <mark@markmitchell.com>
* cse.c (dump_class): New function.
(invalidate_memory): Fix typo in comment.
* function.c (temp_slot): Add an alias set field.
(assign_stack_temp): Only reuse slots if they will have the
same alias set as before.
(combine_temp_slots): Don't combine if -fstrict-aliasing;
that's unsafe.
* rtl.c (copy_rtx): Copy all the flags (in particular,
MEM_SCALAR_P).
If -fno-strict-aliasing makes the expansion go away, that will confirm
this hypothesis.
There are a few ways to fix this problem:
o Don't use -fstrict-aliasing. This might make sense if type-based
alias analysis is not useful in Fortran. In the long run, we plan
to use alias sets for other things as well, like temporary
variables, so this might not be a great long-term solution.
o Teach g77 about alias sets. (It doesn't use them now, right?)
You can see c_get_alias_set for the kind of thing you might
want to do. I don't remember enought about recent Fortran (F90)
to know if this makes sense.
o Enhance the stack-slot allocating code. This is the best plan,
but hardest. We need a way to tell the compiler that a stack
slot is dead, and being reused.
You can search the archives for a few days prior to the 2/22 to find
some discussion of the problem that prompted my patch.
--
Mark Mitchell mark@markmitchell.com
Mark Mitchell Consulting http://www.markmitchell.com