summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-05-17aarch64: Retpoline (Spectre-V2 mitigation) for aarch64.master-dbcf2c2b2eChristoph Muellner
The compiler option -mindirect-branch=<value> converts indirect branch-and-link-register and branch-register instructions according to <value>. The default is ``keep``, which keeps indirect branch-and-link-register and branch-register instructions unmodified. ``thunk`` converts indirect branch-and-link-register/branch-register instructions to a branch-and-link/branch to a function containing a retpoline (to stop speculative execution) followed by a branch-register to the target. ``thunk-inline`` is similar to ``thunk``, but inlines the retpoline before the branch-and-link-register/branch-register instruction. ``thunk-extern`` is also similar to ``thunk``, but does not insert the functions containing the retpoline. When using this option, these functions need to be provided in a separate object file. The retpoline functions exist for each register and are named ``__aarch64_indirect_thunk_xN`` (N being the register number). It is also possible to override the indirect-branch setting for individual fuctions using the function attribute ``indirect_branch``. The actual retpoline instruction sequence, which prevents speculative indirect branches looks like this:: str x30, [sp, #-16]! bl 101f 100: //speculation trap wfe b 100b 101: //do ROP adr x30, 102f ret 102: //non-spec code ldr x30, [sp], #16 This patch has been tested with the included testcases and various other source bases (benchmarks, retpoline-patched arm64 kernel, etc.). Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com> Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
2018-05-15 PR lto/85583hubicka
* lto-partition.c (account_reference_p): Do not account references from aliases; do not account refernces from external initializers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260266 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-152018-05-15 Paolo Carlini <paolo.carlini@oracle.com>paolo
* cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New. (FOR_EACH_CLONE): Update. * decl.c (grokdeclarator): Use it. * decl2.c (vague_linkage_p): Likewise. * mangle.c (mangle_decl): Likewise. * method.c (lazily_declare_fn): Likewise. * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise. * repo.c (repo_emit_p): Likewise. * tree.c (decl_linkage): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260264 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-15PR libstdc++/85749 constrain seed sequences for random number enginesredi
Constrain constructors and member functions of random number engines so that functions taking seed sequences can only be called with types that meet the seed sequence requirements. PR libstdc++/85749 * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper. (linear_congruential_engine, mersenne_twister_engine) (subtract_with_carry_engine, discard_block_engine) (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to constrain function templates taking seed sequences. * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&)) (mersenne_twister_engine::seed(_Sseq&)) (subtract_with_carry_engine::seed(_Sseq&)): Change return types to match declarations. * include/ext/random (simd_fast_mersenne_twister_engine): Use __is_seed_seq to constrain function templates taking seed sequences. * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed): Change return type to match declaration. * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc: New. * testsuite/26_numerics/random/independent_bits_engine/cons/ seed_seq2.cc: New. * testsuite/26_numerics/random/linear_congruential_engine/cons/ seed_seq2.cc: New. * testsuite/26_numerics/random/mersenne_twister_engine/cons/ seed_seq2.cc: New. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno. * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc: New. * testsuite/26_numerics/random/subtract_with_carry_engine/cons/ seed_seq2.cc: New. * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/ seed_seq2.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260263 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-15PR libstdc++/83891 fix path::is_absolute() for non-POSIX targetsredi
The correct definition seems to be has_root_directory() for all systems we care about. PR libstdc++/83891 * include/bits/fs_path.h (path::is_absolute()): Use same definition for all operating systems. * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise. * testsuite/27_io/filesystem/path/query/is_absolute.cc: New. * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment. * testsuite/experimental/filesystem/path/query/is_absolute.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260259 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-15Remove unused headers from testsredi
* testsuite/27_io/filesystem/path/decompose/extension.cc: Remove unused <vector> header. * testsuite/27_io/filesystem/path/query/empty.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_root_directory.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise. * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise. * testsuite/experimental/filesystem/path/decompose/extension.cc: Likewise. * testsuite/experimental/filesystem/path/query/empty.cc: Likewise. * testsuite/experimental/filesystem/path/query/has_extension.cc: Likewise. * testsuite/experimental/filesystem/path/query/has_filename.cc: Likewise. * testsuite/experimental/filesystem/path/query/has_parent_path.cc: Likewise. * testsuite/experimental/filesystem/path/query/has_relative_path.cc: Likewise. * testsuite/experimental/filesystem/path/query/has_root_directory.cc: Likewise. * testsuite/experimental/filesystem/path/query/has_root_name.cc: Likewise. * testsuite/experimental/filesystem/path/query/has_root_path.cc: Likewise. * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise. * testsuite/experimental/filesystem/path/query/is_relative.cc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260256 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-15PR libstdc++/84159 fix appending strings to pathsredi
The path::operator/=(const Source&) and path::append overloads were still following the semantics of the Filesystem TS not C++17. Only the path::operator/=(const path&) overload was correct. This change adds more tests for path::operator/=(const path&) and adds new tests to verify that the other append operations have equivalent behaviour. PR libstdc++/84159 * include/bits/fs_path.h (path::operator/=, path::append): Construct temporary path before calling _M_append. (path::_M_append): Change parameter to path and implement C++17 semantics. * testsuite/27_io/filesystem/path/append/path.cc: Add helper function and more examples from the standard. * testsuite/27_io/filesystem/path/append/source.cc: New. * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment. * testsuite/27_io/filesystem/path/nonmember/append.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260255 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-15Qualify std::__invoke in <variant> to prevent ADLredi
* include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify __invoke to prevent ADL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260254 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-152018-05-15 Richard Biener <rguenther@suse.de>rguenth
* tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter, add by_clobber_p one. Change algorithm to collect all defs representing uses we need to walk and try reducing them to a single one before failing. (dse_dom_walker::dse_optimize_stmt): Adjust. * gcc.dg/tree-ssa/ssa-dse-31.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260253 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-15DWARF: Use DW_OP_addrx and DW_OP_constx for DWARF5.mark
For older DWARF and -gsplit-dwarf we want to emit DW_OP_GNU_addr_index and DW_OP_GNU_const_index, but for DWARF5 we should use DW_OP_addrx and DW_OP_constx. gcc/ChangeLog: * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx. (size_of_loc_descr): Likewise. (output_loc_operands): Likewise. (output_loc_operands_raw): Likewise. (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx. (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx. (hash_loc_operands): Likewise. (compare_loc_operands): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260252 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-15DWARF calculate the number of indexed addresses.mark
The length in the .debug_addr unit header was calculated using the number of elements in the addr_index_table. This is wrong because the entries in the table are refcounted and only those with a refcount > 0 are actually put in the index. Add a helper function count_index_addrs to get the correct number of addresses in the index. gcc/ChangeLog: * dwarf2out.c (count_index_addrs): New function. (dwarf2out_finish): Use count_index_addrs to calculate addrs_length. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260251 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-152018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>prathamesh3492
PR tree-optimization/83648 * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL return value as malloc candidate. testsuite/ * gcc.dg/tree-ssa/pr83648.c: New test. * gcc.dg/tree-ssa/pr83648-2.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260250 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-152018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>prathamesh3492
PR ipa/85734 * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param as true in call to suggest_attribute. testsuite/ * gcc.dg/ipa/pr85734.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260249 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-15Daily bump.gccadmin
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260248 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14 PR target/85756ebotcazou
* gnat.dg/opt70.adb: New test. * gnat.dg/opt70_pkg.ad[sb]: New helper. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260239 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14 Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.jason
* tree.c (build_cp_fntype_variant): New. (build_ref_qualified_type, build_exception_variant) (strip_typedefs, cxx_copy_lang_qualifiers): Use it. (cxx_type_hash_eq, cp_check_qualified_type): Check TYPE_HAS_LATE_RETURN_TYPE. (cp_build_type_attribute_variant): Check cxx_type_hash_eq. (cp_build_qualified_type_real): No need to preserve C++ qualifiers. * class.c (build_clone): Use cxx_copy_lang_qualifiers. (adjust_clone_args): Likewise. * decl.c (grokfndecl): Add late_return_type_p parameter. Use build_cp_fntype_variant. (grokdeclarator): Pass late_return_type_p to grokfndecl. (check_function_type): Use cxx_copy_lang_qualifiers. (static_fn_type): Use cxx_copy_lang_qualifiers. * decl2.c (build_memfn_type, maybe_retrofit_in_chrg) (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type) (change_return_type): Use cxx_copy_lang_qualifiers. * mangle.c (write_type): Use cxx_copy_lang_qualifiers. * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit return type on the declarator like a normal trailing return type. * pt.c (tsubst_function_type): Use build_cp_fntype_variant. (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers. * typeck.c (merge_types): Use build_cp_fntype_variant. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260238 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14rs6000: Fix -mreadonly-in-sdata documentationsegher
For some reason I made both an @item and an @itemx for -mreadonly-in-sdata. This fixes it. * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for -mreadonly-in-sdata. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260237 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14PR libstdc++/81256 fix exception handling in basic_filebuf::closeredi
PR libstdc++/81256 * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow exceptions from _M_terminate_output(). * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any exceptions from close(). * testsuite/27_io/basic_filebuf/close/81256.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260236 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14[AArch64] Add combine pattern to fuse AESE/AESMC instructionsktkachov
When the AESE,AESD and AESMC, AESMC instructions are generated through the appropriate arm_neon.h intrinsics we really want to keep them together when the AESE feeds into an AESMC and fusion is supported by the target CPU. We have macro-fusion hooks and scheduling model forwarding paths defined to facilitate that. It is, however, not always enough. This patch adds another mechanism for doing that. When we can detect during combine that the required dependency is exists (AESE -> AESMC, AESD -> AESIMC) just keep them together with a combine pattern throughout the rest of compilation. We won't ever want to split them. The testcases generate 4 AESE(D) instructions in a block followed by 4 AES(I)MC instructions that consume the corresponding results and it also adds a bunch of computations in-between so that the AESE and AESMC instructions are not trivially back-to-back, thus exercising the compiler's ability to bring them together. With this patch all 4 pairs are fused whereas before a couple of fusions would be missed due to intervening arithmetic and memory instructions. * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused): New pattern. (aarch64_crypto_aesd_fused): Likewise. * gcc.target/aarch64/crypto-fuse-1.c: New test. * gcc.target/aarch64/crypto-fuse-2.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260234 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14Remove remaining uses of * in patternswilco
Remove the remaining uses of '*' from aarch64.md. Using '*' in alternatives is typically incorrect as it tells the register allocator to ignore those alternatives. Also add a missing '?' so we prefer a floating point register for same-size int<->fp conversions. gcc/ * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives. (movsi_aarch64): Likewise. (load_pairsi): Likewise. (load_pairdi): Likewise. (store_pairsi): Likewise. (store_pairdi): Likewise. (load_pairsf): Likewise. (load_pairdf): Likewise. (store_pairsf): Likewise. (store_pairdf): Likewise. (zero_extend): Likewise. (trunc): Swap alternatives. (fcvt_target): Add '?' to prefer w over r. testsuite/ * gcc.target/aarch64/vmov_n_1.c: Update test. * gcc.target/aarch64/vfp-1.c: Update test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260233 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14 * testsuite/ChangeLog: Add missing PR number.uros
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260232 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14 PR target/85756uros
* config/i386/i386.md: Disallow non-commutative arithmetics in last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS in the peephole2 before it. testsuite/ChangeLog: * gcc.c-torture/execute/pr85756.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260231 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14Add __attribute__((malloc) to allocator and remove unused coderedi
* include/bits/valarray_array.h (__valarray_get_memory): Remove. (__valarray_get_storage): Call operator new directly. Remove ignored top-level restrict qualifier and add malloc attribute instead. (_Array<_Tp>::_Array(size_t)): Remove unused constructor. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260230 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14PR libstdc++/67554 Do not pass null pointers to memcpyredi
PR libstdc++/67554 * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>) (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260229 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-142018-05-14 Paolo Carlini <paolo.carlini@oracle.com>paolo
* cp-tree.h (TYPE_REF_P): New. (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update. * call.c (build_list_conv, build_aggr_conv, standard_conversion, direct_reference_binding, reference_binding, implicit_conversion, add_builtin_candidate, build_user_type_conversion_1, build_op_call_1, build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue, build_over_call, perform_implicit_conversion_flags, extend_ref_init_temps, type_has_extended_temps): Use it. * class.c (one_inheriting_sig, check_field_decls, check_bases_and_members, find_flexarrays, finish_struct, fixed_type_or_null): Likewise. * constexpr.c (literal_type_p, cxx_bind_parameters_in_call, non_const_var_error, cxx_eval_constant_expression, potential_constant_expression_1): Likewise. * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable, cp_genericize_r, cxx_omp_privatize_by_reference, cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause, cp_fold_maybe_rvalue): Likewise. * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise. * cvt.c (build_up_reference, convert_to_reference, convert_from_reference, convert_to_void, noexcept_conv_p, fnptr_conv_p): Likewise. * decl.c (poplevel, check_for_uninitialized_const_var, check_initializer, initialize_local_var, cp_finish_decl, get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p, move_signature_fn_p, grok_op_properties, finish_function): Likewise. * decl2.c (grok_array_decl, cp_reconstruct_complex_type, decl_maybe_constant_var_p): Likewise. * error.c (dump_type_prefix, dump_expr): Likewise. * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p, is_admissible_throw_operand_or_catch_parameter): Likewise. * expr.c (mark_use): Likewise. * init.c (build_zero_init_1, build_value_init_noctor, perform_member_init, diagnose_uninitialized_cst_or_ref_member_1, build_new, build_delete): Likewise. * lambda.c (build_lambda_object): Likewise. * mangle.c (write_expression, write_template_arg): Likewise. * method.c (forward_parm, do_build_copy_constructor, do_build_copy_assign, build_stub_object, constructible_expr, walk_field_subobs): Likewise. * parser.c (cp_parser_omp_for_loop_init, cp_parser_omp_declare_reduction_exprs, cp_parser_omp_declare_reduction): Likewise. * pt.c (convert_nontype_argument_function, convert_nontype_argument, convert_template_argument, tsubst_pack_expansion, tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build, maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify, more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r, value_dependent_expression_p, build_deduction_guide): Likewise. * semantics.c (finish_handler_parms, finish_non_static_data_member, finish_compound_literal, omp_privatize_field, handle_omp_array_sections_1, handle_omp_array_sections, cp_check_omp_declare_reduction, finish_omp_reduction_clause, finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink, finish_omp_clauses, finish_decltype_type, capture_decltype, finish_builtin_launder): Likewise. * tree.c (lvalue_kind, cp_build_reference_type, move, cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise. * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr, cp_build_indirect_ref_1, convert_arguments, warn_for_null_address, cp_build_addr_expr_1, maybe_warn_about_useless_cast, build_static_cast_1, build_static_cast, build_reinterpret_cast_1, build_const_cast_1, cp_build_c_cast, cp_build_modify_expr, convert_for_initialization, maybe_warn_about_returning_address_of_local, check_return_expr, cp_type_quals, casts_away_constness, non_reference): Likewise. * typeck2.c (cxx_readonly_error, store_init_value, process_init_constructor_record, build_x_arrow, build_functional_cast, add_exception_specifier): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260228 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14 * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.jason
(tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl. gcc/c-family/ * c-common.c (valid_array_size_p): Add complain parameter. * c-common.h: ...which defaults to true. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260227 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14PR libstdc++/82966 fix swapping of node handlesredi
PR libstdc++/82966 * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value instead of type. * testsuite/23_containers/set/modifiers/node_swap.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260226 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-142018-05-14 Sebastian Peryt <sebastian.peryt@intel.com>speryt
gcc/ * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET, OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines. (ix86_handle_option): Handle -mcldemote. * config.gcc: New header. * config/i386/cldemoteintrin.h: New file. * config/i386/cpuid.h (bit_CLDEMOTE): New bit. * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mcldemote. * config/i386/i386-c.c (ix86_target_macros_internal): Handle OPTION_MASK_ISA_CLDEMOTE. * config/i386/i386.c (ix86_target_string): Add -mcldemote. (ix86_valid_target_attribute_inner_p): Ditto. (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE. (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote. (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE. * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New. * config/i386/i386.md (UNSPECV_CLDEMOTE): New. (cldemote): New. * config/i386/i386.opt: Add -mcldemote. * config/i386/x86intrin.h: New header. * doc/invoke.texi: Add -mcldemote. gcc/testsuite/ * gcc.target/i386/cldemote-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260224 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-142018-05-14 Richard Biener <rguenther@suse.de>rguenth
* doc/match-and-simplify.texi: Adjust :s documentation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260223 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14gcc_qsort: avoid oversized memcpy temporariesamonakov
* sort.cc (REORDER_23): Pass the type for the temporaries instead of intended memcpy size. (REORDER_45): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260222 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-14Daily bump.gccadmin
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260221 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-13Introduce gcc_qsortamonakov
* sort.cc: New file. * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort. * vec.c (qsort_chk): Use gcc_qsort. * Makefile.in (OBJS-libcommon): Add sort.o. (build/sort.o): New target. Use it... (BUILD_RTL): ... here, and... (build/gencfn-macros): ... here, and... (build/genmatch): ... here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260216 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-13[NDS32] Implment n15 pipeline.jasonwucj
gcc/ * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu. * config/nds32/nds32-graywolf.md: New file. * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF. * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15 pipeline. * config/nds32/nds32-protos.h: More declarations for n15 pipeline. * config/nds32/nds32-utils.c: More implementations for n15 pipeline. * config/nds32/nds32.md (pipeline_model): Add graywolf. * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus. * config/nds32/pipelines.md: Include n15 settings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260214 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-132018-05-13 Steven G. Kargl <kargl@gcc.gnu.org>kargl
PR fortran/63529 * gfortran.texi: Clarify documentation for Cray pointer and assumed-sized array. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260213 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-13[NDS32] Implment n12/n13 pipeline.jasonwucj
gcc/ * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu. * config/nds32/nds32-n13.md: New file. * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13. * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13 pipeline. * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline. * config/nds32/nds32.md (pipeline_model): Add n13. * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus. * config/nds32/pipelines.md: Include n13 settings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260212 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-132018-05-13 Paul Thomas <pault@gcc.gnu.org>pault
PR fortran/85742 * trans-types.c (gfc_get_dtype_rank_type): Reorder evaluation of 'size'. If the element type is a pointer use the size of the TREE_TYPE of the type, unless it is VOID_TYPE. In this latter case, set the size to zero. 2018-05-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/85742 * gfortran.dg/assumed_type_9.f90 : New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260211 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-132018-05-13 Steven G. Kargl <kargl@gcc.gnu.org>kargl
* gfortran.h: Remove prototype. * symbol.c (gfc_new_undo_checkpoint): Remove unused function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260210 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-13PR libstdc++/80165ville
* testsuite/20_util/variant/80165.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260209 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-13[NDS32] Implment n10 pipeline.jasonwucj
gcc/ * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu. * config/nds32/nds32-n10.md: New file. * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10. * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10 pipeline. * config/nds32/nds32-protos.h: More declarations for n10 pipeline. * config/nds32/nds32-utils.c: More implementations for n10 pipeline. * config/nds32/nds32.md (pipeline_model): Add n10. * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus. * config/nds32/pipelines.md: Include n10 settings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260207 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-13[NDS32] Add DSP extension instructions.jasonwucj
gcc/ * config.gcc (nds32be-*-*): Handle --with-ext-dsp. * config/nds32/constants.md (unspec_element, unspec_volatile_element): Add enum values for DSP extension instructions. * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi): New constraints. * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus, sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max): New code iterators. (su, zs, uk, opcode, add_rsub, add_sub): New code attributes. * config/nds32/nds32-dspext.md: New file for DSP implementation. * config/nds32/nds32-intrinsic.c: Implementation of DSP extension. * config/nds32/nds32-intrinsic.md: Likewise. * config/nds32/nds32_intrinsic.h: Likewise. * config/nds32/nds32-md-auxiliary.c: Likewise. * config/nds32/nds32-memory-manipulation.c: Consider DSP extension. * config/nds32/nds32-predicates.c (const_vector_to_hwint): New. (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New. (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New. * config/nds32/nds32-protos.h: New declarations for DSP extension. * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case TYPE_DMAC in switch statement. * config/nds32/nds32.c: New checking and implementation for DSP extension instructions. * config/nds32/nds32.h: Likewise. * config/nds32/nds32.md: Likewise. * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options. * config/nds32/predicates.md: Implement new predicates for DSP extension. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260206 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-13Daily bump.gccadmin
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260205 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-12Daily bump.gccadmin
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260194 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-112018-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>meissner
* config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32): Reformat alternatives and attributes so it is easier to identify which constraints/attributes go with which instruction. (mov<mode>_hardfloat32, FMOVE64): Likewise. (mov<mode>_softfloat32, FMOVE64): Likewise. (mov<mode>_hardfloat64, FMOVE64): Likewise. (mov<mode>_softfloat64, FMOVE64): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260190 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-112018-05-11 Steven G. Kargl <kargl@gcc.gnu.org>kargl
PR fortran/85542 * expr.c (check_inquiry): Avoid NULL pointer dereference. 2018-05-11 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85542 * gfortran.dg/pr85542.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260182 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-11...and actually resture the *new* testcase.emsr
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260172 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-11Restore the testcase that was clobbered by the recent PR83140 patches.emsr
* libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions /02_assoc_legendre/check_value.cc git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260168 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-11gcc/ChangeLog:kelvin
2018-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org> * doc/extend.texi (PowerPC Built-in Functions): Rename this subsection. (Basic PowerPC Built-in Functions): The new name of the subsection previously known as "PowerPC Built-in Functions". (Basic PowerPC Built-in Functions Available on all Configurations): New subsubsection. (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise. (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise. (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise. (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260167 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-11Check is_single_const in intersect_with_platsjamborm
2018-05-11 Martin Jambor <mjambor@suse.cz> PR ipa/85655 * ipa-cp.c (intersect_with_plats): Check that the lattice contains single const. testsuite/ * g++.dg/lto/pr85655_0.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260165 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-11[arm] PR target/85733 Restore be8 linking behaviour for ARMv6-M and products ↵rearnsha
deriving from its capabilities My patch last year to automate passing the be8 flag to the linker had a nasty flaw in that I forgot entirely that the ARMv6-M architecture did not derive its capabilities directly from the ARMv6 capability list, but was a new group of capabilities (since it needs to leave out the ARM -- notm -- feature bit). The feature list defined was thus missing the be8 bit. Furthermore, any product derived from that feature group consequently lacked the be8 feature as well and this included all ARMv7 and ARMv8 parts. The fix is embarrassingly simple... PR target/85733 * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260162 138bc75d-0d04-0410-961f-82ee72b054a4
2018-05-112018-05-11 Sebastian Peryt <sebastian.peryt@intel.com>speryt
gcc/ * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET, OPTION_MASK_ISA_WAITPKG_UNSET): New defines. (ix86_handle_option): Handle -mwaitpkg. * config.gcc: New header. * config/i386/cpuid.h (bit_WAITPKG): New bit. * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg. * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New function type. * config/i386/i386-c.c (ix86_target_macros_internal): Handle OPTION_MASK_ISA_WAITPKG. * config/i386/i386.c (ix86_target_string): Add -mwaitpkg. (ix86_option_override_internal): Add PTA_WAITPKG. (ix86_valid_target_attribute_inner_p): Add -mwaitpkg. (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE. (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor, __builtin_ia32_umwait and __builtin_ia32_tpause. (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE. * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New. * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR, UNSPECV_TPAUSE): New. (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New. * config/i386/i386.opt: Add -mwaitpkg. * config/i386/waitpkgintrin.h: New file. * config/i386/x86intrin.h: New header. * doc/invoke.texi: Add -mwaitpkg. gcc/testsuite/ * gcc.target/i386/tpause-1.c: New test. * gcc.target/i386/umonitor-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260161 138bc75d-0d04-0410-961f-82ee72b054a4