1. 23 Feb, 2018 1 commit
  2. 08 Feb, 2018 1 commit
    • re PR ipa/81360 (ice in estimate_edge_growth, at ipa-inline.h:86) · 39aa9b23
      	PR ipa/81360
      	* cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
      	* symtab.c: Include builtins.h
      	(symtab_node::output_to_lto_symbol_table_p): Move here
      	from lto-streamer-out.c:output_symbol_p.
      	* lto-streamer-out.c (write_symbol): Turn early exit to assert.
      	(output_symbol_p): Move all logic to symtab.c
      	(produce_symtab): Update.
      
      	* lto.c (unify_scc): Register prevailing trees, not trees to be freed.
      	(read_cgraph_and_symbols): Use
      	symtab_node::output_to_lto_symbol_table_p.
      
      From-SVN: r257490
      Jan Hubicka committed
  3. 07 Feb, 2018 1 commit
  4. 06 Feb, 2018 1 commit
  5. 02 Feb, 2018 1 commit
  6. 30 Jan, 2018 1 commit
  7. 23 Jan, 2018 1 commit
    • Handle trailing arrays in ODR warning (PR lto/81440). · cde9b2f8
      2018-01-23  Martin Liska  <mliska@suse.cz>
      
      	PR lto/81440
      	* lto-symtab.c (lto_symtab_merge): Handle and do not warn about
      	trailing arrays at the end of a struct.
      2018-01-23  Martin Liska  <mliska@suse.cz>
      
      	PR lto/81440
      	* gcc.dg/lto/pr81440.h: New test.
      	* gcc.dg/lto/pr81440_0.c: New test.
      	* gcc.dg/lto/pr81440_1.c: New test.
      
      From-SVN: r256989
      Martin Liska committed
  8. 03 Jan, 2018 3 commits
    • Add support for MODE_VECTOR_BOOL · 5c0caeb3
      This patch adds a new mode class to represent vectors of booleans.
      GET_MODE_BITSIZE (m) / GET_MODE_NUNITS (m) determines the number
      of bits that are used to represent each boolean; this can be 1
      for a fully-packed representation or greater than 1 for an unpacked
      representation.  In the latter case, the value of bits other than
      the lowest is not significant.
      
      These are used by the SVE port to represent predicates.
      
      2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* mode-classes.def (MODE_VECTOR_BOOL): New mode class.
      	* machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
      	for MODE_VECTOR_BOOL.
      	* machmode.def (VECTOR_BOOL_MODE): Document.
      	* genmodes.c (VECTOR_BOOL_MODE): New macro.
      	(make_vector_bool_mode): New function.
      	(complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
      	MODE_VECTOR_BOOL.
      	* lto-streamer-in.c (lto_input_mode_table): Likewise.
      	* rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
      	Likewise.
      	* stor-layout.c (int_mode_for_mode): Likewise.
      	* tree.c (build_vector_type_for_mode): Likewise.
      	* varasm.c (output_constant_pool_2): Likewise.
      	* emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
      	CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
      	for MODE_VECTOR_BOOL.
      	* expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
      	of mode class checks.
      	* tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
      	instead of a list of mode class checks.
      	(expand_vector_scalar_condition): Likewise.
      	(type_for_widest_vector_mode): Handle BImode as an inner mode.
      
      gcc/c-family/
      	* c-common.c (c_common_type_for_mode): Handle MODE_VECTOR_BOOL.
      
      gcc/fortran/
      	* trans-types.c (gfc_type_for_mode): Handle MODE_VECTOR_BOOL.
      
      gcc/go/
      	* go-lang.c (go_langhook_type_for_mode): Handle MODE_VECTOR_BOOL.
      
      gcc/lto/
      	* lto-lang.c (lto_type_for_mode): Handle MODE_VECTOR_BOOL.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r256202
      Richard Sandiford committed
    • poly_int: TYPE_VECTOR_SUBPARTS · 928686b1
      This patch changes TYPE_VECTOR_SUBPARTS to a poly_uint64.  The value is
      encoded in the 10-bit precision field and was previously always stored
      as a simple log2 value.  The challenge was to use this 10 bits to
      encode the number of elements in variable-length vectors, so that
      we didn't need to increase the size of the tree.
      
      In practice the number of vector elements should always have the form
      N + N * X (where X is the runtime value), and as for constant-length
      vectors, N must be a power of 2 (even though X itself might not be).
      The patch therefore uses the low 8 bits to encode log2(N) and bit
      8 to select between constant-length and variable-length vectors.
      Targets without variable-length vectors continue to use the old scheme.
      
      A new valid_vector_subparts_p function tests whether a given number
      of elements can be encoded.  This is false for the vector modes that
      represent an LD3 or ST3 vector triple (which we want to treat as arrays
      of vectors rather than single vectors).
      
      Most of the patch is mechanical; previous patches handled the changes
      that weren't entirely straightforward.
      
      2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
      	polynomial numbers of units.
      	(SET_TYPE_VECTOR_SUBPARTS): Likewise.
      	(valid_vector_subparts_p): New function.
      	(build_vector_type): Remove temporary shim and take the number
      	of units as a poly_uint64 rather than an int.
      	(build_opaque_vector_type): Take the number of units as a
      	poly_uint64 rather than an int.
      	* tree.c (build_vector_from_ctor): Handle polynomial
      	TYPE_VECTOR_SUBPARTS.
      	(type_hash_canon_hash, type_cache_hasher::equal): Likewise.
      	(uniform_vector_p, vector_type_mode, build_vector): Likewise.
      	(build_vector_from_val): If the number of units is variable,
      	use build_vec_duplicate_cst for constant operands and
      	VEC_DUPLICATE_EXPR otherwise.
      	(make_vector_type): Remove temporary is_constant ().
      	(build_vector_type, build_opaque_vector_type): Take the number of
      	units as a poly_uint64 rather than an int.
      	(check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
      	VECTOR_CST_NELTS.
      	* cfgexpand.c (expand_debug_expr): Likewise.
      	* expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
      	(store_constructor, expand_expr_real_1): Likewise.
      	(const_scalar_mask_from_tree): Likewise.
      	* fold-const-call.c (fold_const_reduction): Likewise.
      	* fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
      	(operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
      	(native_encode_vector, vec_cst_ctor_to_array): Likewise.
      	(fold_relational_const): Likewise.
      	(native_interpret_vector): Likewise.  Change the size from an
      	int to an unsigned int.
      	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
      	TYPE_VECTOR_SUBPARTS.
      	(gimple_fold_indirect_ref, gimple_build_vector): Likewise.
      	(gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
      	duplicating a non-constant operand into a variable-length vector.
      	* hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
      	TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
      	* ipa-icf.c (sem_variable::equals): Likewise.
      	* match.pd: Likewise.
      	* omp-simd-clone.c (simd_clone_subparts): Likewise.
      	* print-tree.c (print_node): Likewise.
      	* stor-layout.c (layout_type): Likewise.
      	* targhooks.c (default_builtin_vectorization_cost): Likewise.
      	* tree-cfg.c (verify_gimple_comparison): Likewise.
      	(verify_gimple_assign_binary): Likewise.
      	(verify_gimple_assign_ternary): Likewise.
      	(verify_gimple_assign_single): Likewise.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      	* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
      	(simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
      	* tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
      	(vect_grouped_load_supported, vect_permute_load_chain): Likewise.
      	(vect_shift_permute_load_chain): Likewise.
      	* tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
      	(expand_vector_condition, optimize_vector_constructor): Likewise.
      	(lower_vec_perm, get_compute_type): Likewise.
      	* tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
      	(get_initial_defs_for_reduction, vect_transform_loop): Likewise.
      	* tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
      	(vect_recog_mask_conversion_pattern): Likewise.
      	* tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
      	(vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
      	* tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
      	(get_group_load_store_type, vectorizable_mask_load_store): Likewise.
      	(vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
      	(vectorizable_shift, vectorizable_operation, vectorizable_store)
      	(vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
      	(supportable_widening_operation): Likewise.
      	(supportable_narrowing_operation): Likewise.
      	* tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
      	Likewise.
      	* varasm.c (output_constant): Likewise.
      
      gcc/ada/
      	* gcc-interface/utils.c (gnat_types_compatible_p): Handle
      	polynomial TYPE_VECTOR_SUBPARTS.
      
      gcc/brig/
      	* brigfrontend/brig-to-generic.cc (get_unsigned_int_type): Handle
      	polynomial TYPE_VECTOR_SUBPARTS.
      	* brigfrontend/brig-util.h (gccbrig_type_vector_subparts): Likewise.
      
      gcc/c-family/
      	* c-common.c (vector_types_convertible_p, c_build_vec_perm_expr)
      	(convert_vector_to_array_for_subscript): Handle polynomial
      	TYPE_VECTOR_SUBPARTS.
      	(c_common_type_for_mode): Check valid_vector_subparts_p.
      	* c-pretty-print.c (pp_c_initializer_list): Handle polynomial
      	VECTOR_CST_NELTS.
      
      gcc/c/
      	* c-typeck.c (comptypes_internal, build_binary_op): Handle polynomial
      	TYPE_VECTOR_SUBPARTS.
      
      gcc/cp/
      	* constexpr.c (cxx_eval_array_reference): Handle polynomial
      	VECTOR_CST_NELTS.
      	(cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
      	* call.c (build_conditional_expr_1): Likewise.
      	* decl.c (cp_finish_decomp): Likewise.
      	* mangle.c (write_type): Likewise.
      	* typeck.c (structural_comptypes): Likewise.
      	(cp_build_binary_op): Likewise.
      	* typeck2.c (process_init_constructor_array): Likewise.
      
      gcc/fortran/
      	* trans-types.c (gfc_type_for_mode): Check valid_vector_subparts_p.
      
      gcc/lto/
      	* lto-lang.c (lto_type_for_mode): Check valid_vector_subparts_p.
      	* lto.c (hash_canonical_type): Handle polynomial TYPE_VECTOR_SUBPARTS.
      
      gcc/go/
      	* go-lang.c (go_langhook_type_for_mode): Check valid_vector_subparts_p.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r256197
      Richard Sandiford committed
    • Update copyright years. · 85ec4feb
      From-SVN: r256169
      Jakub Jelinek committed
  9. 15 Dec, 2017 1 commit
    • tree-core.h (struct attribute_spec): Swap affects_type_identity and handler fields. · 4849deb1
      	* tree-core.h (struct attribute_spec): Swap affects_type_identity and
      	handler fields.
      	* config/alpha/alpha.c (vms_attribute_table): Swap
      	affects_type_identity and handler fields, adjust comments.
      	* config/mips/mips.c (mips_attribute_table): Likewise.
      	* config/visium/visium.c (visium_attribute_table): Likewise.
      	* config/epiphany/epiphany.c (epiphany_attribute_table): Likewise.
      	* config/microblaze/microblaze.c (microblaze_attribute_table):
      	Likewise.
      	* config/spu/spu.c (spu_attribute_table): Likewise.
      	* config/mcore/mcore.c (mcore_attribute_table): Likewise.
      	* config/arc/arc.c (arc_attribute_table): Likewise.
      	* config/m68k/m68k.c (m68k_attribute_table): Likewise.
      	* config/v850/v850.c (v850_handle_interrupt_attribute,
      	v850_handle_data_area_attribute): Formatting fixes.
      	(v850_attribute_table): Swap affects_type_identity and handler
      	fields, adjust comments.
      	* config/m32r/m32r.c (m32r_attribute_table): Likewise.
      	* config/arm/arm.c (arm_attribute_table): Likewise.
      	* config/avr/avr.c (avr_attribute_table): Likewise.
      	* config/s390/s390.c (s390_attribute_table): Likewise.
      	* config/sh/sh.c (sh_attribute_table): Likewise.
      	* config/i386/i386.c (ix86_handle_cconv_attribute,
      	ix86_handle_callee_pop_aggregate_return): Formatting fixes.
      	(ix86_attribute_table): Swap affects_type_identity and handler
      	fields, adjust comments.
      	* config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
      	* config/sparc/sparc.c (sparc_attribute_table): Likewise.
      	* config/m32c/m32c.c (m32c_attribute_table): Likewise.
      	* config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise.
      	* config/ia64/ia64.c (ia64_attribute_table): Likewise.
      	* config/msp430/msp430.c (msp430_attribute_table): Likewise.
      	* config/rx/rx.c (rx_attribute_table): Likewise.
      	* config/cr16/cr16.c (cr16_attribute_table): Likewise.
      	* config/h8300/h8300.c (h8300_attribute_table): Likewise.
      	* config/nvptx/nvptx.c (nvptx_attribute_table): Likewise.
      	* config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise.
      	* config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
      	* config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise.
      	* config/bfin/bfin.c (bfin_attribute_table): Likewise.
      	* config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
      	* config/rl78/rl78.c (rl78_attribute_table): Likewise.
      	* config/nds32/nds32.c (nds32_attribute_table): Likewise.
      	* doc/plugins.texi (user_attr): Likewise.  Add NULL for
      	exclude.
      	* attribs.c (empty_attribute_table): Swap affects_type_identity and
      	handler fields.
      	(register_scoped_attributes, decl_attributes): Formatting fixes.
      ada/
      	* gcc-interface/utils.c (gnat_internal_attribute_table): Swap
      	affects_type_identity and handler fields, adjust comments.
      brig/
      	* brig-lang.c (brig_attribute_table): Swap affects_type_identity
      	and handler fields, adjust comments.
      c-family/
      	* c-attribs.c (c_common_attribute_table,
      	c_common_format_attribute_table): Swap affects_type_identity
      	and handler fields, adjust comments.
      cp/
      	* tree.c (cxx_attribute_table, std_attribute_table): Swap
      	affects_type_identity and handler fields, adjust comments.
      fortran/
      	* f95-lang.c (gfc_attribute_table): Swap affects_type_identity
      	and handler fields, adjust comments.
      lto/
      	* lto-lang.c (lto_attribute_table, lto_format_attribute_table): Swap
      	affects_type_identity and handler fields, adjust comments.
      testsuite/
      	* g++.dg/plugin/attribute_plugin.c (user_attr): Swap
      	affects_type_identity and handler fields, add NULL for exclude.
      
      From-SVN: r255699
      Jakub Jelinek committed
  10. 07 Dec, 2017 2 commits
    • New VECTOR_CST layout · 734914b6
      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
      Richard Sandiford committed
    • PR c/81544 - attribute noreturn and warn_unused_result on the same function accepted · 5d9ae53d
      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
      Martin Sebor committed
  11. 30 Nov, 2017 1 commit
    • spellcheck-tree.c (test_find_closest_identifier): Use ; instead of ;;. · 5de73c05
      	* spellcheck-tree.c (test_find_closest_identifier): Use ; instead
      	of ;;.
      	* gengtype-state.c (read_state_pair): Likewise.
      	* gimple-fold.c (gimple_fold_builtin_string_compare): Likewise.
      	* sel-sched-dump.c (dump_insn_rtx_1): Likewise.
      	* ipa-cp.c (intersect_aggregates_with_edge): Likewise.
      	* ifcvt.c (noce_try_store_flag_constants): Likewise.
      	* tree-ssa-ccp.c (ccp_finalize): Likewise.
      	* omp-grid.c (grid_process_kernel_body_copy): Likewise.
      	* builtins.c (fold_builtin_3): Likewise.
      	* graphite-scop-detection.c
      	(scop_detection::stmt_has_simple_data_refs_p): Likewise.
      	* hsa-gen.c (hsa_function_representation::hsa_function_representation):
      	Likewise.
      c/
      	* c-parser.c (c_parser_postfix_expression): Use ; instead of ;;.
      jit/
      	* jit-recording.c
      	(recording::memento_of_new_rvalue_from_const <long>::write_reproducer):
      	Use ; instead of ;;.
      lto/
      	* lto.c (create_subid_section_table): Use ; instead of ;;.
      objc/
      	* objc-next-runtime-abi-01.c (generate_dispatch_table): Use ; instead
      	of ;;.
      
      From-SVN: r255284
      Jakub Jelinek committed
  12. 28 Nov, 2017 1 commit
    • Remove Cilk Plus support. · 5e9d6aa4
      	* Makefile.def (target_modules): Remove libcilkrts.
      	* Makefile.in: Ditto.
      	* configure: Ditto.
      	* configure.ac: Ditto.
      
      contrib/
      	* contrib/gcc_update: Ditto.
      
      gcc/
      	* Makefile.in (cilkplus.def, cilk-builtins.def, c-family/cilk.o, 
      	c-family/c-cilkplus.o, c-family/array-notation-common.o,
      	cilk-common.o, cilk.h, cilk-common.c): Remove.
      	* builtin-types.def
      	(BT_FN_INT_PTR_PTR_PTR_FTYPE_BT_INT_BT_PTR_BT_PTR_BT_PTR): Remove.
      	* builtins.c (is_builtin_name): Remove cilkplus condition.
      	(BUILT_IN_CILK_DETACH, BUILT_IN_CILK_POP_FRAME): Remove.
      	* builtins.def (DEF_CILK_BUILTIN_STUB, DEF_CILKPLUS_BUILTIN,
      	cilk-builtins.def, cilkplus.def): Remove.
      	* cif-code.def (CILK_SPAWN): Remove.
      	* cilk-builtins.def: Delete.
      	* cilk-common.c: Ditto.
      	* cilk.h: Ditto.
      	* cilkplus.def: Ditto.
      	* config/darwin.h (fcilkplus): Delete.
      	* cppbuiltin.c: Ditto.
      	* doc/extend.texi: Remove cilkplus doc.
      	* doc/generic.texi: Ditto.
      	* doc/invoke.texi: Ditto.
      	* doc/passes.texi: Ditto.
      	* gcc.c (fcilkplus): Remove.
      	* gengtype.c (cilk.h): Remove.
      	* gimple-pretty-print.c (dump_gimple_omp_for): Remove cilkplus support.
      	* gimple.h (GF_OMP_FOR_KIND_CILKFOR, GF_OMP_FOR_KIND_CILKSIMD): Remove.
      	* gimplify.c (gimplify_return_expr, maybe_fold_stmt,
      	gimplify_call_expr, is_gimple_stmt, gimplify_modify_expr,
      	gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses,
      	gimplify_omp_for, gimplify_expr): Remove cilkplus conditions.
      	* ipa-fnsummary.c (ipa_dump_fn_summary, compute_fn_summary,
      	inline_read_section): Ditto.
      	* ipa-inline-analysis.c (cilk.h): Remove.
      	* ira.c (ira_setup_eliminable_regset): Remove cilkplus support.
      	* lto-wrapper.c (merge_and_complain, append_compiler_options,
      	append_linker_options): Remove condition for fcilkplus.
      	* lto/lto-lang.c (cilk.h): Remove.
      	(lto_init): Remove condition for fcilkplus.
      	* omp-expand.c (expand_cilk_for_call): Delete.
      	(expand_omp_taskreg, expand_omp_for_static_chunk,
      	expand_omp_for): Remove cilkplus
      	conditions.
      	(expand_cilk_for): Delete.
      	* omp-general.c (omp_extract_for_data): Remove cilkplus support.
      	* omp-low.c (scan_sharing_clauses, create_omp_child_function,
      	execute_lower_omp, diagnose_sb_0): Ditto.
      	* omp-simd-clone.c (simd_clone_clauses_extract): Ditto.
      	* tree-core.h (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
      	* tree-nested.c: Ditto.
      	* tree-pretty-print.c (dump_omp_clause): Remove cilkplus support.
      	(dump_generic_node): Ditto.
      	* tree.c (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
      	* tree.def (cilk_simd, cilk_for, cilk_spawn_stmt,
      	cilk_sync_stmt): Delete.
      	* tree.h (CILK_SPAWN_FN, EXPR_CILK_SPAWN): Delete.
      
      gcc/c-family/
      	* array-notation-common.c: Delete.
      	* c-cilkplus.c: Ditto.
      	* c-common.c (_Cilk_spawn, _Cilk_sync, _Cilk_for): Remove.
      	* c-common.def (ARRAY_NOTATION_REF): Remove.
      	* c-common.h (RID_CILK_SPAWN, build_array_notation_expr,
      	build_array_notation_ref, C_ORT_CILK, c_check_cilk_loop,
      	c_validate_cilk_plus_loop, cilkplus_an_parts,
      	cilk_ignorable_spawn_rhs_op,
      	cilk_recognize_spawn): Remove.
      	* c-gimplify.c (CILK_SPAWN_STMT): Remove.
      	* c-omp.c: Remove CILK_SIMD check.
      	* c-pragma.c: Ditto.
      	* c-pragma.h: Remove CILK related pragmas.
      	* c-pretty-print.c (c_pretty_printer::postfix_expression): Remove
      	ARRAY_NOTATION_REF condition.
      	(c_pretty_printer::expression): Ditto.
      	* c.opt (fcilkplus): Remove.
      	* cilk.c: Delete.
      
      gcc/c/
      	* Make-lang.in (c/c-array-notation.o): Remove.
      	* c-array-notation.c: Delete.
      	* c-decl.c: Remove cilkplus condition.
      	* c-parser.c (c_parser_cilk_simd, c_parser_cilk_for,
      	c_parser_cilk_verify_simd, c_parser_array_notation,
      	c_parser_cilk_clause_vectorlength, c_parser_cilk_grainsize,
      	c_parser_cilk_simd_fn_vector_attrs,
      	c_finish_cilk_simd_fn_tokens): Delete.
      	(c_parser_declaration_or_fndef): Remove cilkplus condition.
      	(c_parser_direct_declarator_inner): Ditto.
      	(CILK_SIMD_FN_CLAUSE_MASK): Delete.
      	(c_parser_attributes, c_parser_compound_statement,
      	c_parser_statement_after_labels, c_parser_if_statement,
      	c_parser_switch_statement, c_parser_while_statement,
      	c_parser_do_statement, c_parser_for_statement,
      	c_parser_unary_expression, c_parser_postfix_expression,
      	c_parser_postfix_expression_after_primary,
      	c_parser_pragma, c_parser_omp_clause_name, c_parser_omp_all_clauses,
      	c_parser_omp_for_loop,
      	c_finish_omp_declare_simd): Remove cilkplus support.
      	* c-typeck.c (build_array_ref, build_function_call_vec,
      	convert_arguments, lvalue_p, build_compound_expr, c_finish_return,
      	c_finish_if_stmt, c_finish_loop,
      	build_binary_op): Remove cilkplus support.
      	
      gcc/cp/
      	* Make-lang.in (cp/cp-array-notation.o, cp/cp-cilkplus.o): Delete.
      	* call.c (convert_for_arg_passing, build_cxx_call): Remove cilkplus.
      	* constexpr.c (potential_constant_expression_1): Ditto.
      	* cp-array-notation.c: Delete.
      	* cp-cilkplus.c: Ditto.
      	* cp-cilkplus.h: Ditto.
      	* cp-gimplify.c (cp_gimplify_expr, cp_fold_r, cp_genericize): Remove
      	cilkplus condition.
      	* cp-objcp-common.c (ARRAY_NOTATION_REF): Delete.
      	* cp-tree.h (cilkplus_an_triplet_types_ok_p): Delete.
      	* decl.c (grokfndecl, finish_function): Remove cilkplus condition.
      	* error.c (dump_decl, dump_expr): Remove ARRAY_NOTATION_REF condition.
      	* lambda.c (cp-cilkplus.h): Remove.
      	* parser.c (cp_parser_cilk_simd, cp_parser_cilk_for,
      	cp_parser_cilk_simd_vectorlength): Delete.
      	(cp_debug_parser, cp_parser_ctor_initializer_opt_and_function_body,
      	cp_parser_postfix_expression, cp_parser_postfix_open_square_expression,
      	cp_parser_statement, cp_parser_jump_statement,
      	cp_parser_direct_declarator,
      	cp_parser_late_return_type_opt, cp_parser_gnu_attribute_list,
      	cp_parser_omp_clause_name, cp_parser_omp_clause_aligned,
      	cp_parser_omp_clause_linear, cp_parser_omp_all_clauses,
      	cp_parser_omp_flush, cp_parser_omp_for_cond, cp_parser_omp_for_incr,
      	cp_parser_omp_for_loop_init, cp_parser_omp_for_loop,
      	cp_parser_omp_declare_simd): Remove cilkplus support.
      	(CILK_SIMD_FN_CLAUSE_MASK, cp_parser_late_parsing_cilk_simd_fn_info,
      	cp_parser_cilk_grainsize): Remove.
      	(cp_parser_pragma, c_parse_file): Remove cilkplus support.
      	(cp_parser_cilk_simd_vectorlength, cp_parser_cilk_simd_linear,
      	cp_parser_cilk_simd_clause_name, cp_parser_cilk_simd_all_clauses,
      	cp_parser_cilk_simd, cp_parser_cilk_for): Remove.
      	* parser.h (IN_CILK_SIMD_FOR, IN_CILK_SPAWN): Remove.
      	* pt.c (tsubst_attribute, tsubst_expr, tsubst_copy_and_build): Remove
      	cilkplus support.
      	* semantics.c (finish_goto_stmt, begin_while_stmt, finish_do_body,
      	finish_init_stmt, finish_switch_cond, simplify_aggr_init_expr,
      	finish_omp_clauses, finish_omp_clauses,
      	finish_omp_for): Remove cilkplus support.
      	* tree.c (lvalue_kind): Remove ARRAY_NOTATION_REF conditon.
      	* typeck.c (cp_build_array_ref, cp_build_compound_expr,
      	check_return_expr): Remove cilkplus support.
      
      gcc/testsuite/
      	* c-c++-common/attr-simd-3.c: Delete.
      	* c-c++-common/cilk-plus/AN/an-if.c: Delete.
      	* c-c++-common/cilk-plus/AN/array_test1.c: Delete.
      	* c-c++-common/cilk-plus/AN/array_test2.c: Delete.
      	* c-c++-common/cilk-plus/AN/array_test_ND.c: Delete.
      	* c-c++-common/cilk-plus/AN/builtin_fn_custom.c: Delete.
      	* c-c++-common/cilk-plus/AN/builtin_fn_mutating.c: Delete.
      	* c-c++-common/cilk-plus/AN/builtin_func_double.c: Delete.
      	* c-c++-common/cilk-plus/AN/builtin_func_double2.c: Delete.
      	* c-c++-common/cilk-plus/AN/comma_exp.c: Delete.
      	* c-c++-common/cilk-plus/AN/conditional.c: Delete.
      	* c-c++-common/cilk-plus/AN/decl-ptr-colon.c: Delete.
      	* c-c++-common/cilk-plus/AN/dimensionless-arrays.c: Delete.
      	* c-c++-common/cilk-plus/AN/exec-once.c: Delete.
      	* c-c++-common/cilk-plus/AN/exec-once2.c: Delete.
      	* c-c++-common/cilk-plus/AN/fn_ptr-2.c: Delete.
      	* c-c++-common/cilk-plus/AN/fn_ptr.c: Delete.
      	* c-c++-common/cilk-plus/AN/fp_triplet_values.c: Delete.
      	* c-c++-common/cilk-plus/AN/gather-scatter-errors.c: Delete.
      	* c-c++-common/cilk-plus/AN/gather_scatter.c: Delete.
      	* c-c++-common/cilk-plus/AN/if_test.c: Delete.
      	* c-c++-common/cilk-plus/AN/if_test_errors.c: Delete.
      	* c-c++-common/cilk-plus/AN/misc.c: Delete.
      	* c-c++-common/cilk-plus/AN/n-ptr-test.c: Delete.
      	* c-c++-common/cilk-plus/AN/parser_errors.c: Delete.
      	* c-c++-common/cilk-plus/AN/parser_errors2.c: Delete.
      	* c-c++-common/cilk-plus/AN/parser_errors3.c: Delete.
      	* c-c++-common/cilk-plus/AN/parser_errors4.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr57457-2.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr57457.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr57490.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr57541-2.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr57541.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr57577.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr58942.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr61191.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr61455-2.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr61455.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr61962.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr61963.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr62008.c: Delete.
      	* c-c++-common/cilk-plus/AN/pr63884.c: Delete.
      	* c-c++-common/cilk-plus/AN/rank_mismatch.c: Delete.
      	* c-c++-common/cilk-plus/AN/rank_mismatch2.c: Delete.
      	* c-c++-common/cilk-plus/AN/rank_mismatch3.c: Delete.
      	* c-c++-common/cilk-plus/AN/sec_implicit.c: Delete.
      	* c-c++-common/cilk-plus/AN/sec_implicit2.c: Delete.
      	* c-c++-common/cilk-plus/AN/sec_implicit_ex.c: Delete.
      	* c-c++-common/cilk-plus/AN/sec_reduce_ind_same_value.c: Delete.
      	* c-c++-common/cilk-plus/AN/sec_reduce_max_min_ind.c: Delete.
      	* c-c++-common/cilk-plus/AN/sec_reduce_return.c: Delete.
      	* c-c++-common/cilk-plus/AN/side-effects-1.c: Delete.
      	* c-c++-common/cilk-plus/AN/test_builtin_return.c: Delete.
      	* c-c++-common/cilk-plus/AN/test_sec_limits.c: Delete.
      	* c-c++-common/cilk-plus/AN/tst_lngth.c: Delete.
      	* c-c++-common/cilk-plus/AN/vla.c: Delete.
      	* c-c++-common/cilk-plus/CK/Wparentheses-1.c: Delete.
      	* c-c++-common/cilk-plus/CK/cilk-for-2.c: Delete.
      	* c-c++-common/cilk-plus/CK/cilk-for-3.c: Delete.
      	* c-c++-common/cilk-plus/CK/cilk-fors.c: Delete.
      	* c-c++-common/cilk-plus/CK/cilk_for_errors.c: Delete.
      	* c-c++-common/cilk-plus/CK/cilk_for_grain.c: Delete.
      	* c-c++-common/cilk-plus/CK/cilk_for_grain_errors.c: Delete.
      	* c-c++-common/cilk-plus/CK/cilk_for_ptr_iter.c: Delete.
      	* c-c++-common/cilk-plus/CK/compound_cilk_spawn.c: Delete.
      	* c-c++-common/cilk-plus/CK/concec_cilk_spawn.c: Delete.
      	* c-c++-common/cilk-plus/CK/errors.c: Delete.
      	* c-c++-common/cilk-plus/CK/fib.c: Delete.
      	* c-c++-common/cilk-plus/CK/fib_init_expr_xy.c: Delete.
      	* c-c++-common/cilk-plus/CK/fib_no_return.c: Delete.
      	* c-c++-common/cilk-plus/CK/fib_no_sync.c: Delete.
      	* c-c++-common/cilk-plus/CK/invalid_spawns.c: Delete.
      	* c-c++-common/cilk-plus/CK/invalid_sync.c: Delete.c
      	* c-c++-common/cilk-plus/CK/nested_cilk_for.c: Delete.
      	* c-c++-common/cilk-plus/CK/no_args_error.c: Delete.
      	* c-c++-common/cilk-plus/CK/pr59631.c: Delete.
      	* c-c++-common/cilk-plus/CK/pr60197-2.c: Delete.
      	* c-c++-common/cilk-plus/CK/pr60197.c: Delete.
      	* c-c++-common/cilk-plus/CK/pr60469.c: Delete.
      	* c-c++-common/cilk-plus/CK/pr60586.c: Delete.
      	* c-c++-common/cilk-plus/CK/pr63307.c: Delete.
      	* c-c++-common/cilk-plus/CK/pr69826-1.c: Delete.
      	* c-c++-common/cilk-plus/CK/pr69826-2.c: Delete.
      	* c-c++-common/cilk-plus/CK/pr79428-4.c: Delete.
      	* c-c++-common/cilk-plus/CK/pr79428-7.c: Delete.
      	* c-c++-common/cilk-plus/CK/spawn_in_return.c: Delete.
      	* c-c++-common/cilk-plus/CK/spawnee_inline.c: Delete.
      	* c-c++-common/cilk-plus/CK/spawner_inline.c: Delete.
      	* c-c++-common/cilk-plus/CK/spawning_arg.c: Delete.
      	* c-c++-common/cilk-plus/CK/steal_check.c: Delete.
      	* c-c++-common/cilk-plus/CK/sync_wo_spawn.c: Delete.
      	* c-c++-common/cilk-plus/CK/test__cilk.c: Delete.
      	* c-c++-common/cilk-plus/CK/varargs_test.c: Delete.
      	* c-c++-common/cilk-plus/PS/Wparentheses-1.c: Delete.
      	* c-c++-common/cilk-plus/PS/body.c: Delete.
      	* c-c++-common/cilk-plus/PS/clauses1.c: Delete.
      	* c-c++-common/cilk-plus/PS/clauses2.c: Delete.
      	* c-c++-common/cilk-plus/PS/clauses3.c: Delete.
      	* c-c++-common/cilk-plus/PS/clauses4.c: Delete.
      	* c-c++-common/cilk-plus/PS/for1.c: Delete.
      	* c-c++-common/cilk-plus/PS/for2.c: Delete.
      	* c-c++-common/cilk-plus/PS/for3.c: Delete.
      	* c-c++-common/cilk-plus/PS/pr69363.c: Delete.
      	* c-c++-common/cilk-plus/PS/reduction-1.c: Delete.
      	* c-c++-common/cilk-plus/PS/reduction-2.c: Delete.
      	* c-c++-common/cilk-plus/PS/reduction-3.c: Delete.
      	* c-c++-common/cilk-plus/PS/run-1.c: Delete.
      	* c-c++-common/cilk-plus/PS/safelen.c: Delete.
      	* c-c++-common/cilk-plus/PS/vectorlength-2.c: Delete.
      	* c-c++-common/cilk-plus/PS/vectorlength-3.c: Delete.
      	* c-c++-common/cilk-plus/PS/vectorlength.c: Delete.
      	* c-c++-common/cilk-plus/SE/ef_error.c: Delete.
      	* c-c++-common/cilk-plus/SE/ef_error2.c: Delete.
      	* c-c++-common/cilk-plus/SE/ef_error3.c: Delete.
      	* c-c++-common/cilk-plus/SE/ef_test.c: Delete.
      	* c-c++-common/cilk-plus/SE/ef_test2.c: Delete.
      	* c-c++-common/cilk-plus/SE/vlength_errors.c: Delete.
      	* g++.dg/cilk-plus/AN/array_function.c: Delete.
      	* g++.dg/cilk-plus/AN/array_test1_tplt.c: Delete.
      	* g++.dg/cilk-plus/AN/array_test2_tplt.c: Delete.
      	* g++.dg/cilk-plus/AN/array_test_ND_tplt.c: Delete.
      	* g++.dg/cilk-plus/AN/braced_list.c: Delete.
      	* g++.dg/cilk-plus/AN/builtin_fn_custom_tplt.c: Delete.
      	* g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.c: Delete.
      	* g++.dg/cilk-plus/AN/fp_triplet_values_tplt.c: Delete.
      	* g++.dg/cilk-plus/AN/postincr_test.c: Delete.
      	* g++.dg/cilk-plus/AN/preincr_test.c: Delete.
      	* g++.dg/cilk-plus/CK/catch_exc.c: Delete.
      	* g++.dg/cilk-plus/CK/cf3.c: Delete.
      	* g++.dg/cilk-plus/CK/cilk-for-tplt.c: Delete.
      	* g++.dg/cilk-plus/CK/const_spawn.c: Delete.
      	* g++.dg/cilk-plus/CK/fib-opr-overload.c: Delete.
      	* g++.dg/cilk-plus/CK/fib-tplt.c: Delete.
      	* g++.dg/cilk-plus/CK/for1.c: Delete.
      	* g++.dg/cilk-plus/CK/lambda_spawns.c: Delete.
      	* g++.dg/cilk-plus/CK/lambda_spawns_tplt.c: Delete.
      	* g++.dg/cilk-plus/CK/pr60586.c: Delete.
      	* g++.dg/cilk-plus/CK/pr66326.c: Delete.
      	* g++.dg/cilk-plus/CK/pr68001.c: Delete.
      	* g++.dg/cilk-plus/CK/pr68997.c: Delete.
      	* g++.dg/cilk-plus/CK/pr69024.c: Delete.
      	* g++.dg/cilk-plus/CK/pr69048.c: Delete.
      	* g++.dg/cilk-plus/CK/pr69267.c: Delete.
      	* g++.dg/cilk-plus/CK/pr80038.c: Delete.
      	* g++.dg/cilk-plus/CK/stl_iter.c: Delete.
      	* g++.dg/cilk-plus/CK/stl_rev_iter.c: Delete.
      	* g++.dg/cilk-plus/CK/stl_test.c: Delete.
      	* g++.dg/cilk-plus/cilk-plus.exp
      	* g++.dg/cilk-plus/ef_test.C: Delete.
      	* g++.dg/cilk-plus/for.C: Delete.
      	* g++.dg/cilk-plus/for2.C: Delete.
      	* g++.dg/cilk-plus/for3.C: Delete.
      	* g++.dg/cilk-plus/for4.C: Delete.
      	* g++.dg/cilk-plus/pr60967.C: Delete.
      	* g++.dg/cilk-plus/pr69028.C: Delete.
      	* g++.dg/cilk-plus/pr70565.C: Delete.
      	* g++.dg/pr57662.C: Delete.
      	* gcc.dg/cilk-plus/cilk-plus.exp
      	* gcc.dg/cilk-plus/for1.c: Delete.
      	* gcc.dg/cilk-plus/for2.c: Delete.
      	* gcc.dg/cilk-plus/jump-openmp.c: Delete.
      	* gcc.dg/cilk-plus/jump.c: Delete.
      	* gcc.dg/cilk-plus/pr69798-1.c: Delete.
      	* gcc.dg/cilk-plus/pr69798-2.c: Delete.
      	* gcc.dg/cilk-plus/pr78306.c: Delete.
      	* gcc.dg/cilk-plus/pr79116.c: Delete.
      	* gcc.dg/graphite/id-28.c: Delete.
      	* lib/cilk-plus-dg.exp: Delete.
      	* lib/target-supports.exp (cilkplus_runtime): Delete.
      
      Co-Authored-By: Sebastian Peryt <sebastian.peryt@intel.com>
      
      From-SVN: r255195
      Julia Koval committed
  13. 22 Nov, 2017 1 commit
    • re PR c++/60336 (empty struct value is passed differently in C and C++) · 974aedcc
      	PR c++/60336
      	PR middle-end/67239
      	PR target/68355
      	* c-decl.c (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields.
      
      	* class.c (layout_class_type): Set DECL_PADDING_P on padding.
      	* decl.c (cxx_init_decl_processing): Set TRANSLATION_UNIT_WARN_EMPTY_P.
      	(grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields.
      
      	* lto.c (compare_tree_sccs_1): Compare TYPE_EMPTY_P and DECL_PADDING_P.
      
      	* calls.c (initialize_argument_information): Call
      	warn_parameter_passing_abi target hook.
      	(store_one_arg): Use 0 for empty record size.  Don't push 0 size
      	argument onto stack.
      	(must_pass_in_stack_var_size_or_pad): Return false for empty types.
      	* common.opt: Update -fabi-version description.
      	* config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
      	(ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
      	int_size_in_bytes.
      	(ix86_is_empty_record): New function.
      	(ix86_warn_parameter_passing_abi): New function.
      	(TARGET_EMPTY_RECORD_P): Redefine.
      	(TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
      	* config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
      	* doc/tm.texi: Regenerated.
      	* doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
      	TARGET_WARN_PARAMETER_PASSING_ABI): Add.
      	* dwarf2out.c (get_ultimate_context): Move to tree.c.
      	* explow.c (hard_function_value): Call arg_int_size_in_bytes
      	instead of int_size_in_bytes.
      	* expr.c (copy_blkmode_to_reg): Likewise.
      	* function.c (aggregate_value_p): Return 0 for empty types.
      	(assign_parm_find_entry_rtl): Call warn_parameter_passing_abi target hook.
      	(locate_and_pad_parm): Call arg size_in_bytes instead
      	size_in_bytes.
      	* lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
      	* stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
      	* target.def (empty_record_p, warn_parameter_passing_abi): New target
      	hooks.
      	* targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
      	(std_gimplify_va_arg_expr): Skip empty records.  Call
      	arg_size_in_bytes instead size_in_bytes.
      	* targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
      	* tree-core.h (tree_type_common): Add empty_flag.
      	(tree_decl_common): Update comments.
      	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
      	DECL_PADDING_P.
      	(unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
      	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
      	DECL_PADDING_P.
      	(pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
      	* tree.c (default_is_empty_type): New function.
      	(default_is_empty_record): New function.
      	(arg_int_size_in_bytes): New function.
      	(arg_size_in_bytes): New function.
      	(get_ultimate_context): New function.
      	* tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
      	TRANSLATION_UNIT_WARN_EMPTY_P.
      	(default_is_empty_record, arg_int_size_in_bytes,
      	arg_size_in_bytes, get_ultimate_context): Declare.
      
      	* g++.dg/abi/empty12.C: New test.
      	* g++.dg/abi/empty12.h: New test.
      	* g++.dg/abi/empty12a.c: New test.
      	* g++.dg/abi/empty13.C: New test.
      	* g++.dg/abi/empty13.h: New test.
      	* g++.dg/abi/empty13a.c: New test.
      	* g++.dg/abi/empty14.C: New test.
      	* g++.dg/abi/empty14.h: New test.
      	* g++.dg/abi/empty14a.c: New test.
      	* g++.dg/abi/empty15.C: New test.
      	* g++.dg/abi/empty15.h: New test.
      	* g++.dg/abi/empty15a.c: New test.
      	* g++.dg/abi/empty16.C: New test.
      	* g++.dg/abi/empty16.h: New test.
      	* g++.dg/abi/empty16a.c: New test.
      	* g++.dg/abi/empty17.C: New test.
      	* g++.dg/abi/empty17.h: New test.
      	* g++.dg/abi/empty17a.c: New test.
      	* g++.dg/abi/empty18.C: New test.
      	* g++.dg/abi/empty18.h: New test.
      	* g++.dg/abi/empty18a.c: New test.
      	* g++.dg/abi/empty19.C: New test.
      	* g++.dg/abi/empty19.h: New test.
      	* g++.dg/abi/empty19a.c: New test.
      	* g++.dg/abi/empty20.C: New test.
      	* g++.dg/abi/empty21.C: New test.
      	* g++.dg/abi/empty22.C: New test.
      	* g++.dg/abi/empty22.h: New test.
      	* g++.dg/abi/empty22a.c: New test.
      	* g++.dg/abi/empty23.C: New test.
      	* g++.dg/abi/empty24.C: New test.
      	* g++.dg/abi/empty25.C: New test.
      	* g++.dg/abi/empty25.h: New test.
      	* g++.dg/abi/empty25a.c: New test.
      	* g++.dg/abi/empty26.C: New test.
      	* g++.dg/abi/empty26.h: New test.
      	* g++.dg/abi/empty26a.c: New test.
      	* g++.dg/abi/empty27.C: New test.
      	* g++.dg/abi/empty28.C: New test.
      	* g++.dg/abi/pr60336-1.C: New test.
      	* g++.dg/abi/pr60336-10.C: New test.
      	* g++.dg/abi/pr60336-11.C: New test.
      	* g++.dg/abi/pr60336-12.C: New test.
      	* g++.dg/abi/pr60336-2.C: New test.
      	* g++.dg/abi/pr60336-3.C: New test.
      	* g++.dg/abi/pr60336-4.C: New test.
      	* g++.dg/abi/pr60336-5.C: New test.
      	* g++.dg/abi/pr60336-6.C: New test.
      	* g++.dg/abi/pr60336-7.C: New test.
      	* g++.dg/abi/pr60336-8.C: New test.
      	* g++.dg/abi/pr60336-9.C: New test.
      	* g++.dg/abi/pr68355.C: New test.
      	* g++.dg/lto/pr60336_0.C: New test.
      
      Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
      Co-Authored-By: Jason Merrill <jason@redhat.com>
      
      From-SVN: r255066
      Marek Polacek committed
  14. 10 Nov, 2017 1 commit
    • auto-profile.c (afdo_indirect_call): Drop frequency. · 1bad9c18
      	* auto-profile.c (afdo_indirect_call): Drop frequency.
      	* cgraph.c (symbol_table::create_edge): Drop frequency argument.
      	(cgraph_node::create_edge): Drop frequency argument.
      	(cgraph_node::create_indirect_edge): Drop frequency argument.
      	(cgraph_edge::make_speculative): Drop frequency arguments.
      	(cgraph_edge::resolve_speculation): Do not update frequencies
      	(cgraph_edge::dump_edge_flags): Do not dump frequency.
      	(cgraph_node::dump): Check consistency in IPA mode.
      	(cgraph_edge::maybe_hot_p): Use IPA counter.
      	(cgraph_edge::verify_count_and_frequency): Rename to ...
      	(cgraph_edge::verify_count): ... this one; drop frequency checking.
      	(cgraph_node::verify_node): Update.
      	* cgraph.h (struct cgraph_edge): Drop frequency.
      	(cgraph_edge::frequency): New function.
      	* cgraphbuild.c (pass_build_cgraph_edges::execute): Donot pass
      	frequencies.
      	(cgraph_edge::rebuild_edges): Likewise.
      	* cgraphclones.c (cgraph_edge::clone): Scale only counts.
      	(duplicate_thunk_for_node): Do not pass frequency.
      	(cgraph_node::create_clone): Scale only counts.
      	(cgraph_node::create_virtual_clone): Do not pass frequency.
      	(cgraph_node::create_edge_including_clones): Do not pass frequency.
      	(cgraph_node::create_version_clone): Do not pass frequency.
      	* cgraphunit.c (cgraph_node::analyze): Do not pass frequency.
      	(cgraph_node::expand_thunk): Do not pass frequency.
      	(cgraph_node::create_wrapper): Do not pass frequency.
      	* gimple-iterator.c (update_call_edge_frequencies): Do not pass
      	frequency.
      	* gimple-streamer-in.c (input_bb): Scale only IPA counts.
      	* ipa-chkp.c (chkp_produce_thunks): Do not pass frequency.
      	* ipa-cp.c (ipcp_lattice::print): Use frequency function.
      	(gather_caller_stats): Use frequency function.
      	(ipcp_cloning_candidate_p): Use frequency function.
      	(ipcp_propagate_stage): Use frequency function.
      	(get_info_about_necessary_edges): Use frequency function.
      	(update_profiling_info): Update only IPA profile.
      	(update_specialized_profile): Use frequency functoin.
      	(perhaps_add_new_callers): Update only IPA profile.
      	* ipa-devirt.c (ipa_devirt): Use IPA profile.
      	* ipa-fnsummary.c (redirect_to_unreachable): Do not set frequrency.
      	(dump_ipa_call_summary): Use frequency function.
      	(estimate_edge_size_and_time): Use frequency function.
      	(ipa_merge_fn_summary_after_inlining): Use frequency function.
      	* ipa-inline-analysis.c (do_estimate_edge_time): Use IPA profile.
      	* ipa-inline-transform.c (update_noncloned_frequencies): Rename to ..
      	(update_noncloned_counts): ... ths one; scale counts only.
      	(clone_inlined_nodes): Do not scale frequency.
      	(inline_call): Do not pass frequency.
      	* ipa-inline.c (compute_uninlined_call_time): Use IPA profile.
      	(compute_inlined_call_time): Use IPA profile.
      	(want_inline_small_function_p): Use IPA profile.
      	(want_inline_self_recursive_call_p): Use IPA profile.
      	(edge_badness): Use IPA profile.
      	(lookup_recursive_calls): Use IPA profile.
      	(recursive_inlining): Do not pass frequency.
      	(resolve_noninline_speculation): Do not update frequency.
      	(inline_small_functions): Collect max of IPA profile.
      	(dump_overall_stats): Dump IPA porfile.
      	(dump_inline_stats): Dump IPA porfile.
      	(ipa_inline): Collect IPA stats.
      	* ipa-inline.h (clone_inlined_nodes): Update prototype.
      	* ipa-profile.c (ipa_propagate_frequency_1): Use frequency function.
      	(ipa_propagate_frequency): Use frequency function.
      	(ipa_profile): Cleanup.
      	* ipa-prop.c (ipa_make_edge_direct_to_target): Do not pass frequency
      	* ipa-utils.c (ipa_merge_profiles): Merge all profiles.
      	* lto-cgraph.c (lto_output_edge): Do not stream frequency.
      	(input_node): Do not stream frequency.
      	(input_edge): Do not stream frequency.
      	(merge_profile_summaries): Scale only IPA profiles.
      	* omp-simd-clone.c (simd_clone_adjust): Do not pass frequency.
      	* predict.c (drop_profile): Do not recompute frequency.
      	* trans-mem.c (ipa_tm_insert_irr_call): Do not pass frequency.
      	(ipa_tm_insert_gettmclone_call): Do not pass frequency.
      	* tree-cfg.c (execute_fixup_cfg): Drop profile to global0 if needed.
      	* tree-chkp.c (chkp_copy_bounds_for_assign): Do not pass frequency.
      	* tree-emutls.c (gen_emutls_addr): Do not pass frequency.
      	* tree-inline.c (copy_bb): Do not scale frequency.
      	(expand_call_inline): Do not scale frequency.
      	(tree_function_versioning): Do not scale frequency.
      	* ubsan.c (ubsan_create_edge): Do not pass frequency.
      
      lto/ChangeLog:
      
      2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
      
      	* lto-partition.c (lto_balanced_map): Use frequency accessor.
      
      From-SVN: r254636
      Jan Hubicka committed
  15. 13 Oct, 2017 1 commit
  16. 11 Oct, 2017 1 commit
  17. 10 Oct, 2017 1 commit
    • Require wi::to_wide for trees · 8e6cdc90
      The wide_int routines allow things like:
      
         wi::add (t, 1)
      
      to add 1 to an INTEGER_CST T in its native precision.  But we also have:
      
         wi::to_offset (t)      // Treat T as an offset_int
         wi::to_widest (t)      // Treat T as a widest_int
      
      Recently we also gained:
      
         wi::to_wide (t, prec)  // Treat T as a wide_int in preccision PREC
      
      This patch therefore requires:
      
         wi::to_wide (t)
      
      when operating on INTEGER_CSTs in their native precision.  This is
      just as efficient, and makes it clearer that a deliberate choice is
      being made to treat the tree as a wide_int in its native precision.
      This also removes the inconsistency that
      
      a) INTEGER_CSTs in their native precision can be used without an accessor
         but must use wi:: functions instead of C++ operators
      
      b) the other forms need an explicit accessor but the result can be used
         with C++ operators.
      
      It also helps with SVE, where there's the additional possibility
      that the tree could be a runtime value.
      
      2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* wide-int.h (wide_int_ref_storage): Make host_dependent_precision
      	a template parameter.
      	(WIDE_INT_REF_FOR): Update accordingly.
      	* tree.h (wi::int_traits <const_tree>): Delete.
      	(wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs.
      	(wi::to_widest, wi::to_offset): Use them.  Expand commentary.
      	(wi::tree_to_wide_ref): New typedef.
      	(wi::to_wide): New function.
      	* calls.c (get_size_range): Use wi::to_wide when operating on
      	trees as wide_ints.
      	* cgraph.c (cgraph_node::create_thunk): Likewise.
      	* config/i386/i386.c (ix86_data_alignment): Likewise.
      	(ix86_local_alignment): Likewise.
      	* dbxout.c (stabstr_O): Likewise.
      	* dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise.
      	* expr.c (const_vector_from_tree): Likewise.
      	* fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise.
      	* fold-const.c (may_negate_without_overflow_p, negate_expr_p)
      	(fold_negate_expr_1, int_const_binop_1, const_binop)
      	(fold_convert_const_int_from_real, optimize_bit_field_compare)
      	(all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1)
      	(fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr)
      	(pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc)
      	(fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const)
      	(fold_not_const, round_up_loc): Likewise.
      	* gimple-fold.c (gimple_fold_indirect_ref): Likewise.
      	* gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise.
      	(alloca_call_type): Likewise.
      	* gimple.c (preprocess_case_label_vec_for_gimple): Likewise.
      	* godump.c (go_output_typedef): Likewise.
      	* graphite-sese-to-poly.c (tree_int_to_gmp): Likewise.
      	* internal-fn.c (get_min_precision): Likewise.
      	* ipa-cp.c (ipcp_store_vr_results): Likewise.
      	* ipa-polymorphic-call.c
      	(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
      	* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise.
      	(ipa_modify_call_arguments): Likewise.
      	* match.pd: Likewise.
      	* omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise.
      	* print-tree.c (print_node_brief, print_node): Likewise.
      	* stmt.c (expand_case): Likewise.
      	* stor-layout.c (layout_type): Likewise.
      	* tree-affine.c (tree_to_aff_combination): Likewise.
      	* tree-cfg.c (group_case_labels_stmt): Likewise.
      	* tree-data-ref.c (dr_analyze_indices): Likewise.
      	(prune_runtime_alias_test_list): Likewise.
      	* tree-dump.c (dequeue_and_dump): Likewise.
      	* tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise.
      	* tree-predcom.c (is_inv_store_elimination_chain): Likewise.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      	* tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
      	(simple_iv_with_niters): Likewise.
      	* tree-ssa-address.c (addr_for_mem_ref): Likewise.
      	* tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise.
      	* tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise.
      	* tree-ssa-loop-niter.c (split_to_var_and_offset)
      	(refine_value_range_using_guard, number_of_iterations_ne_max)
      	(number_of_iterations_lt_to_ne, number_of_iterations_lt)
      	(get_cst_init_from_scev, record_nonwrapping_iv)
      	(scev_var_range_cant_overflow): Likewise.
      	* tree-ssa-phiopt.c (minmax_replacement): Likewise.
      	* tree-ssa-pre.c (compute_avail): Likewise.
      	* tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
      	(vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise.
      	* tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
      	* tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise.
      	* tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise.
      	* tree-switch-conversion.c (collect_switch_conv_info, array_value_type)
      	(dump_case_nodes, try_switch_expansion): Likewise.
      	* tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise.
      	(vect_do_peeling): Likewise.
      	* tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
      	* tree-vect-stmts.c (vectorizable_load): Likewise.
      	* tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise.
      	(zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise.
      	(extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise.
      	(overflow_comparison_p_1, register_edge_assert_for_2): Likewise.
      	(is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits)
      	(vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise.
      	(range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise.
      	(evrp_dom_walker::before_dom_children): Likewise.
      	* tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop)
      	(integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2)
      	(tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit)
      	(tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise.
      	(get_type_static_bounds, num_ending_zeros, drop_tree_overflow)
      	(get_range_pos_neg): Likewise.
      	* ubsan.c (ubsan_expand_ptr_ifn): Likewise.
      	* config/darwin.c (darwin_mergeable_constant_section): Likewise.
      	* config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
      	* config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
      	* config/avr/avr.c (avr_fold_builtin): Likewise.
      	* config/bfin/bfin.c (bfin_local_alignment): Likewise.
      	* config/msp430/msp430.c (msp430_attr): Likewise.
      	* config/nds32/nds32.c (nds32_insert_attributes): Likewise.
      	* config/powerpcspe/powerpcspe-c.c
      	(altivec_resolve_overloaded_builtin): Likewise.
      	* config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate)
      	(rs6000_expand_ternop_builtin): Likewise.
      	* config/rs6000/rs6000-c.c
      	(altivec_resolve_overloaded_builtin): Likewise.
      	* config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
      	(rs6000_expand_ternop_builtin): Likewise.
      	* config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise.
      
      gcc/ada/
      	* gcc-interface/decl.c (annotate_value): Use wi::to_wide when
      	operating on trees as wide_ints.
      
      gcc/c/
      	* c-parser.c (c_parser_cilk_clause_vectorlength): Use wi::to_wide when
      	operating on trees as wide_ints.
      	* c-typeck.c (build_c_cast, c_finish_omp_clauses): Likewise.
      	(c_tree_equal): Likewise.
      
      gcc/c-family/
      	* c-ada-spec.c (dump_generic_ada_node): Use wi::to_wide when
      	operating on trees as wide_ints.
      	* c-common.c (pointer_int_sum): Likewise.
      	* c-pretty-print.c (pp_c_integer_constant): Likewise.
      	* c-warn.c (match_case_to_enum_1): Likewise.
      	(c_do_switch_warnings): Likewise.
      	(maybe_warn_shift_overflow): Likewise.
      
      gcc/cp/
      	* cvt.c (ignore_overflows): Use wi::to_wide when
      	operating on trees as wide_ints.
      	* decl.c (check_array_designated_initializer): Likewise.
      	* mangle.c (write_integer_cst): Likewise.
      	* semantics.c (cp_finish_omp_clause_depend_sink): Likewise.
      
      gcc/fortran/
      	* target-memory.c (gfc_interpret_logical): Use wi::to_wide when
      	operating on trees as wide_ints.
      	* trans-const.c (gfc_conv_tree_to_mpz): Likewise.
      	* trans-expr.c (gfc_conv_cst_int_power): Likewise.
      	* trans-intrinsic.c (trans_this_image): Likewise.
      	(gfc_conv_intrinsic_bound): Likewise.
      	(conv_intrinsic_cobound): Likewise.
      
      gcc/lto/
      	* lto.c (compare_tree_sccs_1): Use wi::to_wide when
      	operating on trees as wide_ints.
      
      gcc/objc/
      	* objc-act.c (objc_decl_method_attributes): Use wi::to_wide when
      	operating on trees as wide_ints.
      
      From-SVN: r253595
      Richard Sandiford committed
  18. 30 Aug, 2017 2 commits
    • [35/77] Add uses of as_a <scalar_int_mode> · c7ad039d
      This patch adds asserting as_a <scalar_int_mode> conversions
      to contexts in which the input is known to be a scalar integer mode.
      
      In expand_divmod, op1 is always a scalar_int_mode if
      op1_is_constant (but might not be otherwise).
      
      In expand_binop, the patch reverses a < comparison in order to
      avoid splitting a long line.
      
      gcc/
      2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* cfgexpand.c (convert_debug_memory_address): Use
      	as_a <scalar_int_mode>.
      	* combine.c (expand_compound_operation): Likewise.
      	(make_extraction): Likewise.
      	(change_zero_ext): Likewise.
      	(simplify_comparison): Likewise.
      	* cse.c (cse_insn): Likewise.
      	* dwarf2out.c (minmax_loc_descriptor): Likewise.
      	(mem_loc_descriptor): Likewise.
      	(loc_descriptor): Likewise.
      	* expmed.c (init_expmed_one_mode): Likewise.
      	(synth_mult): Likewise.
      	(emit_store_flag_1): Likewise.
      	(expand_divmod): Likewise.  Use HWI_COMPUTABLE_MODE_P instead
      	of a comparison with size.
      	* expr.c (expand_assignment): Use as_a <scalar_int_mode>.
      	(reduce_to_bit_field_precision): Likewise.
      	* function.c (expand_function_end): Likewise.
      	* internal-fn.c (expand_arith_overflow_result_store): Likewise.
      	* loop-doloop.c (doloop_modify): Likewise.
      	* optabs.c (expand_binop): Likewise.
      	(expand_unop): Likewise.
      	(expand_copysign_absneg): Likewise.
      	(prepare_cmp_insn): Likewise.
      	(maybe_legitimize_operand): Likewise.
      	* recog.c (const_scalar_int_operand): Likewise.
      	* rtlanal.c (get_address_mode): Likewise.
      	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
      	(simplify_cond_clz_ctz): Likewise.
      	* tree-nested.c (get_nl_goto_field): Likewise.
      	* tree.c (build_vector_type_for_mode): Likewise.
      	* var-tracking.c (use_narrower_mode): Likewise.
      
      gcc/c-family/
      2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* c-common.c (c_common_type_for_mode): Use as_a <scalar_int_mode>.
      
      gcc/lto/
      2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* lto-lang.c (lto_type_for_mode): Use as_a <scalar_int_mode>.
      
      From-SVN: r251487
      Richard Sandiford committed
  19. 21 Aug, 2017 1 commit
    • re PR go/78628 (GO fails to build a translation unit decl) · 1ea85365
      2017-08-21  Richard Biener  <rguenther@suse.de>
      
      	include/
      	* simple-object.h (simple_object_copy_lto_debug_sections): New
      	function.
      
      	libiberty/
      	* simple-object-common.h (struct simple_object_functions): Add
      	copy_lto_debug_sections hook.
      	* simple-object.c: Include fcntl.h.
      	(handle_lto_debug_sections): New helper function.
      	(simple_object_copy_lto_debug_sections): New function copying
      	early LTO debug sections to regular debug sections in a new file.
      	(simple_object_start_write): Handle NULL segment_name.
      	* simple-object-coff.c (simple_object_coff_functions): Adjust
      	for not implemented copy_lto_debug_sections hook.
      	* simple-object-mach-o.c (simple_object_mach_o_functions): Likewise.
      	* simple-object-xcoff.c (simple_object_xcoff_functions): Likewise.
      	* simple-object-elf.c (SHT_NULL, SHT_SYMTAB, SHT_RELA, SHT_REL,
      	SHT_GROUP): Add various sectopn header types.
      	(SHF_EXCLUDE): Add flag.
      	(Elf32_External_Sym, Elf64_External_Sym): Add symbol struct.
      	(ELF_ST_BIND, ELF_ST_TYPE, ELF_ST_INFO): Add accessors.
      	(STT_OBJECT, STT_FUNC, STT_TLS, STT_GNU_IFUNC): Add Symbol types.
      	(STV_DEFAULT): Add symbol visibility.
      	(SHN_COMMON): Add special section index name.
      	(struct simple_object_elf_write): New.
      	(simple_object_elf_start_write): Adjust for new private data.
      	(simple_object_elf_write_shdr): Pass in values for all fields
      	we write.
      	(simple_object_elf_write_to_file): Adjust.  Copy from recorded
      	section headers if requested.
      	(simple_object_elf_release_write): Release private data.
      	(simple_object_elf_copy_lto_debug_sections): Copy and rename sections
      	as denoted by PFN and all their dependences, symbols and relocations
      	to the empty destination file.
      	(simple_object_elf_functions): Adjust for copy_lto_debug_sections hook.
      
              gcc/
              * debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and
              register_external_die hooks.
              (debug_false_tree_charstarstar_uhwistar): Declare.
              (debug_nothing_tree_charstar_uhwi): Likewise.
              * debug.c (do_nothing_debug_hooks): Adjust.
              (debug_false_tree_charstarstar_uhwistar): New do nothing.
              (debug_nothing_tree_charstar_uhwi): Likewise.
              * dbxout.c (dbx_debug_hooks): Adjust.
              (xcoff_debug_hooks): Likewise.
              * sdbout.c (sdb_debug_hooks): Likewise.
              * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
              * dwarf2out.c (macinfo_label_base): New global.
      	(dwarf2out_register_external_die): New function for the
      	register_external_die hook.
              (dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl.
              (dwarf2_debug_hooks): Use them.
              (dwarf2_lineno_debug_hooks): Adjust.
              (struct die_struct): Add with_offset flag.
              (DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION,
              DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION,
              DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION,
              DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION,
              DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION,
              DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros
              defining section names for the early LTO debug variants.
      	(reset_indirect_string): New helper.
              (add_AT_external_die_ref): Helper for dwarf2out_register_external_die.
              (print_dw_val): Add support for offsetted symbol references.
      	(get_ultimate_context): Split out from is_cxx.
      	(is_cxx): Use get_ultimate_context.
      	(is_fortran): Add decl overload.
              (compute_comp_unit_symbol): Split out worker from
      	compute_section_prefix.
              (compute_section_prefix): Call compute_comp_unit_symbol and
      	set comdat_type_p here.
              (output_die): Skip DIE symbol output for the LTO added one.
              Handle DIE symbol references with offset.
              (output_comp_unit): Guard section name mangling properly.
              For LTO debug sections emit a symbol at the section beginning
              which we use to refer to its DIEs.
              (add_abstract_origin_attribute): For DIEs registered via
              dwarf2out_register_external_die directly refer to the early
              DIE rather than indirectly through the shadow one we created.
      	Remove obsolete call to dwarf2out_abstract_function for
      	non-function/block origins.
              (gen_array_type_die): When generating early LTO debug do
              not emit DW_AT_string_length.
              (gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs
              late when in LTO.  As suggested place a gcc_unreachable for
      	the DECL_ABSTRACT_P case.
              (gen_subprogram_die): Avoid another specification DIE
              for early built declarations/definitions for the late LTO case.
              (gen_variable_die): Add type references for late duplicated VLA dies
              when in late LTO.
              (gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function,
              we have the abstract instance already.
              (process_scope_var): Adjust decl DIE contexts in LTO which
              first puts them in limbo.
              (gen_decl_die): Do not generate type DIEs late apart from
              types for VLAs or for decls we do not yet have a DIE.  Do not
      	call dwarf2out_abstract_function late.
              (dwarf2out_early_global_decl): Make sure to create DIEs
              for abstract instances of a decl first.
              (dwarf2out_late_global_decl): Adjust comment.
              (output_macinfo_op): With multiple macro sections use
      	macinfo_label_base to distinguish labels.
              (output_macinfo): Likewise.  Update macinfo_label_base.
      	Pass in the line info label.
      	(note_variable_value_in_expr): When generating LTO resolve
      	all variable values here by generating DIEs as needed.
              (init_sections_and_labels): Add early LTO debug flag parameter
              and generate different sections and names if set.  Add generation
              counter for the labels so we can have multiple of them.
              (reset_dies): Helper to allow DIEs to be output multiple times.
              (dwarf2out_finish): When outputting DIEs to the fat part of an
      	LTO object first reset DIEs.
              (dwarf2out_early_finish): Output early DIEs when generating LTO.
      	(modified_type_die): Check for decl_ultimate_origin being self
      	before recursing.
      	(gen_type_die_with_usage): Likewise.
      	(gen_typedef_die): Allow decl_ultimate_origin being self.
              (set_decl_abstract_flags): Remove.
              (set_block_abstract_flags): Likewise.
              (dwarf2out_abstract_function): Treat the early generated DIEs
              as the abstract copy and only add DW_AT_inline and
              DW_AT_artificial here and call set_decl_origin_self.
      	If the DIE has an abstract origin don't do anything.
      	* tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL
      	if we have none yet (Go fails to build one, PR78628).
      	(variably_modified_type_p): Prevent endless recursion for Ada
      	cyclic pointer types.
              * lto-streamer-in.c: Include debug.h.
              (dref_queue): New global.
              (lto_read_tree_1): Stream in DIE references.
              (lto_input_tree): Register DIE references.
      	(input_function): Stream DECL_DEBUG_ARGS.
              * lto-streamer-out.c: Include debug.h.
              (lto_write_tree_1): Output DIE references.
              (DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN.
      	Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls.
      	(output_function): Stream DECL_DEBUG_ARGS.
              * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
              Stream DECL_ABSTRACT_ORIGIN.
              * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
      	(write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL
      	DECL_CONTEXT for file-scope decls.
              * lto-streamer.h (struct dref_entry): Declare.
              (dref_queue): Likewise.
      	* cfgexpand.c (pass_expand::execute): Do not call the
      	outlining_inline_function hook here.
              * lto-wrapper.c (debug_obj): New global.
              (tool_cleanup): Unlink it if required.
              (debug_objcopy): New function.
              (run_gcc): Handle early debug sections in the IL files by
              extracting them to separate files, partially linkin them and
              feeding the result back as result to the linker.
      
              * config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION,
              DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION,
              DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug
              sections into a separate segment.
              * config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO
              segments.
              (darwin_asm_dwarf_section): Likewise.
              (darwin_asm_output_dwarf_offset): Likewise.
      
      	* config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P.
      
              lto/
              * lto.c (unify_scc): Truncate DIE reference queue for dropped SCCs.
              (lto_read_decls): Process TRANSLATION_UNIT_DECLs.  Remove
              TYPE_DECL debug processing, register DIE references from
              prevailing SCCs with the debug machinery.
              (lto_section_with_id): Handle LTO debug sections.
      
      	libstdc++/
      	* testsuite/libstdc++-prettyprinters/prettyprinters.exp: Run all
      	tests with -flto as well if supported.
      
              testsuite/
      	* c-c++-common/asan/global-overflow-1.c: Adjust diagnostic location
      	regex to handle the LTO case.
      	* c-c++-common/asan/heap-overflow-1.c: Likewise.
      	* c-c++-common/asan/misalign-1.c: Likewise.
      	* c-c++-common/asan/misalign-2.c: Likewise.
      	* c-c++-common/asan/null-deref-1.c: Likewise.
      	* c-c++-common/asan/stack-overflow-1.c: Likewise.
      	* c-c++-common/asan/strncpy-overflow-1.c: Likewise.
      	* c-c++-common/asan/use-after-free-1.c: Likewise.
      	* c-c++-common/asan/alloca_big_alignment.c: Likewise.
      	* c-c++-common/asan/alloca_detect_custom_size.c: Likewise.
      	* c-c++-common/asan/alloca_overflow_partial.c: Likewise.
      	* c-c++-common/asan/alloca_overflow_right.c: Likewise.
      	* c-c++-common/asan/alloca_underflow_left.c: Likewise.
      	* g++.dg/asan/large-func-test-1.C: Likewise.
      	* gfortran.dg/save_6.f90: Add -flto -g variant of save_5.f90.
      
      From-SVN: r251220
      Richard Biener committed
  20. 16 Aug, 2017 1 commit
    • tree-core.h (tree_type_non_common): Rename binfo to lang_1. · 8e093270
      	* tree-core.h (tree_type_non_common): Rename binfo to lang_1.
      	* tree.h (TYPE_BINFO): Use type_non_common.maxval.
      	(TYPE_LANG_SLOT_1): Use type_non_common.lang_1, for any type.
      	* tree.c (free_lang_data_in_type): Use else-if chain.  Always
      	clear TYPE_LANG_1.  Remove obsolete member-function stripping.
      	(find_decls_types_r): Comment about TYPE_MAX_VALUES_RAW.
      	(verify_type): Adjust for TYPE_BINFO move.
      	* lto-streamer-out.c (DFS::DFS_write_tree_body): No need to
      	process TYPE_BINFO directly.
      	(hash_tree): Likewise.
      	* tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
      	Likewise.
      	* tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
      	Likewise.
      
      	lto/
      	* lto.c (mentions_vars_p_type): Use TYPE_LANG_SLOT_1.
      	(compare_tree_sccs_1): No need to compare TYPE_BINFO directly.
      	(lto_fixup_prevailing_decls): Use TYPE_LANG_SLOT_1.
      
      From-SVN: r251129
      Nathan Sidwell committed
  21. 08 Aug, 2017 2 commits
    • Add missing include of attribs.h in lto.c · eac3ab4a
      2017-08-08  Tom de Vries  <tom@codesourcery.com>
      
      	* lto.c: Include attribs.h.
      
      From-SVN: r250949
      Tom de Vries committed
    • trans.c: Include header files. · 314e6352
      .
      2017-08-08  Martin Liska  <mliska@suse.cz>
      
      	* gcc-interface/trans.c: Include header files.
      2017-08-08  Martin Liska  <mliska@suse.cz>
      
      	* objc-gnu-runtime-abi-01.c: Include header files.
      	* objc-next-runtime-abi-01.c: Likewise.
      	* objc-next-runtime-abi-02.c: Likewise.
      2017-08-08  Martin Liska  <mliska@suse.cz>
      
      	* asan.c: Include header files.
      	* attribs.c (build_decl_attribute_variant): New function moved
      	from tree.[ch].
      	(build_type_attribute_qual_variant): Likewise.
      	(cmp_attrib_identifiers): Likewise.
      	(simple_cst_list_equal): Likewise.
      	(omp_declare_simd_clauses_equal): Likewise.
      	(attribute_value_equal): Likewise.
      	(comp_type_attributes): Likewise.
      	(build_type_attribute_variant): Likewise.
      	(lookup_ident_attribute): Likewise.
      	(remove_attribute): Likewise.
      	(merge_attributes): Likewise.
      	(merge_type_attributes): Likewise.
      	(merge_decl_attributes): Likewise.
      	(merge_dllimport_decl_attributes): Likewise.
      	(handle_dll_attribute): Likewise.
      	(attribute_list_equal): Likewise.
      	(attribute_list_contained): Likewise.
      	* attribs.h (lookup_attribute): New function moved from tree.[ch].
      	(lookup_attribute_by_prefix): Likewise.
      	* bb-reorder.c: Include header files.
      	* builtins.c: Likewise.
      	* calls.c: Likewise.
      	* cfgexpand.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* convert.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* final.c: Likewise.
      	* fold-const.c: Likewise.
      	* function.c: Likewise.
      	* gimple-expr.c: Likewise.
      	* gimple-fold.c: Likewise.
      	* gimple-pretty-print.c: Likewise.
      	* gimple.c: Likewise.
      	* gimplify.c: Likewise.
      	* hsa-common.c: Likewise.
      	* hsa-gen.c: Likewise.
      	* internal-fn.c: Likewise.
      	* ipa-chkp.c: Likewise.
      	* ipa-cp.c: Likewise.
      	* ipa-devirt.c: Likewise.
      	* ipa-fnsummary.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* ipa-visibility.c: Likewise.
      	* ipa.c: Likewise.
      	* lto-cgraph.c: Likewise.
      	* omp-expand.c: Likewise.
      	* omp-general.c: Likewise.
      	* omp-low.c: Likewise.
      	* omp-offload.c: Likewise.
      	* omp-simd-clone.c: Likewise.
      	* opts-global.c: Likewise.
      	* passes.c: Likewise.
      	* predict.c: Likewise.
      	* sancov.c: Likewise.
      	* sanopt.c: Likewise.
      	* symtab.c: Likewise.
      	* toplev.c: Likewise.
      	* trans-mem.c: Likewise.
      	* tree-chkp.c: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-profile.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-ssa-loop.c: Likewise.
      	* tree-ssa-sccvn.c: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-streamer-in.c: Likewise.
      	* tree-vectorizer.c: Likewise.
      	* tree-vrp.c: Likewise.
      	* tsan.c: Likewise.
      	* ubsan.c: Likewise.
      	* varasm.c: Likewise.
      	* varpool.c: Likewise.
      	* tree.c: Remove functions moved to attribs.[ch].
      	* tree.h: Likewise.
      	* config/aarch64/aarch64.c: Add attrs.h header file.
      	* config/alpha/alpha.c: Likewise.
      	* config/arc/arc.c: Likewise.
      	* config/arm/arm.c: Likewise.
      	* config/avr/avr.c: Likewise.
      	* config/bfin/bfin.c: Likewise.
      	* config/c6x/c6x.c: Likewise.
      	* config/cr16/cr16.c: Likewise.
      	* config/cris/cris.c: Likewise.
      	* config/darwin.c: Likewise.
      	* config/epiphany/epiphany.c: Likewise.
      	* config/fr30/fr30.c: Likewise.
      	* config/frv/frv.c: Likewise.
      	* config/ft32/ft32.c: Likewise.
      	* config/h8300/h8300.c: Likewise.
      	* config/i386/winnt.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/iq2000/iq2000.c: Likewise.
      	* config/lm32/lm32.c: Likewise.
      	* config/m32c/m32c.c: Likewise.
      	* config/m32r/m32r.c: Likewise.
      	* config/m68k/m68k.c: Likewise.
      	* config/mcore/mcore.c: Likewise.
      	* config/microblaze/microblaze.c: Likewise.
      	* config/mips/mips.c: Likewise.
      	* config/mmix/mmix.c: Likewise.
      	* config/mn10300/mn10300.c: Likewise.
      	* config/moxie/moxie.c: Likewise.
      	* config/msp430/msp430.c: Likewise.
      	* config/nds32/nds32-isr.c: Likewise.
      	* config/nds32/nds32.c: Likewise.
      	* config/nios2/nios2.c: Likewise.
      	* config/nvptx/nvptx.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/pdp11/pdp11.c: Likewise.
      	* config/powerpcspe/powerpcspe.c: Likewise.
      	* config/riscv/riscv.c: Likewise.
      	* config/rl78/rl78.c: Likewise.
      	* config/rx/rx.c: Likewise.
      	* config/s390/s390.c: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/sol2.c: Likewise.
      	* config/sparc/sparc.c: Likewise.
      	* config/spu/spu.c: Likewise.
      	* config/stormy16/stormy16.c: Likewise.
      	* config/tilegx/tilegx.c: Likewise.
      	* config/tilepro/tilepro.c: Likewise.
      	* config/v850/v850.c: Likewise.
      	* config/vax/vax.c: Likewise.
      	* config/visium/visium.c: Likewise.
      	* config/xtensa/xtensa.c: Likewise.
      2017-08-08  Martin Liska  <mliska@suse.cz>
      
      	* call.c: Include header files.
      	* cp-gimplify.c: Likewise.
      	* cp-ubsan.c: Likewise.
      	* cvt.c: Likewise.
      	* init.c: Likewise.
      	* search.c: Likewise.
      	* semantics.c: Likewise.
      	* typeck.c: Likewise.
      2017-08-08  Martin Liska  <mliska@suse.cz>
      
      	* lto-lang.c: Include header files.
      	* lto-symtab.c: Likewise.
      2017-08-08  Martin Liska  <mliska@suse.cz>
      
      	* c-convert.c: Include header files.
      	* c-typeck.c: Likewise.
      2017-08-08  Martin Liska  <mliska@suse.cz>
      
      	* c-ada-spec.c: Include header files.
      	* c-ubsan.c: Likewise.
      	* c-warn.c: Likewise.
      2017-08-08  Martin Liska  <mliska@suse.cz>
      
      	* trans-types.c: Include header files.
      
      From-SVN: r250946
      Martin Liska committed
  22. 03 Aug, 2017 1 commit
  23. 25 Jul, 2017 1 commit
    • c-attribs.c (c_common_attribute_table): Add entry for "patchable_function_entry". · 417ca011
      2017-07-07  Torsten Duwe  <duwe@suse.de>
      
              c-family/
      	* c-attribs.c (c_common_attribute_table): Add entry for
      	"patchable_function_entry".
      
              lto/
      	* lto-lang.c (lto_attribute_table): Add entry for
      	"patchable_function_entry".
      
      	* common.opt: Introduce -fpatchable-function-entry
      	command line option, and its variables function_entry_patch_area_size
      	and function_entry_patch_area_start.
      	* opts.c (common_handle_option): Add -fpatchable_function_entry_ case,
      	including a two-value parser.
      	* target.def (print_patchable_function_entry): New target hook.
      	* targhooks.h (default_print_patchable_function_entry): New function.
      	* targhooks.c (default_print_patchable_function_entry): Likewise.
      	* toplev.c (process_options): Switch off IPA-RA if
      	patchable function entries are being generated.
      	* varasm.c (assemble_start_function): Look at the
      	patchable-function-entry command line switch and current
      	function attributes and maybe generate NOP instructions by
      	calling the print_patchable_function_entry hook.
      	* doc/extend.texi: Document patchable_function_entry attribute.
      	* doc/invoke.texi: Document -fpatchable_function_entry
      	command line option.
      	* doc/tm.texi.in (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY):
      	New target hook.
      	* doc/tm.texi: Re-generate.
      
      	* c-c++-common/patchable_function_entry-default.c: New test.
      	* c-c++-common/patchable_function_entry-decl.c: Likewise.
      	* c-c++-common/patchable_function_entry-definition.c: Likewise.
      
      From-SVN: r250521
      Torsten Duwe committed
  24. 19 Jul, 2017 1 commit
    • tree.h (TYPE_MINVAL, [...]): Rename to ... · 20deef65
      	gcc/
      	* tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ...
      	(TYPE_MIN_VALUE_RAW, TYPE_MAX_VALUE_RAW): ... these.
      	* tree.c (find_decls_types_r, verify_type): Use
      	TYPE_{MIN,MAX}_VALUE_RAW.
      	* lto-streamer-out.c (DFS::DFS_write_tree_body): Likewise.
      	(hash_tree): Likewise.
      	* tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
      	Likewise.
      	* tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
      	Likewise.
      
      	gcc/cp/
      	* cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS,
      	PACK_EXPANSION_EXTRA_ARGS): Use TYPE_{MIN,MAX}_VALUE_RAW.
      
      	gcc/lto/
      	* lto.c (mentions_vars_p_type): Use TYPE_{MIN,MAX}_VALUE_RAW.
      	(compare_tree_sccs_1, lto_fixup_prevailing_decls): Likewise.
      
      	gcc/objc/
      	* objc-act.h (CLASS_NST_METHODS, CLASS_CLS_METHODS): Use
      	TYPE_{MIN,MAX}_VALUE_RAW.
      
      From-SVN: r250337
      Nathan Sidwell committed
  25. 06 Jul, 2017 1 commit
  26. 23 Jun, 2017 1 commit
    • Refactor fileptr_type_node handling · 2db9b7cd
      2017-06-23  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/
      	* tree.h (builtin_structptr_type): New type.
      	(builtin_structptr_types): Declare new array.
      	* tree.c (builtin_structptr_types): New array.
      	(free_lang_data, build_common_tree_nodes): Use it.
      
      gcc/c-family/
      	* c-common.c (c_common_nodes_and_builtins): Use builtin_structptr_types.
      
      gcc/cp/
      	* decl.c (duplicate_decls): Use builtin_structptr_types.
      
      gcc/lto/
      	* lto-lang.c (lto_init): Use builtin_structptr_types.
      
      From-SVN: r249585
      Marc Glisse committed
  27. 15 Jun, 2017 2 commits
  28. 23 May, 2017 4 commits
    • cgraphunit.c (symbol_table::process_new_functions): Update. · d2db2e6b
      	* cgraphunit.c (symbol_table::process_new_functions): Update.
      	* ipa-fnsummary.c (pass_data_inline_parameters): Remove.
      	(inline_generate_summary): Rename to ...
      	(ipa_fn_summary_generate): ... this one.
      	(inline_read_summary): Rename to ...
      	(ipa_fn_summary_read): ... this one.
      	(inline_write_summary): Rename to ...
      	(ipa_fn_summary_write): ... this one.
      	(inline_free_summary): Rename to ...
      	(ipa_free_fn_summary): ... this one.
      	(pass_data_local_fn_summary, pass_local_fn_summary,
      	make_pass_local_fn_summary, pass_data_ipa_free_fn_summary,
      	pass_ipa_free_fn_summary, make_pass_ipa_free_fn_summary,
      	pass_data_ipa_fn_summary, pass_ipa_fn_summary,
      	make_pass_ipa_fn_summary): New.
      	* ipa-fnsummary.h (inline_generate_summary, inline_read_summary,
      	inline_write_summary, inline_free_summary): Remove.
      	(ipa_free_fn_summary) : New.
      	* ipa-inline.c (ipa_inline): Update.
      	(pass_ipa_inline): Do not generate summaries.
      	* ipa.c (pass_data_ipa_free_fn_summary, pass_ipa_free_fn_summary):
      	Remove.
      	* passes.def: Replace pass_inline_parameters by pass_local_fn_summary
      	and add pass_ipa_fn_summary.
      	* tree-pass.h (make_pass_ipa_fn_summary, make_pass_local_fn_summary):
      	New.
      	(make_pass_inline_parameters): Remove.
      
      	* lto.c (do_whole_program_analysis): Replace inline_free_summary
      	by ipa_free_fn_summary.
      
      	* gcc.dg/ipa/ctor-empty-1.c: Update template.
      	* gcc.dg/ipa/inline-5.c: Likewise.
      	* gfortran.dg/pr48636.f90: Likewise.
      
      From-SVN: r248375
      Jan Hubicka committed
    • Introduce symtab_node::dump_{asm_,}name functions. · 464d0118
      2017-05-23  Martin Liska  <mliska@suse.cz>
      
      	* cgraph.c (cgraph_node::get_create): Use symtab_node::dump_{asm_,}name
      	functions.
      	(cgraph_edge::make_speculative): Likewise.
      	(cgraph_edge::resolve_speculation): Likewise.
      	(cgraph_edge::redirect_call_stmt_to_callee): Likewise.
      	(cgraph_node::dump): Likewise.
      	* cgraph.h: Likewise.
      	* cgraphunit.c (analyze_functions): Likewise.
      	(symbol_table::compile): Likewise.
      	* ipa-cp.c (print_all_lattices): Likewise.
      	(determine_versionability): Likewise.
      	(initialize_node_lattices): Likewise.
      	(ipcp_verify_propagated_values): Likewise.
      	(estimate_local_effects): Likewise.
      	(update_profiling_info): Likewise.
      	(create_specialized_node): Likewise.
      	(perhaps_add_new_callers): Likewise.
      	(decide_about_value): Likewise.
      	(decide_whether_version_node): Likewise.
      	(identify_dead_nodes): Likewise.
      	(ipcp_store_bits_results): Likewise.
      	* ipa-devirt.c (dump_targets): Likewise.
      	(ipa_devirt): Likewise.
      	* ipa-icf.c (sem_item::dump): Likewise.
      	(sem_function::equals): Likewise.
      	(sem_variable::equals): Likewise.
      	(sem_item_optimizer::read_section): Likewise.
      	(sem_item_optimizer::execute): Likewise.
      	(congruence_class::dump): Likewise.
      	* ipa-inline-analysis.c (dump_ipa_call_summary): Likewise.
      	(dump_inline_summary): Likewise.
      	(estimate_node_size_and_time): Likewise.
      	(inline_analyze_function): Likewise.
      	* ipa-inline-transform.c (inline_call): Likewise.
      	* ipa-inline.c (report_inline_failed_reason): Likewise.
      	(want_early_inline_function_p): Likewise.
      	(edge_badness): Likewise.
      	(update_edge_key): Likewise.
      	(inline_small_functions): Likewise.
      	* ipa-profile.c (ipa_profile): Likewise.
      	* ipa-prop.c (ipa_print_node_jump_functions): Likewise.
      	(ipa_make_edge_direct_to_target): Likewise.
      	(remove_described_reference): Likewise.
      	(ipa_impossible_devirt_target): Likewise.
      	(propagate_controlled_uses): Likewise.
      	(ipa_print_node_params): Likewise.
      	(ipcp_transform_function): Likewise.
      	* ipa-pure-const.c (pure_const_read_summary): Likewise.
      	(propagate_pure_const): Likewise.
      	* ipa-reference.c (generate_summary): Likewise.
      	(read_write_all_from_decl): Likewise.
      	(propagate): Likewise.
      	(ipa_reference_read_optimization_summary): Likewise.
      	* ipa-utils.c (ipa_merge_profiles): Likewise.
      	* ipa.c (walk_polymorphic_call_targets): Likewise.
      	(symbol_table::remove_unreachable_nodes): Likewise.
      	(ipa_single_use): Likewise.
      	* passes.c (execute_todo): Likewise.
      	* predict.c (drop_profile): Likewise.
      	* symtab.c (symtab_node::get_dump_name): New function.
      	(symtab_node::dump_name): Likewise.
      	(symtab_node::dump_asm_name): Likewise.
      	(symtab_node::dump_references): Likewise.
      	(symtab_node::dump_referring): Likewise.
      	(symtab_node::dump_base): Likewise.
      	(symtab_node::debug_symtab): Likewise.
      	* tree-sra.c (convert_callers_for_node): Likewise.
      	* tree-ssa-structalias.c (ipa_pta_execute): Likewise.
      	* value-prof.c (init_node_map): Likewise.
      2017-05-23  Martin Liska  <mliska@suse.cz>
      
      	* lto-symtab.c (lto_cgraph_replace_node): Use
      	symtab_node::dump_{asm_,}name functions.
      	* lto.c (read_cgraph_and_symbols): Likewise.
      	(do_whole_program_analysis): Likewise.
      
      From-SVN: r248369
      Martin Liska committed
    • Move symtab_node::dump_table to symbol_table::dump · 6c52831d
      2017-05-23  Martin Liska  <mliska@suse.cz>
      
      	* cgraph.h: Move symtab_node::dump_table to symbol_table::dump
      	and symtab_node::debug_symtab to symbol_table::debug.
      	* cgraphunit.c (analyze_functions): Use the renamed function.
      	(symbol_table::compile): Likewise.
      	* ipa-cp.c (ipcp_verify_propagated_values): Likewise.
      	* ipa-icf.c (sem_item_optimizer::execute): Likewise.
      	* passes.c (execute_todo): Likewise.
      	* symtab.c (symbol_table::dump): New function.
      	* tree-ssa-structalias.c (ipa_pta_execute): Use the renamed function.
      2017-05-23  Martin Liska  <mliska@suse.cz>
      
      	* lto.c (read_cgraph_and_symbols): Use the renamed function.
      	(do_whole_program_analysis): Use the renamed function.
      
      From-SVN: r248368
      Martin Liska committed
    • ipa-inline-analysis.c (cgraph_2edge_hook_list, [...]): Remove. · 0bceb671
      	* ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
      	inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
      	(inline_edge_summary_vec): Turn into ...
      	(ipa_call_summaries): ... this one.
      	(redirect_to_unreachable, edge_set_predicate,
      	evaluate_properties_for_edge, inline_summary_alloc,
      	reset_ipa_call_summary, reset_inline_summary,
      	inline_summary_t::duplicate): Update.
      	(inline_edge_duplication_hook): Turn to ...
      	(ipa_call_summary_t::duplicate): ... this one.
      	(inline_edge_removal_hook): Turn to ...
      	(ipa_call_summary_t::remove): ... this one.
      	(dump_inline_edge_summary): Turn to ...
      	(dump_ipa_call_summary): ... this one.
      	(estimate_function_body_sizes): Update.
      	(inline_update_callee_summaries): Update.
      	(remap_edge_change_prob): Update.
      	(remap_edge_summaries): Update.
      	(inline_merge_summary): Update.
      	(do_estimate_edge_time): Update.
      	(inline_generate_summary): Update.
      	(inline_read_section): Update.
      	(inline_read_summary): Update.
      	(inline_free_summary): Update.
      	* ipa-inline.c (can_inline_edge_p): Update.
      	(compute_inlined_call_time): Update.
      	(want_inline_small_function_p): Update.
      	(edge_badness): Update.
      	(early_inliner): Update.
      	* ipa-inline.h (inline_edge_summary): Turn to ...
      	(ipa_call_summary): ... this one.
      	(ipa_call_summary_t): New class.
      	(inline_edge_summary_t, inline_edge_summary_vec): Remove.
      	(ipa_call_summaries): New.
      	(inline_edge_summary): Remove.
      	(estimate_edge_growth): Update.
      	* ipa-profile.c (ipa_propagate_frequency_1): Update.
      	* ipa-prop.c (ipa_make_edge_direct_to_target): Update.
      	* ipa-split.c (execute_split_functions): Update.
      	* ipa.c (symbol_table::remove_unreachable_nodes): Update.
      
      From-SVN: r248365
      Jan Hubicka committed
  29. 22 May, 2017 1 commit
    • Makefile.in: Add ipa-fnsummary.o and ipa-fnsummary.h · 27d020cf
      	* Makefile.in: Add ipa-fnsummary.o and ipa-fnsummary.h
      	* auto-profile.c: Replace ipa-inline.h by ipa-fnsummary.h
      	* cgraph.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* gengtype.c: Likewise.
      	* ipa-cp.c: Likewise.
      	* ipa-devirt.c: Likewise.
      	* ipa-icf.c: Likewise.
      	* ipa-predicate.c: Likewise.
      	* ipa-profile.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* ipa-split.c: Likewise.
      	* ipa.c: Likewise.
      	* ipa-inline-analysis.c (inline_summaries, ipa_call_summaries,
      	edge_predicate_pool, dump_inline_hints,
      	inline_summary::account_size_time, redirect_to_unreachable,
      	edge_set_predicate, set_hint_predicate,
      	evaluate_conditions_for_known_args, evaluate_properties_for_edge,
      	inline_summary_alloc, ipa_call_summary::reset, inline_summary::reset,
      	inline_summary_t::remove, remap_hint_predicate_after_duplication,
      	inline_summary_t::duplicate, ipa_call_summary_t::duplicate,
      	ipa_call_summary_t::remove, initialize_growth_caches,
      	free_growth_caches, dump_ipa_call_summary, dump_inline_summary,
      	debug_inline_summary, dump_inline_summaries, initialize_inline_failed,
      	mark_modified, unmodified_parm_1, unmodified_parm,
      	unmodified_parm_or_parm_agg_item, eliminated_by_inlining_prob,
      	set_cond_stmt_execution_predicate, set_switch_stmt_execution_predicate,
      	compute_bb_predicates, will_be_nonconstant_expr_predicate,
      	will_be_nonconstant_predicate, record_modified_bb_info,
      	get_minimal_bb, record_modified, param_change_prob,
      	phi_result_unknown_predicate, predicate_for_phi_result,
      	array_index_predicate, clobber_only_eh_bb_p, fp_expression_p,
      	estimate_function_body_sizes, compute_inline_parameters,
      	compute_inline_parameters_for_curren, pass_data_inline_parameters,
      	estimate_node_size_and_time, estimate_ipcp_clone_size_and_time,
      	inline_update_callee_summaries, remap_edge_change_prob,
      	remap_edge_summaries, remap_hint_predicate, inline_merge_summary,
      	inline_update_overall_summary, inline_indirect_intraprocedural_analysis,
      	inline_analyze_function, inline_summary_t::insert,
      	inline_generate_summary, read_ipa_call_summary, inline_read_section,
      	inline_read_summary, write_ipa_call_summary, inline_write_summary,
      	inline_free_summary): Move to ipa-fnsummary.h
      	(predicate_t): Remove.
      	* ipa-fnsummary.c: New file.
      	* ipa-inline.h:  Do not include sreal.h and ipa-predicate.h
      	(enum inline_hints_vals, inline_hints, agg_position_info,
      	INLINE_SIZE_SCALE, size_time_entry, inline_summary, inline_summary_t,
      	inline_summaries, ipa_call_summary, ipa_call_summary_t,
      	ipa_call_summaries, debug_inline_summary, dump_inline_summaries,
      	dump_inline_summary, dump_inline_hints, inline_generate_summary,
      	inline_read_summary, inline_write_summary, inline_free_summary,
      	inline_analyze_function, initialize_inline_failed,
      	inline_merge_summary, inline_update_overall_summary,
      	compute_inline_parameters): Move to ipa-fnsummary.h
      	* ipa-fnsummary.h: New file.
      	* ipa-inline-transform.h: Include ipa-inline.h.
      	* ipa-inline.c: LIkewise.
      
      	* lto.c: Replace ipa-inline.h by ipa-fnsummary.h
      	* lto-partition.c: Replace ipa-inline.h by ipa-fnsummary.h
      
      From-SVN: r248336
      Jan Hubicka committed
  30. 01 May, 2017 1 commit
    • re PR c++/80038 (Random segfault using local vectors in Cilk function) · 815d9cc6
      2017-05-01  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
      
              PR c++/80038
      	* cilk_common.c (expand_builtin_cilk_detach): Move pedigree
      	operations here.
      	* gimplify.c (gimplify_cilk_detach): New function.
      	(gimplify_call_expr, gimplify_modify_expr): Call it as needed.
      	* tree-core.h: Document EXPR_CILK_SPAWN.
      	* tree.h (EXPR_CILK_SPAWN): Define.
      
              PR c++/80038
      	* c-common.h (cilk_gimplify_call_params_in_spawned_fn): Remove
      	prototype.
      	(cilk_install_body_pedigree_operations): Likewise.
      	* cilk.c (cilk_set_spawn_marker): Mark functions that should be
      	detatched.
      	(cilk_gimplify_call_params_in_spawned_fn): Remove.
      	(cilk_install_body_pedigree_operations): Likewise.
      	(gimplify_cilk_spawn): Add EXPR_STMT and CLEANUP_POINT_EXPR
      	unwrapping.
      
              PR c++/80038
      	* c-gimplify.c (c_gimplify_expr): Remove calls to
      	cilk_gimplifY_call_params_in_spawned_fn.
      
              PR c++/80038
      	* cp-cilkplus.c (cilk_install_body_with_frame_cleanup): Don't
      	add pedigree operation and detach call here.
      	* cp-gimplify.c (cp_gimplify_expr): Remove the calls to
      	cilk_cp_gimplify_call_params_in_spawned_fn.
      	(cilk_cp_gimplify_call_params_in_spawned_fn): Remove function.
      	* semantics.c (simplify_aggr_init_expr): Copy EXPR_CILK_SPAWN.
      
              PR c++/80038
      	* lto-lang.c (lto_init): Set in_lto_p earlier.
      
      	PR c++/80038
      	* g++.dg/cilk-plus/CK/pr80038.cc: New test.
      
      From-SVN: r247446
      Xi Ruoyao committed
  31. 12 Apr, 2017 1 commit
    • re PR target/79671 (mapnik miscompilation on armv7hl since r235622) · 350792ff
      2017-04-12  Richard Biener  <rguenther@suse.de>
      	Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
      	PR middle-end/79671
      	* alias.c (component_uses_parent_alias_set_from): Handle
      	TYPE_TYPELESS_STORAGE.
      	(get_alias_set): Likewise.
      	* tree-core.h (tree_type_common): Add typeless_storage flag.
      	* tree.h (TYPE_TYPELESS_STORAGE): New macro.
      	* stor-layout.c (place_union_field): Set TYPE_TYPELESS_STORAGE
      	for types containing members with TYPE_TYPELESS_STORAGE.
      	(place_field): Likewise.
      	(layout_type): Likewise for ARRAY_TYPE.
      	* lto-streamer-out.c (hash_tree): Hash TYPE_TYPELESS_STORAGE.
      	* tree-streamer-in.c (unpack_ts_type_common_value_fields): Stream
      	TYPE_TYPELESS_STORAGE.
      	* tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
      
      	lto/
      	* lto.c (compare_tree_sccs_1): Compare TYPE_TYPELESS_STORAGE.
      
      	cp/
      	* tree.c (build_cplus_array_type): Set TYPE_TYPELESS_STORAGE
      	for arrays of character or std::byte type.
      
      	* g++.dg/torture/pr79671.C: New testcase.
      	* g++.dg/lto/pr79671_0.C: Likewise.
      	* g++.dg/lto/pr79671_1.c: Likewise.
      
      Co-Authored-By: Bernd Edlinger <bernd.edlinger@hotmail.de>
      
      From-SVN: r246866
      Richard Biener committed