[Bug tree-optimization/58513] *var and MEM[(const int &)var] (var has int* type) are not treated as the same data ref.

2013-09-25 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58513

--- Comment #3 from congh at gcc dot gnu.org ---
Author: congh
Date: Thu Sep 26 01:36:49 2013
New Revision: 202932

URL: http://gcc.gnu.org/viewcvs?rev=202932&root=gcc&view=rev
Log:
2013-09-24  Cong Hou  

Backport from mainline:
2013-09-24  Richard Biener  

PR middle-end/58513
* tree.c (reference_alias_ptr_type): Move ...
* alias.c (reference_alias_ptr_type): ... here and implement
in terms of the new reference_alias_ptr_type_1.
(ref_all_alias_ptr_type_p): New helper.
(get_deref_alias_set_1): Drop flag_strict_aliasing here,
use ref_all_alias_ptr_type_p.
(get_deref_alias_set): Add flag_strict_aliasing check here.
(reference_alias_ptr_type_1): New function, split out from ...
(get_alias_set): ... here.
(alias_ptr_types_compatible_p): New function.
* alias.h (reference_alias_ptr_type): Declare.
(alias_ptr_types_compatible_p): Likewise.
* tree.h (reference_alias_ptr_type): Remove.
* fold-const.c (operand_equal_p): Use alias_ptr_types_compatible_p
to compare MEM_REF alias types.

2013-09-25  Richard Biener  

PR middle-end/58521
* tree.c (iterative_hash_expr): Remove MEM_REF special handling.

2013-09-24  Cong Hou  

Backport from mainline:
2013-09-24  Richard Biener  

PR middle-end/58513
* g++.dg/vect/pr58513.cc: New testcase.



Modified:
branches/google/gcc-4_8/gcc/ChangeLog
branches/google/gcc-4_8/gcc/alias.c
branches/google/gcc-4_8/gcc/alias.h
branches/google/gcc-4_8/gcc/fold-const.c
branches/google/gcc-4_8/gcc/testsuite/ChangeLog
branches/google/gcc-4_8/gcc/tree.c
branches/google/gcc-4_8/gcc/tree.h


[Bug bootstrap/58521] [4.9 Regression] bootstrap failure: ICE in mem_ref_in_stmt, at tree-ssa-loop-im.c:677

2013-09-25 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58521

--- Comment #9 from congh at gcc dot gnu.org ---
Author: congh
Date: Thu Sep 26 01:36:49 2013
New Revision: 202932

URL: http://gcc.gnu.org/viewcvs?rev=202932&root=gcc&view=rev
Log:
2013-09-24  Cong Hou  

Backport from mainline:
2013-09-24  Richard Biener  

PR middle-end/58513
* tree.c (reference_alias_ptr_type): Move ...
* alias.c (reference_alias_ptr_type): ... here and implement
in terms of the new reference_alias_ptr_type_1.
(ref_all_alias_ptr_type_p): New helper.
(get_deref_alias_set_1): Drop flag_strict_aliasing here,
use ref_all_alias_ptr_type_p.
(get_deref_alias_set): Add flag_strict_aliasing check here.
(reference_alias_ptr_type_1): New function, split out from ...
(get_alias_set): ... here.
(alias_ptr_types_compatible_p): New function.
* alias.h (reference_alias_ptr_type): Declare.
(alias_ptr_types_compatible_p): Likewise.
* tree.h (reference_alias_ptr_type): Remove.
* fold-const.c (operand_equal_p): Use alias_ptr_types_compatible_p
to compare MEM_REF alias types.

2013-09-25  Richard Biener  

PR middle-end/58521
* tree.c (iterative_hash_expr): Remove MEM_REF special handling.

2013-09-24  Cong Hou  

Backport from mainline:
2013-09-24  Richard Biener  

PR middle-end/58513
* g++.dg/vect/pr58513.cc: New testcase.



Modified:
branches/google/gcc-4_8/gcc/ChangeLog
branches/google/gcc-4_8/gcc/alias.c
branches/google/gcc-4_8/gcc/alias.h
branches/google/gcc-4_8/gcc/fold-const.c
branches/google/gcc-4_8/gcc/testsuite/ChangeLog
branches/google/gcc-4_8/gcc/tree.c
branches/google/gcc-4_8/gcc/tree.h


[Bug target/58762] [missed optimization] Vectorizing abs(int).

2013-10-30 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58762

--- Comment #2 from congh at gcc dot gnu.org ---
Author: congh
Date: Wed Oct 30 20:01:47 2013
New Revision: 204229

URL: http://gcc.gnu.org/viewcvs?rev=204229&root=gcc&view=rev
Log:
2013-10-30  Cong Hou  

PR target/58762
* config/i386/i386-protos.h (ix86_expand_sse2_abs): New function.
* config/i386/i386.c (ix86_expand_sse2_abs): New function.
* config/i386/sse.md: Add SSE2 support to abs (8/16/32-bit-int).

2013-10-30  Cong Hou  

* gcc.target/i386/vect-abs-s8.c: New test.
* gcc.target/i386/vect-abs-s16.c: New test.
* gcc.target/i386/vect-abs-s32.c: New test.


Added:
trunk/gcc/testsuite/gcc.target/i386/vect-abs-s16.c
trunk/gcc/testsuite/gcc.target/i386/vect-abs-s32.c
trunk/gcc/testsuite/gcc.target/i386/vect-abs-s8.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386-protos.h
trunk/gcc/config/i386/i386.c
trunk/gcc/config/i386/sse.md
trunk/gcc/testsuite/ChangeLog


[Bug target/58762] [missed optimization] Vectorizing abs(int).

2013-10-30 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58762

--- Comment #3 from congh at gcc dot gnu.org ---
Author: congh
Date: Thu Oct 31 00:50:47 2013
New Revision: 204241

URL: http://gcc.gnu.org/viewcvs?rev=204241&root=gcc&view=rev
Log:
2013-10-30  Cong Hou  

Backport from mainline:
2013-10-30  Cong Hou  

PR target/58762
* config/i386/i386-protos.h (ix86_expand_sse2_abs): New function.
* config/i386/i386.c (ix86_expand_sse2_abs): New function.
* config/i386/sse.md: Add SSE2 support to abs (8/16/32-bit-int).


Modified:
branches/google/gcc-4_8/gcc/ChangeLog
branches/google/gcc-4_8/gcc/config/i386/i386-protos.h
branches/google/gcc-4_8/gcc/config/i386/i386.c
branches/google/gcc-4_8/gcc/config/i386/sse.md


[Bug tree-optimization/56764] vect_prune_runtime_alias_test_list not smart enough

2013-11-07 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56764

--- Comment #3 from congh at gcc dot gnu.org ---
Author: congh
Date: Thu Nov  7 19:29:45 2013
New Revision: 204538

URL: http://gcc.gnu.org/viewcvs?rev=204538&root=gcc&view=rev
Log:
2013-11-07  Cong Hou  

PR tree-optimization/56764
* tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
  Combine alias checks if it is possible to amortize the runtime
  overhead.  Return the number of alias checks after merging.
  * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list):
Use the function vect_create_cond_for_alias_checks () to check
the number of alias checks.

2013-11-07  Cong Hou  

* gcc.dg/vect/vect-alias-check.c: New.


Added:
trunk/gcc/testsuite/gcc.dg/vect/vect-alias-check.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-data-refs.c
trunk/gcc/tree-vect-loop-manip.c
trunk/gcc/tree-vectorizer.h


[Bug tree-optimization/56764] vect_prune_runtime_alias_test_list not smart enough

2013-11-07 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56764

--- Comment #4 from congh at gcc dot gnu.org ---
Author: congh
Date: Fri Nov  8 02:08:05 2013
New Revision: 204557

URL: http://gcc.gnu.org/viewcvs?rev=204557&root=gcc&view=rev
Log:
2013-11-07  Cong Hou  

Backport from mainline
2013-11-07  Cong Hou  

PR tree-optimization/56764
* tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
  Combine alias checks if it is possible to amortize the runtime
  overhead.  Return the number of alias checks after merging.
  * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list):
Use the function vect_create_cond_for_alias_checks () to check
the number of alias checks.

2013-11-07  Cong Hou  

Backport from mainline
2013-11-07  Cong Hou  

* gcc.dg/vect/vect-alias-check.c: New.


Added:
branches/google/gcc-4_8/gcc/testsuite/gcc.dg/vect/vect-alias-check.c
Modified:
branches/google/gcc-4_8/gcc/ChangeLog
branches/google/gcc-4_8/gcc/testsuite/ChangeLog
branches/google/gcc-4_8/gcc/tree-vect-data-refs.c
branches/google/gcc-4_8/gcc/tree-vect-loop-manip.c
branches/google/gcc-4_8/gcc/tree-vectorizer.h


[Bug tree-optimization/58508] [Missed-Optimization] Redundant vector load of "actual" loop invariant in loop body.

2013-11-08 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58508

--- Comment #8 from congh at gcc dot gnu.org ---
Author: congh
Date: Fri Nov  8 18:44:46 2013
New Revision: 204590

URL: http://gcc.gnu.org/viewcvs?rev=204590&root=gcc&view=rev
Log:
2013-11-08  Cong Hou  

PR tree-optimization/58508
* gcc.dg/vect/pr58508.c: Update.


Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/vect/pr58508.c


[Bug tree-optimization/59050] [4.9 Regression] ICE: tree check: expected integer_cst, have nop_expr in tree_int_cst_lt, at tree.c:7083

2013-11-11 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59050

--- Comment #4 from congh at gcc dot gnu.org ---
Author: congh
Date: Mon Nov 11 19:03:39 2013
New Revision: 204683

URL: http://gcc.gnu.org/viewcvs?rev=204683&root=gcc&view=rev
Log:
2013-11-11  Cong Hou  

PR tree-optimization/59050
* tree-vect-data-refs.c (comp_dr_addr_with_seg_len_pair): Bug fix.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-vect-data-refs.c


[Bug tree-optimization/56764] vect_prune_runtime_alias_test_list not smart enough

2013-11-14 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56764

--- Comment #5 from congh at gcc dot gnu.org ---
Author: congh
Date: Thu Nov 14 21:51:07 2013
New Revision: 204825

URL: http://gcc.gnu.org/viewcvs?rev=204825&root=gcc&view=rev
Log:
2013-11-14  Cong Hou  

Backport from mainline
2013-11-14  Cong Hou  

* tree-vectorizer.h (struct dr_with_seg_len): Remove the base
address field as it can be obtained from dr.  Rename the struct.
* tree-vect-data-refs.c (comp_dr_with_seg_len_pair): Consider
steps of data references during sort.
(vect_prune_runtime_alias_test_list): Adjust with the change to
struct dr_with_seg_len.
* tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
Adjust with the change to struct dr_with_seg_len.

2013-11-07  Cong Hou  

PR tree-optimization/56764
* tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
Combine alias checks if it is possible to amortize the runtime
overhead.  Return the number of alias checks after merging.
* tree-vect-data-refs.c (vect_prune_runtime_alias_test_list):
Use the function vect_create_cond_for_alias_checks () to check
the number of alias checks.


Modified:
branches/google/gcc-4_8/gcc/ChangeLog
branches/google/gcc-4_8/gcc/tree-vect-data-refs.c
branches/google/gcc-4_8/gcc/tree-vect-loop-manip.c
branches/google/gcc-4_8/gcc/tree-vectorizer.h


[Bug tree-optimization/60505] [4.8/4.9 Regression] Warning caused by GCC vectorizer.

2014-04-03 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60505

--- Comment #4 from Cong Hou  ---
Author: congh
Date: Thu Apr  3 23:05:42 2014
New Revision: 209065

URL: http://gcc.gnu.org/viewcvs?rev=209065&root=gcc&view=rev
Log:
2014-04-03  Cong Hou  

PR tree-optimization/60505
* tree-vectorizer.h (struct _stmt_vec_info): Add th field as the
threshold of number of iterations below which no vectorization will be
done.
* tree-vect-loop.c (new_loop_vec_info):
Initialize LOOP_VINFO_COST_MODEL_THRESHOLD.
* tree-vect-loop.c (vect_analyze_loop_operations):
Set LOOP_VINFO_COST_MODEL_THRESHOLD.
* tree-vect-loop.c (vect_transform_loop):
Use LOOP_VINFO_COST_MODEL_THRESHOLD.
* tree-vect-loop.c (vect_analyze_loop_2): Check the maximum number
of iterations of the loop and see if we should build the epilogue.

2014-04-03  Cong Hou  

PR tree-optimization/60505
* gcc.dg/vect/pr60505.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/vect/pr60505.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-loop.c
trunk/gcc/tree-vectorizer.h


[Bug tree-optimization/60656] [4.8/4.9 regression] x86 vectorization produces wrong code

2014-04-04 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60656

--- Comment #8 from Cong Hou  ---
Author: congh
Date: Sat Apr  5 01:27:21 2014
New Revision: 209138

URL: http://gcc.gnu.org/viewcvs?rev=209138&root=gcc&view=rev
Log:
2014-04-04  Cong Hou  

PR tree-optimization/60656
* tree-vect-stmts.c (supportable_widening_operation):
  Fix a bug that elements in a vector with vect_used_by_reduction
  property are incorrectly reordered when the operation on it is not
  consistant with the one in reduction operation.

2014-04-04  Cong Hou  

PR tree-optimization/60656
* gcc.dg/vect/pr60656.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/vect/pr60656.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-stmts.c


[Bug tree-optimization/60896] [4.10 Regression] ICE: in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1449

2014-04-24 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60896

--- Comment #4 from Cong Hou  ---
Author: congh
Date: Fri Apr 25 00:20:44 2014
New Revision: 209773

URL: http://gcc.gnu.org/viewcvs?rev=209773&root=gcc&view=rev
Log:
2014-04-24  Cong Hou  

PR tree-optimization/60896
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Pick up
all statements in PATTERN_DEF_SEQ in recognized widen-mult pattern.
(vect_mark_pattern_stmts): Set the def type of all statements in
PATTERN_DEF_SEQ as vect_internal_def.

2014-04-24  Cong Hou  

PR tree-optimization/60896
* g++.dg/vect/pr60896.cc: New test.


Added:
trunk/gcc/testsuite/g++.dg/vect/pr60896.cc
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-patterns.c


[Bug tree-optimization/60000] New: GCC trunk build failure caused by the vectorizer.

2014-01-30 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=6

Bug ID: 6
   Summary: GCC trunk build failure caused by the vectorizer.
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: congh at gcc dot gnu.org

GCC fails to build the following code with flags

g++ -O2 -fno-tree-vrp -ftree-vectorize foo.C


//foo.C:

void foo(bool* a, int* b)
{
  for(int i = 0; i < 1000; ++i)
  {
a[i] = i % 2;
b[i] = i % 3;
  }
}



The output message from GCC:


 void foo(bool*, int*)
Analyzing compilation unit
Performing interprocedural optimizations
 <*free_lang_data>   <*free_inline_summary>
 
Assembling functions:
 void foo(bool*, int*)foo.C:3:3: note: loop vectorized
foo.C:3:3: note: loop versioned for vectorization because of possible aliasing

foo.C: In function ‘void foo(bool*, int*)’:
foo.C:1:6: internal compiler error: in vect_get_vec_def_for_operand, at
tree-vect-stmts.c:1449
 void foo(bool* a, int* b)
  ^
0xf82cd5 vect_get_vec_def_for_operand(tree_node*, gimple_statement_base*,
tree_node**)
../../gcc/gcc/tree-vect-stmts.c:1449
0xf83194 vect_get_vec_defs(tree_node*, tree_node*, gimple_statement_base*,
vec*, vec*,
_slp_tree*, int)
../../gcc/gcc/tree-vect-stmts.c:1634
0xf8e060 vectorizable_operation
../../gcc/gcc/tree-vect-stmts.c:4785
0xf94be4 vect_transform_stmt(gimple_statement_base*, gimple_stmt_iterator*,
bool*, _slp_tree*, _slp_instance*)
../../gcc/gcc/tree-vect-stmts.c:6959
0xfa8f0e vect_transform_loop(_loop_vec_info*)
../../gcc/gcc/tree-vect-loop.c:6046
0xfbe02a vectorize_loops()
../../gcc/gcc/tree-vectorizer.c:476
0xec9b80 tree_loop_vectorize
../../gcc/gcc/tree-ssa-loop.c:154
0xec9c0a execute
../../gcc/gcc/tree-ssa-loop.c:189
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

[Bug tree-optimization/60000] [4.8/4.9 Regression] GCC trunk build failure caused by the vectorizer

2014-01-30 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=6

--- Comment #3 from congh at gcc dot gnu.org ---
I have made a patch for this issue
(http://gcc.gnu.org/ml/gcc-patches/2014-01/msg02016.html). It should fix this
bug.


[Bug tree-optimization/60000] [4.8/4.9 Regression] GCC trunk build failure caused by the vectorizer

2014-02-03 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=6

--- Comment #4 from Cong Hou  ---
Author: congh
Date: Mon Feb  3 18:15:56 2014
New Revision: 207433

URL: http://gcc.gnu.org/viewcvs?rev=207433&root=gcc&view=rev
Log:
2014-02-03  Cong Hou  

PR tree-optimization/6
* tree-vect-loop.c (vect_transform_loop): Set pattern_def_seq to NULL
if the vectorized statement is a store.  A store statement can only
appear at the end of pattern statements.

2014-02-03  Cong Hou  

PR tree-optimization/6
* g++.dg/vect/pr6.cc: New test.



Added:
trunk/gcc/testsuite/g++.dg/vect/pr6.cc
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-loop.c


[Bug tree-optimization/60000] [4.8/4.9 Regression] GCC trunk build failure caused by the vectorizer

2014-02-03 Thread congh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=6

--- Comment #5 from Cong Hou  ---
Author: congh
Date: Mon Feb  3 18:23:56 2014
New Revision: 207435

URL: http://gcc.gnu.org/viewcvs?rev=207435&root=gcc&view=rev
Log:
2014-02-03  Cong Hou  

Backport from mainline
2014-02-03  Cong Hou  

PR tree-optimization/6
* tree-vect-loop.c (vect_transform_loop): Set pattern_def_seq to NULL
if the vectorized statement is a store.  A store statement can only
appear at the end of pattern statements.

2014-02-03  Cong Hou  

Backport from mainline
2014-02-03  Cong Hou  

PR tree-optimization/6
* g++.dg/vect/pr6.cc: New test.



Added:
branches/google/gcc-4_8/gcc/testsuite/g++.dg/vect/pr6.cc
Modified:
branches/google/gcc-4_8/gcc/ChangeLog
branches/google/gcc-4_8/gcc/testsuite/ChangeLog
branches/google/gcc-4_8/gcc/tree-vect-loop.c