------- Comment #34 from rguenth at gcc dot gnu dot org 2009-12-14 12:57 ------- "Another possibility is to artificially grow SCCs and their dependencies by honoring dominating virtual operand uses, not only defs (ugh)."
what I mean with this is that when finding SCCs we process all uses of a stmt. In case you have a memory load # VUSE <.MEM_3> x_2 = *p_1(D); then you have to consider all dominating DEFs that use .MEM_3 uses of that stmt, not only the single def of .MEM_3 (well, you only have to consider aliasing uses of course). This isn't easyly retrofitted into the non-recursive DFS walk though. Thus, for # .MEM_3 = VDEF <.MEM_5(D)> *p_1(D) = 0; # VUSE <.MEM_3> y_4 = *p_1(D); # VUSE <.MEM_3> x_2 = *p_1(D); when visiting x_2 = *p_1(D); the uses are p_1, y_4 and .MEM_3. y_4 is new because its the DEF in the dominating stmt that uses .MEM_3. This would possibly increase SCC sizes and compile-time a lot. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42108