https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86638
--- Comment #3 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #2)
> Hmm, it sounds like DCE/DSE should insert
>
> # DEBUG x$a => x$a_11
>
> kind debug stmts. IIRC SRA does more than that, adding DECL_DEBUG_EXPRs
> with magic.
>
> Not sure if the debug stmts itself help enough here.
At cddce1, we have:
...
__attribute__((noclone, noinline))
foo (int fd, union U x)
{
int result;
int _1;
_Bool _2;
_Bool _4;
int _5;
<bb 2> :
# DEBUG BEGIN_STMT
_1 = x.a;
_2 = _1 != 0;
result_8 = (int) _2;
# DEBUG result => result_8
# DEBUG BEGIN_STMT
if (fd_9(D) != 0)
goto <bb 3>; [INV]
else
goto <bb 4>; [INV]
<bb 3> :
# DEBUG BEGIN_STMT
_4 = _1 == 0;
result_10 = (int) _4;
# DEBUG result => result_10
<bb 4> :
# result_6 = PHI <result_8(2), result_10(3)>
# DEBUG result => result_6
# DEBUG BEGIN_STMT
__asm__ __volatile__("nop" : : : "memory");
# DEBUG BEGIN_STMT
_5 = x.a;
z ={v} _5;
# DEBUG BEGIN_STMT
- x.a = 6;
# DEBUG BEGIN_STMT
__asm__ __volatile__("nop" : : : "memory");
# DEBUG BEGIN_STMT
return result_6;
}
...
So, are you proposing to keep track of components like this:
...
- x.a = 6;
+ # DEBUG x.a => 6
...
?