This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Problem with operand handling
- From: Andrew MacLeod <amacleod at redhat dot com>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: gcc mailing list <gcc at gcc dot gnu dot org>, Diego Novillo <dnovillo at redhat dot com>
- Date: Tue, 07 Sep 2004 09:47:33 -0400
- Subject: Re: Problem with operand handling
- References: <10409071331.AA24912@vlsi1.ultra.nyu.edu>
On Tue, 2004-09-07 at 09:31, Richard Kenner wrote:
> > It was happening via a TMT "variable".
>
> These are alias variables and should never pass the is_gimple_test, so
> we ought not be doing anything with the address being passed into
> add_stmt_operand, the entire function should be dealing with just the
> 'var' aspect of whats being passed in.
>
> Does your variable pass this causing it to be a gimple_reg? Perhaps a
> flag is set incorrectly or something?
>
> OK, I went back to the code before any of my changes.
>
> The add_stmt_operand is being called from the EXECUTE_IF_SET_IN_BITMAP
> call that's looking at call_clobbered_vars. The variable in this case is
> decorator_traceback and is_gimple_reg is set. In the initial case,
> a TMT variable isn't involved.
what is 'decorator_traceback'?
>From your other note, it seems to indicate that the root of the problem
is that it is being treated as *both* a virtual and a real operand,
which is not allowed.
The call clobbered list should NOT contain anything which passes
is_gimple_reg(), to the best of my knowledge. Did you call
mark_call_clobbered() on decorator_traceback? If so, why if it passes
all the tests in is_gimple_reg.. ie, its not volatile, its address is
not taken, and its not global...
Andrew