This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: How to debug ssa optimizer
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: dberlin at dberlin dot org
- Cc: gcc at gcc dot gnu dot org
- Date: Sat, 19 Jun 04 21:57:56 EDT
- Subject: Re: How to debug ssa optimizer
If it's not a new statement being added, and just an existing
statement being modified, you can conditional breakpoint modify_stmt
with that statement address. That will catch every time it gets
marked as modified.
I'm missing something. With an RTL dump, I see the INSN_UID for every
insn in the dump. So I can set a conditional breakpoint testing for
the UID.
Here's a excerpt from c-cppbuiltin.i.t27.tailr:
# v_30 = PHI <&version_string(0), v_3594(1)>;
<L2>:;
T.211_707 = *v_30;
if (T.211_707 == 0) goto <L4>; else goto <L3>;
... and from the corresponding .t28.ch:
<L191>:;
v_386 = &version_string;
T.211_530 = *v_386;
if (T.211_530 == 0) goto <L4>; else goto <L3>;
That's not a valid transformation. version_string is an array and
v is char *. This is coming back into a tree as a block move MODIFY_EXPR
with different types on both sides.
I want to breakpoint at the place that does that transformation, but
all I have is what's in the dump.
How do I set the breakpoint to find who's doing this?