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



--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-10-18 
13:35:05 UTC ---

>From quick skimming of tree-sra.c, I'd say we could add another bool flag like

grp_to_be_replaced (say grp_to_be_debug_replaced), and in the else block of

  if (allow_replacements && scalar && !root->first_child

      && (root->grp_hint

          || ((root->grp_scalar_read || root->grp_assignment_read)

              && (root->grp_scalar_write || root->grp_assignment_write))))

do something like

    if (MAY_HAVE_DEBUG_STMTS && allow_replacements

        && scalar && !root->first_child

        && (root->grp_scalar_write || root->grp_assignment_write))

      root->grp_to_be_debug_replaced = 1;

(in addition to what the else block already does) and then in the actual

modification of stmts for grp_to_be_debug_replaced prepend a debug stmt before

the statement (or in the middle of statements).



For the two stmts that modify such grp_to_be_debug_replaced = 1; access,

  a[0] = 1;

and

  MEM[(char * {ref-all})&a] = MEM[(char * {ref-all})&D.1719];

we would have:

  DEBUG a$0 => 1         // Newly added stmt

  a[0] = 1;

and

  SR.2_14 = 4;

  # DEBUG SR.2 => SR.2_14

  SR.3_13 = 5;

  # DEBUG SR.3 => SR.3_13

  SR.4_12 = 6;

  # DEBUG SR.4 => SR.4_12

  # DEBUG a$0 => SR.2_14           // Newly added stmt

  a$1_9 = SR.3_13;

  # DEBUG a$1 => a$1_9

  a$2_4 = SR.4_12;

  # DEBUG a$2 => a$2_4



Martin, is that possible, does it make sense and where are all the places in

the sra_modify_* etc. code that would need to be tweaked?

Reply via email to