[Bug middle-end/40762] [4.5 Regression] CD-DCE messes up virtual SSA form

rguenth at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed Jul 15 10:17:00 GMT 2009



------- Comment #3 from rguenth at gcc dot gnu dot org  2009-07-15 10:17 -------
We have wrong SSA form before FRE:

;; Function func_36 (func_36)

func_36 ()
{
  uint8_t g_64.8;
  int64_t g_10.5;

<bb 2>:
  # .MEM_17 = VDEF <.MEM_16(D)>
  g_10 = 1;
  # VUSE <.MEM_17>
  g_10.5_2 = g_10;
  if (g_10.5_2 != 0)
    goto <bb 3>;
  else
    goto <bb 4>;

<bb 3>:
  # .MEM_18 = VDEF <.MEM_17>
  func_53 ();

<bb 4>:
  # VUSE <.MEM_17>
  g_10.5_11 = g_10;
  g_64.8_12 = (uint8_t) g_10.5_11;
  # .MEM_19 = VDEF <.MEM_17>
  g_64 = g_64.8_12;
  return 1;

There is a PHI node missing to merge .MEM_18 and .MEM_17.

Which is caused by CD-DCE changes again.  Honza?


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|rguenth at gcc dot gnu dot  |hubicka at gcc dot gnu dot
                   |org                         |org
          Component|c                           |middle-end
           Keywords|                            |wrong-code
           Priority|P3                          |P1
            Summary|possible integer            |[4.5 Regression] CD-DCE
                   |miscompilation              |messes up virtual SSA form
   Target Milestone|---                         |4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40762



More information about the Gcc-bugs mailing list