[Bug tree-optimization/69110] execution failure in gcc.c-torture/execute/doloop-2.c with -ftree-parallelize-loops=2

2016-01-02 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69110

--- Comment #7 from vries at gcc dot gnu.org ---
(In reply to vries from comment #4)
> Created attachment 37210 [details]
> minimal version, v2

needs -fno-tree-loop-im as well:
...
$ gcc doloop-2.c -O1 -ftree-parallelize-loops=2 -Wl,-rpath=$(pwd
-P)/install/lib64 -fno-tree-loop-im
...

[Bug tree-optimization/69110] execution failure in gcc.c-torture/execute/doloop-2.c with -ftree-parallelize-loops=2

2016-01-02 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69110

--- Comment #1 from vries at gcc dot gnu.org ---
Created attachment 37207
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37207=edit
minimal version

[Bug tree-optimization/69110] execution failure in gcc.c-torture/execute/doloop-2.c with -ftree-parallelize-loops=2

2016-01-02 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69110

vries at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #37208|0   |1
is obsolete||

--- Comment #5 from vries at gcc dot gnu.org ---
Created attachment 37211
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37211=edit
doloop-2.c.141t.ivcanon, v2

[Bug tree-optimization/69110] execution failure in gcc.c-torture/execute/doloop-2.c with -ftree-parallelize-loops=2

2016-01-02 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69110

vries at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #37207|0   |1
is obsolete||

--- Comment #4 from vries at gcc dot gnu.org ---
Created attachment 37210
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37210=edit
minimal version, v2

[Bug tree-optimization/69110] execution failure in gcc.c-torture/execute/doloop-2.c with -ftree-parallelize-loops=2

2016-01-02 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69110

--- Comment #3 from vries at gcc dot gnu.org ---
Created attachment 37209
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37209=edit
doloop-2.c.142t.parloops

[Bug tree-optimization/69110] execution failure in gcc.c-torture/execute/doloop-2.c with -ftree-parallelize-loops=2

2016-01-02 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69110

--- Comment #2 from vries at gcc dot gnu.org ---
Created attachment 37208
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37208=edit
doloop-2.c.141t.ivcanon

[Bug tree-optimization/69110] execution failure in gcc.c-torture/execute/doloop-2.c with -ftree-parallelize-loops=2

2016-01-02 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69110

--- Comment #9 from vries at gcc dot gnu.org ---
With -floop-parallelize-all --param graphite-min-loops-per-function=1 we have
in graphite:
...
Creating dr for i
analyze_innermost: success.
base_address: 
offset from base address: 0
constant offset from base address: 0
step: 0
aligned to: 128
base_object: i
[scop-detection-fail] Graphite cannot handle data-refs in stmt:
# VUSE <.MEM_11>
i.1_4 = i;
...

and in parloops:
...
loop is not parallel according to graphite
...

[Bug tree-optimization/69110] execution failure in gcc.c-torture/execute/doloop-2.c with -ftree-parallelize-loops=2

2016-01-02 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69110

vries at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #37209|0   |1
is obsolete||

--- Comment #6 from vries at gcc dot gnu.org ---
Created attachment 37212
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37212=edit
doloop-2.c.142t.parloops, v2

[Bug tree-optimization/69110] execution failure in gcc.c-torture/execute/doloop-2.c with -ftree-parallelize-loops=2

2016-01-02 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69110

vries at gcc dot gnu.org changed:

   What|Removed |Added

 CC||spop at gcc dot gnu.org

--- Comment #8 from vries at gcc dot gnu.org ---
loop before parloops, at ivcanon:
...
  # z_10 = PHI 
  # .MEM_11 = PHI <.MEM_6(4), .MEM_3(D)(2)>
  # ivtmp_12 = PHI 

  # VUSE <.MEM_11>
  i.1_4 = iD.1855;

  _5 = i.1_4 + 1;

  # .MEM_6 = VDEF <.MEM_11>
  iD.1855 = _5;

  z_7 = z_10 + 1;

  ivtmp_2 = ivtmp_12 - 1;

  if (ivtmp_2 != 0)
goto ;
  else
goto ;
...

The loop cannot be parallelized because the store to iD.1855 in every loop
iteration aliases with the load from and store to iD.1855 in every other loop
iteration.

However, parloops concludes that parallelization is possible:
...
;; Function foo (foo, funcdef_no=0, decl_uid=1857, cgraph_uid=0,
symbol_order=1) (executed once)


Pass statistics of "parloops": 

Trying loop 1 as candidate
loop 1 is innermost
Analyzing # of iterations of loop 1
  exit condition [999, + , 4294967295] != 0
  bounds on difference of bases: -999 ... -999
  result:
# of iterations 999, bounded by 999
Analyzing # of iterations of loop 1
  exit condition [999, + , 4294967295] != 0
  bounds on difference of bases: -999 ... -999
  result:
# of iterations 999, bounded by 999
doloop-2.c:6:1: note: === vect_analyze_loop_form ===
doloop-2.c:6:1: note: === get_loop_niters ===
Considering loop 1
loop is innermost
Creating dr for i
analyze_innermost: success.
base_address: 
offset from base address: 0
constant offset from base address: 0
step: 0
aligned to: 128
base_object: i
Creating dr for i
analyze_innermost: success.
base_address: 
offset from base address: 0
constant offset from base address: 0
step: 0
aligned to: 128
base_object: i
(compute_affine_dependence
  stmt_a: i.1_4 = i;
  stmt_b: i = _5;
)
(compute_affine_dependence
  stmt_a: i.1_4 = i;
  stmt_b: i.1_4 = i;
)
(compute_affine_dependence
  stmt_a: i = _5;
  stmt_b: i = _5;
)
Dependence tester statistics:
Number of dependence tests: 3
Number of dependence tests classified dependent: 3
Number of dependence tests classified independent: 0
Number of undetermined dependence tests: 0
Number of subscript tests: 0
Number of undetermined subscript tests: 0
Number of same subscript function: 0
Number of ziv tests: 0
Number of ziv tests returning dependent: 0
Number of ziv tests returning independent: 0
Number of ziv tests unimplemented: 0
Number of siv tests: 0
Number of siv tests returning dependent: 0
Number of siv tests returning independent: 0
Number of siv tests unimplemented: 0
Number of miv tests: 0
Number of miv tests returning dependent: 0
Number of miv tests returning independent: 0
Number of miv tests unimplemented: 0
(Data Dep: 
#(Data Ref: 
#  bb: 3 
#  stmt: i.1_4 = i;
#  ref: i
#  base_object: i;
#)
#(Data Ref: 
#  bb: 3 
#  stmt: i = _5;
#  ref: i
#  base_object: i;
#)
  inner loop index: 0
  loop nest: (1 )
  distance_vector:   0 
  direction_vector: =
)
(Data Dep: 
#(Data Ref: 
#  bb: 3 
#  stmt: i.1_4 = i;
#  ref: i
#  base_object: i;
#)
#(Data Ref: 
#  bb: 3 
#  stmt: i.1_4 = i;
#  ref: i
#  base_object: i;
#)
  inner loop index: 0
  loop nest: (1 )
  distance_vector:   0 
  direction_vector: =
)
(Data Dep: 
#(Data Ref: 
#  bb: 3 
#  stmt: i = _5;
#  ref: i
#  base_object: i;
#)
#(Data Ref: 
#  bb: 3 
#  stmt: i = _5;
#  ref: i
#  base_object: i;
#)
  inner loop index: 0
  loop nest: (1 )
  distance_vector:   0 
  direction_vector: =
)
  SUCCESS: may be parallelized
...