aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-12-07Use tree_vector_builder instead of build_vectorRichard Sandiford11-65/+112
This patch switches most build_vector calls over to tree_vector_builder, using explicit encodings where appropriate. Later patches handle the remaining uses of build_vector. 2017-12-07 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * config/sparc/sparc.c: Include tree-vector-builder.h. (sparc_fold_builtin): Use tree_vector_builder instead of build_vector. * expmed.c: Include tree-vector-builder.h. (make_tree): Use tree_vector_builder instead of build_vector. * fold-const.c: Include tree-vector-builder.h. (const_binop): Use tree_vector_builder instead of build_vector. (const_unop): Likewise. (native_interpret_vector): Likewise. (fold_vec_perm): Likewise. (fold_ternary_loc): Likewise. * gimple-fold.c: Include tree-vector-builder.h. (gimple_fold_stmt_to_constant_1): Use tree_vector_builder instead of build_vector. * tree-ssa-forwprop.c: Include tree-vector-builder.h. (simplify_vector_constructor): Use tree_vector_builder instead of build_vector. * tree-vect-generic.c: Include tree-vector-builder.h. (add_rshift): Use tree_vector_builder instead of build_vector. (expand_vector_divmod): Likewise. (optimize_vector_constructor): Likewise. * tree-vect-loop.c: Include tree-vector-builder.h. (vect_create_epilog_for_reduction): Use tree_vector_builder instead of build_vector. Explicitly use a stepped encoding for { 1, 2, 3, ... }. * tree-vect-slp.c: Include tree-vector-builder.h. (vect_get_constant_vectors): Use tree_vector_builder instead of build_vector. (vect_transform_slp_perm_load): Likewise. (vect_schedule_slp_instance): Likewise. * tree-vect-stmts.c: Include tree-vector-builder.h. (vectorizable_bswap): Use tree_vector_builder instead of build_vector. (vect_gen_perm_mask_any): Likewise. (vectorizable_call): Likewise. Explicitly use a stepped encoding. * tree.c: (build_vector_from_ctor): Use tree_vector_builder instead of build_vector. (build_vector_from_val): Likewise. Explicitly use a duplicate encoding. From-SVN: r255475
2017-12-07New VECTOR_CST layoutRichard Sandiford16-70/+1015
This patch uses a simple compression scheme to represent the contents of a VECTOR_CST using its leading elements. There are three formats: 1) a repeating sequence of N values. This is encoded using the first N elements. 2) a "foreground" sequence of N values inserted at the beginning of a "background" repeating sequence of N values, such as: { 1, 2, 0, 0, 0, 0, ... }. This is encoded using the first 2*N elements. 2) a "foreground" sequence of N values inserted at the beginning of a "background" repeating sequence of N interleaved linear series, such as: { 0, 0, 8, 10, 9, 11, 10, 12, ... }. This is encoded using the first 3*N elements. In practice the foreground values are often part of the same series as the background values, such as: { 1, 11, 2, 12, 3, 13, ... }. This reduces the amount of work involved in processing simple vector constants and means that the encoding extends naturally to variable-length vectors. 2017-12-07 Richard Sandiford <richard.sandiford@arm.com> gcc/ * doc/generic.texi (VECTOR_CST): Describe new representation of vector constants. * vector-builder.h: New file. * tree-vector-builder.h: Likewise. * tree-vector-builder.c: Likewise. * Makefile.in (OBJS): Add tree-vector-builder.o. * tree.def (VECTOR_CST): Update comment to refer to generic.texi. * tree-core.h (tree_base): Add a vector_cst field to the u union. (tree_vector): Change the number of elements to vector_cst_encoded_nelts. * tree.h (VECTOR_CST_NELTS): Redefine using TYPE_VECTOR_SUBPARTS. (VECTOR_CST_ELTS): Delete. (VECTOR_CST_ELT): Redefine using vector_cst_elt. (VECTOR_CST_LOG2_NPATTERNS, VECTOR_CST_NPATTERNS): New macros. (VECTOR_CST_NELTS_PER_PATTERN, VECTOR_CST_DUPLICATE_P): Likewise. (VECTOR_CST_STEPPED_P, VECTOR_CST_ENCODED_ELTS): Likewise. (VECTOR_CST_ENCODED_ELT): Likewise. (vector_cst_encoded_nelts): New function. (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and VECTOR_CST_NELTS_PER_PATTERN as arguments. (vector_cst_int_elt, vector_cst_elt): Declare. * tree.c: Include tree-vector-builder.h. (tree_code_size): Abort if passed VECTOR_CST. (tree_size): Update for new VECTOR_CST layout. (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and VECTOR_CST_NELTS_PER_PATTERN as arguments. (build_vector): Use tree_vector_builder. (vector_cst_int_elt, vector_cst_elt): New functions. (drop_tree_overflow): For VECTOR_CST, drop the TREE_OVERFLOW from the encoded elements and then create the vector in the canonical form. (check_vector_cst, check_vector_cst_duplicate, check_vector_cst_fill) (check_vector_cst_stepped, test_vector_cst_patterns): New functions. (tree_c_tests): Call test_vector_cst_patterns. * lto-streamer-out.c (DFS::DFS_write_tree_body): Handle the new VECTOR_CST fields. (hash_tree): Likewise. * tree-streamer-out.c (write_ts_vector_tree_pointers): Likewise. (streamer_write_tree_header): Likewise. * tree-streamer-in.c (lto_input_ts_vector_tree_pointers): Likewise. (streamer_alloc_tree): Likewise. Update call to make_vector. * fold-const.c (fold_ternary_loc): Avoid using VECTOR_CST_ELTS. gcc/lto/ * lto.c (compare_tree_sccs_1): Compare the new VECTOR_CST flags. From-SVN: r255474
2017-12-07Add underscores to local vars in selftest macrosRichard Sandiford3-29/+35
Allows functions doing selftests to take parameters with names like "actual". 2017-12-07 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * selftest.h (ASSERT_TRUE_AT, ASSERT_FALSE_AT, ASSERT_EQ_AT) (ASSERT_NE, ASSERT_PRED1): Add underscores to local variable names * selftest-rtl.h (ASSERT_RTX_EQ, ASSERT_RTX_PTR_EQ): Likewise. From-SVN: r255473
2017-12-07re PR tree-optimization/81303 (410.bwaves regression caused by r249919)Bin Cheng29-108/+3032
PR tree-optimization/81303 * Makefile.in (gimple-loop-interchange.o): New object file. * common.opt (floop-interchange): Reuse the option from graphite. * doc/invoke.texi (-floop-interchange): Ditto. New document for -floop-interchange and mention it for -O3. * opts.c (default_options_table): Enable -floop-interchange at -O3. * gimple-loop-interchange.cc: New file. * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter. (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter. * passes.def (pass_linterchange): New pass. * timevar.def (TV_LINTERCHANGE): New time var. * tree-pass.h (make_pass_linterchange): New declaration. * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external interchange. Record IV before/after increment in new parameters. * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration. * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction path check into... (check_reduction_path): ...New function here. * tree-vectorizer.h (check_reduction_path): New declaration. gcc/testsuite * gcc.dg/tree-ssa/loop-interchange-1.c: New test. * gcc.dg/tree-ssa/loop-interchange-1b.c: New test. * gcc.dg/tree-ssa/loop-interchange-2.c: New test. * gcc.dg/tree-ssa/loop-interchange-3.c: New test. * gcc.dg/tree-ssa/loop-interchange-4.c: New test. * gcc.dg/tree-ssa/loop-interchange-5.c: New test. * gcc.dg/tree-ssa/loop-interchange-6.c: New test. * gcc.dg/tree-ssa/loop-interchange-7.c: New test. * gcc.dg/tree-ssa/loop-interchange-8.c: New test. * gcc.dg/tree-ssa/loop-interchange-9.c: New test. * gcc.dg/tree-ssa/loop-interchange-10.c: New test. * gcc.dg/tree-ssa/loop-interchange-11.c: New test. * gcc.dg/tree-ssa/loop-interchange-12.c: New test. * gcc.dg/tree-ssa/loop-interchange-13.c: New test. Co-Authored-By: Richard Biener <rguenther@suse.de> From-SVN: r255472
2017-12-07re PR target/83252 (Wrong code with "-march=skylake-avx512 -O3")Vladimir Makarov3-10/+26
2017-12-07 Vladimir Makarov <vmakarov@redhat.com> PR target/83252 PR rtl-optimization/80818 * lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER always early clobbered. * lra-lives.c (process_bb_lives): Check input hard regs for early clobbered non-operand hard reg. From-SVN: r255471
2017-12-07re PR middle-end/83164 (internal compiler error: verify_gimple failed)Jakub Jelinek4-1/+21
PR middle-end/83164 * tree-cfg.c (verify_gimple_assign_binary): Don't require types_compatible_p, just that TYPE_MODE is the same. * gcc.c-torture/compile/pr83164.c: New test. From-SVN: r255470
2017-12-07PR c/81544 - attribute noreturn and warn_unused_result on the same function ↵Martin Sebor62-477/+1116
accepted PR c/81544 - attribute noreturn and warn_unused_result on the same function accepted PR c/81566 - invalid attribute aligned accepted on functions gcc/ada/ChangeLog: PR c/81544 * gcc-interface/utils.c (gnat_internal_attribute_table): Initialize new member of struct attribute_spec. gcc/c/ChangeLog: PR c/81544 * c-decl.c (c_decl_attributes): Look up existing declaration and pass it to decl_attributes. gcc/c-family/ChangeLog: PR c/81544 PR c/81566 * c-attribs.c (attr_aligned_exclusions): New array. (attr_alloc_exclusions, attr_cold_hot_exclusions): Same. (attr_common_exclusions, attr_const_pure_exclusions): Same. (attr_gnu_inline_exclusions, attr_inline_exclusions): Same. (attr_noreturn_exclusions, attr_returns_twice_exclusions): Same. (attr_warn_unused_result_exclusions): Same. (handle_hot_attribute, handle_cold_attribute): Simplify. (handle_const_attribute): Warn on function returning void. (handle_pure_attribute): Same. (handle_aligned_attribute): Diagnose conflicting attribute specifications. * c-warn.c (diagnose_mismatched_attributes): Simplify. gcc/cp/ChangeLog: PR c/81544 * cp-tree.h (decls_match): Add default argument. * decl.c (decls_match): Avoid calling into the target back end and triggering an error. * decl2.c (cplus_decl_attributes): Look up existing declaration and pass it to decl_attributes. * tree.c (cxx_attribute_table): Initialize new member of struct attribute_spec. gcc/fortran/ChangeLog: PR c/81544 * f95-lang.c (gfc_attribute_table): Initialize new member of struct attribute_spec. gcc/lto/ChangeLog: PR c/81544 * lto-lang.c (lto_attribute_table): Initialize new member of struct attribute_spec. gcc/ChangeLog: PR c/81544 * attribs.c (empty_attribute_table): Initialize new member of struct attribute_spec. (decl_attributes): Add argument. Handle mutually exclusive combinations of attributes. (selftests::test_attribute_exclusions): New function. (selftests::attribute_c_tests): Ditto. * attribs.h (decl_attributes): Add default argument. * selftest.h (attribute_c_tests): Declare. * selftest-run-tests.c (selftest::run_tests): Call attribute_c_tests. * tree-core.h (attribute_spec::exclusions, exclude): New type and member. * doc/extend.texi (Common Function Attributes): Update const and pure. gcc/testsuite/ChangeLog: PR c/81544 * c-c++-common/Wattributes-2.c: New test. * c-c++-common/Wattributes.c: New test. * c-c++-common/attributes-3.c: Adjust. * gcc.dg/Wattributes-6.c: New test. * gcc.dg/Wattributes-7.c: New test. * gcc.dg/attr-noinline.c * gcc.dg/pr44964.c: Same. * gcc.dg/torture/pr42363.c: Same. * gcc.dg/tree-ssa/ssa-ccp-2.c: Same. From-SVN: r255469
2017-12-07re PR target/82641 (Unable to enable crc32 for a certain function with ↵Tamar Christina7-4/+179
target attribute on ARM (aarch32)) 2017-12-07 Tamar Christina <tamar.christina@arm.com> PR target/82641 * config/arm/arm.c (INCLUDE_STRING): Define. (arm_last_printed_arch_string, arm_last_printed_fpu_string): New. (arm_declare_function_name): Conservatively emit .arch, .arch_extensions and .fpu. gcc/testsuite/ 2017-12-07 Tamar Christina <tamar.christina@arm.com> PR target/82641 * gcc.target/arm/pragma_arch_attribute_2.c: New. * gcc.target/arm/pragma_arch_attribute_2.c: New. * gcc.target/arm/pragma_arch_attribute_3.c: New. * gcc.target/arm/pragma_fpu_attribute.c: New. * gcc.target/arm/pragma_fpu_attribute_2.c: New. From-SVN: r255468
2017-12-07Add unroll and jam passMichael Matz16-24/+790
* gimple-loop-jam.c: New file. * Makefile.in (OBJS): Add gimple-loop-jam.o. * common.opt (funroll-and-jam): New option. * opts.c (default_options_table): Add unroll-and-jam at -O3. * params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param. (PARAM_UNROLL_JAM_MAX_UNROLL): Ditto. * passes.def: Add pass_loop_jam. * timevar.def (TV_LOOP_JAM): Add. * tree-pass.h (make_pass_loop_jam): Declare. * cfgloop.c (flow_loop_tree_node_add): Add AFTER argument. * cfgloop.h (flow_loop_tree_node_add): Adjust declaration. * cfgloopmanip.c (duplicate_loop): Add AFTER argument, adjust call to flow_loop_tree_node_add. (duplicate_subloops, copy_loops_to): Append to sibling list. * cfgloopmanip.h: (duplicate_loop): Adjust declaration. * doc/invoke.texi (-funroll-and-jam): Document new option. (unroll-jam-min-percent, unroll-jam-max-unroll): Document new params. testsuite/ * gcc.dg/unroll-and-jam.c: New test. From-SVN: r255467
2017-12-07re PR tree-optimization/83296 (missing -Wstringop-overflow due to missing ↵Richard Biener4-18/+50
range info for MAX_EXPR) 2017-12-07 Richard Biener <rguenther@suse.de> PR tree-optimization/83296 PR tree-optimization/67769 * tree-ssa-phiopt.c (conditional_replacement): Do not reset flow sensitive info in an unrelated BB. (value_replacement): Use reset_flow_sensitive_info. (minmax_replacement): Reset flow sensitive info on the def we move. Do not reset flow sensitive info in the whole BB we move the stmt to. (abs_replacement): Likewise. * g++.dg/warn/Wstringop-overflow-1.C: New testcase. From-SVN: r255466
2017-12-07rs6000: Initialise rs6000_cpu correctly (PR43871)Segher Boessenkool2-2/+11
Finally, set rs6000_cpu based not on -mtune=, but only -mcpu= and the defaults. PR target/43871 * config/rs6000/rs6000.c (rs6000_option_override_internal): Set rs6000_cpu to the given -mcpu=, or to the default processor. From-SVN: r255464
2017-12-07rs6000: Don't use rs6000_cpu_attr directlySegher Boessenkool4-63/+76
In some places in the code we currently use rs6000_cpu_attr, although that is a cast from rs6000_tune. This patch changes things to be more regular and clearer. Now rs6000_cpu_attr is not used any more, and it is deleted. * config/rs6000/rs6000.h (rs6000_cpu_attr): Delete. * config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune instead of rs6000_cpu_attr. (rs6000_adjust_cost): Ditto. (is_microcoded_insn): Ditto. (rs6000_adjust_priority): Ditto. (rs6000_issue_rate): Ditto. (rs6000_use_sched_lookahead): Ditto. (rs6000_use_sched_lookahead_guard): Ditto. (rs6000_sched_reorder): Ditto. (force_new_group): Ditto. * config/rs6000/rs6000.md (cpu attribute): Ditto. (group_ending_nop): Ditto. From-SVN: r255463
2017-12-07rs6000: Split rs6000_cpuSegher Boessenkool4-59/+86
This splits rs6000_cpu into rs6000_cpu and rs6000_tune. Both are still initialised identically, so there is no behaviour change. Now rs6000_cpu should be set by -mcpu=, and rs6000_tune by -mtune= (but both still are set by -mtune=, fixed in a later patch in the series). Also change rs6000_cpu to rs6000_tune in the appropriate cases (i.e. most, but not those that enable using new insns). * config/rs6000/rs6000.opt (rs6000_tune): New variable. * config/rs6000/rs6000.c (rs6000_option_override_internal): Also set rs6000_tune. Use rs6000_tune instead of rs6000_cpu where appropriate. (rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where appropriate. (rs6000_reassociation_width): Ditto. (rs6000_emit_epilogue): Ditto. (rs6000_adjust_cost): Ditto. (is_microcoded_insn): Ditto. (is_cracked_insn): Ditto. (rs6000_adjust_priority): Ditto. (rs6000_sched_reorder): Ditto. (rs6000_sched_reorder2): Ditto. (insn_must_be_first_in_group): Ditto. (insn_must_be_last_in_group): Ditto. (rs6000_register_move_cost): Ditto. * config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of rs6000_cpu. From-SVN: r255462
2017-12-07Enable VAES support [2/5]Julia Koval14-2/+597
gcc/ * config.gcc: Add vaesintrin.h. * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI): New type. * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi, __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi): New builtins. * config/i386/i386.c (ix86_expand_args_builtin): Handle new type. * config/i386/immintrin.h: Include vaesintrin.h. * config/i386/sse.md (vaesdec_<mode>): New pattern. * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128, _mm_aesdec_epi128): New intrinsics. gcc/testsuite/ * gcc.target/i386/avx512-check.h: Handle bit_VAES. * gcc.target/i386/avx512f-aesdec-2.c: New test. * gcc.target/i386/avx512fvl-vaes-1.c: Ditto. * gcc.target/i386/avx512vl-aesdec-2.c: Ditto. * gcc.target/i386/i386.exp (check_effective_target_avx512vaes): New. From-SVN: r255461
2017-12-07Daily bump.GCC Administrator1-1/+1
From-SVN: r255460
2017-12-06re PR tree-optimization/69224 (-Warray-bounds false positive with -O3 and ↵Jeff Law4-0/+108
struct pointer parameter) PR tree-optimization/69224 PR tree-optimization/80907 PR tree-optimization/82286 * gcc.dg/pr69224.c: New test. * gcc.dg/pr80907.c: New test. * gcc.dg/pr82286.c: New test. From-SVN: r255457
2017-12-06re PR c++/80259 (ICE deleting friend function)Jakub Jelinek4-3/+35
PR c++/80259 * decl2.c (grokfield): Diagnose = delete redefinition of a friend. * g++.dg/cpp0x/pr80259.C: New test. From-SVN: r255456
2017-12-06Correct argument to targetm.calls.promote_prototypes.Jason Merrill2-2/+6
* call.c (convert_for_arg_passing): Pass NULL_TREE to targetm.calls.promote_prototypes. (type_passed_as): Likewise. From-SVN: r255455
2017-12-06PR c++/82115 - ICE with variable initialized with its own address.Jason Merrill4-7/+29
* pt.c (value_dependent_expression_p): Add lval parameter. Don't consider DECL_INITIAL if it's true. From-SVN: r255454
2017-12-06C/C++: don't suggest implementation names as spelling fixes (PR c/83236)David Malcolm11-5/+189
gcc/c-family/ChangeLog: PR c/83236 * c-common.c (selftest::c_family_tests): Call selftest::c_spellcheck_cc_tests. * c-common.h (selftest::c_spellcheck_cc_tests): New decl. * c-spellcheck.cc: Include "selftest.h". (name_reserved_for_implementation_p): New function. (should_suggest_as_macro_p): New function. (find_closest_macro_cpp_cb): Move the check for NT_MACRO to should_suggest_as_macro_p and call it. (selftest::test_name_reserved_for_implementation_p): New function. (selftest::c_spellcheck_cc_tests): New function. * c-spellcheck.h (name_reserved_for_implementation_p): New decl. gcc/c/ChangeLog: PR c/83236 * c-decl.c (lookup_name_fuzzy): Don't suggest names that are reserved for use by the implementation. gcc/cp/ChangeLog: PR c/83236 * name-lookup.c (consider_binding_level): Don't suggest names that are reserved for use by the implementation. gcc/testsuite/ChangeLog: PR c/83236 * c-c++-common/spellcheck-reserved.c: New test case. From-SVN: r255453
2017-12-06Move macro-spellchecking code from "gcc" to new files in c-familyDavid Malcolm11-57/+137
The code for spellchecking macros really belongs in c-family, rather than in gcc/spellcheck-tree.c, so this patch moves it there. gcc/ChangeLog: * Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o. * spellcheck-tree.c (find_closest_macro_cpp_cb): Move to c-family/c-spellcheck.cc. (best_macro_match::best_macro_match): Likewise. * spellcheck-tree.h (struct edit_distance_traits<cpp_hashnode *>): Move to c-family/c-spellcheck.h. (class best_macro_match): Likewise. gcc/c-family/ChangeLog: * c-spellcheck.cc: New file, taken from macro-handling code in spellcheck-tree.c. * c-spellcheck.h: New file, taken from macro-handling code in spellcheck-tree.h. gcc/c/ChangeLog: * c-decl.c: Include "c-family/c-spellcheck.h". gcc/cp/ChangeLog: * name-lookup.c: Include "c-family/c-spellcheck.h". From-SVN: r255452
2017-12-06re PR tree-optimization/83293 (ICE: in gsi_insert_seq_nodes_after, at ↵Jakub Jelinek4-1/+48
gimple-iterator.c:278) PR tree-optimization/83293 * gimple-ssa-strength-reduction.c (insert_initializers): Use GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that might insert into empty bb. * g++.dg/torture/pr83293.C: New test. From-SVN: r255451
2017-12-06PR testsuite/83303 - FAIL: g++.dg/opt/new1.C on arm-none-eabiMartin Sebor2-1/+11
PR testsuite/83303 - FAIL: g++.dg/opt/new1.C on arm-none-eabi (extra -Walloc-size-larger-than warning * g++.dg/opt/new1.C: Prune warning from test output. From-SVN: r255450
2017-12-06re PR sanitizer/81281 (UBSAN: false positive, dropped promotion to long type.)Jakub Jelinek8-34/+382
PR sanitizer/81281 * match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate simplify for plus with :c added, and pointer_plus without that. ((T)P - (T)(P + A) -> -(T) A): Likewise. If type is integral with undefined overflow and the conversion is not widening, perform negation in utype and only convert to type afterwards. ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate simplify for plus with :c added, and pointer_plus without that. If type is integral with undefined overflow and the conversion is not widening, perform minus in utype and only convert to type afterwards. Move the last pointer_diff_expr simplify into the two outermost ifs. * gcc.c-torture/execute/pr81281.c: New test. * gcc.dg/pr81281-1.c: New test. * gcc.dg/pr81281-2.c: New test. * g++.dg/ubsan/pr81281.C: New test. * g++.dg/ubsan/pr81281-aux.cc: New test. From-SVN: r255449
2017-12-06PR tree-optimization/82646 - bogus -Wstringop-overflow with ↵Martin Sebor6-6/+174
-D_FORTIFY_SOURCE=2 on strncpy with range to a member array gcc/ChangeLog: PR tree-optimization/82646 * builtins.c (maybe_emit_chk_warning): Use size as the bound for strncpy, not maxlen. gcc/testsuite/ChangeLog: PR tree-optimization/82646 * gcc.dg/builtin-stringop-chk-1.c: Adjust. * gcc.dg/builtin-stringop-chk-9.c: New test. * g++.dg/ext/strncpy-chk1.C: Adjust. From-SVN: r255448
2017-12-06invoke.texi (-Wstringop-truncation): Mention attribute nonstring.Martin Sebor2-0/+11
gcc/ChangeLog: * doc/invoke.texi (-Wstringop-truncation): Mention attribute nonstring. From-SVN: r255447
2017-12-06PR tree-optimization/83075 - Invalid strncpy optimizationMartin Sebor5-4/+53
gcc/ChangeLog: PR tree-optimization/83075 * tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming strncat/strncpy don't change length of source string. gcc/testsuite/ChangeLog: PR tree-optimization/83075 * gcc.dg/tree-ssa/strncat.c: New test. * gcc.dg/tree-ssa/strncpy-2.c: Same. From-SVN: r255446
2017-12-06libgo: remove -fplan9-extensions from CFLAGSIan Lance Taylor3-3/+3
Remove -fplan9-extensions from the CFLAGS used for libgo (no longer needed since the runtime was converted from C to Go). Reviewed-on: https://go-review.googlesource.com/82177 From-SVN: r255445
2017-12-06pr41305.C: Refine test option.Bin Cheng21-20/+43
gcc/testsuite * g++.dg/graphite/pr41305.C: Refine test option. * gcc.dg/graphite/pr42205-1.c: Ditto. * gcc.dg/graphite/pr42205-2.c: Ditto. * gcc.dg/graphite/pr42211.c: Ditto. * gcc.dg/graphite/pr46185.c: Ditto. * gcc.dg/graphite/pr46966.c: Ditto. * gcc.dg/graphite/pr59817-1.c: Ditto. * gcc.dg/graphite/pr59817-2.c: Ditto. * gcc.dg/graphite/pr60740.c: Ditto. * gcc.dg/graphite/pr60785.c: Ditto. * gcc.dg/graphite/pr68715-2.c: Ditto. * gcc.dg/graphite/pr68715.c: Ditto. * gcc.dg/graphite/pr70045.c: Ditto. * gfortran.dg/graphite/pr14741.f90: Ditto. * gfortran.dg/graphite/pr40982.f90: Ditto. * gfortran.dg/graphite/pr42285.f90: Ditto. * gfortran.dg/graphite/pr42334-1.f: Ditto. * gfortran.dg/graphite/pr42334.f90: Ditto. * gfortran.dg/graphite/pr43349.f: Ditto. * gfortran.dg/graphite/pr59817.f: Ditto. From-SVN: r255444
2017-12-06[ARM] testsuite: force hardfp in addr-modes-float.cCharles Baylis4-44/+69
gcc/testsuite/ChangeLog: <date> Charles Baylis <charles.baylis@linaro.org> * gcc.target/arm/addr-modes-float.c: Place dg-add-options after dg-require-effective-target. (ATTR): New define. (POST_STORE): Pass ATTR as 2nd argument. (POST_LOAD): Likewise. (POST_STORE_VEC): Likewise. * gcc.target/arm/addr-modes-int.c (ATTR): New define. (PRE_STORE): Pass ATTR as 2nd argument. (POST_STORE): Likewise. (PRE_LOAD): Likewise. (POST_LOAD): Likewise. * gcc.target/arm/addr-modes.h: (PRE_STORE): New parameter. (POST_STORE): Likewise. (POST_STORE_VEC): Likewise. (PRE_LOAD): Likewise. (POST_LOAD): Likewise. (POST_LOAD_VEC): Likewise. From-SVN: r255443
2017-12-06compiler: handle set-and-use-temp in nilcheck codeIan Lance Taylor2-3/+16
Change the code in Unary_expression::do_get_backend that introduces explicit nil checks for dereference operations to special case set-and-use-temporary expressions. For this case it is better to generate an explicit reference of the temp in the final conditional (avoids introducing tree sharing). Reviewed-on: https://go-review.googlesource.com/81915 From-SVN: r255442
2017-12-06re PR ada/66205 (gnatbind generates invalid code when finalization is ↵Simon Wright2-0/+18
enabled in restricted runtime) PR ada/66205 * bindgen.adb (Gen_AdaFinal): If the restriction No_Task_Termination is set, generate a null body. From-SVN: r255441
2017-12-06RevertEric Botcazou2-8/+17
2017-11-29 Martin Aberg <maberg@gaisler.com> * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length to prevent b2bst errata sequence. (sqrtdf2_fix): Likewise. From-SVN: r255439
2017-12-06re PR tree-optimization/81945 (ICE in operator[], at vec.h:749)Jakub Jelinek5-1/+51
PR tree-optimization/81945 * cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn. * tree-cfg.c (move_sese_region_to_fn): If any of the loops moved to dest_cfun has orig_loop_num set, either remap it to the new loop number if the loop got moved too, or clear it. * gcc.dg/graphite/pr81945.c: New test. From-SVN: r255438
2017-12-06Daily bump.GCC Administrator1-1/+1
From-SVN: r255437
2017-12-05re PR c++/79228 ('i' suffix for __complex__ extension interferes with C++14 ↵Jakub Jelinek2-6/+12
UDLs for std::complex) PR c++/79228 * expr.c (interpret_float_suffix): Avoid memcmp. (interpret_int_suffix): Likewise. Don't check for if. From-SVN: r255434
2017-12-05Remove $tmpdir from -dumpbase, we should be in $tmpdir.Mike Stump1-2/+2
From-SVN: r255433
2017-12-05dump-noaddr.x: Generate dump files in tmpdir.Matthew Gretton-Dann2-10/+15
2017-12-05 Matthew Gretton-Dann <matthew.gretton-dann@arm.com> * gcc.c-torture/unsorted/dump-noaddr.x: Generate dump files in tmpdir. From-SVN: r255432
2017-12-05thunderx2-t99.md (thunderx2t99_branch): Add trap to reservation.Steve Ellcey2-3/+34
2017-12-05 Steve Ellcey <sellcey@cavium.com> * config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap to reservation. (thunderx2t99_nothing): New insn reservation. (thunderx2t99_mrs): New insn reservation. (thunderx2t99_multiple): New insn reservation. (thunderx2t99_alu_basi): Add bfx to reservation. (thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation. From-SVN: r255431
2017-12-05PR c++/82331 - ICE with variadic partial specialization of autoJason Merrill3-0/+26
* pt.c (unify) [TEMPLATE_PARM_INDEX]: Set processing_template_decl around call to tsubst. From-SVN: r255430
2017-12-05[PR C++/83287] Mark lookup for keepingNathan Sidwell4-0/+36
https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00242.html PR c++/83287 * tree.c (build_min): Check CAST_EXPR arg for OVERLOADs. * g++.dg/lookup/pr83287.C: New. From-SVN: r255429
2017-12-05[Patch ARM] Fix probe_stack constraint.Ramana Radhakrishnan2-1/+9
The probe_stack pattern uses r0 as a fixed register. This can cause issues if we have auto-increment instructions coming out that have r0 as the base register. Tested with a bootstrap and regression run. richi reports that the original issue was fixed in the run. I did consider whether probe_stack_range was affected but it all comes back to probe_stack pattern so I think we are ok. I don't have a testcase that seems to provoke this but it seems to be default on most distributions so I'm expecting the testcoverage to come from there. Applied. Ramana PR target/82248 * config/arm/arm.md (probe_stack) : Use the 'o' constraint. From-SVN: r255428
2017-12-05re PR testsuite/83289 (i386/sse2-init-v2di-2.c, ↵Jakub Jelinek7-11/+22
i386/avx256-unaligned-load-1.c, i386/avx256-unaligned-store-*.c fails) PR testsuite/83289 * gcc.target/i386/avx256-unaligned-load-1.c: Adjust for -dp alternative numbers being 0 based instead of former 1 based. * gcc.target/i386/avx256-unaligned-store-1.c: Likewise. * gcc.target/i386/avx256-unaligned-store-2.c: Likewise. * gcc.target/i386/avx256-unaligned-store-3.c: Likewise. * gcc.target/i386/avx256-unaligned-store-4.c: Likewise. * gcc.target/i386/sse2-init-v2di-2.c: Likewise. From-SVN: r255427
2017-12-05tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from ↵Bin Cheng4-59/+90
tree-ssa-pre.c::remove_dead_inserted_code. * tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from tree-ssa-pre.c::remove_dead_inserted_code. * tree-ssa-dce.h: New file. * tree-ssa-pre.c (tree-ssa-dce.h): Include new header file. (remove_dead_inserted_code): Move and rename to function tree-ssa-dce.c::simple_dce_from_worklist. (pass_pre::execute): Update use. From-SVN: r255426
2017-12-05Correct noexcept mismatch in declarations.Jason Merrill4-6/+17
2017-12-05 Jason Merrill <jason@redhat.com> Jonathan Wakely <jwakely@redhat.com> * include/bits/fs_fwd.h (copy, copy_file): Remove noexcept. (permissions): Add noexcept. * include/bits/fs_ops.h (permissions): Add noexcept. * libsupc++/eh_throw.cc (__cxa_init_primary_exception): Add _GLIBCXX_NOTHROW. Co-Authored-By: Jonathan Wakely <jwakely@redhat.com> From-SVN: r255425
2017-12-05re PR tree-optimization/83277 ([graphite] Wrong code w/ -O2 ↵Richard Biener4-2/+67
-floop-nest-optimize) 2017-12-05 Richard Biener <rguenther@suse.de> PR tree-optimization/83277 * graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure to code-gen liveout vars. * gcc.dg/graphite/pr83277.c: New testcase. From-SVN: r255424
2017-12-05[AArch64] Fix some define_insn_and_split conditionsRichard Sandiford2-5/+12
The split conditions for aarch64_simd_bsldi_internal and aarch64_simd_bsldi_alt were: "&& GP_REGNUM_P (REGNO (operands[0]))" But since they (deliberately) can be split before reload, the operand matched by register_operand can be a SUBREG rather than a REG. This triggered a boostrap failure building libgcc with rtl checking enabled. While checking other define_insn_and_splits for the same thing, I noticed a couple of SIMD ones were missing the leading "&&", meaning that they would trigger even without TARGET_SIMD. That shouldn't matter in practice, since combine should never end up generating matching rtl, but... 2017-12-05 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal) (aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P. (aarch64_cm<optab>di, aarch64_cmtstdi): Add leading "&&" to split condition. From-SVN: r255423
2017-12-05gcc: xtensa: enable address sanitizerMax Filippov3-1/+22
gcc/ 2017-12-05 Max Filippov <jcmvbkbc@gmail.com> * config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New function. (TARGET_ASAN_SHADOW_OFFSET): New macro definition. * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if ASAN is enabled. From-SVN: r255420
2017-12-05re PR testsuite/83281 (libgomp.oacc-c-c++-common/reduction-cplx-flt.c and ↵Jakub Jelinek3-2/+10
reduction-cplx-dbl.c fail starting with r255335) PR testsuite/83281 * testsuite/libgomp.oacc-c-c++-common/reduction-cplx-flt.c (main): Use j suffix instead of i. * testsuite/libgomp.oacc-c-c++-common/reduction-cplx-dbl.c (main): Likewise. From-SVN: r255418
2017-12-05re PR tree-optimization/83283 (Casting from boolean to unsigned char to enum ↵Jakub Jelinek2-0/+31
returns incorrect results) PR tree-optimization/83283 * g++.dg/torture/pr83283.C: New test. From-SVN: r255417