summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Extend STV pass to 64-bit modehjl/pr70155/masterH.J. Lu2016-04-2624-39/+733
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 128-bit SSE load and store instructions can be used for load and store of 128-bit integers if they are the only operations on 128-bit integers. To convert load and store of 128-bit integers to 128-bit SSE load and store, the original STV pass, which is designed to convert 64-bit integer operations to SSE2 operations in 32-bit mode, is extended to 64-bit mode in the following ways: 1. Class scalar_chain is turned into base class. The 32-bit specific member functions are moved to the new derived class, dimode_scalar_chain. The new derived class, timode_scalar_chain, is added to convert oad and store of 128-bit integers to 128-bit SSE load and store. 2. Add the 64-bit version of scalar_to_vector_candidate_p and remove_non_convertible_regs. Only TImode load and store are allowed for conversion. If one instruction on the chain of dependent instructions aren't TImode load or store, the chain of instructions won't be converted. 3. In 64-bit, we only convert from TImode to V1TImode, which have the same size. The difference is only vector registers are allowed in TImode so that 128-bit SSE load and store instructions will be used for load and store of 128-bit integers. 4. Put the 64-bit STV pass before the CSE pass so that instructions changed or generated by the STV pass can be CSEed. convert_scalars_to_vector calls free_dominance_info in 64-bit mode to work around ICE in fwprop pass: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70807 when building libgcc on Linux/x86-64. gcc/ PR target/70155 * config/i386/i386.c (scalar_to_vector_candidate_p): Renamed to ... (dimode_scalar_to_vector_candidate_p): This. (timode_scalar_to_vector_candidate_p): New function. (scalar_to_vector_candidate_p): Likewise. (timode_check_non_convertible_regs): Likewise. (timode_remove_non_convertible_regs): Likewise. (remove_non_convertible_regs): Likewise. (remove_non_convertible_regs): Renamed to ... (dimode_remove_non_convertible_regs): This. (scalar_chain::~scalar_chain): Make it virtual. (scalar_chain::compute_convert_gain): Make it pure virtual. (scalar_chain::mark_dual_mode_def): Likewise. (scalar_chain::convert_insn): Likewise. (scalar_chain::convert_registers): Likewise. (scalar_chain::add_to_queue): Make it protected. (scalar_chain::emit_conversion_insns): Likewise. (scalar_chain::replace_with_subreg): Likewise. (scalar_chain::replace_with_subreg_in_insn): Likewise. (scalar_chain::convert_op): Likewise. (scalar_chain::convert_reg): Likewise. (scalar_chain::make_vector_copies): Likewise. (scalar_chain::convert_registers): New pure virtual function. (class dimode_scalar_chain): New class. (class timode_scalar_chain): Likewise. (scalar_chain::mark_dual_mode_def): Renamed to ... (dimode_scalar_chain::mark_dual_mode_def): This. (timode_scalar_chain::mark_dual_mode_def): New function. (timode_scalar_chain::convert_insn): Likewise. (dimode_scalar_chain::convert_registers): Likewise. (scalar_chain::compute_convert_gain): Renamed to ... (dimode_scalar_chain::compute_convert_gain): This. (scalar_chain::replace_with_subreg): Renamed to ... (dimode_scalar_chain::replace_with_subreg): This. (scalar_chain::replace_with_subreg_in_insn): Renamed to ... (dimode_scalar_chain::replace_with_subreg_in_insn): This. (scalar_chain::make_vector_copies): Renamed to ... (dimode_scalar_chain::make_vector_copies): This. (scalar_chain::convert_reg): Renamed to ... (dimode_scalar_chain::convert_reg ): This. (scalar_chain::convert_op): Renamed to ... (dimode_scalar_chain::convert_op): This. (scalar_chain::convert_insn): Renamed to ... (dimode_scalar_chain::convert_insn): This. (scalar_chain::convert): Call convert_registers. (convert_scalars_to_vector): Change to scalar_chain pointer to use timode_scalar_chain in 64-bit mode and dimode_scalar_chain in 32-bit mode. Delete scalar_chain pointer. Call free_dominance_info in 64-bit mode. (pass_stv::gate): Remove TARGET_64BIT check. (ix86_option_override): Put the 64-bit STV pass before the CSE pass. gcc/testsuite/ PR target/70155 * gcc.target/i386/pr55247-2.c: Updated to check movti_internal and movv1ti_internal patterns * gcc.target/i386/pr70155-1.c: New test. * gcc.target/i386/pr70155-2.c: Likewise. * gcc.target/i386/pr70155-3.c: Likewise. * gcc.target/i386/pr70155-4.c: Likewise. * gcc.target/i386/pr70155-5.c: Likewise. * gcc.target/i386/pr70155-6.c: Likewise. * gcc.target/i386/pr70155-7.c: Likewise. * gcc.target/i386/pr70155-8.c: Likewise. * gcc.target/i386/pr70155-9.c: Likewise. * gcc.target/i386/pr70155-10.c: Likewise. * gcc.target/i386/pr70155-11.c: Likewise. * gcc.target/i386/pr70155-12.c: Likewise. * gcc.target/i386/pr70155-13.c: Likewise. * gcc.target/i386/pr70155-14.c: Likewise. * gcc.target/i386/pr70155-15.c: Likewise. * gcc.target/i386/pr70155-16.c: Likewise. * gcc.target/i386/pr70155-17.c: Likewise. * gcc.target/i386/pr70155-18.c: Likewise. * gcc.target/i386/pr70155-19.c: Likewise. * gcc.target/i386/pr70155-20.c: Likewise. * gcc.target/i386/pr70155-21.c: Likewise. * gcc.target/i386/pr70155-22.c: Likewise.
* * c-c++-common/cpp/pr63831-1.c: Don't test for C++ values here.jason2016-04-261-8/+8
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235445 138bc75d-0d04-0410-961f-82ee72b054a4
* match.pd: X + X --> X * 2 for integersglisse2016-04-268-33/+29
| | | | | | | | | | | | | | | | | | | 2016-04-26 Marc Glisse <marc.glisse@inria.fr> gcc/ * genmatch.c (write_predicate): Add ATTRIBUTE_UNUSED. * fold-const.c (fold_binary_loc): Remove 2 transformations superseded by match.pd. * match.pd (x+x -> x*2): Generalize to integers. gcc/testsuite/ * gcc.dg/fold-plusmult.c: Adjust. * gcc.dg/no-strict-overflow-6.c: Adjust. * gcc.dg/gomp/loop-1.c: Xfail some tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235444 138bc75d-0d04-0410-961f-82ee72b054a4
* i386: Add a variant peephole for lea rather than ops that clobber CC.bernds2016-04-262-0/+36
| | | | | | | | | | * config/i386/i386.md (operation on memory peephole): Duplicate an existing peephole and adapt it to match lea rather than an operation that clobbers CC. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235443 138bc75d-0d04-0410-961f-82ee72b054a4
* Enable -frename-registers at -O2.bernds2016-04-263-1/+11
| | | | | | | | | | PR rtl-optimization/57193 * opts.c (default_options_table): Add OPT_frename_registers at -O2 and above. * doc/invoke.texi (-frename-registers, -O2): Update documentation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235442 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix x86 testcases for -frename-registers.bernds2016-04-2627-93/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gcc.target/i386/avx512bw-vptestmb-1.c: Correct [xyz]mm register number scans. * gcc.target/i386/avx512bw-vptestmw-1.c: Likewise. * gcc.target/i386/avx512bw-vptestnmb-1.c: Likewise. * gcc.target/i386/avx512bw-vptestnmw-1.c: Likewise. * gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c: Likewise. * gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c: Likewise. * gcc.target/i386/avx512dq-vfpclasspd-1.c: Likewise. * gcc.target/i386/avx512dq-vfpclassps-1.c: Likewise. * gcc.target/i386/avx512dq-vinsertf64x2-1.c: Likewise. * gcc.target/i386/avx512dq-vinserti64x2-1.c: Likewise. * gcc.target/i386/avx512f-gather-5.c: Likewise. * gcc.target/i386/avx512f-vptestmd-1.c: Likewise. * gcc.target/i386/avx512f-vptestmq-1.c: Likewise. * gcc.target/i386/avx512f-vptestnmd-1.c: Likewise. * gcc.target/i386/avx512f-vptestnmq-1.c: Likewise. * gcc.target/i386/avx512f-vrndscaleps-1.c: Likewise. * gcc.target/i386/avx512vl-vpbroadcastmb2q-1.c: Likewise. * gcc.target/i386/avx512vl-vpbroadcastmw2d-1.c: Likewise. * gcc.target/i386/avx512vl-vptestmd-1.c: Likewise. * gcc.target/i386/avx512vl-vptestmq-1.c: Likewise. * gcc.target/i386/avx512vl-vptestnmd-1.c: Likewise. * gcc.target/i386/avx512vl-vptestnmq-1.c: Likewise. * gcc.target/i386/pr32219-2.c: Allow registers other than %eax in scans. * gcc.target/i386/pr32219-4.c: Likewise. * gcc.target/i386/pr32219-6.c: Likewise. * gcc.target/i386/pr32219-8.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235441 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix FAIL: gcc.dg/tree-ssa/minmax-2.c scan-tree-dump optimized "__builtin_fmin" ktkachov2016-04-262-0/+7
| | | | | | | | * gcc.dg/tree-ssa/minmax-2.c: Require c99_runtime and add the associated options. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235440 138bc75d-0d04-0410-961f-82ee72b054a4
* Verify __builtin_unreachable and __builtin_trap are not called with argumentsjamborm2016-04-261-0/+24
| | | | | | | | | | | 2016-04-26 Martin Jambor <mjambor@suse.cz> * tree-cfg.c (verify_gimple_call): Check that calls to __builtin_unreachable or __builtin_trap do not have actual arguments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235439 138bc75d-0d04-0410-961f-82ee72b054a4
* Bootstrapped/regtested on x86_64-linux, ok for trunk?mpolacek2016-04-267-9/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2016-04-25 Marek Polacek <polacek@redhat.com> PR c++/70744 * call.c (build_conditional_expr_1): Call cp_stabilize_reference instead of stabilize_reference. (build_over_call): Likewise. * cp-tree.h (cp_stabilize_reference): Declare. * tree.c (cp_stabilize_reference): New function. * typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of stabilize_reference. (unary_complex_lvalue): Likewise. (cp_build_modify_expr): Likewise. * g++.dg/ext/cond2.C: New test. diff --git gcc/cp/call.c gcc/cp/call.c index 11f2d42..476e806 100644 --- gcc/cp/call.c +++ gcc/cp/call.c @@ -4634,7 +4634,7 @@ build_conditional_expr_1 (location_t loc, tree arg1, tree arg2, tree arg3, /* Make sure that lvalues remain lvalues. See g++.oliva/ext1.C. */ if (real_lvalue_p (arg1)) - arg2 = arg1 = stabilize_reference (arg1); + arg2 = arg1 = cp_stabilize_reference (arg1); else arg2 = arg1 = save_expr (arg1); } @@ -7644,8 +7644,9 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) || (TREE_CODE (arg) == TARGET_EXPR && !unsafe_copy_elision_p (fa, arg))) { - tree to = stabilize_reference (cp_build_indirect_ref (fa, RO_NULL, - complain)); + tree to = cp_stabilize_reference (cp_build_indirect_ref (fa, + RO_NULL, + complain)); val = build2 (INIT_EXPR, DECL_CONTEXT (fn), to, arg); return val; @@ -7655,7 +7656,7 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) && trivial_fn_p (fn) && !DECL_DELETED_FN (fn)) { - tree to = stabilize_reference + tree to = cp_stabilize_reference (cp_build_indirect_ref (argarray[0], RO_NULL, complain)); tree type = TREE_TYPE (to); tree as_base = CLASSTYPE_AS_BASE (type); diff --git gcc/cp/cp-tree.h gcc/cp/cp-tree.h index ec92718..0e46ae1 100644 --- gcc/cp/cp-tree.h +++ gcc/cp/cp-tree.h @@ -6494,6 +6494,7 @@ extern cp_lvalue_kind real_lvalue_p (const_tree); extern cp_lvalue_kind lvalue_kind (const_tree); extern bool lvalue_or_rvalue_with_address_p (const_tree); extern bool xvalue_p (const_tree); +extern tree cp_stabilize_reference (tree); extern bool builtin_valid_in_constant_expr_p (const_tree); extern tree build_min (enum tree_code, tree, ...); extern tree build_min_nt_loc (location_t, enum tree_code, diff --git gcc/cp/tree.c gcc/cp/tree.c index 112c8c7..137186f 100644 --- gcc/cp/tree.c +++ gcc/cp/tree.c @@ -296,6 +296,46 @@ xvalue_p (const_tree ref) return (lvalue_kind (ref) == clk_rvalueref); } +/* C++-specific version of stabilize_reference. */ + +tree +cp_stabilize_reference (tree ref) +{ + switch (TREE_CODE (ref)) + { + /* We need to treat specially anything stabilize_reference doesn't + handle specifically. */ + case VAR_DECL: + case PARM_DECL: + case RESULT_DECL: + CASE_CONVERT: + case FLOAT_EXPR: + case FIX_TRUNC_EXPR: + case INDIRECT_REF: + case COMPONENT_REF: + case BIT_FIELD_REF: + case ARRAY_REF: + case ARRAY_RANGE_REF: + case COMPOUND_EXPR: + case ERROR_MARK: + break; + default: + cp_lvalue_kind kind = lvalue_kind (ref); + if ((kind & ~clk_class) != clk_none) + { + tree type = unlowered_expr_type (ref); + bool rval = !!(kind & clk_rvalueref); + type = cp_build_reference_type (type, rval); + /* This inhibits warnings in, eg, cxx_mark_addressable + (c++/60955). */ + warning_sentinel s (extra_warnings); + ref = build_static_cast (type, ref, tf_error); + } + } + + return stabilize_reference (ref); +} + /* Test whether DECL is a builtin that may appear in a constant-expression. */ diff --git gcc/cp/typeck.c gcc/cp/typeck.c index cef5604..7e12009 100644 --- gcc/cp/typeck.c +++ gcc/cp/typeck.c @@ -5912,7 +5912,7 @@ cp_build_unary_op (enum tree_code code, tree xarg, int noconvert, { tree real, imag; - arg = stabilize_reference (arg); + arg = cp_stabilize_reference (arg); real = cp_build_unary_op (REALPART_EXPR, arg, 1, complain); imag = cp_build_unary_op (IMAGPART_EXPR, arg, 1, complain); real = cp_build_unary_op (code, real, 1, complain); @@ -6112,7 +6112,7 @@ unary_complex_lvalue (enum tree_code code, tree arg) tree lvalue = TREE_OPERAND (arg, 0); if (TREE_SIDE_EFFECTS (lvalue)) { - lvalue = stabilize_reference (lvalue); + lvalue = cp_stabilize_reference (lvalue); arg = build2 (TREE_CODE (arg), TREE_TYPE (arg), lvalue, TREE_OPERAND (arg, 1)); } @@ -7496,7 +7496,7 @@ cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs, case PREINCREMENT_EXPR: if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0))) lhs = build2 (TREE_CODE (lhs), TREE_TYPE (lhs), - stabilize_reference (TREE_OPERAND (lhs, 0)), + cp_stabilize_reference (TREE_OPERAND (lhs, 0)), TREE_OPERAND (lhs, 1)); newrhs = cp_build_modify_expr (TREE_OPERAND (lhs, 0), modifycode, rhs, complain); @@ -7516,7 +7516,7 @@ cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs, case MODIFY_EXPR: if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0))) lhs = build2 (TREE_CODE (lhs), TREE_TYPE (lhs), - stabilize_reference (TREE_OPERAND (lhs, 0)), + cp_stabilize_reference (TREE_OPERAND (lhs, 0)), TREE_OPERAND (lhs, 1)); newrhs = cp_build_modify_expr (TREE_OPERAND (lhs, 0), modifycode, rhs, complain); @@ -7665,7 +7665,7 @@ cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs, not intervene between the lvalue-to-rvalue conversion and the side effect associated with any single compound assignment operator. -- end note ] */ - lhs = stabilize_reference (lhs); + lhs = cp_stabilize_reference (lhs); rhs = rvalue (rhs); rhs = stabilize_expr (rhs, &init); newrhs = cp_build_binary_op (input_location, diff --git gcc/testsuite/g++.dg/ext/cond2.C gcc/testsuite/g++.dg/ext/cond2.C index e69de29..d9f1d59 100644 --- gcc/testsuite/g++.dg/ext/cond2.C +++ gcc/testsuite/g++.dg/ext/cond2.C @@ -0,0 +1,28 @@ +// PR c++/70744 +// { dg-do run } +// { dg-options "" } + +static void +fn1 (void) +{ + int x = 2; + ++x ? : 42; + if (x != 3) + __builtin_abort (); + --x ? : 42; + if (x != 2) + __builtin_abort (); + x++ ? : 42; + if (x != 3) + __builtin_abort (); + x-- ? : 42; + if (x != 2) + __builtin_abort (); +} + +int +main () +{ + fn1 (); + return 0; +} git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235438 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-if-conv.c (any_pred_load_store): New static variable.amker2016-04-262-25/+32
| | | | | | | | | | | (if_convertible_gimple_assign_stmt_p): Remove parameter. Use any_pred_load_store instead of and_mask_load_store. (if_convertible_stmt_p, if_convertible_loop_p_1): Ditto. (if_convertible_loop_p, insert_gimplified_predicates): Ditto. (combine_blocks, tree_if_conversion): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235437 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-optimization/70771amker2016-04-265-63/+88
| | | | | | | | | | | | | | | | | | | PR tree-optimization/70775 * tree-if-conv.c (if_convertible_phi_p): Remove check on special virtual PHI nodes. Delete parameter. (if_convertible_loop_p_1): Delete argument to above function. (predicate_all_scalar_phis): Delete code handling single-argument PHIs. (tree_if_conversion): Mark and update virtual SSA. gcc/testsuite/ChangeLog PR tree-optimization/70771 PR tree-optimization/70775 * gcc.dg/pr70771.c: New test. * gcc.dg/pr70771.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235436 138bc75d-0d04-0410-961f-82ee72b054a4
* Support .largecomm with Solaris as (PR target/61821)ro2016-04-265-11/+39
| | | | | | | | | | | | | | | | | | PR target/61821 * config/i386/i386.c (LARGECOMM_SECTION_ASM_OP): Define default. (x86_elf_aligned_common): Rename to ... (x86_elf_aligned_decl_common): ... this. Add decl arg. Switch to .lbss for largecomm object. Use LARGECOMM_SECTION_ASM_OP. * config/i386/i386-protos.h (x86_elf_aligned_common): Reflect renaming. * config/i386/x86-64.h (ASM_OUTPUT_ALIGNED_COMMON): Rename to ... (ASM_OUTPUT_ALIGNED_DECL_COMMON): ... this. Pass new decl arg. * config/i386/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Likewise. [!USE_GAS] (LARGECOMM_SECTION_ASM_OP): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235435 138bc75d-0d04-0410-961f-82ee72b054a4
* Support .lbss etc. sections with Solaris as (PR target/59407)ro2016-04-266-3/+48
| | | | | | | | | | | | | | | | | PR target/59407 * config/i386/i386.c (SECTION_LARGE): Define. (x86_64_elf_select_section): Set it for large data/bss sections. Only clear SECTION_WRITE for .lrodata. (x86_64_elf_section_type_flags): Set SECTION_LARGE for large data/bss sections. * config/i386/sol2.h (MACH_DEP_SECTION_ASM_FLAG): Define. * varasm.c (default_elf_asm_named_section): Grow flagchars. [MACH_DEP_SECTION_ASM_FLAG] Emit MACH_DEP_SECTION_ASM_FLAG for SECTION_MACH_DEP. * doc/tm.texi.in (Sections, MACH_DEP_SECTION_ASM_FLAG): Describe. * doc/tm.texi: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235434 138bc75d-0d04-0410-961f-82ee72b054a4
* Compile libcilkrts with -funwind-tables (PR target/60290)ro2016-04-263-1/+12
| | | | | | | | PR target/60290 * Makefile.am (GENERAL_FLAGS): Add -funwind-tables. * Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235432 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc.target/i386/lzcnt-1.c: Allow a different lzcntw output register.bernds2016-04-262-1/+5
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235431 138bc75d-0d04-0410-961f-82ee72b054a4
* PR bootstrap/70704jakub2016-04-2612-41/+94
| | | | | | | | | | | | | | | | | | | | | | | * configure.ac (--enable-stage1-checking): For --disable-checking or implicit --enable-checking, make sure extra flag matches in between stage1 and later checking. * configure: Regenerated. gcc/ * configure.ac (--enable-checking): Document extra flag, for non-release builds default to --enable-checking=yes,extra. If misc checking and extra checking, define CHECKING_P to 2 instead of 1. * common.opt (fchecking=): Add. * doc/invoke.texi (-fchecking=): Document. * doc/install.texi: Document --enable-checking changes. * configure: Regenerated. * config.in: Regenerated. gcc/cp/ * pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of just flag_checking. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235430 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2016-04-261-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235428 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.md (*movxi_internal_avx512f): Use insn typeuros2016-04-253-13/+22
| | | | | | | | | | attribute instead of which_alternative. * config/i386/sse.md (*mov<mode>_internal): Ditto. Use EXT_REX_SSE_REG_P where appropriate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235422 138bc75d-0d04-0410-961f-82ee72b054a4
* * sv.po: Update.jsm282016-04-252-785/+529
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235419 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/predicates.md (const0_operand): Do not matchuros2016-04-252-2/+8
| | | | | | | | | const_wide_int code. (const1_operand): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235417 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.md (*movoi_internal_avx): Set mode attribute to XIuros2016-04-255-28/+48
| | | | | | | | | | | | | | | for SSE constm1 operands and TARGET_AVX512VL. (*movti_internal): Ditto. (*mov<mode>_or): Use constm1_operand predicate. * config/i386/sse.md (*mov<mode>_internal): Set mode attribute to XI for SSE vector_all_ones operands and TARGET_AVX512VL. * config/i386/predicates.md (constm1_operand): New predicate. * config/i386/i386.c (standard_sse_constant_opcode): Simplify emission of constant -1 load. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235416 138bc75d-0d04-0410-961f-82ee72b054a4
* * gdbinit.in: Skip is-a.h.jason2016-04-252-0/+5
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235415 138bc75d-0d04-0410-961f-82ee72b054a4
* Implement C++17 [[maybe_unused]] attribute.jason2016-04-2513-18/+80
| | | | | | | | | | | | | | | | gcc/ * attribs.c (register_scoped_attributes): Fix logic. * attribs.h: Declare register_scoped_attributes. c-family/ * c-common.c (handle_unused_attribute): Accept CONST_DECL. No longer static. * c-common.h: Declare it. * c-lex.c (c_common_has_attribute): Add maybe_unused. cp/ * tree.c (std_attribute_table): New. (init_tree): Register it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235414 138bc75d-0d04-0410-961f-82ee72b054a4
* Correct ChangeLog entrywschmidt2016-04-251-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235413 138bc75d-0d04-0410-961f-82ee72b054a4
* 2016-04-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com>wschmidt2016-04-252-7/+12
| | | | | | | | | * rs6000-builtin.def: Correct pasto error for stxvd2x and stxvw4x built-in functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235412 138bc75d-0d04-0410-961f-82ee72b054a4
* Revert the last change in libatomichjl2016-04-252-2/+13
| | | | | | | | | | | Need to properly check if -march=i486 is really needed for -m32 build of libatomic on Linux/x86 and Linux/x86-64. PR target/70454 * configure.tgt (XCFLAGS): Revert the last change. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235411 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/msp430/msp430.md (ashlhi3): Optimize one bit shifts.nickc2016-04-252-0/+15
| | | | | | | | (ashrhi3): Likewise. (lshrhi3): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235410 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/msp430/cmpd.c (__mspabi_cmpf): Add prototype.nickc2016-04-257-6/+32
| | | | | | | | | | | | | | (__mspabi_cmpd): Likewise. * config/msp430/floathidf.c (__floathidf): Likewise. * config/msp430/floathisf.c (__floathisf): Likewise * config/msp430/floatunhidf.c (__floatunssidf): Likewise. * config/msp430/floatunhisf.c (__floatunshisf): Likewise. * config/msp430/lib2shift.c (__ashlsi3): Take a signed char as the second parameter. (__ashrsi3): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235409 138bc75d-0d04-0410-961f-82ee72b054a4
* 2016-04-25 Richard Biener <rguenther@suse.de>rguenth2016-04-254-1/+42
| | | | | | | | | | | | | PR tree-optimization/70780 * tree-ssa-pre.c (compute_antic_aux): Also return true if the block wasn't visited yet. (compute_antic): Mark blocks with abnormal preds as visited as they have a final empty antic-in solution already. * gcc.dg/torture/pr70780.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235407 138bc75d-0d04-0410-961f-82ee72b054a4
* 2016-04-25 Michael Collison <michael.collison@linaro.org>collison2016-04-251-20/+23
| | | | | | | | * ChangeLog(2016-04-25): Fix ChangeLog formatting. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235403 138bc75d-0d04-0410-961f-82ee72b054a4
* 2016-04-25 Michael Collison <michael.collison@linaro.org>collison2016-04-2512-52/+328
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/arm/neon.md (widen_<us>sum<mode>): New patterns where mode is VQI to improve mixed mode vectorization. * config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3): New define_insn to match low half of signed vaddw. * config/arm/neon.md (vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): New define_insn to match high half of signed vaddw. * config/arm/neon.md (vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): New define_insn to match low half of unsigned vaddw. * config/arm/neon.md (vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): New define_insn to match high half of unsigned vaddw. * config/arm/arm.c (arm_simd_vect_par_cnst_half): New function. (arm_simd_check_vect_par_cnst_half_p): Likewise. * config/arm/arm-protos.h (arm_simd_vect_par_cnst_half): Prototype for new function. (arm_simd_check_vect_par_cnst_half_p): Likewise. * config/arm/predicates.md (vect_par_constant_high): Support big endian and simplify by calling arm_simd_check_vect_par_cnst_half (vect_par_constant_low): Likewise. * testsuite/gcc.target/arm/neon-vaddws16.c: New test. * testsuite/gcc.target/arm/neon-vaddws32.c: New test. * testsuite/gcc.target/arm/neon-vaddwu16.c: New test. * testsuite/gcc.target/arm/neon-vaddwu32.c: New test. * testsuite/gcc.target/arm/neon-vaddwu8.c: New test. * testsuite/lib/target-supports.exp (check_effective_target_vect_widen_sum_hi_to_si_pattern): Indicate that arm neon support vector widen sum of HImode TO SImode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235402 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2016-04-251-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235401 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.md (*lea<mode>_general_4): Use const_0_to_3_operanduros2016-04-242-7/+10
| | | | | | | | predicate for operand 2. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235397 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386-protos.h (standard_sse_constant_p): Adduros2016-04-247-102/+185
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | machine_mode argument. * config/i386/i386.c (standard_sse_constant_p): Return 2 for constm1_rtx operands. For VOIDmode constants, get mode from pred_mode. Check mode size if the mode is supported by ABI. (standard_sse_constant_opcode): Do not use standard_constant_p. Strictly check ABI support for all-ones operands. (ix86_legitimate_constant_p): Handle TImode, OImode and XImode immediates. Update calls to standard_sse_constant_p. (ix86_expand_vector_move): Update calls to standard_sse_constant_p. (ix86_rtx_costs): Ditto. * config/i386/i386.md (*movxi_internal_avx512f): Use nonimmediate_or_sse_const_operand instead of vector_move_operand. Use (v,BC) alternative instead of (v,C). Use register_operand checks instead of MEM_P. (*movoi_internal_avx): Use nonimmediate_or_sse_const_operand instead of vector_move_operand. Add (v,BC) alternative and corresponding avx2 isa attribute. Use register_operand checks instead of MEM_P. (*movti_internal): Use nonimmediate_or_sse_const_operand for TARGET_SSE. Improve TARGET_SSE insn constraint. Add (v,BC) alternative and corresponding sse2 isa attribute. (*movtf_internal, *movdf_internal, *movsf_interal): Update calls to standard_sse_constant_p. (FP constant splitters): Ditto. * config/i386/constraints.md (BC): Do not use standard_sse_constant_p. (C): Ditto. * config/i386/predicates.md (constm1_operand): Remove. (nonimmediate_or_sse_const_operand): Rewrite using RTX. * config/i386/sse.md (*<avx512>_cvtmask2<ssemodesuffix><mode>): Use vector_all_ones_operand instead of constm1_operand. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235396 138bc75d-0d04-0410-961f-82ee72b054a4
* libstdc++/70762 fix fallback implementation of nonexistent_pathredi2016-04-242-2/+10
| | | | | | | | PR libstdc++/70762 * testsuite/util/testsuite_fs.h (__gnu_test::nonexistent_path): Use static counter to return a different path on every call. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235395 138bc75d-0d04-0410-961f-82ee72b054a4
* make avail_stores a vec<rtx_insn *>tbsaunde2016-04-244-16/+48
| | | | | | | | | | | | | | | | | | | gcc/ChangeLog: 2016-04-24 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * print-rtl.c (print_rtx_insn_vec): New function. * print-rtl.h: New prototype. * store-motion.c (struct st_expr): Make avail_stores a vector. (st_expr_entry): Adjust. (free_st_expr_entry): Likewise. (print_store_motion_mems): Likewise. (find_moveable_store): Likewise. (compute_store_table): Likewise. (delete_store): Likewise. (build_store_vectors): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235394 138bc75d-0d04-0410-961f-82ee72b054a4
* stop using rtx_insn_list in reorg.ctbsaunde2016-04-242-12/+15
| | | | | | | | | | gcc/ChangeLog: 2016-04-24 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * reorg.c (try_merge_delay_insns): Make merged_insns a vector. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235393 138bc75d-0d04-0410-961f-82ee72b054a4
* add some utility methods to vectbsaunde2016-04-242-1/+50
| | | | | | | | | | | | | gcc/ChangeLog: 2016-04-24 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * vec.h (vec_safe_contains): New function. (vec::contains): Likewise. (vec::begin): Likewise. (vec::end): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235392 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2016-04-241-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235390 138bc75d-0d04-0410-961f-82ee72b054a4
* PR sanitizer/70712jakub2016-04-234-1/+43
| | | | | | | | | * cfgexpand.c (expand_stack_vars): Fix typo. * c-c++-common/asan/pr70712.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235384 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: Expose runtime code through Func_expression.ian2016-04-235-3/+70
| | | | | | | | | | | Enables us to easily check if a Call_expression is a call to a runtime function and, if so, which runtime function is corresponds to. This will be used during escape analysis. Reviewed-on: https://go-review.googlesource.com/18544 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235383 138bc75d-0d04-0410-961f-82ee72b054a4
* PR libstdc++/70745timshen2016-04-233-8/+28
| | | | | | | | | * include/bits/regex_executor.tcc (_Executor<>::_M_word_boundary): Fix the match_not_bow and match_not_eow behavior. * testsuite/28_regex/regression.cc: Add testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235382 138bc75d-0d04-0410-961f-82ee72b054a4
* add basic .gitattributes files to notice whitespace issuestbsaunde2016-04-234-0/+10
| | | | | | | | | | | | | | | | gcc/testsuite/ChangeLog: 2016-04-22 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * .gitattributes: New file. /ChangeLog: 2016-04-22 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * .gitattributes: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235381 138bc75d-0d04-0410-961f-82ee72b054a4
* cmd/go: bring in final version of gccgo pkg-config supportian2016-04-232-3/+12
| | | | | | | | | | | | This updates gccgo to the final version of https://golang.org/cl/18790, by Michael Hudson-Doyle. Update golang/go#11739. Reviewed-on: https://go-review.googlesource.com/22400 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235380 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2016-04-231-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235379 138bc75d-0d04-0410-961f-82ee72b054a4
* Add myself as maintainer for the PowerPC portsegher2016-04-222-0/+5
| | | | | | | * MAINTAINERS (rs6000/powerpc port): Add myself. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235373 138bc75d-0d04-0410-961f-82ee72b054a4
* [testsuite] gcc-dg: handle all return values when shouldfail is setclyon2016-04-222-0/+5
| | | | | | | | | | 2016-04-22 Christophe Lyon <christophe.lyon@linaro.org> * lib/gcc-dg.exp (${tool}_load): Add default return value handler. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235372 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-cppbuiltin.c (c_cpp_builtins): Fix __cpp_range_based_for.jason2016-04-222-1/+7
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235371 138bc75d-0d04-0410-961f-82ee72b054a4
* * parser.c (cp_parser_perform_range_for_lookup): Decay the array.jason2016-04-222-2/+6
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235370 138bc75d-0d04-0410-961f-82ee72b054a4
* 2016-04-22 Dominique d'Humieres <dominiq@lps.ens.fr>dominiq2016-04-223-1/+7
| | | | | | | | | * gfortran.dg/submodule_14.f08: Add cleanup-submodules. * gfortran.dg/submodule_15.f08: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235367 138bc75d-0d04-0410-961f-82ee72b054a4