Thanks a lot for the help!  It looks like creating a temporary
took care of it.

On Sat, Oct 17, 2009 at 7:41 AM, Richard Guenther
<richard.guent...@gmail.com> wrote:
> I think the call you insert is not of valid gimple form - an address
> argument has to fulfill the is_gimple_min_invariant() predicate.
> Thus I suspect you have something like &ptr->field in there which
> needs a temporary.

That was it.  Actually, the TREE was of the form
ADDR_EXPR(ARRAY_REF(STRING_CST)), which does not satisfy
is_gimple_min_invariant().

The strange thing is, I copied that structure verbatim from
unmodified GCC.  I'm trying to insert a call that looks like:

foo("some string constant");

If I put that function call in a simple C program and dump out
the resulting GIMPLE, it gives me the ADDR_EXPR that was causing
problems in refs_may_alias_p_1().

Does anyone know why that structure is ok in the contexts that
GCC is using it but not in the context that my plug-in uses it
in?
        --Justin

Reply via email to