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