[Bug tree-optimization/66288] parallelized loop vectorized with runtime alias check

vries at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue May 26 11:08:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66288

--- Comment #1 from vries at gcc dot gnu.org ---
Note that for the example from PR66285, with INDEX_TYPE long/unsigned long, we
vectorize without run-time aliasing test.

In that example, we start out with two restrict pointers. During aliasing, we
determine clique and base:
...
  # VUSE <.MEM_23>
  _9 = MEM[(doubleD.32 *)_8 clique 1 base 2];

  _10 = _9 * 1.2199999999999999289457264239899814128875732421875e+1;

  # .MEM_11 = VDEF <.MEM_23>
  MEM[(doubleD.32 *)_6 clique 1 base 1] = _10;
...

That information is preserved after function splitoff due to parallelization:
...
  # VUSE <.MEM_32>
  _28 = MEM[(doubleD.32 *)_27 clique 1 base 2];

  _29 = _28 * 1.2199999999999999289457264239899814128875732421875e+1;

  # .MEM_35 = VDEF <.MEM_32>
  MEM[(doubleD.32 *)_26 clique 1 base 1] = _29;
...

So the dependence clique is used to do disambiguation.



More information about the Gcc-bugs mailing list