1. 09 Sep, 2019 18 commits
    • Make note_stores take an rtx_insn · e8448ba5
      I have a series of patches that (as a side effect) makes all rtl
      passes use the information collected by -fipa-ra.  This showed up a
      latent bug in the liveness tracking in regrename.c, which doesn't take
      CALL_INSN_FUNCTION_USAGE into account when processing clobbers.
      
      This actually seems to be quite a common problem with passes that use
      note_stores; only a handful remember to walk CALL_INSN_FUNCTION_USAGE
      too.  I think it was just luck that I saw it with regrename first.
      
      This patch tries to make things more robust by passing an insn rather
      than a pattern to note_stores.  The old function is still available
      as note_pattern_stores for the few places that need it.
      
      When updating callers, I've erred on the side of using note_stores
      rather than note_pattern_stores, because IMO note_stores should be
      the default choice and we should only use note_pattern_stores if
      there's a specific reason.  Specifically:
      
      * For cselib.c, "body" may be a COND_EXEC_CODE instead of the main
        insn pattern.
      
      * For ira.c, I wasn't sure whether extending no_equiv to
        CALL_INSN_FUNCTION_USAGE really made sense, since we don't do that
        for normal call-clobbered registers.  Same for mark_not_eliminable
        in reload1.c
      
      * Some other places only have a pattern available, and since those
        places wouldn't benefit from walking CALL_INSN_FUNCTION_USAGE,
        it seemed better to alter the code as little as possible.
      
      * In the config/ changes, quite a few callers have already weeded
        out CALL insns.  It still seemed better to use note_stores rather
        than prematurely optimise.  (note_stores should tail call to
        note_pattern_stores once it sees that the insn isn't a call.)
      
      The patch also documents what SETs mean in CALL_INSN_FUNCTION_USAGE.
      
      2019-09-09  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* rtl.h (CALL_INSN_FUNCTION_USAGE): Document what SETs mean.
      	(note_pattern_stores): Declare.
      	(note_stores): Take an rtx_insn *.
      	* rtlanal.c (set_of): Use note_pattern_stores instead of note_stores.
      	(find_all_hard_reg_sets): Pass the insn rather than its pattern to
      	note_stores.  Remove explicit handling of CALL_INSN_FUNCTION_USAGE.
      	(note_stores): Take an rtx_insn * as argument and process
      	CALL_INSN_FUNCTION_USAGE.  Rename old function to...
      	(note_pattern_stores): ...this.
      	(find_first_parameter_load): Pass the insn rather than
      	its pattern to note_stores.
      	* alias.c (memory_modified_in_insn_p, init_alias_analysis): Likewise.
      	* caller-save.c (setup_save_areas, save_call_clobbered_regs)
      	(insert_one_insn): Likewise.
      	* combine.c (combine_instructions): Likewise.
      	(likely_spilled_retval_p): Likewise.
      	(try_combine): Use note_pattern_stores instead of note_stores.
      	(record_dead_and_set_regs): Pass the insn rather than its pattern
      	to note_stores.
      	(reg_dead_at_p): Likewise.
      	* config/bfin/bfin.c (workaround_speculation): Likewise.
      	* config/c6x/c6x.c (maybe_clobber_cond): Likewise.  Take an rtx_insn *
      	rather than an rtx.
      	* config/frv/frv.c (frv_registers_update): Use note_pattern_stores
      	instead of note_stores.
      	(frv_optimize_membar_local): Pass the insn rather than its pattern
      	to note_stores.
      	* config/gcn/gcn.c (gcn_md_reorg): Likewise.
      	* config/i386/i386.c (ix86_avx_u128_mode_after): Likewise.
      	* config/mips/mips.c (vr4130_true_reg_dependence_p): Likewise.
      	(r10k_needs_protection_p, mips_sim_issue_insn): Likewise.
      	(mips_reorg_process_insns): Likewise.
      	* config/s390/s390.c (s390_regs_ever_clobbered): Likewise.
      	* config/sh/sh.c (flow_dependent_p): Likewise.  Take rtx_insn *s
      	rather than rtxes.
      	* cse.c (delete_trivially_dead_insns): Pass the insn rather than
      	its pattern to note_stores.
      	* cselib.c (cselib_record_sets): Use note_pattern_stores instead
      	of note_stores.
      	* dce.c (mark_nonreg_stores): Remove the "body" parameter and pass
      	the insn to note_stores.
      	(prescan_insns_for_dce): Update call accordingly.
      	* ddg.c (mem_write_insn_p): Pass the insn rather than its pattern
      	to note_stores.
      	* df-problems.c (can_move_insns_across): Likewise.
      	* dse.c (emit_inc_dec_insn_before, replace_read): Likewise.
      	* function.c (assign_parm_setup_reg): Likewise.
      	* gcse-common.c (record_last_mem_set_info_common): Likewise.
      	* gcse.c (load_killed_in_block_p, compute_hash_table_work): Likewise.
      	(single_set_gcse): Likewise.
      	* ira.c (validate_equiv_mem): Likewise.
      	(update_equiv_regs): Use note_pattern_stores rather than note_stores
      	for no_equiv.
      	* loop-doloop.c (doloop_optimize): Pass the insn rather than its
      	pattern to note_stores.
      	* loop-invariant.c (calculate_loop_reg_pressure): Likewise.
      	* loop-iv.c (simplify_using_initial_values): Likewise.
      	* mode-switching.c (optimize_mode_switching): Likewise.
      	* optabs.c (emit_libcall_block_1): Likewise.
      	(expand_atomic_compare_and_swap): Likewise.
      	* postreload-gcse.c (load_killed_in_block_p): Likewise.
      	(record_opr_changes): Likewise.  Remove explicit handling of
      	CALL_INSN_FUNCTION_USAGE.
      	* postreload.c (reload_combine, reload_cse_move2add): Likewise.
      	* regcprop.c (kill_clobbered_values): Likewise.
      	(copyprop_hardreg_forward_1): Pass the insn rather than its pattern
      	to note_stores.
      	* regrename.c (build_def_use): Likewise.
      	* reload1.c (reload):  Use note_pattern_stores instead of note_stores
      	for mark_not_eliminable.
      	(reload_as_needed): Pass the insn rather than its pattern
      	to note_stores.
      	(emit_output_reload_insns): Likewise.
      	* resource.c (mark_target_live_regs): Likewise.
      	* sched-deps.c (init_insn_reg_pressure_info): Likewise.
      	* sched-rgn.c (sets_likely_spilled): Use note_pattern_stores
      	instead of note_stores.
      	* shrink-wrap.c (try_shrink_wrapping): Pass the insn rather than
      	its pattern to note_stores.
      	* stack-ptr-mod.c (pass_stack_ptr_mod::execute): Likewise.
      	* var-tracking.c (adjust_insn, add_with_sets): Likewise.
      
      From-SVN: r275527
      Richard Sandiford committed
    • Simplify the implementation of HARD_REG_SET · 504279ae
      We have two styles of HARD_REG_SET: a single integer based on
      HOST_WIDEST_FAST_INT (used when FIRST_PSEUDO_REGISTER is small enough)
      or an array of integers.  One of the nice properties of this arrangement
      is that:
      
        void foo (const HARD_REG_SET);
      
      is passed by value as an integer when the set is small enough and
      by reference otherwise.
      
      (This is in constrast to "const HARD_REG_SET &", which would always
      be passed by reference, and in contrast to passing a structure wrapper
      like "struct s { T elts[1]; }" by value, where the structure might be
      passed like a T or by reference, depending on the ABI.)
      
      However, one of the disadvantages of using an array is that simple
      assignment doesn't work.  We need to use COPY_HARD_REG_SET instead.
      
      This patch uses a structure wrapper around the array, and preserves
      the above "nice property" using a new const_hard_reg_set typedef.
      The patch also removes the manual unrolling for small array sizes;
      I think these days we can rely on the compiler to do that for us.
      
      This meant fixing two port-specific quirks:
      
      - epiphany passed NULL as a HARD_REG_SET whose value doesn't matter.
        The patch passes the NO_REGS set instead.
      
      - ia64 reused TEST_HARD_REG_BIT and SET_HARD_REG_BIT for arrays that
        are bigger than HARD_REG_SET.  The patch just open-codes them.
      
      The patch is probably being too conservative.  Very few places actually
      take advantage of the "nice property" above, and we could have a
      cleaner interface if we used a structure wrapper for all cases.
      
      2019-09-09  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* hard-reg-set.h (HARD_REG_SET): Define using a typedef rather
      	than a #define.  Use a structure rather than an array as the
      	fallback definition.  Remove special cases for low array sizes.
      	(const_hard_reg_set): New typedef.
      	(hard_reg_set_subset_p): Use it instead of "const HARD_REG_SET".
      	(hard_reg_set_equal_p, hard_reg_set_intersect_p): Likewise.
      	(hard_reg_set_empty_p): Likewise.
      	(SET_HARD_REG_BIT): Use a function rather than a macro to
      	handle the case in which HARD_REG_SET is a structure.
      	(CLEAR_HARD_REG_BIT, TEST_HARD_REG_BIT, CLEAR_HARD_REG_SET)
      	(SET_HARD_REG_SET, COPY_HARD_REG_SET, COMPL_HARD_REG_SET)
      	(AND_HARD_REG_SET, AND_COMPL_HARD_REG_SET, IOR_HARD_REG_SET)
      	(IOR_COMPL_HARD_REG_SET): Likewise.
      	(hard_reg_set_iterator::pset): Constify the pointer target.
      	(hard_reg_set_iter_init): Take a const_hard_reg_set instead
      	of a "const HARD_REG_SET".  Update the handling of non-integer
      	HARD_REG_SETs.
      	* recog.h: Test HARD_CONST instead of CLEAR_HARD_REG_SET.
      	* reload.h: Likewise.
      	* rtl.h (choose_hard_reg_mode): Remove unnecessary line break.
      	* regs.h (in_hard_reg_set_p): Take a const_hard_reg_set instead
      	of a "const HARD_REG_SET".
      	(overlaps_hard_reg_set_p, range_overlaps_hard_reg_set_p): Likewise.
      	(range_in_hard_reg_set_p): Likewise.
      	* ira-costs.c (restrict_cost_classes): Likewise.
      	* shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
      	* config/epiphany/resolve-sw-modes.c (pass_resolve_sw_modes::execute):
      	Pass a NO_REGS HARD_REG_SET rather than NULL to emit_set_fp_mode.
      	* config/ia64/ia64.c (rws_insn): In the CHECKING_P version,
      	use unsigned HOST_WIDEST_FAST_INT rather than HARD_REG_ELT_TYPE.
      	(rws_insn_set, rws_insn_test): In the CHECKING_P version,
      	take an unsigned int and open-code the HARD_REG_SET operations.
      
      From-SVN: r275526
      Richard Sandiford committed
    • rs6000: Update rlwinm-[012].c · 812b3c62
      
      gcc/testsuite/
      	* gcc.target/powerpc/rlwinm-0.c: Adjust expected instruction counts.
      	* gcc.target/powerpc/rlwinm-1.c: Ditto.
      	* gcc.target/powerpc/rlwinm-2.c: Ditto.
      
      From-SVN: r275525
      Segher Boessenkool committed
    • Forgot Changelog from latest commit. · 3b63f537
      From-SVN: r275524
      Edward Smith-Rowland committed
    • Update docs for recent <span> and constexpr lib changes. · 324fb102
      2019-09-09  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	Update docs for recent <span> and constexpr lib changes.
      	* doc/xml/manual/status_cxx2020.xml: Update p0202r3, p0858r0, p0879r0,
      	p1023r0, p1085r2 status.
      	* doc/html/manual/status.html: Regenerate.
      
      From-SVN: r275522
      Edward Smith-Rowland committed
    • Remove bt-load.c · f78f73cb
      bt-load.c has AFAIK been dead code since the removal of the SH5 port
      in 2016.  I have a patch series that would need to update the liveness
      tracking in a nontrivial way, so it seemed better to remove the pass
      rather than install an untested and probably bogus change.
      
      2019-09-09  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* Makefile.in (OBJS): Remove bt-load.o.
      	* doc/invoke.texi (fbranch-target-load-optimize): Delete.
      	(fbranch-target-load-optimize2, fbtr-bb-exclusive): Likewise.
      	* common.opt (fbranch-target-load-optimize): Mark as Ignore and
      	document that the option no longer does anything.
      	(fbranch-target-load-optimize2, fbtr-bb-exclusive): Likewise.
      	* target.def (branch_target_register_class): Delete.
      	(branch_target_register_callee_saved): Likewise.
      	* doc/tm.texi.in (TARGET_BRANCH_TARGET_REGISTER_CLASS): Likewise.
      	(TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED): Likewise.
      	* doc/tm.texi: Regenerate.
      	* tree-pass.h (make_pass_branch_target_load_optimize1): Delete.
      	(make_pass_branch_target_load_optimize2): Likewise.
      	* passes.def (pass_branch_target_load_optimize1): Likewise.
      	(pass_branch_target_load_optimize2): Likewise.
      	* targhooks.h (default_branch_target_register_class): Likewise.
      	* targhooks.c (default_branch_target_register_class): Likewise.
      	* opt-suggestions.c (test_completion_valid_options): Remove
      	-fbtr-bb-exclusive from the list of test options.
      	* bt-load.c: Remove.
      
      From-SVN: r275521
      Richard Sandiford committed
    • match.pd: Add flag_unsafe_math_optimizations check before deciding on the widest type in... · a6edd18c
      2019-09-09  Barnaby Wilks  <barnaby.wilks@arm.com>
      
      	* match.pd: Add flag_unsafe_math_optimizations check
      	before deciding on the widest type in a binary math operation.
      
      	* gcc.dg/fold-binary-math-casts.c: New test.
      
      From-SVN: r275518
      Barnaby Wilks committed
    • Update comment of removed options. · f48ef52e
      2019-09-09  Martin Liska  <mliska@suse.cz>
      
      	* config/i386/i386.opt: Update comment of removed
      	options that are preserved only for backward
      	compatibility.
      2019-09-09  Martin Liska  <mliska@suse.cz>
      
      	* c.opt: Update comment of removed
      	options that are preserved only for backward
      	compatibility.
      
      From-SVN: r275517
      Martin Liska committed
    • Minor std::to_chars optimisation for base 10 · d0e086ae
      __to_chars_10_impl is quite fast. According to the IACA the main loop
      takes only 6.0 cycles, the whole function with one iteration takes
      10.0 cycles. Replacing the __first[pos] and __first[pos - 1] with
      __first[0] and __first[1] drops the function time to 7.53 cycles.
      
      2019-09-09  Antony Polukhin  <antoshkka@gmail.com>
      
      	* include/bits/charconv.h (__detail::__to_chars_10_impl): Replace
      	final offsets with constants.
      
      From-SVN: r275514
      Antony Polukhin committed
    • Improve constraints for std::span constructors · 27dada7d
      This patch simplifies the constraints on the constructors from arrays by
      removing the redundant checks that element_type and value_type are
      convertible to element_type. The incorrect uses of __adl_data in those
      constructors are removed as well (they should use std::data not
      std::ranges::data, and the former doesn't use ADL).
      
      The range/container constructors are now constrained to exclude all
      specializations of std::span, not just the current instantiation. The
      range constructor now also checks s subset of the contiguous_range
      requirements.
      
      All relevant constructor constraints now use the _Require helper in
      order to short circuit and avoid unnecessary instantiations after the
      first failed constraint.
      
      A new constructor supports initialization from different specializations
      of std::span<OtherType, OtherExtent>, as specified in the C++20 draft.
      
      	* include/bits/range_access.h (__adl_to_address): Remove.
      	* include/std/span (__is_base_derived_safe_convertible_v): Replace
      	with span::__is_compatible.
      	(__is_std_array_v): Replace with __is_std_array class template and
      	partial specializations.
      	(__is_std_array, __is_std_span): New class templates and partial
      	specializations.
      	(span::__is_compatible): New alias template for SFINAE constraints.
      	(span::span(element_type (&)[N])): Remove redundant constraints. Do
      	not use __adl_data to obtain a pointer.
      	(span::span(array<value_type, N>&)): Likewise.
      	(span::span(const array<value_type, N>&)): Likewise.
      	[_GLIBCXX_P1394] (span::iter_reference_t, span::iterator_t)
      	(span::iter_value_t, span::derived_from): New alias templates for
      	SFINAE constraints, until the equivalents are supported in <concepts>
      	and <iterator>.
      	[_GLIBCXX_P1394] (span::__is_compatible_iterator): New alias template
      	for SFINAE constraints.
      	[_GLIBCXX_P1394] (span::is_compatible_range): New class template for
      	SFINAE constraints.
      	[_GLIBCXX_P1394] (span::span(Range&&)): Improve constraints.
      	[_GLIBCXX_P1394] (span::span(ContiguousIterator, Sentinel)): Likewise.
      	Use std::to_address instead of __adl_to_address.
      	[_GLIBCXX_P1394] (span::span(ContiguousIterator, size_type)): Likewise.
      	[!_GLIBCXX_P1394] (span::__is_compatible_container): New alias
      	template for SFINAE constraints.
      	[!_GLIBCXX_P1394] (span::span(Container&))
      	(span::span(const Container&)): Improve constraints.
      	[!_GLIBCXX_P1394] (span::span(pointer, size_type))
      	(span::span(pointer, pointer)): Remove redundant cast of pointer.
      	(span(const span<OType, OExtent>&)): New constructor.
      
      From-SVN: r275513
      Jonathan Wakely committed
    • re PR target/87853 (_mm_cmpgt_epi8 broken with -funsigned-char) · ca47c398
      	PR target/87853
      	* config/i386/emmintrin.h (_mm_cmpeq_epi8): Use casts to __v16qi
      	instead of __v16qs.
      
      	* gcc.target/i386/pr87853.c: New test.
      
      From-SVN: r275508
      Jakub Jelinek committed
    • re PR target/91704 ([X86] Codegen for _mm256_cmpgt_epi8 is affected by -funsigned-char) · b245befc
      	PR target/91704
      	* config/i386/avxintrin.h (__v32qs): New typedef.
      	* config/i386/avx2intrin.h (_mm256_cmpgt_epi8): Use casts to __v32qs
      	instead of __v32qi.
      
      	* gcc.target/i386/pr91704.c: New test.
      
      From-SVN: r275507
      Jakub Jelinek committed
    • GCC port for eBPF · 91dfef96
      This patch series introduces a port of GCC to eBPF, which is a virtual
      machine that resides in the Linux kernel.  Initially intended for
      user-level packet capture and filtering, eBPF is nowadays generalized
      to serve as a general-purpose infrastructure also for non-networking
      purposes.
      
      The binutils support is already upstream.  See
      https://sourceware.org/ml/binutils/2019-05/msg00306.html.
      
      ChangeLog:
      
      	* MAINTAINERS: Add myself as the maintainer of the eBPF port.
      	Remove myself from Write After Approval section.
      	* configure.ac: Support for bpf-*-* targets.
      	* configure: Regenerate.
      
      contrib/ChangeLog:
      
      	* config-list.mk (LIST): Disable go in bpf-*-* targets.
      
      gcc/ChangeLog:
      
      	* doc/invoke.texi (Option Summary): Cover eBPF.
      	(eBPF Options): New section.
      	* doc/extend.texi (BPF Built-in Functions): Likewise.
      	(BPF Kernel Helpers): Likewise.
      	* config.gcc: Support for bpf-*-* targets.
      	* common/config/bpf/bpf-common.c: New file.
      	* config/bpf/t-bpf: Likewise.
      	* config/bpf/predicates.md: Likewise.
      	* config/bpf/constraints.md: Likewise.
      	* config/bpf/bpf.opt: Likewise.
      	* config/bpf/bpf.md: Likewise.
      	* config/bpf/bpf.h: Likewise.
      	* config/bpf/bpf.c: Likewise.
      	* config/bpf/bpf-protos.h: Likewise.
      	* config/bpf/bpf-opts.h: Likewise.
      	* config/bpf/bpf-helpers.h: Likewise.
      	* config/bpf/bpf-helpers.def: Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/builtins-config.h: eBPF doesn't support C99 standard
      	functions.
      	* gcc.c-torture/compile/20101217-1.c: Add a function prototype for
      	printf.
      	* gcc.c-torture/compile/20000211-1.c: Skip if target bpf-*-*.
      	* gcc.c-torture/compile/poor.c: Likewise.
      	* gcc.c-torture/compile/pr25311.c: Likewise.
      	* gcc.c-torture/compile/pr39928-1.c: Likewise.
      	* gcc.c-torture/compile/pr70061.c: Likewise.
      	* gcc.c-torture/compile/920501-7.c: Likewise.
      	* gcc.c-torture/compile/20000403-1.c: Likewise.
      	* gcc.c-torture/compile/20001226-1.c: Likewise.
      	* gcc.c-torture/compile/20030903-1.c: Likewise.
      	* gcc.c-torture/compile/20031125-1.c: Likewise.
      	* gcc.c-torture/compile/20040101-1.c: Likewise.
      	* gcc.c-torture/compile/20040317-2.c: Likewise.
      	* gcc.c-torture/compile/20040726-1.c: Likewise.
      	* gcc.c-torture/compile/20051216-1.c: Likewise.
      	* gcc.c-torture/compile/900313-1.c: Likewise.
      	* gcc.c-torture/compile/920625-1.c: Likewise.
      	* gcc.c-torture/compile/930421-1.c: Likewise.
      	* gcc.c-torture/compile/930623-1.c: Likewise.
      	* gcc.c-torture/compile/961004-1.c: Likewise.
      	* gcc.c-torture/compile/980504-1.c: Likewise.
      	* gcc.c-torture/compile/980816-1.c: Likewise.
      	* gcc.c-torture/compile/990625-1.c: Likewise.
      	* gcc.c-torture/compile/DFcmp.c: Likewise.
      	* gcc.c-torture/compile/HIcmp.c: Likewise.
      	* gcc.c-torture/compile/HIset.c: Likewise.
      	* gcc.c-torture/compile/QIcmp.c: Likewise.
      	* gcc.c-torture/compile/QIset.c: Likewise.
      	* gcc.c-torture/compile/SFset.c: Likewise.
      	* gcc.c-torture/compile/SIcmp.c: Likewise.
      	* gcc.c-torture/compile/SIset.c: Likewise.
      	* gcc.c-torture/compile/UHIcmp.c: Likewise.
      	* gcc.c-torture/compile/UQIcmp.c: Likewise.
      	* gcc.c-torture/compile/USIcmp.c: Likewise.
      	* gcc.c-torture/compile/consec.c: Likewise.
      	* gcc.c-torture/compile/limits-fndefn.c: Likewise.
      	* gcc.c-torture/compile/lll.c: Likewise.
      	* gcc.c-torture/compile/parms.c: Likewise.
      	* gcc.c-torture/compile/pass.c: Likewise.
      	* gcc.c-torture/compile/pp.c: Likewise.
      	* gcc.c-torture/compile/pr32399.c: Likewise.
      	* gcc.c-torture/compile/pr34091.c: Likewise.
      	* gcc.c-torture/compile/pr34688.c: Likewise.
      	* gcc.c-torture/compile/pr37258.c: Likewise.
      	* gcc.c-torture/compile/pr37327.c: Likewise.
      	* gcc.c-torture/compile/pr37381.c: Likewise.
      	* gcc.c-torture/compile/pr37669-2.c: Likewise.
      	* gcc.c-torture/compile/pr37669.c: Likewise.
      	* gcc.c-torture/compile/pr37742-3.c: Likewise.
      	* gcc.c-torture/compile/pr44063.c: Likewise.
      	* gcc.c-torture/compile/pr48596.c: Likewise.
      	* gcc.c-torture/compile/pr51856.c: Likewise.
      	* gcc.c-torture/compile/pr54428.c: Likewise.
      	* gcc.c-torture/compile/pr54713-1.c: Likewise.
      	* gcc.c-torture/compile/pr54713-2.c: Likewise.
      	* gcc.c-torture/compile/pr54713-3.c: Likewise.
      	* gcc.c-torture/compile/pr55921.c: Likewise.
      	* gcc.c-torture/compile/pr70240.c: Likewise.
      	* gcc.c-torture/compile/pr70355.c: Likewise.
      	* gcc.c-torture/compile/pr82052.c: Likewise.
      	* gcc.c-torture/compile/pr83487.c: Likewise.
      	* gcc.c-torture/compile/pr86122.c: Likewise.
      	* gcc.c-torture/compile/pret-arg.c: Likewise.
      	* gcc.c-torture/compile/regs-arg-size.c: Likewise.
      	* gcc.c-torture/compile/structret.c: Likewise.
      	* gcc.c-torture/compile/uuarg.c: Likewise.
      	* gcc.dg/20001009-1.c: Likewise.
      	* gcc.dg/20020418-1.c: Likewise.
      	* gcc.dg/20020426-2.c: Likewise.
      	* gcc.dg/20020430-1.c: Likewise.
      	* gcc.dg/20040306-1.c: Likewise.
      	* gcc.dg/20040622-2.c: Likewise.
      	* gcc.dg/20050603-2.c: Likewise.
      	* gcc.dg/20050629-1.c: Likewise.
      	* gcc.dg/20061026.c: Likewise.
      	* gcc.dg/Warray-bounds-3.c: Likewise.
      	* gcc.dg/Warray-bounds-30.c: Likewise.
      	* gcc.dg/Wframe-larger-than-2.c: Likewise.
      	* gcc.dg/Wframe-larger-than.c: Likewise.
      	* gcc.dg/Wrestrict-11.c: Likewise.
      	* gcc.c-torture/compile/20000804-1.c: Likewise.
      	* lib/target-supports.exp (check_effective_target_trampolines):
      	Adapt to eBPF.
      	(check_effective_target_indirect_jumps): Likewise.
      	(check_effective_target_nonlocal_goto): Likewise.
      	(check_effective_target_global_constructor): Likewise.
      	(check_effective_target_return_address): Likewise.
      	* gcc.target/bpf/bpf.exp: New file.
      	* gcc.target/bpf/builtin-load.c: Likewise.
      	* cc.target/bpf/constant-calls.c: Likewise.
      	* gcc.target/bpf/diag-funargs.c: Likewise.
      	* gcc.target/bpf/diag-funargs-2.c: Likewise.
      	* gcc.target/bpf/diag-funargs-3.c: Likewise.
      	* gcc.target/bpf/diag-indcalls.c: Likewise.
      	* gcc.target/bpf/helper-bind.c: Likewise.
      	* gcc.target/bpf/helper-bpf-redirect.c: Likewise.
      	* gcc.target/bpf/helper-clone-redirect.c: Likewise.
      	* gcc.target/bpf/helper-csum-diff.c: Likewise.
      	* gcc.target/bpf/helper-csum-update.c: Likewise.
      	* gcc.target/bpf/helper-current-task-under-cgroup.c: Likewise.
      	* gcc.target/bpf/helper-fib-lookup.c: Likewise.
      	* gcc.target/bpf/helper-get-cgroup-classid.c: Likewise.
      	* gcc.target/bpf/helper-get-current-cgroup-id.c: Likewise.
      	* gcc.target/bpf/helper-get-current-comm.c: Likewise.
      	* gcc.target/bpf/helper-get-current-pid-tgid.c: Likewise.
      	* gcc.target/bpf/helper-get-current-task.c: Likewise.
      	* gcc.target/bpf/helper-get-current-uid-gid.c: Likewise.
      	* gcc.target/bpf/helper-get-hash-recalc.c: Likewise.
      	* gcc.target/bpf/helper-get-listener-sock.c: Likewise.
      	* gcc.target/bpf/helper-get-local-storage.c: Likewise.
      	* gcc.target/bpf/helper-get-numa-node-id.c: Likewise.
      	* gcc.target/bpf/helper-get-prandom-u32.c: Likewise.
      	* gcc.target/bpf/helper-get-route-realm.c: Likewise.
      	* gcc.target/bpf/helper-get-smp-processor-id.c: Likewise.
      	* gcc.target/bpf/helper-get-socket-cookie.c: Likewise.
      	* gcc.target/bpf/helper-get-socket-uid.c: Likewise.
      	* gcc.target/bpf/helper-getsockopt.c: Likewise.
      	* gcc.target/bpf/helper-get-stack.c: Likewise.
      	* gcc.target/bpf/helper-get-stackid.c: Likewise.
      	* gcc.target/bpf/helper-ktime-get-ns.c: Likewise.
      	* gcc.target/bpf/helper-l3-csum-replace.c: Likewise.
      	* gcc.target/bpf/helper-l4-csum-replace.c: Likewise.
      	* gcc.target/bpf/helper-lwt-push-encap.c: Likewise.
      	* gcc.target/bpf/helper-lwt-seg6-action.c: Likewise.
      	* gcc.target/bpf/helper-lwt-seg6-adjust-srh.c: Likewise.
      	* gcc.target/bpf/helper-lwt-seg6-store-bytes.c: Likewise.
      	* gcc.target/bpf/helper-map-delete-elem.c: Likewise.
      	* gcc.target/bpf/helper-map-lookup-elem.c: Likewise.
      	* gcc.target/bpf/helper-map-peek-elem.c: Likewise.
      	* gcc.target/bpf/helper-map-pop-elem.c: Likewise.
      	* gcc.target/bpf/helper-map-push-elem.c: Likewise.
      	* gcc.target/bpf/helper-map-update-elem.c: Likewise.
      	* gcc.target/bpf/helper-msg-apply-bytes.c: Likewise.
      	* gcc.target/bpf/helper-msg-cork-bytes.c: Likewise.
      	* gcc.target/bpf/helper-msg-pop-data.c: Likewise.
      	* gcc.target/bpf/helper-msg-pull-data.c: Likewise.
      	* gcc.target/bpf/helper-msg-push-data.c: Likewise.
      	* gcc.target/bpf/helper-msg-redirect-hash.c: Likewise.
      	* gcc.target/bpf/helper-msg-redirect-map.c: Likewise.
      	* gcc.target/bpf/helper-override-return.c: Likewise.
      	* gcc.target/bpf/helper-perf-event-output.c: Likewise.
      	* gcc.target/bpf/helper-perf-event-read.c: Likewise.
      	* gcc.target/bpf/helper-perf-event-read-value.c: Likewise.
      	* gcc.target/bpf/helper-perf-prog-read-value.c: Likewise.
      	* gcc.target/bpf/helper-probe-read.c: Likewise.
      	* gcc.target/bpf/helper-probe-read-str.c: Likewise.
      	* gcc.target/bpf/helper-probe-write-user.c: Likewise.
      	* gcc.target/bpf/helper-rc-keydown.c: Likewise.
      	* gcc.target/bpf/helper-rc-pointer-rel.c: Likewise.
      	* gcc.target/bpf/helper-rc-repeat.c: Likewise.
      	* gcc.target/bpf/helper-redirect-map.c: Likewise.
      	* gcc.target/bpf/helper-set-hash.c: Likewise.
      	* gcc.target/bpf/helper-set-hash-invalid.c: Likewise.
      	* gcc.target/bpf/helper-setsockopt.c: Likewise.
      	* gcc.target/bpf/helper-skb-adjust-room.c: Likewise.
      	* gcc.target/bpf/helper-skb-cgroup-id.c: Likewise.
      	* gcc.target/bpf/helper-skb-change-head.c: Likewise.
      	* gcc.target/bpf/helper-skb-change-proto.c: Likewise.
      	* gcc.target/bpf/helper-skb-change-tail.c: Likewise.
      	* gcc.target/bpf/helper-skb-change-type.c: Likewise.
      	* gcc.target/bpf/helper-skb-ecn-set-ce.c: Likewise.
      	* gcc.target/bpf/helper-skb-get-tunnel-key.c: Likewise.
      	* gcc.target/bpf/helper-skb-get-tunnel-opt.c: Likewise.
      	* gcc.target/bpf/helper-skb-get-xfrm-state.c: Likewise.
      	* gcc.target/bpf/helper-skb-load-bytes.c: Likewise.
      	* gcc.target/bpf/helper-skb-load-bytes-relative.c: Likewise.
      	* gcc.target/bpf/helper-skb-pull-data.c: Likewise.
      	* gcc.target/bpf/helper-skb-set-tunnel-key.c: Likewise.
      	* gcc.target/bpf/helper-skb-set-tunnel-opt.c: Likewise.
      	* gcc.target/bpf/helper-skb-store-bytes.c: Likewise.
      	* gcc.target/bpf/helper-skb-under-cgroup.c: Likewise.
      	* gcc.target/bpf/helper-skb-vlan-pop.c: Likewise.
      	* gcc.target/bpf/helper-skb-vlan-push.c: Likewise.
      	* gcc.target/bpf/helper-skc-lookup-tcp.c: Likewise.
      	* gcc.target/bpf/helper-sk-fullsock.c: Likewise.
      	* gcc.target/bpf/helper-sk-lookup-tcp.c: Likewise.
      	* gcc.target/bpf/helper-sk-lookup-upd.c: Likewise.
      	* gcc.target/bpf/helper-sk-redirect-hash.c: Likewise.
      	* gcc.target/bpf/helper-sk-redirect-map.c: Likewise.
      	* gcc.target/bpf/helper-sk-release.c: Likewise.
      	* gcc.target/bpf/helper-sk-select-reuseport.c: Likewise.
      	* gcc.target/bpf/helper-sk-storage-delete.c: Likewise.
      	* gcc.target/bpf/helper-sk-storage-get.c: Likewise.
      	* gcc.target/bpf/helper-sock-hash-update.c: Likewise.
      	* gcc.target/bpf/helper-sock-map-update.c: Likewise.
      	* gcc.target/bpf/helper-sock-ops-cb-flags-set.c: Likewise.
      	* gcc.target/bpf/helper-spin-lock.c: Likewise.
      	* gcc.target/bpf/helper-spin-unlock.c: Likewise.
      	* gcc.target/bpf/helper-strtol.c: Likewise.
      	* gcc.target/bpf/helper-strtoul.c: Likewise.
      	* gcc.target/bpf/helper-sysctl-get-current-value.c: Likewise.
      	* gcc.target/bpf/helper-sysctl-get-name.c: Likewise.
      	* gcc.target/bpf/helper-sysctl-get-new-value.c: Likewise.
      	* gcc.target/bpf/helper-sysctl-set-new-value.c: Likewise.
      	* gcc.target/bpf/helper-tail-call.c: Likewise.
      	* gcc.target/bpf/helper-tcp-check-syncookie.c: Likewise.
      	* gcc.target/bpf/helper-tcp-sock.c: Likewise.
      	* gcc.target/bpf/helper-trace-printk.c: Likewise.
      	* gcc.target/bpf/helper-xdp-adjust-head.c: Likewise.
      	* gcc.target/bpf/helper-xdp-adjust-meta.c: Likewise.
      	* gcc.target/bpf/helper-xdp-adjust-tail.c: Likewise.
      	* gcc.target/bpf/skb-ancestor-cgroup-id.c: Likewise.
      	* gcc.target/bpf/sync-fetch-and-add.c: Likewise.
      
      libgcc/ChangeLog:
      
      	* config.host: Set cpu_type for bpf-*-* targets.
      	* config/bpf/t-bpf: Likewise.
      	* config/bpf/crtn.S: Likewise.
      	* config/bpf/crti.S: New file.
      
      From-SVN: r275506
      Jose E. Marchesi committed
    • testsuite: new require effective target indirect_calls · a5362c6a
          
      This patch adds a new dg_require_effective_target procedure to the
      testsuite infrastructure: indirect_calls.  This new function tells
      whether a target supports calls to non-constant call targets.
          
      This patch also annotates the tests in the gcc.c-torture testuite that
      require support for indirect calls.
          
          gcc/ChangeLog:
          
                  * doc/sourcebuild.texi (Effective-Target Keywords): Document
                  indirect_calls.
          
          gcc/testsuite/ChangeLog:
          
                  * lib/target-supports.exp (check_effective_target_indirect_calls):
                  New proc.
                  * gcc.c-torture/compile/20010102-1.c: Annotate with
                  dg-require-effective-target indirect_calls.
                  * gcc.c-torture/compile/20010107-1.c: Likewise.
                  * gcc.c-torture/compile/20011109-1.c: Likewise.
                  * gcc.c-torture/compile/20011218-1.c: Likewise.
                  * gcc.c-torture/compile/20011229-1.c: Likewise.
                  * gcc.c-torture/compile/20020129-1.c: Likewise.
                  * gcc.c-torture/compile/20020320-1.c: Likewise.
                  * gcc.c-torture/compile/20020706-1.c: Likewise.
                  * gcc.c-torture/compile/20020706-2.c: Likewise.
                  * gcc.c-torture/compile/20021205-1.c: Likewise.
                  * gcc.c-torture/compile/20030921-1.c: Likewise.
                  * gcc.c-torture/compile/20031023-1.c: Likewise.
                  * gcc.c-torture/compile/20031023-2.c: Likewise.
                  * gcc.c-torture/compile/20031023-3.c: Likewise.
                  * gcc.c-torture/compile/20031023-4.c: Likewise.
                  * gcc.c-torture/compile/20040614-1.c: Likewise.
                  * gcc.c-torture/compile/20040909-1.c: Likewise.
                  * gcc.c-torture/compile/20050122-1.c: Likewise.
                  * gcc.c-torture/compile/20050202-1.c: Likewise.
                  * gcc.c-torture/compile/20060208-1.c: Likewise.
                  * gcc.c-torture/compile/20081108-1.c: Likewise.
                  * gcc.c-torture/compile/20150327.c: Likewise.
                  * gcc.c-torture/compile/920428-2.c: Likewise.
                  * gcc.c-torture/compile/920928-5.c: Likewise.
                  * gcc.c-torture/compile/930117-1.c: Likewise.
                  * gcc.c-torture/compile/930607-1.c: Likewise.
                  * gcc.c-torture/compile/991213-2.c: Likewise.
                  * gcc.c-torture/compile/callind.c: Likewise.
                  * gcc.c-torture/compile/calls-void.c: Likewise.
                  * gcc.c-torture/compile/calls.c: Likewise.
                  * gcc.c-torture/compile/pr21840.c: Likewise.
                  * gcc.c-torture/compile/pr32139.c: Likewise.
                  * gcc.c-torture/compile/pr35607.c: Likewise.
                  * gcc.c-torture/compile/pr37433-1.c: Likewise.
                  * gcc.c-torture/compile/pr37433.c: Likewise.
                  * gcc.c-torture/compile/pr39941.c: Likewise.
                  * gcc.c-torture/compile/pr40080.c: Likewise.
                  * gcc.c-torture/compile/pr43635.c: Likewise.
                  * gcc.c-torture/compile/pr43791.c: Likewise.
                  * gcc.c-torture/compile/pr43845.c: Likewise.
                  * gcc.c-torture/compile/pr44043.c: Likewise.
                  * gcc.c-torture/compile/pr51694.c: Likewise.
                  * gcc.c-torture/compile/pr77754-2.c: Likewise.
                  * gcc.c-torture/compile/pr77754-3.c: Likewise.
                  * gcc.c-torture/compile/pr77754-4.c: Likewise.
                  * gcc.c-torture/compile/pr89663-2.c: Likewise.
                  * gcc.c-torture/compile/pta-1.c: Likewise.
                  * gcc.c-torture/compile/stack-check-1.c: Likewise.
                  * gcc.dg/Walloc-size-larger-than-18.c: Likewise.
      
      From-SVN: r275505
      Jose E. Marchesi committed
    • testsuite: annotate c-torture/compile tests with dg-require-stack-size · e9b8025b
          
      This patch annotates tests that make use of a significant a mount of
      stack space.  Embedded and other restricted targets may have problems
      compiling and running these tests.  Note that the annotations are in
      many cases not exact.
          
      testsuite/ChangeLog:
          
              * gcc.c-torture/compile/20000609-1.c: Annotate with
              dg-require-stack-size.
              * gcc.c-torture/compile/20000804-1.c: Likewise.
              * gcc.c-torture/compile/20020304-1.c: Likewise.
              * gcc.c-torture/compile/20020604-1.c: Likewise.
              * gcc.c-torture/compile/20021015-1.c: Likewise.
              * gcc.c-torture/compile/20050303-1.c: Likewise.
              * gcc.c-torture/compile/20060421-1.c: Likewise.
              * gcc.c-torture/compile/20071207-1.c: Likewise.
              * gcc.c-torture/compile/20080903-1.c: Likewise.
              * gcc.c-torture/compile/20121027-1.c: Likewise.
              * gcc.c-torture/compile/20151204.c: Likewise.
              * gcc.c-torture/compile/920501-12.c: Likewise.
              * gcc.c-torture/compile/920501-4.c: Likewise.
              * gcc.c-torture/compile/920723-1.c: Likewise.
              * gcc.c-torture/compile/921202-1.c: Likewise.
              * gcc.c-torture/compile/931003-1.c: Likewise.
              * gcc.c-torture/compile/931004-1.c: Likewise.
              * gcc.c-torture/compile/950719-1.c: Likewise.
              * gcc.c-torture/compile/951222-1.c: Likewise.
              * gcc.c-torture/compile/990517-1.c: Likewise.
              * gcc.c-torture/compile/bcopy.c: Likewise.
              * gcc.c-torture/compile/pr23929.c: Likewise.
              * gcc.c-torture/compile/pr25310.c: Likewise.
              * gcc.c-torture/compile/pr34458.c: Likewise.
              * gcc.c-torture/compile/pr39937.c: Likewise.
              * gcc.c-torture/compile/pr41181.c: Likewise.
              * gcc.c-torture/compile/pr41634.c: Likewise.
              * gcc.c-torture/compile/pr43415.c: Likewise.
              * gcc.c-torture/compile/pr43417.c: Likewise.
              * gcc.c-torture/compile/pr44788.c: Likewise.
              * gcc.c-torture/compile/sound.c: Likewise.
      
      From-SVN: r275504
      Jose E. Marchesi committed
    • opt-functions.awk: fix comparison of limit, begin and end · 4bc8aadf
         
      The function integer_range_info makes sure that, if provided, the
      initial value fills in the especified range.  However, it is necessary
      to convert the values to a numerical context before comparing, to make
      sure awk is using arithmetical order and not lexicographical order.
          
      gcc/ChangeLog:
          
            * opt-functions.awk (integer_range_info): Make sure values are in
            numeric context before operating with them.
      
      From-SVN: r275503
      Jose E. Marchesi committed
    • Update config.sub and config.guess. · b7b1f657
          
          * config.sub: Import upstream version 2019-06-30.
          * config.guess: Import upstream version 2019-07-24.
      
      From-SVN: r275502
      Jose E. Marchesi committed
    • Daily bump. · 108d64ad
      From-SVN: r275501
      GCC Administrator committed
  2. 08 Sep, 2019 2 commits
  3. 07 Sep, 2019 7 commits
  4. 06 Sep, 2019 13 commits