This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFC] New SSA variable mapping infrastructure
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: "Richard Guenther" <richard dot guenther at gmail dot com>
- Cc: "GCC Patches" <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 07 Nov 2007 06:14:49 -0200
- Subject: Re: [RFC] New SSA variable mapping infrastructure
- References: <84fc9c000710031126h26263c21yc30e9defa7bc6468@mail.gmail.com>
On Oct 3, 2007, "Richard Guenther" <richard.guenther@gmail.com> wrote:
> During RTL optimization a reference or placeholder DECL from the
> sets of associated variables will make var-tracking work as before.
> Only at the time we write out debug information we will need to go
> back to the variable sets and create copies of the variable location
> lists for each of the variable in the associated set. (fingers crossing,
> this is all pure speculation)
'fraid this won't work. Different SSA versions of the same variable
can get coalesced or otherwise combined into different codegen
variables, so you'd have to expand the individual tracking before or
during var-tracking, such that it can do the propagation correctly.
> Note that as opposed to the DEBUG_STMT/INSN approach this is _not_
> a way we can conveniently cause values to be preserved that would
> otherwise be deleted.
The DEBUG_STMT/INSN doesn't do this, actually. It doesn't (and can't)
preserve values that would be deleted. It must only keep track of
what is still around, if it is. The main difference with your
approach is that you lose track of the point of assignment, so you
might be extending inappropriately the life of a variable, or causing
it to hold values at points that would be very surprising to users,
even if they are defensible. For an example, see
http://gcc.gnu.org/ml/gcc/2007-11/msg00176.html
--
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}