platform/upstream/gcc.git
8 years agoPR c++/71227 - specializing hidden friend
Jason Merrill [Tue, 31 May 2016 19:16:26 +0000 (15:16 -0400)]
PR c++/71227 - specializing hidden friend

* pt.c (check_explicit_specialization): Give better diagnostic about
specializing a hidden friend.

From-SVN: r236941

8 years agore PR ada/71317 (Compiling gnat for rtems fails at s-taprop.adb)
Eric Botcazou [Tue, 31 May 2016 18:59:36 +0000 (18:59 +0000)]
re PR ada/71317 (Compiling gnat for rtems fails at s-taprop.adb)

* s-osinte-kfreebsd-gnu.ads (clock_getres): Define.
(Get_Page_Size): Remove duplicate and return int.

PR ada/71317
* s-osinte-rtems.ads (clock_getres): Define.
(Get_Page_Size): Remove duplicate and return int.

From-SVN: r236938

8 years agore PR c++/71248 (crash on in-class initializer of array of pointer to member)
Paolo Carlini [Tue, 31 May 2016 17:17:29 +0000 (17:17 +0000)]
re PR c++/71248 (crash on in-class initializer of array of pointer to member)

/cp
2016-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71248
* decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION
to obtain correct locations; avoid redundant diagnostics on
out-of-class definitions.

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

PR c++/71248
* g++.dg/cpp0x/pr71248.C: New.
* g++.dg/cpp0x/auto7.C: Test column numbers too.
* g++.dg/cpp0x/constexpr-static8.C: Likewise.
* g++.dg/init/new37.C: Likewise.
* g++.dg/template/static1.C: Likewise.
* g++.dg/template/static2.C: Likewise.

From-SVN: r236931

8 years agosh.h (ASM_OUTPUT_SYMBOL_REF): Remove macro and use the default implementation.
Oleg Endo [Tue, 31 May 2016 15:57:15 +0000 (15:57 +0000)]
sh.h (ASM_OUTPUT_SYMBOL_REF): Remove macro and use the default implementation.

gcc/
* config/sh/sh.h (ASM_OUTPUT_SYMBOL_REF): Remove macro and use the
default implementation.

From-SVN: r236930

8 years ago* dwarf2out.c (cur_line_info_table): Add GTY marker.
Nathan Sidwell [Tue, 31 May 2016 15:54:43 +0000 (15:54 +0000)]
* dwarf2out.c (cur_line_info_table): Add GTY marker.

From-SVN: r236929

8 years agoRemove SH5 target regs.
Oleg Endo [Tue, 31 May 2016 15:49:13 +0000 (15:49 +0000)]
Remove SH5 target regs.

gcc/
* config/sh/constraints.md (b): Remove constraint.
* config/sh/predicates.md (arith_reg_operand): Remove TARGET_REGISTER_P.
* config/sh/sh-modes.def (PDI): Remove.
* config/sh/sh.c (sh_target_reg_class,
sh_optimize_target_register_callee_saved): Remove functions.
(sh_option_override): Don't set MASK_SAVE_ALL_TARGET_REGS.
(sh_expand_epilogue): Update comment.
(sh_hard_regno_mode_ok, sh_register_move_cost, calc_live_regs,
sh_secondary_reload): Remove TARGET_REGS related code.
* config/sh/sh.h (FIRST_TARGET_REG, LAST_TARGET_REG,
TARGET_REGISTER_P): Remove macros.
(SH_DBX_REGISTER_NUMBER, REG_ALLOC_ORDER): Remove target regs.
* config/sh/sh.md (PR_MEDIA_REG, T_MEDIA_REG, FR23_REG, TR0_REG,
TR1_REG, TR2_REG): Remove constants.
* config/sh/sh.opt (SAVE_ALL_TARGET_REGS): Remove.

From-SVN: r236928

8 years agoSimplify SH DImode add, sub, neg patterns.
Oleg Endo [Tue, 31 May 2016 15:27:54 +0000 (15:27 +0000)]
Simplify SH DImode add, sub, neg patterns.

* config/sh/sh.md (adddi3, subdi3, negdi2, abs<mode>2): Remove
define_expand patterns.
(adddi3_compact): Rename to adddi3.
(subdi3_compact): Rename to subdi3.
(*negdi2): Rename to negdi2.
(*abs<mode>2): Rename to abs<mode>2.

From-SVN: r236927

8 years agoFix wrong-code issues of RX atomic operations.
Oleg Endo [Tue, 31 May 2016 15:06:25 +0000 (15:06 +0000)]
Fix wrong-code issues of RX atomic operations.

gcc/
* config/rx/rx.md (FETCHOP_NO_MINUS): New code iterator.
(atomic_<fetchop_name>_fetchsi): Extract minus operator into ...
(atomic_sub_fetchsi): ... this new pattern.
(mvtc): Add CC_REG clobber.

From-SVN: r236926

8 years agoScan %\[re\]di instead of %rdi
H.J. Lu [Tue, 31 May 2016 15:00:25 +0000 (15:00 +0000)]
Scan %\[re\]di instead of %rdi

Since x32 may use 32-bit register in address, we should scan %\[re\]di
instead of %rdi.

* gcc.target/i386/avx512vl-vbroadcast-3.c: Scan %\[re\]di
instead of %rdi.
* gcc.target/i386/avx512vl-vcvtps2ph-3.c: Likewise.

From-SVN: r236925

8 years agogimplify.c (gimplify_switch_expr): Also handle GIMPLE_TRY.
Marek Polacek [Tue, 31 May 2016 14:55:05 +0000 (14:55 +0000)]
gimplify.c (gimplify_switch_expr): Also handle GIMPLE_TRY.

* gimplify.c (gimplify_switch_expr): Also handle GIMPLE_TRY.

* c-c++-common/Wswitch-unreachable-3.c: New test.
* g++.dg/warn/Wswitch-unreachable-1.C: New test.

From-SVN: r236924

8 years ago[AArch64] Use aarch64_fusion_enabled_p to check for insn fusion capabilities
Kyrylo Tkachov [Tue, 31 May 2016 12:35:42 +0000 (12:35 +0000)]
[AArch64] Use aarch64_fusion_enabled_p to check for insn fusion capabilities

* config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Use
aarch64_fusion_enabled_p to check for fusion capabilities.

From-SVN: r236921

8 years agore PR tree-optimization/71352 (ICE at -O1 and above on x86_64-linux-gnu: in zero_one_...
Richard Biener [Tue, 31 May 2016 12:18:15 +0000 (12:18 +0000)]
re PR tree-optimization/71352 (ICE at -O1 and above on x86_64-linux-gnu: in zero_one_operation, at tree-ssa-reassoc.c:1251)

2016-05-31  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71352
* tree-ssa-reassoc.c (zero_one_operation): Handle op equal to
minus one and a negate.

* gcc.dg/tree-ssa/reassoc-45.c: New testcase.

From-SVN: r236920

8 years agobuiltins.c (java_builtins): Use popcount* and bswap* builtins to implement bitCount...
Roger Sayle [Tue, 31 May 2016 11:30:56 +0000 (11:30 +0000)]
builtins.c (java_builtins): Use popcount* and bswap* builtins to implement bitCount() and reverseBytes()...

2016-05-31  Roger Sayle  <roger@nextmovesoftware.com>

gcc/java:
* builtins.c (java_builtins): Use popcount* and bswap* builtins to
implement bitCount() and reverseBytes() methods in java.lang.Integer
and friends.
(initialize_builtins): Annotate math builtins with ECF_LEAF.  Call
define_builtin for the new popcount* and bswap* builtins.

libjava:
* testsuite/libjava.lang/BuiltinBitCount.java: New test case.
* testsuite/libjava.lang/BuiltinReverseBytes.java: Likewise.

From-SVN: r236919

8 years agoDon't needlessly clear xmemdup allocated memory.
Alan Modra [Tue, 31 May 2016 11:08:54 +0000 (20:38 +0930)]
Don't needlessly clear xmemdup allocated memory.

* xmemdup.c (xmemdup): Use xmalloc rather than xcalloc.

From-SVN: r236917

8 years ago[AArch64] Remove aarch64_simd_attr_length_move
Kyrylo Tkachov [Tue, 31 May 2016 11:04:41 +0000 (11:04 +0000)]
[AArch64] Remove aarch64_simd_attr_length_move

* config/aarch64/aarch64.c (aarch64_simd_attr_length_move): Delete.
* config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_move):
Delete prototype.
* config/aarch64/iterators.md (insn_count): Add descriptive comment.
* config/aarch64/aarch64-simd.md (*aarch64_mov<mode>, VSTRUCT modes):
Remove use of aarch64_simd_attr_length_move, set length attribute
directly.
(*aarch64_be_movoi): Likewise.
(*aarch64_be_movci): Likewise.
(*aarch64_be_movxi): Likewise.

From-SVN: r236916

8 years agoloop-init.c (gate): Do not enale RTL loop unroller with -fpeel-loops.
Jan Hubicka [Tue, 31 May 2016 10:42:59 +0000 (12:42 +0200)]
loop-init.c (gate): Do not enale RTL loop unroller with -fpeel-loops.

* loop-init.c (gate): Do not enale RTL loop unroller with -fpeel-loops.
It no longer does that.
* toplev.c (process_options): Do not enable flag_web with -fpeel-loops.

From-SVN: r236915

8 years ago[PATCH] AARCH64: Remove spurious attribute __unused__ from NEON intrinsic
Wladimir J. van der Laan [Tue, 31 May 2016 10:30:03 +0000 (10:30 +0000)]
[PATCH] AARCH64: Remove spurious attribute __unused__ from NEON intrinsic

gcc/

* config/aarch64/arm_neon.h (vdupb_laneq_s8): Remove spurious
attribute __unused__.

From-SVN: r236914

8 years agoarm-protos.h (arm_arch_thumb1): Declare.
Thomas Preud'homme [Tue, 31 May 2016 10:10:18 +0000 (10:10 +0000)]
arm-protos.h (arm_arch_thumb1): Declare.

2016-05-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm-protos.h (arm_arch_thumb1): Declare.
    * config/arm/arm.c (arm_arch_thumb1): Define.
    (arm_option_override): Initialize arm_arch_thumb1.
    * config/arm/arm.h (arm_arch_thumb1): Declare.
    (TARGET_ARM_ARCH_ISA_THUMB): Use arm_arch_thumb to determine if target
    support Thumb-1 ISA.

    gcc/testsuite/
    * gcc.target/arm/armv5_thumb_isa.c: New test.

From-SVN: r236913

8 years agoMake analyze_brprob.py executable.
Martin Liska [Tue, 31 May 2016 08:52:31 +0000 (08:52 +0000)]
Make analyze_brprob.py executable.

From-SVN: r236911

8 years agoAVX-512. Limit constraint for scalar operand in split to AVX-512VL.
Kirill Yukhin [Tue, 31 May 2016 08:05:24 +0000 (08:05 +0000)]
AVX-512. Limit constraint for scalar operand in split to AVX-512VL.

PR target/71346
gcc/
* config/i386/sse.md (define_insn_and_split "*vec_extractv4sf_0"): Use
`Yv' for scalar operand.
testsuite/
* gcc.target/i386/pr71346.c: New test.

From-SVN: r236909

8 years agoHandle 3-arg phi in copy_bb_and_scalar_dependences
Tom de Vries [Tue, 31 May 2016 07:07:26 +0000 (07:07 +0000)]
Handle 3-arg phi in copy_bb_and_scalar_dependences

2016-05-31  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/69068
* graphite-isl-ast-to-gimple.c (copy_bb_and_scalar_dependences): Handle
phis with more than two args.

* gcc.dg/graphite/pr69068.c: New test.

From-SVN: r236907

8 years agoDaily bump.
GCC Administrator [Tue, 31 May 2016 00:16:26 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r236906

8 years agoPR c++/71306 - bogus -Wplacement-new with an array element
Martin Sebor [Mon, 30 May 2016 22:56:43 +0000 (22:56 +0000)]
PR c++/71306 - bogus -Wplacement-new with an array element

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

PR c++/71306
* init.c (warn_placement_new_too_small): Handle placement new arguments
that are elements of arrays more carefully.  Remove a pointless loop.

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

PR c++/71306
* g++.dg/warn/Wplacement-new-size-3.C: New test.

From-SVN: r236902

8 years agore PR c++/71349 (Combined async target clause parsing issues)
Jakub Jelinek [Mon, 30 May 2016 21:36:24 +0000 (23:36 +0200)]
re PR c++/71349 (Combined async target clause parsing issues)

PR c++/71349
* c-parser.c (c_parser_omp_for): Don't disallow nowait clause
when combined with target construct.

* parser.c (cp_parser_omp_for): Don't disallow nowait clause
when combined with target construct.
(cp_parser_omp_parallel): Pass cclauses == NULL as last argument
to cp_parser_omp_all_clauses.

* c-omp.c (c_omp_split_clauses): Put OMP_CLAUSE_DEPEND to
C_OMP_CLAUSE_SPLIT_TARGET.  Put OMP_CLAUSE_NOWAIT to
C_OMP_CLAUSE_SPLIT_TARGET if combined with target construct,
instead of C_OMP_CLAUSE_SPLIT_FOR.

* c-c++-common/gomp/clauses-1.c (bar): Add dd argument.  Add
nowait depend(inout: dd[0]) clauses where permitted.

From-SVN: r236900

8 years agoconfig.gcc: Move hard float support for arm*hf*-*-freebsd* into armv6*-*-freebsd...
Andreas Tobler [Mon, 30 May 2016 20:03:57 +0000 (22:03 +0200)]
config.gcc: Move hard float support for arm*hf*-*-freebsd* into armv6*-*-freebsd* for...

2016-05-30  Andreas Tobler  <andreast@gcc.gnu.org>

    * config.gcc: Move hard float support for arm*hf*-*-freebsd* into
    armv6*-*-freebsd* for FreeBSD 11. Eliminate the arm*hf*-*-freebsd*
    target.

From-SVN: r236898

8 years agoconfig.gcc (sparc*-*-*): Support cpu_32, cpu_64, tune_32 and tune_64.
Jose E. Marchesi [Mon, 30 May 2016 19:33:34 +0000 (21:33 +0200)]
config.gcc (sparc*-*-*): Support cpu_32, cpu_64, tune_32 and tune_64.

2016-05-30  Jose E. Marchesi  <jose.marchesi@oracle.com>

* config.gcc (sparc*-*-*): Support cpu_32, cpu_64, tune_32 and
tune_64.
* doc/install.texi (--with-cpu-32, --with-cpu-64): Document
support on SPARC.
* config/sparc/linux64.h (OPTION_DEFAULT_SPECS): Add entries for
cpu_32, cpu_64, tune_32 and tune_64.
* config/sparc/sol2.h (OPTION_DEFAULT_SPECS): Likewise.

From-SVN: r236897

8 years agore PR c++/71238 (Undeclared function message imprecisely points to error column)
Paolo Carlini [Mon, 30 May 2016 19:18:13 +0000 (19:18 +0000)]
re PR c++/71238 (Undeclared function message imprecisely points to error column)

/cp
2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71238
* lex.c (unqualified_name_lookup_error): Take a location too.
(unqualified_fn_lookup_error): Take a cp_expr.
* cp-tree.h (unqualified_name_lookup_error,
unqualified_fn_lookup_error): Adjust declarations.
* semantics.c (perform_koenig_lookup): Adjust
unqualified_fn_lookup_error call, pass the location of
the identifier too as part of a cp_expr.

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

PR c++/71238
* g++.dg/parse/pr71238.C: New.
* g++.dg/concepts/friend1.C: Test column numbers too.
* g++.dg/cpp0x/initlist31.C: Likewise.
* g++.dg/cpp0x/pr51420.C: Likewise.
* g++.dg/cpp0x/udlit-declare-neg.C: Likewise.
* g++.dg/cpp0x/udlit-member-neg.C: Likewise.
* g++.dg/ext/builtin3.C: Likewise.
* g++.dg/lookup/friend12.C: Likewise.
* g++.dg/lookup/friend7.C: Likewise.
* g++.dg/lookup/koenig1.C: Likewise.
* g++.dg/lookup/koenig5.C: Likewise.
* g++.dg/lookup/used-before-declaration.C: Likewise.
* g++.dg/overload/koenig1.C: Likewise.
* g++.dg/template/crash65.C: Likewise.
* g++.dg/template/friend57.C: Likewise.
* g++.dg/warn/Wshadow-5.C: Likewise.
* g++.dg/warn/Wunused-8.C: Likewise.
* g++.old-deja/g++.bugs/900211_01.C: Likewise.
* g++.old-deja/g++.jason/lineno5.C: Likewise.
* g++.old-deja/g++.jason/member.C: Likewise.
* g++.old-deja/g++.jason/report.C: Likewise.
* g++.old-deja/g++.jason/scoping12.C: Likewise.
* g++.old-deja/g++.law/visibility20.C: Likewise.
* g++.old-deja/g++.ns/koenig5.C: Likewise.
* g++.old-deja/g++.other/static5.C: Likewise.
* g++.old-deja/g++.pt/overload2.C: Likewise.

From-SVN: r236896

8 years agosync.md (mfence_nosse): Use "lock orl $0, -4(%esp)".
Uros Bizjak [Mon, 30 May 2016 19:06:38 +0000 (21:06 +0200)]
sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)".

* config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)".

From-SVN: r236895

8 years agoDon't cause ICEs when auto profile file is not found with checking
Andi Kleen [Mon, 30 May 2016 18:13:12 +0000 (18:13 +0000)]
Don't cause ICEs when auto profile file is not found with checking

Currently, on a checking enabled compiler when -fauto-profile does
not find the profile feedback file it errors out with assertation
failures. Add proper errors for this case.

gcc/:

2016-05-30  Andi Kleen  <ak@linux.intel.com>

* auto-profile.c (read_profile): Replace asserts with errors
when file does not exist.
* gcov-io.c (gcov_read_words): Dito.

From-SVN: r236894

8 years agotree-cfg.c (print_loop): Print likely upper bounds.
Jan Hubicka [Mon, 30 May 2016 17:59:24 +0000 (19:59 +0200)]
tree-cfg.c (print_loop): Print likely upper bounds.

* tree-cfg.c (print_loop): Print likely upper bounds.

From-SVN: r236893

8 years agoinvoke.texi (-fpeel-loops,-O3): Update documentation.
Jan Hubicka [Mon, 30 May 2016 17:58:19 +0000 (19:58 +0200)]
invoke.texi (-fpeel-loops,-O3): Update documentation.

* doc/invoke.texi (-fpeel-loops,-O3): Update documentation.
* opts.c (default_options): Enable peel loops at -O3.
* tree-ssa-loop-ivcanon.c (peeled_loops): New static var.
(try_peel_loop): Do not re-peel already peeled loops;
use likely upper bounds; fix profile updating.
(pass_complete_unroll::execute): Initialize peeled_loops.

* gcc.dg/tree-ssa/peel1.c: New testcase.
* gcc.dg/tree-ssa/pr61743-1.c: Disable loop peeling.
* gcc.dg/tree-ssa/pr61743-2.c: Disable loop peeling.

From-SVN: r236892

8 years agoAdd profiling support for IVOPTS
Martin Liska [Mon, 30 May 2016 16:04:50 +0000 (18:04 +0200)]
Add profiling support for IVOPTS

* tree-ssa-loop-ivopts.c (get_computation_cost_at): Scale
computed costs by frequency of BB they belong to.
(get_scaled_computation_cost_at): New function.

From-SVN: r236888

8 years agoFix pr69067.c testcase
Tom de Vries [Mon, 30 May 2016 15:50:55 +0000 (15:50 +0000)]
Fix pr69067.c testcase

2016-05-30  Tom de Vries  <tom@codesourcery.com>

* gcc.dg/graphite/pr69067.c (main): Remove superfluous argument in call
to ce.

From-SVN: r236886

8 years agore PR c++/71099 (Misleading diagnostic message with 'virtual' used in out-of-line...
Paolo Carlini [Mon, 30 May 2016 15:10:51 +0000 (15:10 +0000)]
re PR c++/71099 (Misleading diagnostic message with 'virtual' used in out-of-line definitions of class template member functions)

/cp
2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71099
* parser.c (cp_parser_function_specifier_opt): Use current_class_type
to improve the diagnostic about wrong uses of 'virtual'.

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

PR c++/71099
* g++.dg/parse/virtual1.C: New.

From-SVN: r236885

8 years agoargs.h (clear_non_sret_int_hardware_registers): Use correct register when clearing...
Uros Bizjak [Mon, 30 May 2016 14:50:44 +0000 (16:50 +0200)]
args.h (clear_non_sret_int_hardware_registers): Use correct register when clearing %edx.

* gcc.target/i386/iamcu/args.h (clear_non_sret_int_hardware_registers):
Use correct register when clearing %edx.

From-SVN: r236883

8 years agomatch.pd: optimize unsigned mul overflow check
Alexander Monakov [Mon, 30 May 2016 14:37:02 +0000 (17:37 +0300)]
match.pd: optimize unsigned mul overflow check

gcc/
2016-05-28  Alexander Monakov  <amonakov@ispras.ru>
            Marc Glisse  <marc.glisse@inria.fr>

PR tree-optimization/71289
* match.pd (-1 / B < A, A > -1 / B): New transformations.

gcc/testsuite/
2016-05-28  Alexander Monakov  <amonakov@ispras.ru>

PR tree-optimization/71289
* gcc.dg/pr71289.c: New test.

Co-Authored-By: Marc Glisse <marc.glisse@inria.fr>
From-SVN: r236882

8 years ago* tree-vect-loop.c (vect_transform_loop): Update likely bounds.
Jan Hubicka [Mon, 30 May 2016 14:12:46 +0000 (16:12 +0200)]
* tree-vect-loop.c (vect_transform_loop): Update likely bounds.

From-SVN: r236880

8 years agotree-ssa-loop-ivcanon.c (try_peel_loop): Correctly set wont_exit for peeled copies...
Jan Hubicka [Mon, 30 May 2016 13:25:02 +0000 (15:25 +0200)]
tree-ssa-loop-ivcanon.c (try_peel_loop): Correctly set wont_exit for peeled copies...

* tree-ssa-loop-ivcanon.c (try_peel_loop): Correctly set wont_exit
for peeled copies; avoid underflow when updating estimates; correctly
scale loop profile.

From-SVN: r236878

8 years agotree-ssa-reassoc.c (swap_ops_for_binary_stmt): Fix typo from commit r236875.
Kugan Vivekanandarajah [Mon, 30 May 2016 11:01:06 +0000 (11:01 +0000)]
tree-ssa-reassoc.c (swap_ops_for_binary_stmt): Fix typo from commit r236875.

gcc/ChangeLog:

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

* tree-ssa-reassoc.c (swap_ops_for_binary_stmt): Fix typo from commit
r236875. Corrected oe3 to oe2 as obvious.

From-SVN: r236877

8 years agore PR middle-end/71269 (segfault while compiling sqlite)
Kugan Vivekanandarajah [Mon, 30 May 2016 10:47:57 +0000 (10:47 +0000)]
re PR middle-end/71269 (segfault while compiling sqlite)

gcc/testsuite/ChangeLog:

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

PR middle-end/71269
PR middle-end/71292
* gcc.dg/tree-ssa/pr71269.c: New test.
* gcc.dg/tree-ssa/pr71292.c: New test.

gcc/ChangeLog:

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

PR middle-end/71269
PR middle-end/71252
* tree-ssa-reassoc.c (insert_stmt_before_use): Use find_insert_point so
that inserted stmt will not dominate stmts that defines its operand.
(rewrite_expr_tree): Add stmt_to_insert before adding the use stmt.
(rewrite_expr_tree_parallel): Likewise.

From-SVN: r236876

8 years agore PR tree-optimization/71252 (ICE: verify_ssa failed : definition in block 7 does...
Kugan Vivekanandarajah [Mon, 30 May 2016 10:45:19 +0000 (10:45 +0000)]
re PR tree-optimization/71252 (ICE: verify_ssa failed : definition in block 7 does not dominate use in block 6)

gcc/ChangeLog:

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

PR middle-end/71252
* tree-ssa-reassoc.c (swap_ops_for_binary_stmt): Fix swap such that
all fields including stmt_to_insert are swapped.

gcc/testsuite/ChangeLog:

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

PR middle-end/71252
* gcc.dg/tree-ssa/pr71252-2.c: New test.

From-SVN: r236875

8 years agopredict.h (force_edge_cold): Declare.
Jan Hubicka [Mon, 30 May 2016 10:40:33 +0000 (12:40 +0200)]
predict.h (force_edge_cold): Declare.

* predict.h (force_edge_cold): Declare.
* predict.c (force_edge_cold): New function.
* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Fix profile
updating.
(canonicalize_loop_induction_variables): Fix formating.

* gcc.dg/tree-ssa/cunroll-12.c: New testcase.
* gcc.dg/tree-ssa/cunroll-13.c: New testcase.
* gcc.dg/tree-ssa/cunroll-14.c: New testcase.

From-SVN: r236874

8 years agovisium.c (visium_split_double_add): Minor tweaks.
Eric Botcazou [Mon, 30 May 2016 08:48:17 +0000 (08:48 +0000)]
visium.c (visium_split_double_add): Minor tweaks.

* config/visium/visium.c (visium_split_double_add): Minor tweaks.
(visium_expand_copysign): Use gen_int_mode directly.
(visium_compute_frame_size): Minor tweaks.

From-SVN: r236871

8 years agotree-vect-loop.c (vect_analyze_loop_2): Use likely_max_stmt_executions_int.
Jan Hubicka [Mon, 30 May 2016 08:19:24 +0000 (10:19 +0200)]
tree-vect-loop.c (vect_analyze_loop_2): Use likely_max_stmt_executions_int.

* tree-vect-loop.c (vect_analyze_loop_2): Use
likely_max_stmt_executions_int.

From-SVN: r236870

8 years agoRemove assert in get_def_bb_for_const
Tom de Vries [Mon, 30 May 2016 07:49:42 +0000 (07:49 +0000)]
Remove assert in get_def_bb_for_const

2016-05-30  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/69067
* graphite-isl-ast-to-gimple.c (get_def_bb_for_const): Remove assert.

* gcc.dg/graphite/pr69067.c: New test.

From-SVN: r236868

8 years agoDaily bump.
GCC Administrator [Mon, 30 May 2016 00:16:26 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r236867

8 years agore PR target/71245 (std::atomic<double> load/store bounces the data to the stack...
Uros Bizjak [Sun, 29 May 2016 20:50:32 +0000 (22:50 +0200)]
re PR target/71245 (std::atomic<double> load/store bounces the data to the stack using fild/fistp)

PR target/71245
* config/i386/sync.md (define_peephole2 atomic_storedi_fpu):
New peepholes to remove unneeded fild/fistp pairs.
(define_peephole2 atomic_loaddi_fpu): Ditto.

testsuite/ChangeLog:

PR target/71245
* gcc.target/i386/pr71245-1.c: New test.
* gcc.target/i386/pr71245-2.c: Ditto.

From-SVN: r236863

8 years ago* predict.c (maybe_hot_frequency_p): Avoid division.
Jan Hubicka [Sun, 29 May 2016 17:29:42 +0000 (19:29 +0200)]
* predict.c (maybe_hot_frequency_p): Avoid division.

From-SVN: r236862

8 years agore PR c++/71105 (lambdas with default captures improperly have function pointer conve...
Paolo Carlini [Sun, 29 May 2016 08:29:46 +0000 (08:29 +0000)]
re PR c++/71105 (lambdas with default captures improperly have function pointer conversions)

/cp
2016-05-29  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71105
* lambda.c (maybe_add_lambda_conv_op): Early return also when
LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE.

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

PR c++/71105
* g++.dg/cpp0x/lambda/lambda-conv11.C: New.
* g++.dg/cpp1y/lambda-conv1.C: Likewise.
* g++.dg/cpp1y/lambda-conv2.C: Likewise.

From-SVN: r236861

8 years agore PR c++/71105 (lambdas with default captures improperly have function pointer conve...
Paolo Carlini [Sun, 29 May 2016 08:05:30 +0000 (08:05 +0000)]
re PR c++/71105 (lambdas with default captures improperly have function pointer conversions)

/cp
2016-05-29  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71105
* lambda.c (maybe_add_lambda_conv_op): Early return also when
LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE.

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

PR c++/71105
* g++.dg/cpp0x/lambda/lambda-conv11.C: New.
* g++.dg/cpp1y/lambda-conv1.C: Likewise.
* g++.dg/cpp1y/lambda-conv2.C: Likewise.

From-SVN: r236859

8 years agobackwards_compatibility.xml: Adjust lists.debian.org link to https.
Gerald Pfeifer [Sun, 29 May 2016 08:03:35 +0000 (08:03 +0000)]
backwards_compatibility.xml: Adjust lists.debian.org link to https.

* doc/xml/manual/backwards_compatibility.xml: Adjust
lists.debian.org link to https.
* doc/html/manual/backwards.html: Regenerate.

From-SVN: r236858

8 years agoDaily bump.
GCC Administrator [Sun, 29 May 2016 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r236857

8 years ago* doc/install.texi: Use https for shop.fsf.org.
Gerald Pfeifer [Sat, 28 May 2016 19:44:13 +0000 (19:44 +0000)]
* doc/install.texi: Use https for shop.fsf.org.

From-SVN: r236853

8 years agotree-ssa-loop-ivopts.c (estimated_stmt_executions_int): Use likely_max_stmt_execution...
Jan Hubicka [Sat, 28 May 2016 16:36:29 +0000 (18:36 +0200)]
tree-ssa-loop-ivopts.c (estimated_stmt_executions_int): Use likely_max_stmt_executions_int.

* tree-ssa-loop-ivopts.c (estimated_stmt_executions_int): Use
likely_max_stmt_executions_int.

From-SVN: r236852

8 years agoprefetch-5.c: Remove xfail.
Jan Hubicka [Sat, 28 May 2016 16:23:33 +0000 (18:23 +0200)]
prefetch-5.c: Remove xfail.

* gcc.dg/tree-ssa/prefetch-5.c: Remove xfail.
* tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
likely_max_stmt_executions_int.

From-SVN: r236851

8 years agoUpdate changelogs for revert of c++/69855.
Ville Voutilainen [Sat, 28 May 2016 16:21:05 +0000 (19:21 +0300)]
Update changelogs for revert of c++/69855.

From-SVN: r236850

8 years agoprofile.c (compute_branch_probabilities): Do not report hitrates here.
Jan Hubicka [Sat, 28 May 2016 16:20:06 +0000 (18:20 +0200)]
profile.c (compute_branch_probabilities): Do not report hitrates here.

* profile.c (compute_branch_probabilities): Do not report hitrates
here.
(branch_prob): Report hitrates here.
* predict.c (gimple_predict_edge): Do not assert profile status;
fix formatting issues.

From-SVN: r236849

8 years agopredict.c (edge_predicted_by_p): New function.
Jan Hubicka [Sat, 28 May 2016 14:52:46 +0000 (16:52 +0200)]
predict.c (edge_predicted_by_p): New function.

* predict.c (edge_predicted_by_p): New function.
(predict_paths_for_bb): Do not put multiple predictions of the same type
on one edge.

From-SVN: r236848

8 years agotree-ssa-loop-niter.c (number_of_iterations_exit): Revert accidental commit.
Jan Hubicka [Sat, 28 May 2016 13:22:49 +0000 (15:22 +0200)]
tree-ssa-loop-niter.c (number_of_iterations_exit): Revert accidental commit.

* tree-ssa-loop-niter.c (number_of_iterations_exit): Revert accidental
commit.

From-SVN: r236847

8 years agoAdd dependencies to configure rule
Alan Modra [Sat, 28 May 2016 13:08:47 +0000 (22:38 +0930)]
Add dependencies to configure rule

* Makefile.tpl (configure): Depend on m4 files included.
* Makefile.in: Regenerate.

From-SVN: r236846

8 years agoFix segfault on verify_dominators error path
Alan Modra [Sat, 28 May 2016 09:16:00 +0000 (18:46 +0930)]
Fix segfault on verify_dominators error path

* dominance.c (verify_dominators): Don't segfault on NULL imm_bb.

From-SVN: r236845

8 years agoRevert the attempted fix for c++/69855, it breaks bootstrap.
Ville Voutilainen [Sat, 28 May 2016 08:22:15 +0000 (11:22 +0300)]
Revert the attempted fix for c++/69855, it breaks bootstrap.

From-SVN: r236844

8 years agoira.c bb_loop_depth again
Alan Modra [Sat, 28 May 2016 00:22:56 +0000 (09:52 +0930)]
ira.c bb_loop_depth again

Follow the same practice as other places in ira.c, where
free_dominance_info is called along with loop_optimizer_finalize.  Not
doing so causes an ICE on gcc-5-branch, so avoid that possibility on
trunk.

PR rtl-optimization/71275
* ira.c (ira): Free dominance info.

From-SVN: r236843

8 years agoDaily bump.
GCC Administrator [Sat, 28 May 2016 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r236842

8 years agoAdjust URL in libstdc++ manual to use https
Jonathan Wakely [Fri, 27 May 2016 21:23:42 +0000 (22:23 +0100)]
Adjust URL in libstdc++ manual to use https

* doc/xml/manual/abi.xml: Adjust URL to use https.
* doc/html/manual/*: Regenerate.

From-SVN: r236837

8 years ago* doc/sourcebuild.texi: New address for upstream Go repository.
Gerald Pfeifer [Fri, 27 May 2016 20:25:05 +0000 (20:25 +0000)]
* doc/sourcebuild.texi: New address for upstream Go repository.

From-SVN: r236836

8 years agore PR c++/60385 (confused by earlier errors, bailing out)
Paolo Carlini [Fri, 27 May 2016 19:19:23 +0000 (19:19 +0000)]
re PR c++/60385 (confused by earlier errors, bailing out)

/cp
2016-05-27  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/60385
* name-lookup.c (push_namespace): Return bool, false when pushdecl
fails.
* name-lookup.h (push_namespace): Adjust declaration.
* parser.c (cp_parser_namespace_definition): Check push_namespace
return value.

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

PR c++/60385
* g++.dg/parse/namespace13.C: New.

From-SVN: r236835

8 years agoarm.h (TARGET_ARM_V6M): Remove.
Thomas Preud'homme [Fri, 27 May 2016 16:36:42 +0000 (16:36 +0000)]
arm.h (TARGET_ARM_V6M): Remove.

2016-05-27  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm.h (TARGET_ARM_V6M): Remove.
    (TARGET_ARM_V7M): Likewise.

From-SVN: r236832

8 years agotree-ssa-threadedge.c: Remove include of tree-ssa-threadbackward.h.
Jeff Law [Fri, 27 May 2016 16:32:38 +0000 (10:32 -0600)]
tree-ssa-threadedge.c: Remove include of tree-ssa-threadbackward.h.

* tree-ssa-threadedge.c: Remove include of tree-ssa-threadbackward.h.
(thread_across_edge): Remove calls to find_jump_threads_backwards.
* passes.def: Add jump threading passes before DOM/VRP.
* tree-ssa-threadbackward.c (find_jump_threads_backwards): Change
argument to a basic block from an edge.  Remove tests which are
handled elsewhere.
(pass_data_thread_jumps, class pass_thread_jumps): New.
(pass_thread_jumps::gate, pass_thread_jumps::execute): New.
(make_pass_thread_jumps): Likewise.
* tree-pass.h (make_pass_thread_jumps): Declare.

* gcc.dg/tree-ssa/pr21417.c: Update expected output.
* gcc.dg/tree-ssa/pr66752-3.c: Likewise.
* gcc.dg/tree-ssa/pr68198.c: Likewise.
* gcc.dg/tree-ssa/pr69196-1.c: Likewise.
* gcc.dg/tree-ssa/pr69270-3.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-2b.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-2g.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-2h.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-6.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-12.c: Likewise.
* gcc.dg/tree-ssa/ssa-dom-thread-13.c: Likewise.
* gcc.dg/tree-ssa/vrp56.c: Likewise.

From-SVN: r236831

8 years agovisium-protos.h (split_double_move): Rename into...
Eric Botcazou [Fri, 27 May 2016 15:08:50 +0000 (15:08 +0000)]
visium-protos.h (split_double_move): Rename into...

* config/visium/visium-protos.h (split_double_move): Rename into...
(visium_split_double_move): ...this.
(visium_split_double_add): Declare.
* config/visium/visium.c (split_double_move): Rename into...
(visium_split_double_move): ...this.
(visium_split_double_add): New function.
(visium_expand_copysign): Renumber operands for consistency.
* config/visium/visium.md (DImode move splitter): Adjust to renaming.
(DFmode move splitter): Likewise.
(*addi3_insn): Split by means of visium_split_double_add.
(*adddi3_insn_flags): Delete.
(*plus_plus_sltu<subst_arith>): New insn.
(*subdi3_insn): Split by means of visium_split_double_add.
(subdi3_insn_flags): Delete.
(*minus_minus_sltu<subst_arith>): New insn.
(*negdi2_insn): Split by means of visium_split_double_add.
(*negdi2_insn_flags): Delete.

From-SVN: r236827

8 years agore PR c++/69855 (Missing diagnostic for overload that only differs by return type)
Ville Voutilainen [Fri, 27 May 2016 14:59:01 +0000 (17:59 +0300)]
re PR c++/69855 (Missing diagnostic for overload that only differs by return type)

/cp
PR c++/69855
* name-lookup.c (pushdecl_maybe_friend_1): Push local function
decls into the global scope after stripping template bits
and setting DECL_ANTICIPATED.

/testsuite
PR c++/69855
* g++.dg/overload/69855.C: New.
* g++.old-deja/g++.law/missed-error2.C: Adjust.
* g++.old-deja/g++.pt/crash3.C: Likewise.

From-SVN: r236826

8 years agoconfigure.ac: Treat a --with-headers option without argument the same as the default...
Ulrich Weigand [Fri, 27 May 2016 14:50:06 +0000 (14:50 +0000)]
configure.ac: Treat a --with-headers option without argument the same as the default (i.e.

* configure.ac: Treat a --with-headers option without argument
the same as the default (i.e. consult sys-include directory).
* configure: Regenerate.

From-SVN: r236825

8 years agoFix build.
Ville Voutilainen [Fri, 27 May 2016 14:34:08 +0000 (17:34 +0300)]
Fix build.

From-SVN: r236823

8 years agore PR libstdc++/66338 (std::forward_as_tuple() issue with single argument)
Ville Voutilainen [Fri, 27 May 2016 14:08:37 +0000 (17:08 +0300)]
re PR libstdc++/66338 (std::forward_as_tuple() issue with single argument)

2016-05-24  Ville Voutilainen  <ville.voutilainen@gmail.com>

PR libstdc++/66338
* include/std/tuple (_TMC): Add a check for _NotSameTuple.
* include/std/tuple (tuple(_UElements&&...)): Remove the separate
check for _NotSameTuple.
* include/std/tuple (_TMCT): New.
* include/std/tuple (tuple(const tuple<_UElements...>&)): Use it.
* include/std/tuple (tuple(tuple<_UElements...>&&)): Likewise.
* include/std/tuple (tuple(allocator_arg_t, const _Alloc&,
      const tuple<_UElements...>&)): Likewise.
* include/std/tuple (tuple(allocator_arg_t, const _Alloc&,
      tuple<_UElements...>&&)): Likewise.
* testsuite/20_util/tuple/cons/66338.cc: New.

From-SVN: r236822

8 years ago[AArch64] Tie operand 1 to operand 0 in AESMC pattern when AES/AESMC fusion is enabled
Kyrylo Tkachov [Fri, 27 May 2016 13:44:57 +0000 (13:44 +0000)]
[AArch64] Tie operand 1 to operand 0 in AESMC pattern when AES/AESMC fusion is enabled

* config/aarch64/aarch64.c (aarch64_fusion_enabled_p): New function.
* config/aarch64/aarch64-protos.h (aarch64_fusion_enabled_p): Declare
prototype.
* config/aarch64/aarch64-simd.md (aarch64_crypto_aes<aesmc_op>v16qi):
Add "=w,0" alternative.  Enable it when AES/AESMC fusion is enabled.

From-SVN: r236820

8 years ago[AArch64] PR target/63596, honor tree-stdarg analysis result to improve VAARG codegen
Jiong Wang [Fri, 27 May 2016 13:05:34 +0000 (13:05 +0000)]
[AArch64] PR target/63596, honor tree-stdarg analysis result to improve VAARG codegen

gcc/
PR target/63596
* config/aarch64/aarch64.c (aarch64_expand_builtin_va_start): Honor
tree-stdarg analysis results.
(aarch64_setup_incoming_varargs): Likewise.

gcc/testsuite/
* gcc.target/aarch64/va_arg_1.c: New testcase.
* gcc.target/aarch64/va_arg_2.c: Likewise.
* gcc.target/aarch64/va_arg_3.c: Likewise.

From-SVN: r236819

8 years ago[AArch64] Enable tree-stdarg pass for AArch64 by defining counter fields
Jiong Wang [Fri, 27 May 2016 12:57:06 +0000 (12:57 +0000)]
[AArch64] Enable tree-stdarg pass for AArch64 by defining counter fields

gcc/
* config/aarch64/aarch64.c (aarch64_build_builtin_va_list): Initialize
va_list_gpr_counter_field and va_list_fpr_counter_field.

gcc/testsuite/
* gcc.dg/tree-ssa/stdarg-2.c: Enable all testcases for AArch64.
* gcc.dg/tree-ssa/stdarg-3.c: Likewise.
* gcc.dg/tree-ssa/stdarg-4.c: Likewise.
* gcc.dg/tree-ssa/stdarg-5.c: Likewise.
* gcc.dg/tree-ssa/stdarg-6.c: Likewise.

From-SVN: r236818

8 years agoRemove aarch64_cannot_change_mode_class as the underlying issue (PR67609) has been...
Wilco Dijkstra [Fri, 27 May 2016 12:15:47 +0000 (12:15 +0000)]
Remove aarch64_cannot_change_mode_class as the underlying issue (PR67609) has been resolved.

Remove aarch64_cannot_change_mode_class as the underlying issue
(PR67609) has been resolved.  This avoids a few unnecessary lane
widening operations like:

faddp   d18, v18.2d
mov     d18, v18.d[0]

    gcc/
PR67609
* config/aarch64/aarch64.h (CANNOT_CHANGE_MODE_CLASS): Remove.
* config/aarch64/aarch64.c
(aarch64_cannot_change_mode_class): Remove function.
* config/aarch64/aarch64-protos.h
(aarch64_cannot_change_mode_class): Remove.

From-SVN: r236817

8 years agocfgloop.c (record_niter_bound): Record likely upper bounds.
Jan Hubicka [Fri, 27 May 2016 12:10:34 +0000 (14:10 +0200)]
cfgloop.c (record_niter_bound): Record likely upper bounds.

* cfgloop.c (record_niter_bound): Record likely upper bounds.
(likely_max_stmt_executions_int, get_likely_max_loop_iterations,
get_likely_max_loop_iterations_int): New.
* cfgloop.h (struct loop): Add nb_iterations_likely_upper_bound,
any_likely_upper_bound.
(get_likely_max_loop_iterations_int, get_likely_max_loop_iterations):
Declare.
* cfgloopmanip.c (copy_loop_info): Copy likely upper bounds.
* loop-unroll.c (unroll_loop_constant_iterations): Update likely
upper bound.
(unroll_loop_constant_iterations): Likewise.
(unroll_loop_runtime_iterations): Likewise.
* lto-streamer-in.c (input_cfg): Stream likely upper bounds.
* lto-streamer-out.c (output_cfg): Likewise.
* tree-ssa-loop-ivcanon.c (try_peel_loop): Update likely upper
bounds.
(canonicalize_loop_induction_variables): Dump likely upper bounds.
* tree-ssa-loop-niter.c (record_estimate): Record likely upper bounds.
(likely_max_loop_iterations): New.
(likely_max_loop_iterations_int): New.
(likely_max_stmt_executions): New.
* tree-ssa-loop-niter.h (likely_max_loop_iterations,
likely_max_loop_iterations_int, likely_max_stmt_executions_int,
likely_max_stmt_executions): Declare.

From-SVN: r236816

8 years agore PR middle-end/71308 (ICE (segfault) in in gimple_fold_call gimple-fold.c:3060)
Marek Polacek [Fri, 27 May 2016 12:08:03 +0000 (12:08 +0000)]
re PR middle-end/71308 (ICE (segfault) in in gimple_fold_call gimple-fold.c:3060)

PR middle-end/71308
* gimple-fold.c (gimple_fold_call): Check that LHS is not null.

* g++.dg/torture/pr71308.C: New test.

From-SVN: r236815

8 years agoS/390: Replace rtx_equal_p with reg_overlap_mentioned_p in splitter check.
Andreas Krebbel [Fri, 27 May 2016 12:05:59 +0000 (12:05 +0000)]
S/390: Replace rtx_equal_p with reg_overlap_mentioned_p in splitter check.

gcc/ChangeLog:

2016-05-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390.md (2x risbg splitters): Use
reg_overlap_mentioned_p instead of rtx_equal_p.

From-SVN: r236814

8 years agocombine: Take known zero bits into account when checking extraction.
Dominik Vogt [Fri, 27 May 2016 11:38:59 +0000 (11:38 +0000)]
combine: Take known zero bits into account when checking extraction.

gcc/ChangeLog:

* combine.c (make_compound_operation): Take known zero bits into
account when checking for possible zero_extend.

gcc/testsuite/ChangeLog:

* gcc.dg/zero_bits_compound-1.c: New test.
* gcc.dg/zero_bits_compound-2.c: New test.

From-SVN: r236813

8 years ago[AArch64] Simplify ashl<mode>3 expander for SHORT modes
Kyrylo Tkachov [Fri, 27 May 2016 11:21:46 +0000 (11:21 +0000)]
[AArch64] Simplify ashl<mode>3 expander for SHORT modes

* config/aarch64/aarch64.md (ashl<mode>3, SHORT modes):
Use const_int_operand for operand 2 predicate.  Simplify expand code
as a result.

From-SVN: r236812

8 years agore PR middle-end/71279 (ICE on trunk gcc with knl target)
Ilya Enkovich [Fri, 27 May 2016 10:39:40 +0000 (10:39 +0000)]
re PR middle-end/71279 (ICE on trunk gcc with knl target)

gcc/

PR middle-end/71279
* fold-const.c (fold_ternary_loc): Don't fold VEC_COND_EXPR
into comparison.

gcc/testsuite/

PR middle-end/71279
* gcc.dg/pr71279.c: New test.

From-SVN: r236810

8 years ago[AArch64] Delete obsolete CC_ZESWP and CC_SESWP CC modes
Kyrylo Tkachov [Fri, 27 May 2016 08:42:01 +0000 (08:42 +0000)]
[AArch64] Delete obsolete CC_ZESWP and CC_SESWP CC modes

* config/aarch64/aarch64-modes.def (CC_ZESWP, CC_SESWP): Delete.
* config/aarch64/aarch64.c (aarch64_select_cc_mode): Remove condition
that returns CC_SESWPmode and CC_ZESWPmode.
(aarch64_get_condition_code_1): Remove handling of CC_SESWPmode
and CC_SESWPmode.
(aarch64_rtx_costs): Likewise.

From-SVN: r236809

8 years agoDaily bump.
GCC Administrator [Fri, 27 May 2016 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r236804

8 years agors6000.c (rs6000_emit_p9_fp_minmax): New function for ISA 3.0 min/max support.
Michael Meissner [Thu, 26 May 2016 21:38:19 +0000 (21:38 +0000)]
rs6000.c (rs6000_emit_p9_fp_minmax): New function for ISA 3.0 min/max support.

[gcc]
2016-05-26  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000.c (rs6000_emit_p9_fp_minmax): New function
for ISA 3.0 min/max support.
(rs6000_emit_p9_fp_cmove): New function for ISA 3.0 floating point
conditional move support.
(rs6000_emit_cmove): Call rs6000_emit_p9_fp_minmax and
rs6000_emit_p9_fp_cmove if the ISA 3.0 instructions are
available.
* config/rs6000/rs6000.md (SFDF2): New iterator to allow doing
conditional moves where the comparison type is different from move
type.
(fp_minmax): New code iterator for smin/smax.
(minmax): New code attributes for min/max.
(SMINMAX): Likewise.
(smax<mode>3): Combine min, max insns into one insn using the
fp_minmax code iterator.  Add support for ISA 3.0 min/max
instructions that don't need -ffast-math.
(s<minmax><mode>3): Likewise.
(smax<mode>3_vsx): Likewise.
(smin<mode>3): Likewise.
(s<minmax><mode>3_vsx): Likewise.
(smin<mode>3_vsx): Likewise.
(pre-VSX min/max splitters): Likewise.
(s<minmax><mode>3_fpr): Likewise.
(movsfcc): Rewrite floating point conditional moves to combine
SFmode/DFmode into a single insn.
(mov<mode>cc): Likewise.
(movdfcc): Likewise.
(fselsfsf4): Combine FSEL cases into a single insn, using SFDF and
SFDF2 iterators to handle all combinations.
(fseldfsf4): Likewise.
(fsel<SFDF:mode><SFDF2:mode>4): Likewise.
(fseldfdf4): Likewise.
(fselsfdf4): Likewise.
(mov<SFDF:mode><SFDF2:mode>cc_p9): Add support for the ISA 3.0
comparison instructions that set a 0/-1 mask, and use it for
floating point conditional move via XXSEL.
(fpmask<mode>): Likewise.
(xxsel<mode>): Likewise.
* config/rs6000/predicates.md (min_max_operator): Delete, no
longer used.
(fpmask_comparison_operaton): New insn for ISA 3.0 comparison
instructions that generate a 0/-1 mask for use with XXSEL.
* config/rs6000/rs6000.h (TARGET_MINMAX_SF): New helper macros to
say whether floating point min/max is available, either through
FSEL, ISA 2.06 min/max, and ISA 3.0 min/max instrucitons.
(TARGET_MINMAX_DF): Likewise.

[gcc/testsuite]
2016-05-26  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/p9-minmax-1.c: New tests for ISA 3.0
floating point min/max/comparison instructions.
* gcc.target/powerpc/p9-minmax-2.c: Likewise.

From-SVN: r236795

8 years agoc-parser.c (c_parser_omp_clause_schedule): Warn if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR...
Jakub Jelinek [Thu, 26 May 2016 19:12:27 +0000 (21:12 +0200)]
c-parser.c (c_parser_omp_clause_schedule): Warn if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive.

* c-parser.c (c_parser_omp_clause_schedule): Warn if
OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive.

* semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn
if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive.

* openmp.c (resolve_omp_clauses): Warn if chunk_size is known not to
be positive.

* c-c++-common/gomp/schedule-1.c: New test.
* gfortran.dg/gomp/schedule-1.f90: New test.

* testsuite/libgomp.c/doacross-1.c (main): Use schedule(static)
instead of invalid schedule(static, 0).
* testsuite/libgomp.c/doacross-2.c (main): Likewise.

From-SVN: r236793

8 years agoFix PR c++/70822 (bogus error with parenthesized SCOPE_REF)
Patrick Palka [Thu, 26 May 2016 18:17:43 +0000 (18:17 +0000)]
Fix PR c++/70822 (bogus error with parenthesized SCOPE_REF)

gcc/cp/ChangeLog:

PR c++/70822
PR c++/70106
* cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to
SCOPE_REFs too.
* pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set
on the qualified_id then propagate it to the resulting
expression.
(do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs
too.
* semantics.c (force_paren_expr): If given a SCOPE_REF, just set
its REF_PARENTHESIZED_P flag.

gcc/testsuite/ChangeLog:

PR c++/70822
PR c++/70106
* g++.dg/cpp1y/auto-fn32.C: New test.
* g++.dg/cpp1y/paren4.C: New test.

From-SVN: r236792

8 years agoira.c bb_loop_depth
Alan Modra [Thu, 26 May 2016 17:38:36 +0000 (03:08 +0930)]
ira.c bb_loop_depth

PR rtl-optimization/71275
* ira.c (ira): Call loop_optimizer_init to set up bb_loop_depth
for update_equiv_regs and combine_and_move_insns.

From-SVN: r236789

8 years agoi386.md (*movqi_internal): Use if_then_else or cond RTXes to calculate attribute...
Uros Bizjak [Thu, 26 May 2016 17:32:55 +0000 (19:32 +0200)]
i386.md (*movqi_internal): Use if_then_else or cond RTXes to calculate attribute value.

* config/i386/i386.md (*movqi_internal) <attr "isa">: Use
if_then_else or cond RTXes to calculate attribute value.
* config/i386/mmx.md (*vec_extractv2sf_1) <attr "prefix_rep">: Ditto.
<attr "length_immediate>: Ditto.
(*vec_extractv2sf_1) <attr "length_immediate">: Ditto.
* config/i386/sse.md (sse_loadlps) <attr "length_immediate">: Ditto.
(*vec_concatv2sf_sse4_1) <attr "isa">: Ditto.
<attr "type">: Ditto.
<attr "prefix_data16">: Ditto.
<attr "prefix_extra">: Ditto.
<attr "length_immediate">: Ditto.
<attr "prefix">: Ditto.
(vec_set<mode>_0) <attr "isa">: Ditto.
<attr "prefix_extra">: Ditto.
<attr "length_immediate">: Ditto.
<attr "prefix">: Ditto.
(*vec_interleave_highv2df) <attr "prefix_data16">: Ditto.
(*vec_interleave_lowv2df) <attr "prefix_data16">: Ditto.
(sse2_storelpd) <attr "prefix_data16">: Ditto.
(sse2_loadhpd) <attr "prefix_data16">: Ditto.
(sse2_loadlpd) <attr "prefix_data16">: Ditto.
<attr "length_immediate">: Ditto.
<attr "prefix">: Ditto.
(sse2_movsd) <attr "length_immediate">: Ditto.
<attr "prefix">: Ditto.
(vec_concatv2df)  <attr "isa">: Ditto.
<attr "prefix">: Ditto.
(*vec_extractv4si) <attr "prefix_extra">: Ditto.
(*vec_extractv2di_1) <attr "isa">: Ditto.
<attr "type">: Ditto.
<attr "length_immediate">: Ditto.
<attr "prefix_rex">: Ditto.
<attr "prefix_extra">: Ditto.
(*vec_concatv2si_sse4_1) <attr "type">: Ditto.
<attr "prefix_extra">: Ditto.
<attr "length_immediate">: Ditto.
(vec_concatv2di) <attr "isa">: Ditto.
<attr "prefix_extra">: Ditto.
<attr "length_immediate">: Ditto.
<attr "prefix">: Ditto.

From-SVN: r236787

8 years agoIVOPTS: make comp_cost in a more c++ fashion.
Martin Liska [Thu, 26 May 2016 17:12:32 +0000 (19:12 +0200)]
IVOPTS: make comp_cost in a more c++ fashion.

* tree-ssa-loop-ivopts.c (comp_cost::infinite_cost_p): New
function.
(operator+): Likewise.
(operator-): Likewise.
(comp_cost::operator+=): Likewise.
(comp_cost::operator-=): Likewise.
(comp_cost::operator/=): Likewise.
(comp_cost::operator*=): Likewise.
(operator<): Likewise.
(operator==): Likewise.
(operator<=): Likewise.
(new_cost): Remove.
(infinite_cost_p): Likewise.
(add_costs): Likewise.
(sub_costs): Likewise.
(compare_costs): Likewise.
(set_group_iv_cost): Use the newly introduced functions.
(get_address_cost): Likewise.
(get_shiftadd_cost): Likewise.
(force_expr_to_var_cost): Likewise.
(split_address_cost): Likewise.
(ptr_difference_cost): Likewise.
(difference_cost): Likewise.
(get_computation_cost_at): Likewise.
(determine_group_iv_cost_generic): Likewise.
(determine_group_iv_cost_address): Likewise.
(determine_group_iv_cost_cond): Likewise.
(autoinc_possible_for_pair): Likewise.
(determine_group_iv_costs): Likewise.
(cheaper_cost_pair): Likewise.
(iv_ca_recount_cost): Likewise.
(iv_ca_set_no_cp): Likewise.
(iv_ca_set_cp): Likewise.
(iv_ca_cost): Likewise.
(iv_ca_new): Likewise.
(iv_ca_dump): Likewise.
(iv_ca_narrow): Likewise.
(iv_ca_prune): Likewise.
(iv_ca_replace): Likewise.
(try_add_cand_for): Likewise.
(try_improve_iv_set): Likewise.
(find_optimal_iv_set): Likewise.

From-SVN: r236785

8 years agoFix ivopts estimates for internal functions
Richard Sandiford [Thu, 26 May 2016 15:49:22 +0000 (15:49 +0000)]
Fix ivopts estimates for internal functions

tree-ssa-loop-ivopts.c:loop_body_includes_call was treating internal
calls such as IFN_SQRT as clobbering all caller-saved registers, which
I don't think is appropriate for any current internal function.

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

gcc/
* tree-ssa-loop-ivopts.c (loop_body_includes_call): Don't assume
that internal functions will clobber all caller-saved registers.

From-SVN: r236780

8 years ago20060410.c: Xfail on ptx.
Nathan Sidwell [Thu, 26 May 2016 14:32:36 +0000 (14:32 +0000)]
20060410.c: Xfail on ptx.

* gcc.dg/20060410.c: Xfail on ptx.
* gcc.dg/torture/c99-contract-1.c: Skip on ptx.
* c-c++-common/torture/complex-sign-mixed-add.c: Skip on ptx -O0
* c-c++-common/torture/complex-sign-mixed-sub.c: Skip on ptx -O0
* gcc.c-torture/execute/pr68185.c: Skip on ptx -O0 & Os.
* gcc.c-torture/execute/20020529-1.c: Skip on ptx -00.

From-SVN: r236774

8 years agofree.asm: Delete.
Nathan Sidwell [Thu, 26 May 2016 14:22:40 +0000 (14:22 +0000)]
free.asm: Delete.

* config/nvptx/free.asm: Delete.
* config/nvptx/malloc.asm: Delete.
* config/nvptx/realloc.c: Delete.
* t-nvptx: Update.

From-SVN: r236773

8 years agooacc-plugin.h (GOMP_PLUGIN_async_unmap_vars): Add int parameter.
Chung-Lin Tang [Thu, 26 May 2016 13:28:25 +0000 (13:28 +0000)]
oacc-plugin.h (GOMP_PLUGIN_async_unmap_vars): Add int parameter.

2016-05-26  Chung-Lin Tang  <cltang@codesourcery.com>

libgomp/
* oacc-plugin.h (GOMP_PLUGIN_async_unmap_vars): Add int parameter.
* oacc-plugin.c (GOMP_PLUGIN_async_unmap_vars): Add 'int async'
parameter, use to set async stream around call to gomp_unmap_vars,
call gomp_unmap_vars() with 'do_copyfrom' set to true.
* plugin/plugin-nvptx.c (struct ptx_event): Add 'int val' field.
(event_gc): Adjust event handling loop, collect PTX_EVT_ASYNC_CLEANUP
events and call GOMP_PLUGIN_async_unmap_vars() for each of them.
(event_add): Add int parameter, initialize 'val' field when
adding new ptx_event struct.
(nvptx_evec): Adjust event_add() call arguments.
(nvptx_host2dev): Likewise.
(nvptx_dev2host): Likewise.
(nvptx_wait_async): Likewise.
(nvptx_wait_all_async): Likewise.
(GOMP_OFFLOAD_openacc_register_async_cleanup): Add async parameter,
pass to event_add() call.
* oacc-host.c (host_openacc_register_async_cleanup): Add 'int async'
parameter.
* oacc-mem.c (gomp_acc_remove_pointer): Adjust async case to
call openacc.register_async_cleanup_func() hook.
* oacc-parallel.c (GOACC_parallel_keyed): Likewise.
* target.c (gomp_copy_from_async): Delete function.
(gomp_map_vars): Remove async_refcount.
(gomp_unmap_vars): Likewise.
(gomp_load_image_to_device): Likewise.
(omp_target_associate_ptr): Likewise.
* libgomp.h (struct splay_tree_key_s): Remove async_refcount.
(acc_dispatch_t.register_async_cleanup_func): Add int parameter.
(gomp_copy_from_async): Remove.

From-SVN: r236772

8 years agoGCC expands switch statements in a very simplistic way and tries to use a table...
Wilco Dijkstra [Thu, 26 May 2016 12:25:51 +0000 (12:25 +0000)]
GCC expands switch statements in a very simplistic way and tries to use a table...

GCC expands switch statements in a very simplistic way and tries to use a table
expansion even when it is a bad idea for performance or codesize.
GCC typically emits extremely sparse tables that contain mostly default entries
(something which currently cannot be tuned by backends).  Additionally the
computation of the minimum/maximum label offsets is too simplistic so the
tables are often twice as large as necessary.

The cost of a table switch is significant due to the setup overhead, the table
lookup (which due to being sparse and large adds unnecessary cachemisses)
and hard to predict indirect jump.  Therefore it is best to avoid using a table
unless there are many real case labels.

This patch fixes that by setting the default aarch64_case_values_threshold to
16 when the per-CPU tuning is not set.  On SPEC2006 this improves the switch
heavy benchmarks GCC and perlbench both in performance (1-2%) as well as size
(0.5-1% smaller).

    gcc/
* config/aarch64/aarch64.c (aarch64_case_values_threshold):
Return a better case_values_threshold when optimizing.

From-SVN: r236771

8 years agoSIMD operations like combine prefer to have their operands in FP registers,
Wilco Dijkstra [Thu, 26 May 2016 12:12:20 +0000 (12:12 +0000)]
SIMD operations like combine prefer to have their operands in FP registers,

so increase the cost of integer registers slightly to avoid unnecessary int<->FP
moves. This improves register allocation of scalar SIMD operations.

        * config/aarch64/aarch64-simd.md (aarch64_combinez):
        Add ? to integer variant.
        (aarch64_combinez_be): Likewise.

From-SVN: r236770

8 years agoSkip tail call tests on Thumb-1 targets
Thomas Preud'homme [Thu, 26 May 2016 10:04:20 +0000 (10:04 +0000)]
Skip tail call tests on Thumb-1 targets

2016-05-26  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/testsuite/
    * gcc.dg/plugin/plugin.exp: skip tail call tests for Thumb-1.

From-SVN: r236769

8 years agotarget.c (gomp_device_copy): New function.
Chung-Lin Tang [Thu, 26 May 2016 09:58:56 +0000 (09:58 +0000)]
target.c (gomp_device_copy): New function.

libgomp/
2016-05-26  Chung-Lin Tang  <cltang@codesourcery.com>

* target.c (gomp_device_copy): New function.
(gomp_copy_host2dev): Likewise.
(gomp_copy_dev2host): Likewise.
(gomp_free_device_memory): Likewise.
(gomp_map_vars_existing): Adjust to call gomp_copy_host2dev.
(gomp_map_pointer): Likewise.
(gomp_map_vars): Adjust to call gomp_copy_host2dev, handle
NULL value from alloc_func plugin hook.
(gomp_unmap_tgt): Adjust to call gomp_free_device_memory.
(gomp_copy_from_async): Adjust to call gomp_copy_dev2host.
(gomp_unmap_vars): Likewise.
(gomp_update): Adjust to call gomp_copy_dev2host and
gomp_copy_host2dev functions.
(gomp_unload_image_from_device): Handle false value from
unload_image_func plugin hook.
(gomp_init_device): Handle false value from init_device_func
plugin hook.
(gomp_exit_data): Adjust to call gomp_copy_dev2host.
(omp_target_free): Adjust to call gomp_free_device_memory.
(omp_target_memcpy): Handle return values from host2dev_func,
dev2host_func, and dev2dev_func plugin hooks.
(omp_target_memcpy_rect_worker): Likewise.
(gomp_target_fini): Handle false value from fini_device_func
plugin hook.
* libgomp.h (struct gomp_device_descr): Adjust return type of
init_device_func, fini_device_func, unload_image_func, free_func,
dev2host_func,host2dev_func, and dev2dev_func plugin hooks to 'bool'.
* oacc-init.c (acc_shutdown_1): Handle false value from
fini_device_func plugin hook.
* oacc-host.c (host_init_device): Change return type to bool.
(host_fini_device): Likewise.
(host_unload_image): Likewise.
(host_free): Likewise.
(host_dev2host): Likewise.
(host_host2dev): Likewise.
* oacc-mem.c (acc_free): Handle plugin hook fatal error case.
(acc_memcpy_to_device): Likewise.
(acc_memcpy_from_device): Likewise.
(delete_copyout): Add libfnname parameter, handle free_func
hook fatal error case.
(acc_delete): Adjust delete_copyout call.
(acc_copyout): Likewise.
(update_dev_host): Move gomp_mutex_unlock to after
host2dev/dev2host hook calls.

* plugin/plugin-hsa.c (hsa_warn): Adjust 'hsa_error' local variable
to 'hsa_error_msg', for clarity.
(hsa_fatal): Likewise.
(hsa_error): New function.
(init_hsa_context): Change return type to bool, adjust to return
false on error.
(GOMP_OFFLOAD_get_num_devices): Adjust to handle init_hsa_context
return value.
(GOMP_OFFLOAD_init_device): Change return type to bool, adjust to
return false on error.
(get_agent_info): Adjust to return NULL on error.
(destroy_hsa_program): Change return type to bool, adjust to
return false on error.
(GOMP_OFFLOAD_load_image): Adjust to return -1 on error.
(destroy_module): Change return type to bool, adjust to
return false on error.
(GOMP_OFFLOAD_unload_image): Likewise.
(GOMP_OFFLOAD_fini_device): Likewise.
(GOMP_OFFLOAD_alloc): Change to return NULL when called.
(GOMP_OFFLOAD_free): Change to return false when called.
(GOMP_OFFLOAD_dev2host): Likewise.
(GOMP_OFFLOAD_host2dev): Likewise.
(GOMP_OFFLOAD_dev2dev): Likewise.

* plugin/plugin-nvptx.c (CUDA_CALL_ERET): New convenience macro.
(CUDA_CALL): Likewise.
(CUDA_CALL_ASSERT): Likewise.
(map_init): Change return type to bool, use CUDA_CALL* macros.
(map_fini): Likewise.
(init_streams_for_device): Change return type to bool, adjust
call to map_init.
(fini_streams_for_device): Change return type to bool, adjust
call to map_fini.
(select_stream_for_async): Release stream_lock before calls to
GOMP_PLUGIN_fatal, adjust call to map_init.
(nvptx_init): Use CUDA_CALL* macros.
(nvptx_attach_host_thread_to_device): Change return type to bool,
use CUDA_CALL* macros.
(nvptx_open_device): Use CUDA_CALL* macros.
(nvptx_close_device): Change return type to bool, use CUDA_CALL*
macros.
(nvptx_get_num_devices): Use CUDA_CALL* macros.
(link_ptx): Change return type to bool, use CUDA_CALL* macros.
(nvptx_exec): Use CUDA_CALL* macros.
(nvptx_alloc): Use CUDA_CALL* macros.
(nvptx_free): Change return type to bool, use CUDA_CALL* macros.
(nvptx_host2dev): Likewise.
(nvptx_dev2host): Likewise.
(nvptx_wait): Use CUDA_CALL* macros.
(nvptx_wait_async): Likewise.
(nvptx_wait_all): Likewise.
(nvptx_wait_all_async): Likewise.
(nvptx_set_cuda_stream): Adjust order of stream_lock acquire,
use CUDA_CALL* macros, adjust call to map_fini.
(GOMP_OFFLOAD_init_device): Change return type to bool,
adjust code accordingly.
(GOMP_OFFLOAD_fini_device): Likewise.
(GOMP_OFFLOAD_load_image): Adjust calls to
nvptx_attach_host_thread_to_device/link_ptx to handle errors,
use CUDA_CALL* macros.
(GOMP_OFFLOAD_unload_image): Change return type to bool, adjust
return code.
(GOMP_OFFLOAD_alloc): Adjust calls to code to handle error return.
(GOMP_OFFLOAD_free): Change return type to bool, adjust calls to
handle error return.
(GOMP_OFFLOAD_dev2host): Likewise.
(GOMP_OFFLOAD_host2dev): Likewise.
(GOMP_OFFLOAD_openacc_register_async_cleanup): Use CUDA_CALL* macros.
(GOMP_OFFLOAD_openacc_create_thread_data): Likewise.

liboffloadmic/
2016-05-26  Chung-Lin Tang  <cltang@codesourcery.com>

* plugin/libgomp-plugin-intelmic.cpp (offload): Change return type
to bool, adjust return code.
(GOMP_OFFLOAD_init_device): Likewise.
(GOMP_OFFLOAD_fini_device): Likewise.
(get_target_table): Likewise.
(offload_image): Likwise.
(GOMP_OFFLOAD_load_image): Adjust call to offload_image(), change
to return -1 on error.
(GOMP_OFFLOAD_unload_image): Change return type to bool, adjust return
code.
(GOMP_OFFLOAD_alloc): Likewise.
(GOMP_OFFLOAD_free): Likewise.
(GOMP_OFFLOAD_host2dev): Likewise.
(GOMP_OFFLOAD_dev2host): Likewise.
(GOMP_OFFLOAD_dev2dev): Likewise.

From-SVN: r236768