]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
9 years ago * gcc.target/powerpc/lhs-1.c: Fix testcase to avoid subreg changes.
pthaugen [Tue, 24 May 2016 22:24:16 +0000 (22:24 +0000)] 
* gcc.target/powerpc/lhs-1.c: Fix testcase to avoid subreg changes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236672 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-24 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Tue, 24 May 2016 21:32:29 +0000 (21:32 +0000)] 
2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/50436
* g++.dg/template/crash123.C: New.
* g++.dg/template/crash124.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236671 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR c++/70584 - don't force indirection to an rvalue
jason [Tue, 24 May 2016 21:06:53 +0000 (21:06 +0000)] 
PR c++/70584 - don't force indirection to an rvalue

* cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold
returns a decl.
(cp_fold) [INDIRECT_REF]: Don't fold to an rvalue.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236670 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-24 François Dumont <fdumont@gcc.gnu.org>
fdumont [Tue, 24 May 2016 20:55:57 +0000 (20:55 +0000)] 
2016-05-24  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/c++config (_GLIBCXX14_USE_CONSTEXPR): New.
* include/bits/hashtable_policy.h
(_Prime_rehash_policy::__has_load_factor): New. Mark rehash policy
having load factor management.
(_Mask_range_hashing): New.
(__clp2): New.
(_Power2_rehash_policy): New.
(_Inserts<>): Remove last template parameter, _Unique_keys, so that
partial specializations only depend on whether iterators are constant
or not.
* testsuite/23_containers/unordered_set/hash_policy/26132.cc: Adapt to
test new hash policy.
* testsuite/23_containers/unordered_set/hash_policy/load_factor.cc:
Likewise.
* testsuite/23_containers/unordered_set/hash_policy/rehash.cc:
Likewise.
* testsuite/23_containers/unordered_set/insert/hash_policy.cc:
Likewise.
* testsuite/23_containers/unordered_set/max_load_factor/robustness.cc:
Likewise.
* testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc:
New.
* testsuite/performance/23_containers/insert/54075.cc: Add benchmark
using the new hash policy.
* testsuite/performance/23_containers/insert_erase/41975.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236669 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoPR c++/71147 - [6 Regression] Flexible array member wrongly rejected in template
msebor [Tue, 24 May 2016 20:29:36 +0000 (20:29 +0000)] 
PR c++/71147 - [6 Regression] Flexible array member wrongly rejected in template

gcc/ChangeLog:
2016-05-24  Martin Sebor  <msebor@redhat.com>

PR c++/71147
* gcc/tree.h (complete_or_array_type_p): New inline function.

gcc/testsuite/ChangeLog:
2016-05-24  Martin Sebor  <msebor@redhat.com>

PR c++/71147
* g++.dg/ext/flexary16.C: New test.

gcc/cp/ChangeLog:
2016-05-24  Martin Sebor  <msebor@redhat.com>

PR c++/71147
* decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p.
* pt.c (instantiate_class_template_1): Try to complete the element
type of a flexible array member.
(can_complete_type_without_circularity): Handle arrays of unknown bound.
* typeck.c (complete_type): Also complete the type of the elements of
arrays with an unspecified bound.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236664 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/i386/i386.h (TARGET_AVOID_4BYTE_PREFIXES): Define.
jakub [Tue, 24 May 2016 19:12:42 +0000 (19:12 +0000)] 
* config/i386/i386.h (TARGET_AVOID_4BYTE_PREFIXES): Define.
* config/i386/constraints.md (Yr): Test TARGET_AVOID_4BYTE_PREFIXES
rather than X86_TUNE_AVOID_4BYTE_PREFIXES.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236662 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/i386/sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>):
jakub [Tue, 24 May 2016 19:12:06 +0000 (19:12 +0000)] 
* config/i386/sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>):
Limit 1st alternative to noavx isa, split 2nd alternative into one
noavx and one avx alternative, use *x and Bm in the former and
x and m in the latter.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236661 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/i386/sse.md (vec_set<mode>_0): Use sse4_noavx isa instead
jakub [Tue, 24 May 2016 19:11:33 +0000 (19:11 +0000)] 
* config/i386/sse.md (vec_set<mode>_0): Use sse4_noavx isa instead
of sse4 for the first alternative, drop %v from the template
and d operand modifier.  Split second alternative into one sse4_noavx
and one avx alternative, use *x instead of *v in the former and v
instead of *v in the latter.
(*sse4_1_extractps): Use noavx isa instead of * for the first
alternative, drop %v from the template.  Split second alternative into
one noavx and one avx alternative, use *x instead of *v in the
former and v instead of *v in the latter.
(<vi8_sse4_1_avx2_avx512>_movntdqa): Guard the first 2 alternatives
with noavx and the last one with avx.
(sse4_1_phminposuw): Guard first alternative with noavx isa,
split the second one into one noavx and one avx alternative,
use *x and Bm in the former and x and m in the latter one.
(<sse4_1>_ptest<mode>): Use noavx instead of * for the first two
alternatives.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236660 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/i386/sse.md (sse4_1_<code>v8qiv8hi2<mask_name>): Limit
jakub [Tue, 24 May 2016 19:10:55 +0000 (19:10 +0000)] 
* config/i386/sse.md (sse4_1_<code>v8qiv8hi2<mask_name>): Limit
first two alternatives to noavx, use *x instead of *v in the second
one, add avx alternative without *.
(sse4_1_<code>v4qiv4si2<mask_name>, sse4_1_<code>v4hiv4si2<mask_name>,
sse4_1_<code>v2qiv2di2<mask_name>, sse4_1_<code>v2hiv2di2<mask_name>,
sse4_1_<code>v2siv2di2<mask_name>): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236659 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * gcc.target/i386/avx-ceil-sfix-2-vec.c: Define __NO_MATH_INLINES before
iverbin [Tue, 24 May 2016 17:35:17 +0000 (17:35 +0000)] 
* gcc.target/i386/avx-ceil-sfix-2-vec.c: Define __NO_MATH_INLINES before
math.h is included.
* gcc.target/i386/avx-floor-sfix-2-vec.c: Likewise.
* gcc.target/i386/avx-rint-sfix-2-vec.c: Likewise.
* gcc.target/i386/avx-round-sfix-2-vec.c: Likewise.
* gcc.target/i386/avx512f-ceil-sfix-vec-1.c: Likewise.
* gcc.target/i386/avx512f-floor-sfix-vec-1.c: Likewise.
* gcc.target/i386/sse4_1-ceil-sfix-vec.c: Likewise.
* gcc.target/i386/sse4_1-ceil-vec.c: Likewise.
* gcc.target/i386/sse4_1-ceilf-sfix-vec.c: Likewise.
* gcc.target/i386/sse4_1-ceilf-vec.c: Likewise.
* gcc.target/i386/sse4_1-floor-sfix-vec.c: Likewise.
* gcc.target/i386/sse4_1-floor-vec.c: Likewise.
* gcc.target/i386/sse4_1-rint-sfix-vec.c: Likewise.
* gcc.target/i386/sse4_1-rint-vec.c: Likewise.
* gcc.target/i386/sse4_1-rintf-sfix-vec.c: Likewise.
* gcc.target/i386/sse4_1-rintf-vec.c: Likewise.
* gcc.target/i386/sse4_1-round-sfix-vec.c: Likewise.
* gcc.target/i386/sse4_1-round-vec.c: Likewise.
* gcc.target/i386/sse4_1-roundf-sfix-vec.c: Likewise.
* gcc.target/i386/sse4_1-roundf-vec.c: Likewise.
* gcc.target/i386/sse4_1-trunc-vec.c: Likewise.
* gcc.target/i386/sse4_1-truncf-vec.c: Likewise.
* gcc.target/i386/sse4_1-floorf-sfix-vec.c: Likewise.
* gcc.target/i386/sse4_1-floorf-vec.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236656 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/testsuite/ChangeLog:
kelvin [Tue, 24 May 2016 17:21:18 +0000 (17:21 +0000)] 
gcc/testsuite/ChangeLog:

2016-05-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
    Kelvin Nilsen  <kelvin@gcc.gnu.org>

* gcc.target/powerpc/p9-vpermr.c: New test for ISA 3.0 vpermr
support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236655 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * tree-ssa-threadbackwards.c (convert_and_register_jump_thread_path):
law [Tue, 24 May 2016 16:57:48 +0000 (16:57 +0000)] 
* tree-ssa-threadbackwards.c (convert_and_register_jump_thread_path):
New function, extracted from...
(fsm_find_control_statement_thread_paths): Here.  Use the new function.
Allow simple copies and constant initializations in the SSA chain.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236653 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago/cp
paolo [Tue, 24 May 2016 16:41:39 +0000 (16:41 +0000)] 
/cp
2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/69872
* typeck2.c (check_narrowing): Check pedwarn return value.

/testsuite
2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/69872
* g++.dg/warn/Wno-narrowing1.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236651 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR c/71249
mpolacek [Tue, 24 May 2016 16:22:31 +0000 (16:22 +0000)] 
PR c/71249
* gimplify.c (gimplify_switch_expr): Look into the innermost lexical
scope.

* c-c++-common/Wswitch-unreachable-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236649 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR c++/71257
jakub [Tue, 24 May 2016 16:19:43 +0000 (16:19 +0000)] 
PR c++/71257
* tree-vect-stmts.c (vectorizable_simd_clone_call): Handle
SIMD_CLONE_ARG_TYPE_LINEAR_REF_CONSTANT_STEP like
SIMD_CLONE_ARG_TYPE_LINEAR_CONSTANT_STEP.  Add
SIMD_CLONE_ARG_TYPE_LINEAR_VAL_CONSTANT_STEP and
SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_CONSTANT_STEP cases explicitly.

* semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>:
For OMP_CLAUSE_LINEAR_REF don't require type to be
integral or pointer.

* g++.dg/vect/simd-clone-6.cc: New test.
* g++.dg/gomp/declare-simd-6.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236648 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR middle-end/70434
jakub [Tue, 24 May 2016 16:14:34 +0000 (16:14 +0000)] 
PR middle-end/70434
PR c/69504
* c-c++-common/vector-subscript-5.c (foo): Move ; out of the ifdef.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236647 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoAdd priority_queue::value_compare (LWG 2684)
redi [Tue, 24 May 2016 15:59:05 +0000 (15:59 +0000)] 
Add priority_queue::value_compare (LWG 2684)

* include/bits/stl_queue.h (priority_queue::value_compare): Define.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236646 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/i386/i386.c (ix86_preferred_reload_class): Use
uros [Tue, 24 May 2016 15:42:17 +0000 (15:42 +0000)] 
* config/i386/i386.c (ix86_preferred_reload_class): Use
IS_STACK_MODE, INTEGER_CLASS_P, FLOAT_CLASS_P and Q_CLASS_P macros.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236645 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-24 Richard Biener <rguenther@suse.de>
rguenth [Tue, 24 May 2016 14:40:35 +0000 (14:40 +0000)] 
2016-05-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71240
* tree-ssa-math-opts.c (init_symbolic_number): Verify the source
has integral type.

* gcc.dg/optimize-bswapsi-5.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236644 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-24 Richard Biener <rguenther@suse.de>
rguenth [Tue, 24 May 2016 14:35:36 +0000 (14:35 +0000)] 
2016-05-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71230
* tree-ssa-reassoc.c (zero_one_operation): Handle negate special ops.

* gcc.dg/torture/pr71230.c: New testcase.
* g++.dg/torture/pr71230.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236643 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoClean up PURE_SLP_STMT handling
rsandifo [Tue, 24 May 2016 14:05:20 +0000 (14:05 +0000)] 
Clean up PURE_SLP_STMT handling

The vectorizable_* routines had many instances of:

        slp_node || PURE_SLP_STMT (stmt_info)

which gives the misleading impression that we can have
!slp_node && PURE_SLP_STMT (stmt_info).  In this context
it's really enough to test slp_node on its own.

There are three cases:

      loop vectorisation only:
        vectorizable_foo called only with !slp_node

      pure SLP:
        vectorizable_foo called only with slp_node

      hybrid SLP:
        (e.g. a vector that's used in SLP statements and also in a reduction)
        - vectorizable_foo called once with slp_node for the SLP uses.
        - vectorizable_foo called once with !slp_node for the non-SLP uses.

Hybrid SLP isn't possible for stores, so I added an explicit assert
for that.

I also made vectorizable_comparison static, to make it obvious that
no other callers outside tree-vect-stmts.c could use it with the
!slp && PURE_SLP_STMT combination.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vectorizer.h (vectorizable_comparison): Delete.
* tree-vect-loop.c (vectorizable_reduction): Remove redundant
PURE_SLP_STMT check.
* tree-vect-stmts.c (vectorizable_call): Likewise.
(vectorizable_simd_clone_call): Likewise.
(vectorizable_conversion): Likewise.
(vectorizable_assignment): Likewise.
(vectorizable_shift): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_load): Likewise.
(vectorizable_condition): Likewise.
(vectorizable_store): Likewise.  Assert that we don't have
hybrid SLP.
(vectorizable_comparison): Make static.  Remove redundant
PURE_SLP_STMT check.
(vect_transform_stmt): Assert that we always have an slp_node
if PURE_SLP_STMT.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236642 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM][4/4] Simplify checks for CONST_INT_P and comparison against 1/0
ktkachov [Tue, 24 May 2016 14:04:03 +0000 (14:04 +0000)] 
[ARM][4/4] Simplify checks for CONST_INT_P and comparison against 1/0

* config/arm/neon.md (ashldi3_neon):  Replace comparison of INTVAL of
operands[2] against 1 with comparison against CONST1_RTX.
(<shift>di3_neon): Likewise.
* config/arm/predicates.md (const0_operand): Replace with comparison
against CONST0_RTX.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236641 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM][3/4] Cleanup casts from INTVAL to [unsigned] HOST_WIDE_INT
ktkachov [Tue, 24 May 2016 14:00:39 +0000 (14:00 +0000)] 
[ARM][3/4] Cleanup casts from INTVAL to [unsigned] HOST_WIDE_INT

* config/arm/arm.md (ashldi3): Replace comparison of INTVAL of
operands[2] against 1 with comparison against CONST1_RTX.
(ashrdi3): Likewise.
(lshrdi3): Likewise.
(ashlsi3): Replace cast of INTVAL to unsigned HOST_WIDE_INT with
UINTVAL.
(ashrsi3): Likewise.
(lshrsi3): Likewise.
(rotrsi3): Likewise.
(define_split above *compareqi_eq0): Likewise.
(define_split above "prologue"): Likewise.
* config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
* config/arm/predicates.md (shift_operator): Likewise.
(shift_nomul_operator): Likewise.
(sat_shift_operator): Likewise.
(thumb1_cmp_operand): Likewise.
(const_neon_scalar_shift_amount_operand): Replace manual range
check with IN_RANGE.
* config/arm/thumb1.md (define_peephole2 above *thumb_subdi3):
Replace cast of INTVAL to unsigned HOST_WIDE_INT with UINTVAL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236640 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoTighten syntax checking for OpenACC routine construct in C
tschwinge [Tue, 24 May 2016 14:00:39 +0000 (14:00 +0000)] 
Tighten syntax checking for OpenACC routine construct in C

gcc/c/
* c-parser.c (c_parser_oacc_routine): Tighten syntax checks.
gcc/testsuite/
* c-c++-common/goacc/routine-5.c: Add tests.
* g++.dg/goacc/routine-2.C: Remove duplicate tests.
* gfortran.dg/goacc/routine-6.f90: Add tests.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236639 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM][2/4] Replace casts of 1 to HOST_WIDE_INT by HOST_WIDE_INT_1 and HOST_WIDE_INT_1U
ktkachov [Tue, 24 May 2016 13:55:19 +0000 (13:55 +0000)] 
[ARM][2/4] Replace casts of 1 to HOST_WIDE_INT by HOST_WIDE_INT_1 and HOST_WIDE_INT_1U

* config/arm/arm.md (andsi3): Replace cast of 1 to HOST_WIDE_INT
with HOST_WIDE_INT_1.
(insv): Likewise.
* config/arm/arm.c (optimal_immediate_sequence): Replace cast of
1 to unsigned HOST_WIDE_INT with HOST_WIDE_INT_1U.
(arm_canonicalize_comparison): Likewise.
(thumb1_rtx_costs): Replace cast of 1 to HOST_WIDE_INT with
HOST_WIDE_INT_1.
(thumb1_size_rtx_costs): Likewise.
(vfp_const_double_index): Replace cast of 1 to unsigned
HOST_WIDE_INT with HOST_WIDE_INT_1U.
(get_jump_table_size): Replace cast of 1 to HOST_WIDE_INT with
HOST_WIDE_INT_1.
(arm_asan_shadow_offset): Replace cast of 1 to unsigned
HOST_WIDE_INT with HOST_WIDE_INT_1U.
* config/arm/neon.md (vec_set<mode>): Replace cast of 1 to
HOST_WIDE_INT with HOST_WIDE_INT_1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236638 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * tree-cfg.h (should_remove_lhs_p): New predicate.
mpolacek [Tue, 24 May 2016 13:34:37 +0000 (13:34 +0000)] 
* tree-cfg.h (should_remove_lhs_p): New predicate.
* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Use it.
* gimplify.c (gimplify_modify_expr): Likewise.
* tree-cfg.c (verify_gimple_call): Likewise.
* tree-cfgcleanup.c (fixup_noreturn_call): Likewise.
* gimple-fold.c: Include "tree-cfg.h".
(gimple_fold_call): Use should_remove_lhs_p.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236637 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-24 Richard Biener <rguenther@suse.de>
rguenth [Tue, 24 May 2016 12:40:01 +0000 (12:40 +0000)] 
2016-05-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71253
* cfganal.h (control_dependences): Make robust against edge
and BB removal.
(control_dependences::control_dependences): Remove edge_list argument.
(control_dependences::get_edge): Remove.
(control_dependences::get_edge_src): Add.
(control_dependences::get_edge_dest): Likewise.
(control_dependences::m_el): Make a vector of edge src/dest index.
* cfganal.c (control_dependences::find_control_dependence): Adjust.
(control_dependences::control_dependences): Likewise.
(control_dependences::~control_dependence): Likewise.
(control_dependences::get_edge): Remove.
(control_dependences::get_edge_src): Add.
(control_dependences::get_edge_dest): Likewise.
* tree-ssa-dce.c (mark_control_dependent_edges_necessary): Use
get_edge_src.
(perform_tree_ssa_dce): Adjust.
* tree-loop-distribution.c (create_edge_for_control_dependence): Use
get_edge_src.
(pass_loop_distribution::execute): Adjust.  Do loop destroying
conditional on changed.

* gcc.dg/torture/pr71253.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236636 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM] PR target/69857 Remove bogus early return false; in gen_operands_ldrd_strd
ktkachov [Tue, 24 May 2016 11:32:35 +0000 (11:32 +0000)] 
[ARM] PR target/69857 Remove bogus early return false; in gen_operands_ldrd_strd

PR target/69857
* config/arm/arm.c (gen_operands_ldrd_strd): Remove bogus early
return.  Reindent transformation comment and mention the ARM state
behavior.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236635 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/testsuite/ChangeLog:
kugan [Tue, 24 May 2016 10:50:01 +0000 (10:50 +0000)] 
gcc/testsuite/ChangeLog:

2016-05-24  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/71252
* gfortran.dg/pr71252.f90: New test.

gcc/ChangeLog:

2016-05-24  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/71252
* tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Add stmt_to_insert after
build_and_add_sum creates new use stmt.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236634 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoAvoid unnecessary peeling for gaps with LD3
rsandifo [Tue, 24 May 2016 10:15:36 +0000 (10:15 +0000)] 
Avoid unnecessary peeling for gaps with LD3

vectorizable_load forces peeling for gaps if the vectorisation factor
is not a multiple of the group size, since in that case we'd normally load
beyond the original scalar accesses but drop the excess elements as part
of a following permute:

          if (loop_vinfo
              && ! STMT_VINFO_STRIDED_P (stmt_info)
              && (GROUP_GAP (vinfo_for_stmt (first_stmt)) != 0
                  || (!slp && vf % GROUP_SIZE (vinfo_for_stmt (first_stmt)) != 0)))

This isn't necessary for LOAD_LANES though, since it loads only the
data needed and does the permute itself.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vect-stmts.c (vectorizable_load): Reorder checks so that
load_lanes/grouped_load classification comes first.  Don't check
whether the vectorization factor is a multiple of the group size
for load_lanes.

gcc/testsuite/
* gcc.dg/vect/vect-load-lanes-peeling-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236632 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoFix GROUP_GAP for single-element interleaving
rsandifo [Tue, 24 May 2016 10:13:35 +0000 (10:13 +0000)] 
Fix GROUP_GAP for single-element interleaving

vectorizable_load had a curious "force_peeling" variable, with no
comment explaining why we need it for single-element interleaving
but not for other cases.  I think it's simply because we weren't
initialising the GROUP_GAP correctly for single loads.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* tree-vect-data-refs.c (vect_analyze_group_access_1): Set
GROUP_GAP for single-element interleaving.
* tree-vect-stmts.c (vectorizable_load): Remove force_peeling
variable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236631 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-24 Richard Biener <rguenther@suse.de>
rguenth [Tue, 24 May 2016 07:55:56 +0000 (07:55 +0000)] 
2016-05-24  Richard Biener  <rguenther@suse.de>

PR middle-end/70434
PR c/69504
c-family/
* c-common.h (convert_vector_to_pointer_for_subscript): Rename to ...
(convert_vector_to_array_for_subscript): ... this.
* c-common.c (convert_vector_to_pointer_for_subscript): Use a
VIEW_CONVERT_EXPR to an array type.  Rename to ...
(convert_vector_to_array_for_subscript): ... this.

cp/
* expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR.
* constexpr.c (cxx_eval_array_reference): Handle indexed
vectors.
* typeck.c (cp_build_array_ref): Adjust.

c/
* c-typeck.c (build_array_ref): Do not complain about indexing
non-lvalue vectors.  Adjust for function name change.

* tree-ssa.c (non_rewritable_mem_ref_base): Make sure to mark
bases which are accessed with non-invariant indices.
* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Re-write
constant index ARRAY_REFs of vectors into BIT_FIELD_REFs.

* c-c++-common/vector-subscript-4.c: New testcase.
* c-c++-common/vector-subscript-5.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236630 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
jvdelisle [Tue, 24 May 2016 06:16:00 +0000 (06:16 +0000)] 
2016-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/71123
* io/list_read (eat_spaces): Eat '\r' as part of spaces.
        fix change log

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236629 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
jvdelisle [Tue, 24 May 2016 06:11:21 +0000 (06:11 +0000)] 
2016-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/70684
* io/list_read (eat_spaces): Eat '\r' as part of spaces.

* gfortran.dg/namelist_90.f: New test

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236628 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
jvdelisle [Tue, 24 May 2016 04:15:39 +0000 (04:15 +0000)] 
2016-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/66461
* scanner.c (gfc_next_char_literal): Clear end_flag when adjusting
current locus back to old_locus.

* gfortran.dg/unexpected_eof.f: New test

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236627 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR c++/70344 - ICE with recursive constexpr
jason [Tue, 24 May 2016 03:34:55 +0000 (03:34 +0000)] 
PR c++/70344 - ICE with recursive constexpr

* constexpr.c (cxx_eval_call_expression): Check for
fun == current_function_decl again.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236625 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Tue, 24 May 2016 00:16:17 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236623 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/ChangeLog:
kugan [Tue, 24 May 2016 00:14:13 +0000 (00:14 +0000)] 
gcc/ChangeLog:

2016-05-24  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/71170
* tree-ssa-reassoc.c (struct operand_entry): Add field stmt_to_insert.
(add_to_ops_vec): Add stmt_to_insert.
(add_repeat_to_ops_vec): Init stmt_to_insert.
(insert_stmt_before_use): New.
(transform_add_to_multiply): Remove mult_stmt insertion and add it to ops vector.
(get_ops): Init stmt_to_insert.
(maybe_optimize_range_tests): Likewise.
(rewrite_expr_tree): Insert stmt_to_insert before use stmt.
(rewrite_expr_tree_parallel): Likewise.
(reassociate_bb): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236619 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[gcc]
meissner [Mon, 23 May 2016 23:42:52 +0000 (23:42 +0000)] 
[gcc]
2016-05-23  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/71201
* config/rs6000/altivec.md (altivec_vperm_<mode>_internal): Drop
ISA 3.0 xxperm fusion alternative.
(altivec_vperm_v8hiv16qi): Likewise.
(altivec_vperm_<mode>_uns_internal): Likewise.
(vperm_v8hiv4si): Likewise.
(vperm_v16qiv8hi): Likewise.

[gcc/testsuite]
2016-05-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
    Kelvin Nilsen  <kelvin@gcc.gnu.org>

* gcc.target/powerpc/p9-permute.c: Run test on big endian as well
as little endian.

[gcc]
2016-05-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
    Kelvin Nilsen  <kelvin@gcc.gnu.org>

* config/rs6000/rs6000.c (rs6000_expand_vector_set): Generate
vpermr/xxpermr on ISA 3.0.
(altivec_expand_vec_perm_le): Likewise.
* config/rs6000/altivec.md (UNSPEC_VPERMR): New unspec.
(altivec_vpermr_<mode>_internal): Add VPERMR/XXPERMR support for
ISA 3.0.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236617 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR c++/70584 - error with parenthesized builtin arg
jason [Mon, 23 May 2016 21:21:24 +0000 (21:21 +0000)] 
PR c++/70584 - error with parenthesized builtin arg

* cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call
maybe_undo_parenthesized_ref.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236616 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR c++/70735 - generic lambda and local static variable
jason [Mon, 23 May 2016 21:21:18 +0000 (21:21 +0000)] 
PR c++/70735 - generic lambda and local static variable

* pt.c (tsubst_copy): Just return a local variable from
non-template context.  Don't call rest_of_decl_compilation for
duplicated static locals.
(tsubst_decl): Set DECL_CONTEXT of local static from another
function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236615 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago/cp
paolo [Mon, 23 May 2016 20:50:10 +0000 (20:50 +0000)] 
/cp
2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70972
* method.c (forward_parm): Use cp_build_reference_type.

/testsuite
2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70972
* g++.dg/cpp0x/inh-ctor20.C: New.
* g++.dg/cpp0x/inh-ctor21.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236614 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-23 François Dumont <fdumont@gcc.gnu.org>
fdumont [Mon, 23 May 2016 20:03:35 +0000 (20:03 +0000)] 
2016-05-23  François Dumont  <fdumont@gcc.gnu.org>

* include/debug/safe_iterator.h
(_Safe_iterator<>::operator->()): Implement using underlying iterator
operator ->.
* include/debug/safe_local_iterator.h
(_Safe_local_iterator<>::operator->()): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236611 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago/cp
paolo [Mon, 23 May 2016 19:24:22 +0000 (19:24 +0000)] 
/cp
2016-05-22  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/69095
* parser.c (cp_parser_default_argument): Call
check_for_bare_parameter_packs.
(cp_parser_late_parsing_default_args): Likewise.

/testsuite
2016-05-22  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/69095
* g++.dg/cpp0x/variadic168.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236610 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago/cp
paolo [Mon, 23 May 2016 19:20:41 +0000 (19:20 +0000)] 
/cp
2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>

* pt.c (check_for_bare_parameter_packs): Improve error message
location for expressions.

/testsuite
2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/cpp0x/pr31445.C: Test column number too.
* g++.dg/cpp0x/pr32253.C: Likewise.
* g++.dg/cpp0x/variadic-ex13.C: Likewise.
* g++.dg/cpp0x/variadic36.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236609 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/i386/i386.h (IS_STACK_MODE): Enable for
uros [Mon, 23 May 2016 18:59:38 +0000 (18:59 +0000)] 
* config/i386/i386.h (IS_STACK_MODE): Enable for
TARGET_MIX_SSE_I387.  Rewrite using X87_FLOAT_MODE_P and
SSE_FLOAT_MODE_P macros.
* config/i386/i386.c (ix86_preferred_reload_class): Use
IS_STACK_MODE, INTEGER_CLASS_P and FLOAT_CLASS_P macros.  Cleanup
regclass processing for CONST_DOUBLE_P.
(ix86_preferred_output_reload_class): Use IS_STACK_MODE macro.
(ix86_rtx_costs): Remove redundant TARGET_80387 check
with IS_STACK_MODE macro.
* config/i386/i386.md: Replace SSE_FLOAT_MODE_P (DFmode)
with TARGET_SSE2.
(*movdf_internal): Use IS_STACK_MODE macro.
(*movsf_internal): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236607 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agomatch.pd: Relax some tree_nop_conversion_p
glisse [Mon, 23 May 2016 17:49:10 +0000 (17:49 +0000)] 
match.pd: Relax some tree_nop_conversion_p

2016-05-23  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (a * (1 << b), ~x & ~y, ~X ^ ~Y, (X ^ Y) ^ Y, ~ (-A),
~ (A - 1), ~(~X >> Y), ~(~X >>r Y)): Relax constraints.

gcc/testsuite/
* gcc.dg/fold-notshift-2.c: Adjust.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236601 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * tree-ssa-threadbackward.c (profitable_jump_thread_path): New function
law [Mon, 23 May 2016 16:59:29 +0000 (16:59 +0000)] 
* tree-ssa-threadbackward.c (profitable_jump_thread_path): New function
extracted from ...
(fsm_find_control_statement_thread_paths): Call it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236599 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[PR 71234] Avoid valgrind warning in ipa-cp
jamborm [Mon, 23 May 2016 16:31:14 +0000 (16:31 +0000)] 
[PR 71234] Avoid valgrind warning in ipa-cp

2016-05-23  Martin Jambor  <mjambor@suse.cz>

PR ipa/71234
* ipa-cp.c (ipa_get_indirect_edge_target_1): Only check value of
from_global_constant if t is not NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236598 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR c/49859
mpolacek [Mon, 23 May 2016 15:37:09 +0000 (15:37 +0000)] 
PR c/49859
* common.opt (Wswitch-unreachable): New option.
* doc/invoke.texi: Document -Wswitch-unreachable.
* gimplify.c (gimplify_switch_expr): Implement the -Wswitch-unreachable
warning.

* c-c++-common/Wswitch-unreachable-1.c: New test.
* gcc.dg/Wswitch-unreachable-1.c: New test.
* c-c++-common/goacc/sb-2.c (void foo): Add dg-warning.
* g++.dg/cpp0x/lambda/lambda-switch.C (main): Likewise.
* g++.dg/gomp/block-10.C: Likewise.
* gcc.dg/gomp/block-10.c: Likewise.
* g++.dg/gomp/block-9.C: Likewise.
* gcc.dg/gomp/block-9.c: Likewise.
* g++.dg/gomp/target-1.C: Likewise.
* g++.dg/gomp/target-2.C: Likewise.
* gcc.dg/gomp/target-1.c: Likewise.
* gcc.dg/gomp/target-2.c: Likewise.
* g++.dg/gomp/taskgroup-1.C: Likewise.
* gcc.dg/gomp/taskgroup-1.c: Likewise.
* gcc.dg/gomp/teams-1.c: Likewise.
* g++.dg/gomp/teams-1.C: Likewise.
* g++.dg/overload/error3.C: Likewise.
* g++.dg/tm/jump1.C: Likewise.
* g++.dg/torture/pr40335.C: Likewise.
* gcc.dg/c99-vla-jump-5.c: Likewise.
* gcc.dg/switch-warn-1.c: Likewise.
* gcc.dg/Wjump-misses-init-1.c: Use -Wno-switch-unreachable.
* gcc.dg/nested-func-1.c: Likewise.
* gcc.dg/pr67784-4.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236597 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[PR libffi/65567] libffi: Fix, and simply libffi_feature_test
tschwinge [Mon, 23 May 2016 14:54:04 +0000 (14:54 +0000)] 
[PR libffi/65567] libffi: Fix, and simply libffi_feature_test

libffi/
PR libffi/65567
* testsuite/lib/libffi.exp (libffi_feature_test): Fix, and simply.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236594 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * tree-ssa-address.c (copy_ref_info): Check NULL TMR_STEP when
amker [Mon, 23 May 2016 14:44:07 +0000 (14:44 +0000)] 
* tree-ssa-address.c (copy_ref_info): Check NULL TMR_STEP when
TMR_INDEX is non-NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236593 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-23 Richard Biener <rguenther@suse.de>
rguenth [Mon, 23 May 2016 14:09:35 +0000 (14:09 +0000)] 
2016-05-23  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71230
* tree-ssa-reassoc.c (acceptable_pow_call): Move initial condition...
(try_special_add_to_ops): ... here.  Always test for single-use.

* gfortran.dg/pr71230-1.f90: New testcase.
* gfortran.dg/pr71230-2.f90: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236591 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[hsa] Avoid segfault in hsa switch expansion
jamborm [Mon, 23 May 2016 11:45:13 +0000 (11:45 +0000)] 
[hsa] Avoid segfault in hsa switch expansion

2016-05-23  Martin Jambor  <mjambor@suse.cz>

* hsa-gen.c (gen_hsa_insns_for_switch_stmt): Create an empty
default block if a PHI node in the original one would be resized.

libgomp/
* testsuite/libgomp.hsa.c/switch-sbr-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236585 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoFix PR58135.
vekumar [Mon, 23 May 2016 09:48:54 +0000 (09:48 +0000)] 
Fix PR58135.

2016-05-23  Venkataramanan Kumar  <venkataramanan.kumar@amd.com>

PR tree-optimization/58135
* tree-vect-slp.c: When group size is not multiple
of vector size, allow splitting of store group at
vector boundary.

2016-05-23  Venkataramanan Kumar  <venkataramanan.kumar@amd.com>

* gcc.dg/vect/bb-slp-19.c:  Remove XFAIL.
* gcc.dg/vect/pr58135.c:  Add new.
* gfortran.dg/pr46519-1.f: Adjust test case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236582 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-23 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Mon, 23 May 2016 09:23:42 +0000 (09:23 +0000)] 
2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/53401
* g++.dg/cpp0x/decltype64.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236581 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM, AArch64] Add missing tests for vreinterpret, operating of fp16 type.
clyon [Mon, 23 May 2016 09:16:12 +0000 (09:16 +0000)] 
[ARM, AArch64] Add missing tests for vreinterpret, operating of fp16 type.

2016-05-23  Christophe Lyon  <christophe.lyon@linaro.org>

* gcc.target/aarch64/advsimd-intrinsics/vreinterpret.c: Add fp16 tests.
* gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p128.c: Likewise.
* gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p64.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236580 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM, AArch64] Add missing tests for intrinsics operating on poly64 and poly128 types.
clyon [Mon, 23 May 2016 09:14:37 +0000 (09:14 +0000)] 
[ARM, AArch64] Add missing tests for intrinsics operating on poly64 and poly128 types.

2016-05-23  Christophe Lyon  <christophe.lyon@linaro.org>

* gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h (result):
Add poly64x1_t and poly64x2_t cases if supported.
* gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h
(buffer, buffer_pad, buffer_dup, buffer_dup_pad): Likewise.
* gcc.target/aarch64/advsimd-intrinsics/p64_p128.c: New file.
* gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p128.c: New file.
* gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p64.c: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236579 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM, AArch64] Add missing vrnd{,a,m,n,p,x} tests.
clyon [Mon, 23 May 2016 09:05:34 +0000 (09:05 +0000)] 
[ARM, AArch64] Add missing vrnd{,a,m,n,p,x} tests.

2016-05-23  Christophe Lyon  <christophe.lyon@linaro.org>

* gcc.target/aarch64/advsimd-intrinsics/vrnd.c: New.
* gcc.target/aarch64/advsimd-intrinsics/vrndX.inc: New.
* gcc.target/aarch64/advsimd-intrinsics/vrnda.c: New.
* gcc.target/aarch64/advsimd-intrinsics/vrndm.c: New.
* gcc.target/aarch64/advsimd-intrinsics/vrndn.c: New.
* gcc.target/aarch64/advsimd-intrinsics/vrndp.c: New.
* gcc.target/aarch64/advsimd-intrinsics/vrndx.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236578 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM, AArch64] Add missing vstX_lane fp16 tests.
clyon [Mon, 23 May 2016 09:02:51 +0000 (09:02 +0000)] 
[ARM, AArch64] Add missing vstX_lane fp16 tests.

2016-05-23  Christophe Lyon  <christophe.lyon@linaro.org>

* gcc.target/aarch64/advsimd-intrinsics/vstX_lane.c: Add fp16 tests.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236577 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[ARM, AArch64] Add missing vtst_p16 and vtstq_p16, and vtst_p{8,16} and vtstq_p{8...
clyon [Mon, 23 May 2016 08:59:26 +0000 (08:59 +0000)] 
[ARM, AArch64] Add missing vtst_p16 and vtstq_p16, and vtst_p{8,16} and vtstq_p{8,16} tests.

2016-05-23  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* config/arm/arm_neon.h (vtst_p16, vtstq_p16): New.

gcc/testsuite/
* gcc.target/aarch64/advsimd-intrinsics/vtst.c: Add tests for
vtst_p8, vtstq_p8, vtst_p16 and vtstq_p16.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236576 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Mon, 23 May 2016 00:16:25 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236575 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * gcc.target/i386/avx512bw-kunpckdq-1.c (avx512bw_test): Use "m"
jakub [Sun, 22 May 2016 18:01:43 +0000 (18:01 +0000)] 
* gcc.target/i386/avx512bw-kunpckdq-1.c (avx512bw_test): Use "m"
constraint instead of "r".
* gcc.target/i386/avx512f-additional-reg-names.c (foo): Use vpxord
insn instead of vxorpd.
* gcc.target/i386/strinline.c: Add dg-require-effective-target ia32.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236571 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoRevert:
uros [Sun, 22 May 2016 17:20:10 +0000 (17:20 +0000)] 
Revert:

gcc/

PR target/70738
* common/config/i386/i386-common.c
(OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): New.
(ix86_handle_option): Disable MPX, MMX, SSE and x87 instructions
for -mgeneral-regs-only.
* config/i386/i386.c (ix86_option_override_internal): Don't
enable x87 instructions if only the general registers are
allowed.
* config/i386/i386.opt: Add -mgeneral-regs-only.
* doc/invoke.texi: Document -mgeneral-regs-only.

gcc/testsuite/

PR target/70738
* gcc.target/i386/pr70738-1.c: Likewise.
* gcc.target/i386/pr70738-2.c: Likewise.
* gcc.target/i386/pr70738-3.c: Likewise.
* gcc.target/i386/pr70738-4.c: Likewise.
* gcc.target/i386/pr70738-5.c: Likewise.
* gcc.target/i386/pr70738-6.c: Likewise.
* gcc.target/i386/pr70738-7.c: Likewise.
* gcc.target/i386/pr70738-8.c: Likewise.
* gcc.target/i386/pr70738-9.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236570 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/i386/sse.md (vec_set_lo_<mode><mask_name>,
jakub [Sun, 22 May 2016 10:28:06 +0000 (10:28 +0000)] 
* config/i386/sse.md (vec_set_lo_<mode><mask_name>,
vec_set_hi_<mode><mask_name>): Add && <mask_avx512dq_condition>
condition.  For !TARGET_AVX512DQ, emit 32x4 instruction instead
of 64x2.

* gcc.target/i386/avx512dq-vinsert-1.c: New test.
* gcc.target/i386/avx512vl-vinsert-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236569 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/i386/sse.md (vec_set_lo_v16hi, vec_set_hi_v16hi,
jakub [Sun, 22 May 2016 10:27:27 +0000 (10:27 +0000)] 
* config/i386/sse.md (vec_set_lo_v16hi, vec_set_hi_v16hi,
vec_set_lo_v32qi, vec_set_hi_v32qi): Add alternative with
v constraint instead of x and vinserti32x4 insn.

* gcc.target/i386/avx512vl-vinserti32x4-3.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236568 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/i386/sse.md (i128vldq): New mode iterator.
jakub [Sun, 22 May 2016 10:26:52 +0000 (10:26 +0000)] 
* config/i386/sse.md (i128vldq): New mode iterator.
(avx2_vbroadcasti128_<mode>, avx_vbroadcastf128_<mode>): Add
avx512dq and avx512vl alternatives.

* gcc.target/i386/avx512dq-vbroadcast-2.c: New test.
* gcc.target/i386/avx512vl-vbroadcast-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236567 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/i386/sse.md (avx2_vec_dupv4df): Use v instead of x
jakub [Sun, 22 May 2016 10:25:55 +0000 (10:25 +0000)] 
* config/i386/sse.md (avx2_vec_dupv4df): Use v instead of x
constraint, use maybe_evex prefix instead of vex.
(vec_dupv4sf): Use v constraint instead of x for output
operand except for noavx alternative, use Yv constraint
instead of x for input.  Use maybe_evex prefix instead of vex.
(*vec_dupv4si): Likewise.
(*vec_dupv2di): Likewise.

* gcc.target/i386/avx512vl-vbroadcast-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236566 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/testsuite/ChangeLog:
kugan [Sun, 22 May 2016 08:13:13 +0000 (08:13 +0000)] 
gcc/testsuite/ChangeLog:

2016-05-22  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/40921
* gcc.dg/tree-ssa/pr40921.c: New test.

gcc/ChangeLog:

2016-05-22  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/40921
        * tree-ssa-reassoc.c (try_special_add_to_ops): New.
        (linearize_expr_tree): Call try_special_add_to_ops.
        (reassociate_bb): Convert MULT_EXPR by (-1) to NEGATE_EXPR.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236564 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Sun, 22 May 2016 00:16:19 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236563 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/avr/avr.c (avr_expand_prologue): Add INCOMING_FRAME_SP_OFFSET
denisc [Sat, 21 May 2016 10:54:09 +0000 (10:54 +0000)] 
* config/avr/avr.c (avr_expand_prologue): Add INCOMING_FRAME_SP_OFFSET
to computed stack_usage.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236559 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR target/71103
denisc [Sat, 21 May 2016 10:47:27 +0000 (10:47 +0000)] 
PR target/71103
* config/avr/avr.md (define_expand "mov<mode>"): If the source
operand is subreg (symbol_ref) then move the symbol ref to register.

PR target/71103
* gcc.target/avr/pr71103.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236558 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * tree.c (array_at_struct_end_p): Look through MEM_REF.
hubicka [Sat, 21 May 2016 09:46:22 +0000 (09:46 +0000)] 
* tree.c (array_at_struct_end_p): Look through MEM_REF.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236557 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/testsuite/ChangeLog:
kugan [Sat, 21 May 2016 07:09:16 +0000 (07:09 +0000)] 
gcc/testsuite/ChangeLog:

2016-05-21  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/71179
* gcc.dg/tree-ssa/pr71179.c: New test.

gcc/ChangeLog:

2016-05-21  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/71179
* tree-ssa-reassoc.c (transform_add_to_multiply): Disallow float
VECTOR type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236554 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoDaily bump.
gccadmin [Sat, 21 May 2016 00:16:21 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236553 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoPR c/71115 - [4.9/5/6/7 Regression] Missing warning: excess elements
msebor [Fri, 20 May 2016 22:23:10 +0000 (22:23 +0000)] 
PR c/71115 - [4.9/5/6/7 Regression] Missing warning: excess elements
in struct initializer

gcc/c/ChangeLog:
2016-05-20  Martin Sebor  <msebor@redhat.com>

PR c/71115
* c-typeck.c (error_init): Use
expansion_point_location_if_in_system_header.
(warning_init): Same.

gcc/testsuite/ChangeLog:
2016-05-20  Martin Sebor  <msebor@redhat.com>

PR c/71115
* gcc.dg/init-excess-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236549 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * tree-vrp.c (compare_values_warnv): Simplify handling of symbolic
ebotcazou [Fri, 20 May 2016 21:46:58 +0000 (21:46 +0000)] 
* tree-vrp.c (compare_values_warnv): Simplify handling of symbolic
ranges by calling get_single_symbol and tidy up.  Look more closely
into NAME + CST1 vs CST2 comparisons if type overflow is undefined.
ada/
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>:
Make same-sized subtypes of signed base types signed.
* gcc-interface/utils.c (make_type_from_size): Adjust to above change.
(unchecked_convert): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236548 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * bitmap.c (bitmap_find_bit): Remove useless test.
law [Fri, 20 May 2016 21:32:56 +0000 (21:32 +0000)] 
    * bitmap.c (bitmap_find_bit): Remove useless test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236546 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoThis fixes a bug in my r236491: on nvptx, functions without prologue
segher [Fri, 20 May 2016 21:31:17 +0000 (21:31 +0000)] 
This fixes a bug in my r236491: on nvptx, functions without prologue
would not get an epilogue either.

* function.c (thread_prologue_and_epilogue_insns): Commit the
insertion of the epilogue.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236545 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago[PR 70884] Constant pool SRA fix
jamborm [Fri, 20 May 2016 21:04:31 +0000 (21:04 +0000)] 
[PR 70884] Constant pool SRA fix

2016-05-20  Martin Jambor  <mjambor@suse.cz>

PR tree-optimization/70884
* tree-sra.c (initialize_constant_pool_replacements): Do not check
should_scalarize_away_bitmap and cannot_scalarize_away_bitmap bits.
(sort_and_splice_var_accesses): Do not consider multiple scalar reads
of constant pool data as a reason for scalarization.

testsuite/
* gcc.dg/tree-ssa/pr70919.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236544 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if
nathan [Fri, 20 May 2016 20:58:21 +0000 (20:58 +0000)] 
* constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if
... goto.
(cxx_eval_call_expression): Fix comment grammar.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236543 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/arm/arm.c (arm_expand_prologue): Set the stack usage to 0
ebotcazou [Fri, 20 May 2016 20:49:33 +0000 (20:49 +0000)] 
* config/arm/arm.c (arm_expand_prologue): Set the stack usage to 0
for naked functions.
(thumb1_expand_prologue): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236539 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoThis patch changes some of the dejagnu options to better restrict
seurer [Fri, 20 May 2016 20:31:52 +0000 (20:31 +0000)] 
This patch changes some of the dejagnu options to better restrict
where the test cases run so that they will no longer cause failures on
power7 machines.

Based on a subsequent patch I also updated the code formatting (indentation,
etc.) for the code from the original patch (r235577) in both the test cases
and in rs6000-c.c.

[gcc]

2016-05-20  Bill Seurer  <seurer@linux.vnet.ibm.com>

* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Fix
code formatting in ALTIVEC_BUILTIN_VEC_ADDE section.

[gcc/testsuite]

2016-05-20  Bill Seurer  <seurer@linux.vnet.ibm.com>

* gcc.target/powerpc/vec-adde.c: Change dejagnu options, fix code
formatting.
* gcc.target/powerpc/vec-adde-int128.c: Change dejagnu options, fix code
formatting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236537 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * config/nvptx/nptx.c (nvptx_option_override): Only set
nathan [Fri, 20 May 2016 19:52:50 +0000 (19:52 +0000)] 
* config/nvptx/nptx.c (nvptx_option_override): Only set
flag_toplevel_reorder, if not explicitly specified.  Set
flag_no_common, unless explicitly specified.

testsuite/
* gcc.target/nvptx/uninit-decl.c: Force common storage,  add
non-common cases.
* gcc.dg/tree-ssa/ssa-store-ccp-2.c: Add -fcommon.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236532 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agojit: implement gcc_jit_rvalue_set_bool_require_tail_call
dmalcolm [Fri, 20 May 2016 19:12:49 +0000 (19:12 +0000)] 
jit: implement gcc_jit_rvalue_set_bool_require_tail_call

This implements the libgccjit support for must-tail-call via
a new:
  gcc_jit_rvalue_set_bool_require_tail_call
API entrypoint.

(I didn't implement a wrapper for this within the C++ bindings)

gcc/jit/ChangeLog:
* docs/topics/compatibility.rst: Add LIBGCCJIT_ABI_6.
* docs/topics/expressions.rst (Function calls): Add documentation
of gcc_jit_rvalue_set_bool_require_tail_call.
* docs/_build/texinfo/libgccjit.texi: Regenerate.
* jit-common.h (gcc::jit::recording::base_call): Add forward decl.
* jit-playback.c: Within namespace gcc::jit::playback...
(context::build_call) Add "require_tail_call" param and use it
to set CALL_EXPR_MUST_TAIL_CALL.
(context::new_call): Add "require_tail_call" param.
(context::new_call_through_ptr): Likewise.
* jit-playback.h: Within namespace gcc::jit::playback...
(context::new_call: Add "require_tail_call" param.
(context::new_call_through_ptr): Likewise.
(context::build_call): Likewise.
* jit-recording.c: Within namespace gcc::jit::recording...
(base_call::base_call): New constructor.
(base_call::write_reproducer_tail_call): New method.
(call::call): Update for inheritance from base_call.
(call::replay_into): Provide m_require_tail_call to call
to new_call.
(call::write_reproducer): Call write_reproducer_tail_call.
(call_through_ptr::call_through_ptr): Update for inheritance from
base_call.
(call_through_ptr::replay_into): Provide m_require_tail_call to call
to new_call_through_ptr.
(recording::call_through_ptr::write_reproducer): Call
write_reproducer_tail_call.
* jit-recording.h: Within namespace gcc::jit::recording...
(rvalue::dyn_cast_base_call): New virtual function.
(class base_call): New subclass of class rvalue.
(class call): Inherit from base_call rather than directly from
rvalue, moving get_precedence and m_args to base_call.
(class call_through_ptr): Likewise.
* libgccjit.c (gcc_jit_rvalue_set_bool_require_tail_call): New
function.
* libgccjit.h
(LIBGCCJIT_HAVE_gcc_jit_rvalue_set_bool_require_tail_call): New
macro.
(gcc_jit_rvalue_set_bool_require_tail_call): New function.
* libgccjit.map (LIBGCCJIT_ABI_6): New.
(gcc_jit_rvalue_set_bool_require_tail_call): Add.

gcc/testsuite/ChangeLog:
* jit.dg/all-non-failing-tests.h: Add
test-factorial-must-tail-call.c.
* jit.dg/test-error-impossible-must-tail-call.c: New test case.
* jit.dg/test-factorial-must-tail-call.c: New test case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236531 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agocalls.c: fix warning on targets without REG_PARM_STACK_SPACE
dmalcolm [Fri, 20 May 2016 18:52:56 +0000 (18:52 +0000)] 
calls.c: fix warning on targets without REG_PARM_STACK_SPACE

gcc/ChangeLog:
* calls.c (can_implement_as_sibling_call_p): Mark param
reg_parm_stack_space with ATTRIBUTE_UNUSED.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236527 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR fortran/71204
jakub [Fri, 20 May 2016 18:49:24 +0000 (18:49 +0000)] 
PR fortran/71204
* frontend-passes.c (realloc_string_callback): Clear inserted_block
and changed_statement before calling create_var.

* gfortran.dg/pr71204.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236525 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * gcc/config/i386/i386.c (ix86_rtx_costs) <case CONST_DOUBLE>:
uros [Fri, 20 May 2016 17:44:29 +0000 (17:44 +0000)] 
* gcc/config/i386/i386.c (ix86_rtx_costs) <case CONST_DOUBLE>:
Use IS_STACK_MODE when calculating cost of standard 80387 constants.
Fallthru to CONST_VECTOR case to calculate cost of standard SSE
constants.
<case CONST_WIDE_INT>: Calculate cost of (MEM (SYMBOL_REF)).
(ix86_legitimate_constant_p): Use CASE_CONST_SCALAR_INT
and CASE_CONST_ANY.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236524 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago gcc/
cesar [Fri, 20 May 2016 17:33:44 +0000 (17:33 +0000)] 
gcc/
* config/nvptx/nvptx.md (sincossf3): New pattern.

gcc/testsuite/
* gcc.target/nvptx/sincos.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236523 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago/cp
paolo [Fri, 20 May 2016 16:24:58 +0000 (16:24 +0000)] 
/cp
2016-05-20  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70572
* decl.c (cp_finish_decl): Check do_auto_deduction return value
and return immediately in case of erroneous code.

/testsuite
2016-05-20  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70572
* g++.dg/cpp1y/auto-fn31.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236522 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoAdd -mgeneral-regs-only option
hjl [Fri, 20 May 2016 16:06:39 +0000 (16:06 +0000)] 
Add -mgeneral-regs-only option

X86 Linux kernel is compiled only with integer instructions.  Currently,

-mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -mno-80387
-mno-fp-ret-in-387  -mskip-rax-setup

is used to compile kernel.  If we add another non-integer feature, it
has to be turned off.  We can add a -mgeneral-regs-only option, similar
to AArch64, to disable all non-integer features so that kernel doesn't
need a long list and the same option will work for future compilers.
It can also be used to compile interrupt handler.

gcc/

PR target/70738
* common/config/i386/i386-common.c
(OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): New.
(ix86_handle_option): Disable MPX, MMX, SSE and x87 instructions
for -mgeneral-regs-only.
* config/i386/i386.c (ix86_option_override_internal): Don't
enable x87 instructions if only the general registers are
allowed.
* config/i386/i386.opt: Add -mgeneral-regs-only.
* doc/invoke.texi: Document -mgeneral-regs-only.

gcc/testsuite/

PR target/70738
* gcc.target/i386/pr70738-1.c: Likewise.
* gcc.target/i386/pr70738-2.c: Likewise.
* gcc.target/i386/pr70738-3.c: Likewise.
* gcc.target/i386/pr70738-4.c: Likewise.
* gcc.target/i386/pr70738-5.c: Likewise.
* gcc.target/i386/pr70738-6.c: Likewise.
* gcc.target/i386/pr70738-7.c: Likewise.
* gcc.target/i386/pr70738-8.c: Likewise.
* gcc.target/i386/pr70738-9.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236520 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoThis patch adds support for the signed and unsigned int versions of the
seurer [Fri, 20 May 2016 15:25:04 +0000 (15:25 +0000)] 
This patch adds support for the signed and unsigned int versions of the
vec_addec altivec builtins from the Power Architecture 64-Bit ELF V2 ABI
OpenPOWER ABI for Linux Supplement (16 July 2015 Version 1.1). There are
many of the builtins that are missing and this is part of a series
of patches to add them.

There aren't instructions for the int versions of vec_addec so the
output code is built from other built-ins that do have instructions
which in this case is the following.

vec_addec (va, vb, carryv) == vec_or (vec_addc (va, vb),
vec_addc(vec_add(va, vb),
 vec_and (carryv, 0x1)))

The new test cases are executable tests which verify that the generated
code produces expected values. C macros were used so that the same
test case could be used for both the signed and unsigned versions. An
extra executable test case is also included to ensure that the modified
support for the __int128 versions of vec_addec is not broken. The same
test case could not be used for both int and __int128 because of some
differences in loading and storing the vectors.

Bootstrapped and tested on powerpc64le-unknown-linux-gnu and
powerpc64-unknown-linux-gnu with no regressions. Is this ok for trunk?

[gcc]

2016-05-20  Bill Seurer  <seurer@linux.vnet.ibm.com>

* config/rs6000/rs6000-builtin.def (vec_addec): Change vec_addec to a
special case builtin.
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
support for ALTIVEC_BUILTIN_VEC_ADDEC.
* config/rs6000/rs6000.c (altivec_init_builtins): Add definition
for __builtin_vec_addec.

[gcc/testsuite]

2016-05-20  Bill Seurer  <seurer@linux.vnet.ibm.com>

* gcc.target/powerpc/vec-addec.c: New test.
* gcc.target/powerpc/vec-addec-int128.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236515 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoImplement CALL_EXPR_MUST_TAIL_CALL
dmalcolm [Fri, 20 May 2016 14:20:03 +0000 (14:20 +0000)] 
Implement CALL_EXPR_MUST_TAIL_CALL

This patch implements support for marking CALL_EXPRs
as being mandatory for tail-call-optimization. expand_call
tries harder to perform the optimization on such CALL_EXPRs,
and issues an error if it fails.

Currently this flag isn't accessible from any frontend,
so the patch uses a plugin for testing the functionality.

gcc/ChangeLog:
* calls.c (maybe_complain_about_tail_call): New function.
(initialize_argument_information): Call
maybe_complain_about_tail_call when clearing *may_tailcall.
(can_implement_as_sibling_call_p): Call
maybe_complain_about_tail_call when returning false.
(expand_call): Read CALL_EXPR_MUST_TAIL_CALL and, if set,
ensure try_tail_call is set.  Call maybe_complain_about_tail_call
if tail-call optimization fails.
* cfgexpand.c (expand_call_stmt): Initialize
CALL_EXPR_MUST_TAIL_CALL from gimple_call_must_tail_p.
* gimple-pretty-print.c (dump_gimple_call): Dump
gimple_call_must_tail_p.
* gimple.c (gimple_build_call_from_tree): Call
gimple_call_set_must_tail with the value of
CALL_EXPR_MUST_TAIL_CALL.
* gimple.h (enum gf_mask): Add GF_CALL_MUST_TAIL_CALL.
(gimple_call_set_must_tail): New function.
(gimple_call_must_tail_p): New function.
* print-tree.c (print_node): Update printing of TREE_STATIC
to reflect its use for CALL_EXPR_MUST_TAIL_CALL.
* tree-core.h (struct tree_base): Add MUST_TAIL_CALL to the
trailing comment listing applicable flags.
* tree.h (CALL_EXPR_MUST_TAIL_CALL): New macro.

gcc/testsuite/ChangeLog:
* gcc.dg/plugin/must-tail-call-1.c: New test case.
* gcc.dg/plugin/must-tail-call-2.c: New test case.
* gcc.dg/plugin/must_tail_call_plugin.c: New file.
* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236514 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoIntroduce can_implement_as_sibling_call_p
dmalcolm [Fri, 20 May 2016 14:07:56 +0000 (14:07 +0000)] 
Introduce can_implement_as_sibling_call_p

gcc/ChangeLog:
* calls.c (expand_call): Move "Rest of purposes for tail call
optimizations to fail" to...
(can_implement_as_sibling_call_p): ...this new function, and
split into multiple "if" statements.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236513 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * cfgloop.h (expected_loop_iterations_unbounded,
hubicka [Fri, 20 May 2016 13:19:59 +0000 (13:19 +0000)] 
* cfgloop.h (expected_loop_iterations_unbounded,
expected_loop_iterations): Unconstify.
* cfgloopanal.c (expected_loop_iterations_unbounded): Sanity check the
profile with known upper bound; return 3 when profile is absent.
(expected_loop_iterations): Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236511 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * loop-doloop.c (doloop_optimize): Use get_estimated_loop_iterations_int
hubicka [Fri, 20 May 2016 12:59:08 +0000 (12:59 +0000)] 
* loop-doloop.c (doloop_optimize): Use get_estimated_loop_iterations_int
and get_max_loop_iterations_int.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236509 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago * gcc.dg/tree-ssa/prefetch-5.c: xfail.
hubicka [Fri, 20 May 2016 12:41:45 +0000 (12:41 +0000)] 
* gcc.dg/tree-ssa/prefetch-5.c: xfail.
* tree-ssa-loop-niter.c (idx_infer_loop_bounds): We can not produce
realistic upper bounds here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236508 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2016-05-20 Thomas Preud'homme <thomas.preudhomme@arm.com>
thopre01 [Fri, 20 May 2016 12:36:57 +0000 (12:36 +0000)] 
2016-05-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    PR libstdc++/71081
    * testsuite/experimental/memory_resource/1.cc: Add required argument
    to dg-require-atomic-builtins.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236507 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR c++/71210
jakub [Fri, 20 May 2016 11:58:49 +0000 (11:58 +0000)] 
PR c++/71210
* gimple-fold.c (gimple_fold_call): Do not remove lhs of noreturn
calls if the LHS is variable length or has addressable type.
If targets[0]->decl is a noreturn call with void return type and
zero arguments, adjust fntype and remove lhs in that case.

* g++.dg/opt/pr71210-1.C: New test.
* g++.dg/opt/pr71210-2.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236506 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago PR tree-optimization/29756
jakub [Fri, 20 May 2016 11:55:58 +0000 (11:55 +0000)] 
PR tree-optimization/29756
gcc.dg/tree-ssa/vector-6.c: Add -Wno-psabi -w to dg-options.
Add -msse2 for x86 and -maltivec for powerpc.  Use scan-tree-dump-times
only on selected targets where V4SImode vectors are known to be
supported.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236505 138bc75d-0d04-0410-961f-82ee72b054a4