This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC] PR 59776 - esra vs gimple_debug


In the testcases with the PR, we have a bit of type punning going on,

  *(int *) &s2.f = 0;
  s2 = s1;

which SRA trasforms to

  # DEBUG s2 => 0
  MEM[(int *)&s2] = 0;
  # DEBUG s2 => s1$f_7
  # DEBUG s2$g => s1$g_6
  s2 ={v} {CLOBBER};

Note that it has chosen not to expand s1.f like s1.g, but to expand that field
as the type-punned integer.  Which means that "s2 => s1$f_7" has mismatched
types across lhs and rhs: SI => SF.  Which understandibly ICEs during rtl
expansion.

I'm not really sure how this is avoided for the actual code generation, but
this minimal patch (aka hack) simply drops the debug info to avoid the ICE.

Thoughts on how this might really be solved?


r~

Attachment: d-59776
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]