1. 24 Jan, 2019 1 commit
  2. 09 Jan, 2019 1 commit
    • PR other/16615 [1/5] · 67914693
      2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>
      
      	PR other/16615 [1/5]
      
      	contrib/
      	* mklog: Mechanically replace "can not" with "cannot".
      
      	gcc/
      	* Makefile.in: Mechanically replace "can not" with "cannot".
      	* alias.c: Likewise.
      	* builtins.c: Likewise.
      	* calls.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraph.h: Likewise.
      	* cgraphclones.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* combine-stack-adj.c: Likewise.
      	* combine.c: Likewise.
      	* common/config/i386/i386-common.c: Likewise.
      	* config/aarch64/aarch64.c: Likewise.
      	* config/alpha/sync.md: Likewise.
      	* config/arc/arc.c: Likewise.
      	* config/arc/predicates.md: Likewise.
      	* config/arm/arm-c.c: Likewise.
      	* config/arm/arm.c: Likewise.
      	* config/arm/arm.h: Likewise.
      	* config/arm/arm.md: Likewise.
      	* config/arm/cortex-r4f.md: Likewise.
      	* config/csky/csky.c: Likewise.
      	* config/csky/csky.h: Likewise.
      	* config/darwin-f.c: Likewise.
      	* config/epiphany/epiphany.md: Likewise.
      	* config/i386/i386.c: Likewise.
      	* config/i386/sol2.h: Likewise.
      	* config/m68k/m68k.c: Likewise.
      	* config/mcore/mcore.h: Likewise.
      	* config/microblaze/microblaze.md: Likewise.
      	* config/mips/20kc.md: Likewise.
      	* config/mips/sb1.md: Likewise.
      	* config/nds32/nds32.c: Likewise.
      	* config/nds32/predicates.md: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/rs6000/e300c2c3.md: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/s390/s390.h: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/sh/sh.md: Likewise.
      	* config/spu/vmx2spu.h: Likewise.
      	* cprop.c: Likewise.
      	* dbxout.c: Likewise.
      	* df-scan.c: Likewise.
      	* doc/cfg.texi: Likewise.
      	* doc/extend.texi: Likewise.
      	* doc/fragments.texi: Likewise.
      	* doc/gty.texi: Likewise.
      	* doc/invoke.texi: Likewise.
      	* doc/lto.texi: Likewise.
      	* doc/md.texi: Likewise.
      	* doc/objc.texi: Likewise.
      	* doc/rtl.texi: Likewise.
      	* doc/tm.texi: Likewise.
      	* dse.c: Likewise.
      	* emit-rtl.c: Likewise.
      	* emit-rtl.h: Likewise.
      	* except.c: Likewise.
      	* expmed.c: Likewise.
      	* expr.c: Likewise.
      	* fold-const.c: Likewise.
      	* genautomata.c: Likewise.
      	* gimple-fold.c: Likewise.
      	* hard-reg-set.h: Likewise.
      	* ifcvt.c: Likewise.
      	* ipa-comdats.c: Likewise.
      	* ipa-cp.c: Likewise.
      	* ipa-devirt.c: Likewise.
      	* ipa-fnsummary.c: Likewise.
      	* ipa-icf.c: Likewise.
      	* ipa-inline-transform.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* ipa-polymorphic-call.c: Likewise.
      	* ipa-profile.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* ipa-reference.c: Likewise.
      	* ipa-split.c: Likewise.
      	* ipa-visibility.c: Likewise.
      	* ipa.c: Likewise.
      	* ira-build.c: Likewise.
      	* ira-color.c: Likewise.
      	* ira-conflicts.c: Likewise.
      	* ira-costs.c: Likewise.
      	* ira-int.h: Likewise.
      	* ira-lives.c: Likewise.
      	* ira.c: Likewise.
      	* ira.h: Likewise.
      	* loop-invariant.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* lower-subreg.c: Likewise.
      	* lra-assigns.c: Likewise.
      	* lra-constraints.c: Likewise.
      	* lra-eliminations.c: Likewise.
      	* lra-lives.c: Likewise.
      	* lra-remat.c: Likewise.
      	* lra-spills.c: Likewise.
      	* lra.c: Likewise.
      	* lto-cgraph.c: Likewise.
      	* lto-streamer-out.c: Likewise.
      	* postreload-gcse.c: Likewise.
      	* predict.c: Likewise.
      	* profile-count.h: Likewise.
      	* profile.c: Likewise.
      	* recog.c: Likewise.
      	* ree.c: Likewise.
      	* reload.c: Likewise.
      	* reload1.c: Likewise.
      	* reorg.c: Likewise.
      	* resource.c: Likewise.
      	* rtl.def: Likewise.
      	* rtl.h: Likewise.
      	* rtlanal.c: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-ebb.c: Likewise.
      	* sched-rgn.c: Likewise.
      	* sel-sched-ir.c: Likewise.
      	* sel-sched.c: Likewise.
      	* shrink-wrap.c: Likewise.
      	* simplify-rtx.c: Likewise.
      	* symtab.c: Likewise.
      	* target.def: Likewise.
      	* toplev.c: Likewise.
      	* tree-call-cdce.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* tree-complex.c: Likewise.
      	* tree-core.h: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-nrv.c: Likewise.
      	* tree-profile.c: Likewise.
      	* tree-sra.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* tree-ssa-loop-im.c: Likewise.
      	* tree-ssa-loop-ivcanon.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-ssa-phionlycprop.c: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* tree-ssa-propagate.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-uninit.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-streamer-out.c: Likewise.
      	* tree.c: Likewise.
      	* tree.h: Likewise.
      	* vr-values.c: Likewise.
      
      	gcc/ada/
      	* exp_ch9.adb: Mechanically replace "can not" with "cannot".
      	* libgnat/s-regpat.ads: Likewise.
      	* par-ch4.adb: Likewise.
      	* set_targ.adb: Likewise.
      	* types.ads: Likewise.
      
      	gcc/cp/
      	* cp-tree.h: Mechanically replace "can not" with "cannot".
      	* parser.c: Likewise.
      	* pt.c: Likewise.
      
      	gcc/fortran/
      	* class.c: Mechanically replace "can not" with "cannot".
      	* decl.c: Likewise.
      	* expr.c: Likewise.
      	* gfc-internals.texi: Likewise.
      	* intrinsic.texi: Likewise.
      	* invoke.texi: Likewise.
      	* io.c: Likewise.
      	* match.c: Likewise.
      	* parse.c: Likewise.
      	* primary.c: Likewise.
      	* resolve.c: Likewise.
      	* symbol.c: Likewise.
      	* trans-array.c: Likewise.
      	* trans-decl.c: Likewise.
      	* trans-intrinsic.c: Likewise.
      	* trans-stmt.c: Likewise.
      
      	gcc/go/
      	* go-backend.c: Mechanically replace "can not" with "cannot".
      	* go-gcc.cc: Likewise.
      
      	gcc/lto/
      	* lto-partition.c: Mechanically replace "can not" with "cannot".
      	* lto-symtab.c: Likewise.
      	* lto.c: Likewise.
      
      	gcc/objc/
      	* objc-act.c: Mechanically replace "can not" with "cannot".
      
      	libbacktrace/
      	* backtrace.h: Mechanically replace "can not" with "cannot".
      
      	libgcc/
      	* config/c6x/libunwind.S: Mechanically replace "can not" with
      	"cannot".
      	* config/tilepro/atomic.h: Likewise.
      	* config/vxlib-tls.c: Likewise.
      	* generic-morestack-thread.c: Likewise.
      	* generic-morestack.c: Likewise.
      	* mkmap-symver.awk: Likewise.
      
      	libgfortran/
      	* caf/single.c: Mechanically replace "can not" with "cannot".
      	* io/unit.c: Likewise.
      
      	libobjc/
      	* class.c: Mechanically replace "can not" with "cannot".
      	* objc/runtime.h: Likewise.
      	* sendmsg.c: Likewise.
      
      	liboffloadmic/
      	* include/coi/common/COIResult_common.h: Mechanically replace
      	"can not" with "cannot".
      	* include/coi/source/COIBuffer_source.h: Likewise.
      
      	libstdc++-v3/
      	* include/ext/bitmap_allocator.h: Mechanically replace "can not"
      	with "cannot".
      
      From-SVN: r267783
      Sandra Loosemore committed
  3. 01 Jan, 2019 1 commit
  4. 27 Nov, 2018 1 commit
    • Come up with memop_ret enum instead of int endp for memory operations. · 2ff5ffb6
      2018-11-27  Martin Liska  <mliska@suse.cz>
      
      	* asan.c (asan_emit_stack_protection): Use new enum values
      	instead of int constants.
      	* builtins.c (expand_builtin_memory_copy_args): Replace int
      	type with memop_ret enum type.
      	(expand_builtin_mempcpy_args): Likewise.
      	(expand_builtin_memcpy): Use new enum values
      	instead of int constants. Likewise.
      	(expand_builtin_mempcpy): Likewise.
      	(expand_movstr): Likewise.
      	(expand_builtin_strcpy_args): Likewise.
      	(expand_builtin_stpcpy_1): Likewise.
      	(expand_builtin_strncpy): Likewise.
      	(expand_builtin_memset_args): Likewise.
      	* expr.c (move_by_pieces_d::finish_endp): Rename to ...
      	(move_by_pieces_d::finish_retmode): ... this.
      	(move_by_pieces): Change last argument type to memop_ret.
      	(store_by_pieces): Use new enum values
      	instead of int constants.
      	(emit_block_move_hints): Likewise.
      	(emit_push_insn): Likewise.
      	(store_expr): Likewise.
      	* expr.h (store_by_pieces): Change int to newly added enum
      	type.
      	* rtl.h (enum memop_ret): Define.
      	(move_by_pieces): Use the enum type.
      
      From-SVN: r266508
      Martin Liska committed
  5. 20 Nov, 2018 2 commits
    • S/390: Skip LT(G) peephole when literal pool is involved · 34a249bc
      By the time peephole optimizations run, we've already made up our mind
      whether to use base-register or relative addressing for literal pool
      entries.  LT(G) supports only base-register addressing, and so it is
      too late to convert L(G)RL + compare to LT(G).  This change should not
      make the code worse unless building with e.g. -fno-dce, since comparing
      literal pool entries to zero should be optimized away during earlier
      passes.
      
      gcc/ChangeLog:
      
      2018-11-20  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/88083
      	* config/s390/s390.md: Skip LT(G) peephole when literal pool is
      	involved.
      	* rtl.h (contains_constant_pool_address_p): New function.
      	* rtlanal.c (contains_constant_pool_address_p): Likewise.
      
      gcc/testsuite/ChangeLog:
      
      2018-11-20  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/88083
      	* gcc.target/s390/pr88083.c: New test.
      
      From-SVN: r266306
      Ilya Leoshkevich committed
    • re PR rtl-optimization/85925 (compilation of masking with 257 goes wrong in combine at -02) · 643427d7
      	PR rtl-optimization/85925
      	* rtl.h (word_register_operation_p): New predicate.
      	* combine.c (record_dead_and_set_regs_1): Only apply specific handling
      	for WORD_REGISTER_OPERATIONS targets to word_register_operation_p RTX.
      	* rtlanal.c (nonzero_bits1): Likewise.  Adjust couple of comments.
      	(num_sign_bit_copies1): Likewise.
      
      From-SVN: r266302
      Eric Botcazou committed
  6. 16 Aug, 2018 1 commit
    • expmed.h (canonicalize_comparison): New declaration. · ec18e48e
      	* expmed.h (canonicalize_comparison): New declaration.
      	* expmed.c (canonicalize_comparison, equivalent_cmp_code): New function.
      	* expmed.c (emit_store_flag_1): Add call to canonicalize_comparison.
      	* optabs.c (prepare_cmp_insn): Likewise.
      	* rtl.h (unsigned_condition_p): New function which checks if a
      	comparison operator is unsigned.
      
      	* gcc.target/aarch64/imm_choice_comparison.c: New test.
      
      From-SVN: r263591
      Vlad Lazar committed
  7. 06 Aug, 2018 3 commits
    • Add func to check if register is clobbered by clobber_high · 6a7fa0c2
      gcc/
      	* rtl.h (reg_is_clobbered_by_clobber_high): Add declarations.
      	* rtlanal.c (reg_is_clobbered_by_clobber_high): Add function.
      
      From-SVN: r263328
      Alan Hayward committed
    • Generation support for CLOBBER_HIGH · 14196e02
      Ensure clobber high is a register expression.
      Info is passed through for the error case.
      
      gcc/
      	* emit-rtl.c (verify_rtx_sharing): Check for CLOBBER_HIGH.
      	(copy_insn_1): Likewise.
      	(gen_hard_reg_clobber_high): New gen function.
      	* genconfig.c (walk_insn_part): Check for CLOBBER_HIGH.
      	* genemit.c (gen_exp): Likewise.
      	(gen_emit_seq): Pass through info.
      	(gen_insn): Check for CLOBBER_HIGH.
      	(gen_expand): Pass through info.
      	(gen_split): Likewise.
      	(output_add_clobbers): Likewise.
      	* genrecog.c (validate_pattern): Check for CLOBBER_HIGH.
      	(remove_clobbers): Likewise.
      	* rtl.h (gen_hard_reg_clobber_high): New declaration.
      
      From-SVN: r263327
      Alan Hayward committed
    • Add CLOBBER_HIGH expression · 601e86a5
      Includes documentation.
      
      2018-08-06  Alan Hayward  <alan.hayward@arm.com>
      
      	* doc/rtl.texi (clobber_high): Add.
      	(parallel): Add in clobber high
      	* rtl.c (rtl_check_failed_code3): Add function.
      	* rtl.def (CLOBBER_HIGH): Add expression.
      	* rtl.h (RTL_CHECKC3): Add macro.
      	(rtl_check_failed_code3): Add declaration.
      	(XC3EXP): Add macro.
      
      From-SVN: r263326
      Alan Hayward committed
  8. 18 Jun, 2018 1 commit
    • More rtx to rtx_insn * cleanups · df0b55f0
      gcc/ChangeLog:
      	* config/frv/frv-protos.h (frv_ifcvt_modify_insn): Strengthen 3rd
      	param from rtx to rtx_insn *.
      	* config/frv/frv.c (frv_ifcvt_add_insn): Likewise for "insn"
      	param.
      	(frv_ifcvt_modify_insn): Likwise.
      	(frv_ifcvt_modify_final): Likwise for local "existing_insn",
      	adding an as_a <rtx_insn *> cast.  Likewise for local "insn".
      	* config/mips/mips.c (r10k_insert_cache_barriers): Add an
      	as_a <rtx_insn *> cast to local "unprotected_region" once
      	it's been established that it's not NULL or pc_rtx.
      	* config/nds32/nds32-relax-opt.c (nds32_group_insns): Strengthen
      	param "sethi" from rtx to rtx_insn *.
      	(nds32_group_float_insns): Likewise for param "insn".
      	* config/vax/vax-protos.h (vax_output_int_add): Likewise for 1st
      	param.
      	(vax_output_int_subtract): Likewise.
      	* config/vax/vax.c (vax_output_int_add): Likewise for param
      	"insn".
      	(vax_output_int_subtract): Likewise.
      	* emit-rtl.c (set_insn_deleted): Likewise, removing cast.
      	(emit_pattern_after): Likewise for param "after".
      	(emit_insn_after): Likewise.
      	(emit_jump_insn_after): Likewise.
      	(emit_call_insn_after): Likewise.
      	(emit_debug_insn_after): Likewise.
      	(emit_pattern_before): Likewise for param "before".
      	(emit_insn_before): Likewise.
      	(emit_jump_insn_before): Likewise.
      	* final.c (get_insn_template): Likewise for param "insn", removing
      	a cast.
      	* output.h (get_insn_template): Likewise for 2nd param.
      	* rtl.h (emit_insn_before): Likewise.
      	(emit_jump_insn_before): Likewise.
      	(emit_debug_insn_before_noloc): Likewise.
      	(emit_insn_after): Likewise.
      	(emit_jump_insn_after): Likewise.
      	(emit_call_insn_after): Likewise.
      	(emit_debug_insn_after): Likewise.
      	(set_insn_deleted): Likewise for param.
      
      From-SVN: r261715
      David Malcolm committed
  9. 13 Jun, 2018 1 commit
    • emit-rtl.c: more typesafety · 4dea3bff
      This patch converts various rtx to rtx_insn * (or rtx_code_label *).
      It also convert the various "_loc" params from int to location_t
      
      gcc/ChangeLog:
      	* config/arc/arc.c (hwloop_optimize): Strengthen local "end_label"
      	from rtx to rtx_insn *.
      	* config/bfin/bfin.c (hwloop_optimize): Likewise for local
      	"label".
      	(add_sched_insns_for_speculation): Likewise for local "target",
      	converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
      	* config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels"
      	from rtx_insn ** to rtx_code_label **.
      	(reorg_emit_nops): Likewise.
      	(c6x_reorg): Likewise for local "call_labels".
      	* config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from
      	rtx to rtx_insn *.
      	* config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to
      	rtx_code_label *, adding safe_as_a <rtx_code_label *> casts to
      	the loops over LABEL_REFS.
      	(fixup_addr_diff_vecs): Add as_a <rtx_insn *> to usage of
      	braf_label.
      	(barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
      	(get_dest_uid): Strengthen param "label" from rtx to rtx_insn *.
      	(split_branches): Strengthen local "olabel" from rtx to
      	rtx_insn *, adding a safe_as_a cast.
      	* emit-rtl.c (next_real_insn): Strengthen param from "rtx"
      	to "rtx_insn *".
      	(add_insn_after): Likewise for first two params.
      	(add_insn_before): Likewise.
      	(remove_insn): Likewise for param.
      	(emit_pattern_before_noloc): Likewise for second and third params.
      	(emit_jump_insn_before_noloc): Convert NULL_RTX to NULL.
      	(emit_call_insn_before_noloc): Likewise.
      	(emit_debug_insn_before_noloc): Strengthen "before" param from "rtx"
      	to "rtx_insn *".
      	(emit_barrier_before): Likewise.
      	(emit_label_before): Strengthen "label" param from "rtx" to
      	"rtx_code_label *".  Strengthen "before" param from "rtx" to
      	"rtx_insn *".
      	(emit_insn_after_1): Strengthen "after" param from "rtx" to
      	"rtx_insn *".
      	(emit_pattern_after_noloc): Likewise.
      	(emit_insn_after_noloc): Likewise.
      	(emit_jump_insn_after_noloc): Likewise.
      	(emit_call_insn_after_noloc): Likewise.
      	(emit_debug_insn_after_noloc): Likewise.
      	(emit_barrier_after): Likewise.
      	(emit_label_after): Likewise for both params.
      	(emit_pattern_after_setloc): Likewise for "after" param.  Convert
      	"loc" param from "int" to "location_t".
      	(emit_insn_after_setloc): Likewise.
      	(emit_jump_insn_after_setloc): Likewise.
      	(emit_call_insn_after_setloc): Likewise.
      	(emit_debug_insn_after_setloc): Likewise.
      	(emit_pattern_before_setloc): Likewise for "before" param.  Convert
      	"loc" param from "int" to "location_t".
      	(emit_pattern_before): Convert NULL_RTX to NULL.
      	(emit_insn_before_setloc): Convert "loc" param from "int" to
      	"location_t".
      	(emit_jump_insn_before_setloc): Likewise.
      	(emit_call_insn_before_setloc): Likewise.
      	(emit_debug_insn_before_setloc): Strengthen "before" param from rtx to
      	rtx_insn *.  Convert "loc" param from "int" to "location_t".
      	* rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc,
      	emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
      	Convert 3rd param from "int" to "location_t".
      	(emit_barrier_before, emit_barrier_after, next_real_insn):
      	Strengthen param from rtx to rtx_insn *.
      	(emit_label_before): Strengthen 1st param from "rtx" to
      	"rtx_code_label *".  Strengthen 2nd param from "rtx" to
      	"rtx_insn *".
      	(emit_insn_after_noloc, emit_jump_insn_after_noloc,
      	emit_call_insn_after_noloc, emit_debug_insn_after_noloc):
      	Strengthen 2nd param from "rtx" to "rtx_insn *".
      	(emit_insn_after_setloc, emit_jump_insn_after_setloc)
      	emit_call_insn_after_setloc, emit_debug_insn_after_setloc):
      	Likewise. Convert 3rd param from "int" to "location_t".
      	(emit_label_after): Strengthen 1st param from "rtx" to
      	"rtx_code_label *".
      	(next_real_insn, remove_insn): Strengthen param from "rtx" to
      	"rtx_insn *".
      	(add_insn_before, add_insn_after): Strengthen 1st and 2nd params
      	from "rtx" to "rtx_insn *".
      
      From-SVN: r261547
      David Malcolm committed
  10. 08 Jun, 2018 1 commit
    • Remove MPX · 31db0fe0
      2018-06-08  Martin Liska  <mliska@suse.cz>
      
      	* MAINTAINERS: Remove MPX-related entries.
      	* Makefile.def: Remove libmpx support.
      	* Makefile.in: Likewise.
      	* configure: Remove removed files.
      	* configure.ac: Likewise.
      	* libmpx/ChangeLog: Remove.
      	* libmpx/Makefile.am: Remove.
      	* libmpx/Makefile.in: Remove.
      	* libmpx/acinclude.m4: Remove.
      	* libmpx/aclocal.m4: Remove.
      	* libmpx/config.h.in: Remove.
      	* libmpx/configure: Remove.
      	* libmpx/configure.ac: Remove.
      	* libmpx/configure.tgt: Remove.
      	* libmpx/libmpx.spec.in: Remove.
      	* libmpx/mpxrt/Makefile.am: Remove.
      	* libmpx/mpxrt/Makefile.in: Remove.
      	* libmpx/mpxrt/libmpx.map: Remove.
      	* libmpx/mpxrt/libtool-version: Remove.
      	* libmpx/mpxrt/mpxrt-utils.c: Remove.
      	* libmpx/mpxrt/mpxrt-utils.h: Remove.
      	* libmpx/mpxrt/mpxrt.c: Remove.
      	* libmpx/mpxrt/mpxrt.h: Remove.
      	* libmpx/mpxwrap/Makefile.am: Remove.
      	* libmpx/mpxwrap/Makefile.in: Remove.
      	* libmpx/mpxwrap/libmpxwrappers.map: Remove.
      	* libmpx/mpxwrap/libtool-version: Remove.
      	* libmpx/mpxwrap/mpx_wrappers.c: Remove.
      2018-06-08  Martin Liska  <mliska@suse.cz>
      
      	* bootstrap-mpx.mk: Remove.
      2018-06-08  Martin Liska  <mliska@suse.cz>
      
      	* Makefile.in: Remove support for MPX (macros, related functions,
      	fields in cgraph_node, ...).
      	* builtin-types.def (BT_BND): Likewise.
      	(BT_FN_BND_CONST_PTR): Likewise.
      	(BT_FN_CONST_PTR_BND): Likewise.
      	(BT_FN_VOID_PTR_BND): Likewise.
      	(BT_FN_BND_CONST_PTR_SIZE): Likewise.
      	(BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise.
      	* builtins.c (expand_builtin_memcpy_with_bounds): Likewise.
      	(expand_builtin_mempcpy_with_bounds): Likewise.
      	(expand_builtin_memset_with_bounds): Likewise.
      	(expand_builtin_memset_args): Likewise.
      	(std_expand_builtin_va_start): Likewise.
      	(expand_builtin): Likewise.
      	(expand_builtin_with_bounds): Likewise.
      	* builtins.def (DEF_BUILTIN_CHKP): Likewise.
      	(DEF_LIB_BUILTIN_CHKP): Likewise.
      	(DEF_EXT_LIB_BUILTIN_CHKP): Likewise.
      	(DEF_CHKP_BUILTIN): Likewise.
      	(BUILT_IN_MEMCPY): Likewise.
      	(BUILT_IN_MEMMOVE): Likewise.
      	(BUILT_IN_MEMPCPY): Likewise.
      	(BUILT_IN_MEMSET): Likewise.
      	(BUILT_IN_STPCPY): Likewise.
      	(BUILT_IN_STRCAT): Likewise.
      	(BUILT_IN_STRCHR): Likewise.
      	(BUILT_IN_STRCPY): Likewise.
      	(BUILT_IN_STRLEN): Likewise.
      	(BUILT_IN_MEMCPY_CHK): Likewise.
      	(BUILT_IN_MEMMOVE_CHK): Likewise.
      	(BUILT_IN_MEMPCPY_CHK): Likewise.
      	(BUILT_IN_MEMSET_CHK): Likewise.
      	(BUILT_IN_STPCPY_CHK): Likewise.
      	(BUILT_IN_STRCAT_CHK): Likewise.
      	(BUILT_IN_STRCPY_CHK): Likewise.
      	* calls.c (store_bounds): Likewise.
      	(emit_call_1): Likewise.
      	(special_function_p): Likewise.
      	(maybe_warn_nonstring_arg): Likewise.
      	(initialize_argument_information): Likewise.
      	(finalize_must_preallocate): Likewise.
      	(compute_argument_addresses): Likewise.
      	(expand_call): Likewise.
      	* cfgexpand.c (expand_call_stmt): Likewise.
      	(expand_return): Likewise.
      	(expand_gimple_stmt_1): Likewise.
      	(pass_expand::execute): Likewise.
      	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
      	(cgraph_node::remove): Likewise.
      	(cgraph_node::dump): Likewise.
      	(cgraph_node::verify_node): Likewise.
      	* cgraph.h (chkp_function_instrumented_p): Likewise.
      	(symtab_node::get_alias_target): Likewise.
      	(cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise.
      	(cgraph_local_p): Likewise.
      	* cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise.
      	(cgraph_edge::rebuild_references): Likewise.
      	* cgraphunit.c (varpool_node::finalize_decl): Likewise.
      	(walk_polymorphic_call_targets): Likewise.
      	(cgraph_node::expand_thunk): Likewise.
      	(symbol_table::output_weakrefs): Likewise.
      	* common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise.
      	(ix86_handle_option): Likewise.
      	* config/i386/constraints.md: Likewise.
      	* config/i386/i386-builtin-types.def (BND): Likewise.
      	(VOID): Likewise.
      	(PVOID): Likewise.
      	(ULONG): Likewise.
      	* config/i386/i386-builtin.def (BDESC_END): Likewise.
      	(BDESC_FIRST): Likewise.
      	(BDESC): Likewise.
      	* config/i386/i386-c.c (ix86_target_macros_internal): Likewise.
      	* config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise.
      	* config/i386/i386.c (enum reg_class): Likewise.
      	(ix86_target_string): Likewise.
      	(ix86_option_override_internal): Likewise.
      	(ix86_conditional_register_usage): Likewise.
      	(ix86_valid_target_attribute_inner_p): Likewise.
      	(ix86_set_indirect_branch_type): Likewise.
      	(ix86_set_current_function): Likewise.
      	(ix86_function_arg_regno_p): Likewise.
      	(init_cumulative_args): Likewise.
      	(ix86_function_arg_advance): Likewise.
      	(ix86_function_arg): Likewise.
      	(ix86_pass_by_reference): Likewise.
      	(ix86_function_value_regno_p): Likewise.
      	(ix86_function_value_1): Likewise.
      	(ix86_function_value_bounds): Likewise.
      	(ix86_return_in_memory): Likewise.
      	(ix86_setup_incoming_vararg_bounds): Likewise.
      	(ix86_va_start): Likewise.
      	(indirect_thunk_need_prefix): Likewise.
      	(print_reg): Likewise.
      	(ix86_print_operand): Likewise.
      	(ix86_expand_call): Likewise.
      	(ix86_output_function_return): Likewise.
      	(reg_encoded_number): Likewise.
      	(BDESC_VERIFYS): Likewise.
      	(ix86_init_mpx_builtins): Likewise.
      	(ix86_init_builtins): Likewise.
      	(ix86_emit_cmove): Likewise.
      	(ix86_emit_move_max): Likewise.
      	(ix86_expand_builtin): Likewise.
      	(ix86_builtin_mpx_function): Likewise.
      	(ix86_get_arg_address_for_bt): Likewise.
      	(ix86_load_bounds): Likewise.
      	(ix86_store_bounds): Likewise.
      	(ix86_load_returned_bounds): Likewise.
      	(ix86_store_returned_bounds): Likewise.
      	(ix86_class_likely_spilled_p): Likewise.
      	(ix86_hard_regno_mode_ok): Likewise.
      	(x86_order_regs_for_local_alloc): Likewise.
      	(ix86_mitigate_rop): Likewise.
      	(ix86_bnd_prefixed_insn_p): Likewise.
      	(ix86_mpx_bound_mode): Likewise.
      	(ix86_make_bounds_constant): Likewise.
      	(ix86_initialize_bounds): Likewise.
      	(TARGET_LOAD_BOUNDS_FOR_ARG): Likewise.
      	(TARGET_STORE_BOUNDS_FOR_ARG): Likewise.
      	(TARGET_LOAD_RETURNED_BOUNDS): Likewise.
      	(TARGET_STORE_RETURNED_BOUNDS): Likewise.
      	(TARGET_CHKP_BOUND_MODE): Likewise.
      	(TARGET_BUILTIN_CHKP_FUNCTION): Likewise.
      	(TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise.
      	(TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise.
      	(TARGET_CHKP_INITIALIZE_BOUNDS): Likewise.
      	* config/i386/i386.h (TARGET_MPX): Likewise.
      	(TARGET_MPX_P): Likewise.
      	(VALID_BND_REG_MODE): Likewise.
      	(FIRST_BND_REG): Likewise.
      	(LAST_BND_REG): Likewise.
      	(enum reg_class): Likewise.
      	(BND_REG_P): Likewise.
      	(BND_REGNO_P): Likewise.
      	(BNDmode): Likewise.
      	(ADJUST_INSN_LENGTH): Likewise.
      	* config/i386/i386.md: Likewise.
      	* config/i386/i386.opt: Likewise.
      	* config/i386/linux-common.h (LIBMPX_LIBS): Likewise.
      	(defined): Likewise.
      	(LINK_MPX): Likewise.
      	(MPX_SPEC): Likewise.
      	(LIBMPX_SPEC): Likewise.
      	(LIBMPXWRAPPERS_SPEC): Likewise.
      	(CHKP_SPEC): Likewise.
      	* config/i386/predicates.md: Likewise.
      	* dbxout.c (dbxout_type): Likewise.
      	* doc/extend.texi: Likewise.
      	* doc/invoke.texi: Likewise.
      	* doc/md.texi: Likewise.
      	* doc/tm.texi: Likewise.
      	* doc/tm.texi.in: Likewise.
      	* dwarf2out.c (is_base_type): Likewise.
      	(gen_formal_types_die): Likewise.
      	(gen_subprogram_die): Likewise.
      	(gen_type_die_with_usage): Likewise.
      	(gen_decl_die): Likewise.
      	(dwarf2out_late_global_decl): Likewise.
      	* expr.c (expand_assignment): Likewise.
      	(emit_storent_insn): Likewise.
      	(store_expr_with_bounds): Likewise.
      	(store_expr): Likewise.
      	(expand_expr_real_1): Likewise.
      	* expr.h (store_expr_with_bounds): Likewise.
      	* function.c (use_register_for_decl): Likewise.
      	(struct bounds_parm_data): Likewise.
      	(assign_parms_augmented_arg_list): Likewise.
      	(assign_parm_find_entry_rtl): Likewise.
      	(assign_parm_is_stack_parm): Likewise.
      	(assign_parm_load_bounds): Likewise.
      	(assign_bounds): Likewise.
      	(assign_parms): Likewise.
      	(expand_function_start): Likewise.
      	* gcc.c (CHKP_SPEC): Likewise.
      	* gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
      	* gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise.
      	(wrestrict_dom_walker::check_call): Likewise.
      	* gimple.c (gimple_build_call_from_tree): Likewise.
      	* gimple.h (enum gf_mask): Likewise.
      	(gimple_call_with_bounds_p): Likewise.
      	(gimple_call_set_with_bounds): Likewise.
      	* gimplify.c (gimplify_init_constructor): Likewise.
      	* ipa-cp.c (initialize_node_lattices): Likewise.
      	(propagate_constants_across_call): Likewise.
      	(find_more_scalar_values_for_callers_subset): Likewise.
      	* ipa-hsa.c (process_hsa_functions): Likewise.
      	* ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise.
      	* ipa-icf.c (sem_function::merge): Likewise.
      	* ipa-inline.c (early_inliner): Likewise.
      	* ipa-pure-const.c (warn_function_noreturn): Likewise.
      	(warn_function_cold): Likewise.
      	(propagate_pure_const): Likewise.
      	* ipa-ref.h (enum GTY): Likewise.
      	* ipa-split.c (find_retbnd): Likewise.
      	(consider_split): Likewise.
      	(split_function): Likewise.
      	* ipa-visibility.c (cgraph_externally_visible_p): Likewise.
      	* ipa.c (walk_polymorphic_call_targets): Likewise.
      	(symbol_table::remove_unreachable_nodes): Likewise.
      	(process_references): Likewise.
      	(cgraph_build_static_cdtor_1): Likewise.
      	* lto-cgraph.c (lto_output_node): Likewise.
      	(output_refs): Likewise.
      	(compute_ltrans_boundary): Likewise.
      	(input_overwrite_node): Likewise.
      	(input_node): Likewise.
      	(input_cgraph_1): Likewise.
      	* params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise.
      	* passes.c (pass_manager::execute_early_local_passes): Likewise.
      	(class pass_chkp_instrumentation_passes): Likewise.
      	(make_pass_chkp_instrumentation_passes): Likewise.
      	* passes.def: Likewise.
      	* rtl.h (struct GTY): Likewise.
      	(CALL_EXPR_WITH_BOUNDS_P): Likewise.
      	* stor-layout.c (layout_type): Likewise.
      	* symtab.c: Likewise.
      	* target.def: Likewise.
      	* targhooks.c (default_chkp_bound_type): Likewise.
      	(default_chkp_bound_mode): Likewise.
      	(default_builtin_chkp_function): Likewise.
      	(default_chkp_function_value_bounds): Likewise.
      	(default_chkp_make_bounds_constant): Likewise.
      	(default_chkp_initialize_bounds): Likewise.
      	* targhooks.h (default_chkp_bound_type): Likewise.
      	(default_chkp_bound_mode): Likewise.
      	(default_builtin_chkp_function): Likewise.
      	(default_chkp_function_value_bounds): Likewise.
      	(default_chkp_make_bounds_constant): Likewise.
      	(default_chkp_initialize_bounds): Likewise.
      	* toplev.c (compile_file): Likewise.
      	(process_options): Likewise.
      	* tree-core.h (DEF_BUILTIN): Likewise.
      	(DEF_BUILTIN_CHKP): Likewise.
      	* tree-inline.c (declare_return_variable): Likewise.
      	(remap_gimple_stmt): Likewise.
      	(copy_bb): Likewise.
      	(initialize_inlined_parameters): Likewise.
      	(expand_call_inline): Likewise.
      	* tree-pass.h (make_pass_ipa_chkp_versioning): Likewise.
      	(make_pass_ipa_chkp_early_produce_thunks): Likewise.
      	(make_pass_ipa_chkp_produce_thunks): Likewise.
      	(make_pass_chkp): Likewise.
      	(make_pass_chkp_opt): Likewise.
      	(make_pass_chkp_instrumentation_passes): Likewise.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      	* tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
      	* tree-ssa-dce.c (propagate_necessity): Likewise.
      	(eliminate_unnecessary_stmts): Likewise.
      	* tree-ssa-pre.c (create_expression_by_pieces): Likewise.
      	* tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
      	* tree-ssa-sccvn.h: Likewise.
      	* tree-ssa-strlen.c (get_string_length): Likewise.
      	(valid_builtin_call): Likewise.
      	(adjust_last_stmt): Likewise.
      	(handle_builtin_strchr): Likewise.
      	(handle_builtin_strcpy): Likewise.
      	(handle_builtin_stxncpy): Likewise.
      	(handle_builtin_memcpy): Likewise.
      	(handle_builtin_strcat): Likewise.
      	(strlen_check_and_optimize_stmt): Likewise.
      	* tree-stdarg.c (expand_ifn_va_arg_1): Likewise.
      	* tree-streamer-in.c: Likewise.
      	* tree-streamer.c (record_common_node): Likewise.
      	* tree.c (tree_code_size): Likewise.
      	(wide_int_to_tree_1): Likewise.
      	(type_contains_placeholder_1): Likewise.
      	(build_common_tree_nodes): Likewise.
      	* tree.def (POINTER_BOUNDS_TYPE): Likewise.
      	* tree.h (POINTER_BOUNDS_TYPE_P): Likewise.
      	(POINTER_BOUNDS_P): Likewise.
      	(BOUNDED_TYPE_P): Likewise.
      	(BOUNDED_P): Likewise.
      	(CALL_WITH_BOUNDS_P): Likewise.
      	(pointer_bounds_type_node): Likewise.
      	* value-prof.c (gimple_ic): Likewise.
      	* var-tracking.c (vt_add_function_parameters): Likewise.
      	* varasm.c (make_decl_rtl): Likewise.
      	(assemble_start_function): Likewise.
      	(output_constant): Likewise.
      	(maybe_assemble_visibility): Likewise.
      	* varpool.c (ctor_for_folding): Likewise.
      	* chkp-builtins.def: Remove.
      	* ipa-chkp.c: Remove.
      	* ipa-chkp.h: Remove.
      	* rtl-chkp.c: Remove.
      	* rtl-chkp.h: Remove.
      	* tree-chkp-opt.c: Remove.
      	* tree-chkp.c: Remove.
      	* tree-chkp.h: Remove.
      2018-06-08  Martin Liska  <mliska@suse.cz>
      
      	* c-attribs.c (handle_bnd_variable_size_attribute): Remove support
      	for MPX (macros, related functions, fields in cgraph_node, ...).
      	(handle_bnd_legacy): Likewise.
      	(handle_bnd_instrument): Likewise.
      	* c.opt: Likewise.
      2018-06-08  Martin Liska  <mliska@suse.cz>
      
      	* lto-partition.c (add_references_to_partition): Remove support
      	for MPX (macros, related functions, fields in cgraph_node, ...).
      	(add_symbol_to_partition_1): Likewise.
      	(privatize_symbol_name): Likewise.
      	* lto-symtab.c (lto_cgraph_replace_node): Likewise.
      2018-06-08  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/dg.exp: Do not use mpx.exp.
      	* g++.dg/lto/lto.exp: Likewise.
      	* g++.dg/lto/pr69729_0.C: Remove.
      	* g++.dg/opt/pr71529.C: Remove.
      	* g++.dg/pr63995-1.C: Remove.
      	* g++.dg/pr68270.C: Remove.
      	* g++.dg/pr71624.C: Remove.
      	* g++.dg/pr71633.C: Remove.
      	* g++.dg/pr79761.C: Remove.
      	* g++.dg/pr79764.C: Remove.
      	* g++.dg/pr79769.C: Remove.
      	* gcc.dg/lto/chkp-privatize-1_0.c: Remove.
      	* gcc.dg/lto/chkp-privatize-2_0.c: Remove.
      	* gcc.dg/lto/chkp-privatize_0.c: Remove.
      	* gcc.dg/lto/chkp-removed-alias_0.c: Remove.
      	* gcc.dg/lto/chkp-static-bounds_0.c: Remove.
      	* gcc.dg/lto/chkp-wrap-asm-name_0.c: Remove.
      	* gcc.dg/lto/lto.exp: Do not use mpx.exp.
      	* gcc.dg/lto/pr66221_0.c: Remove.
      	* gcc.target/i386/chkp-always_inline.c: Remove.
      	* gcc.target/i386/chkp-bndret.c: Remove.
      	* gcc.target/i386/chkp-builtins-1.c: Remove.
      	* gcc.target/i386/chkp-builtins-2.c: Remove.
      	* gcc.target/i386/chkp-builtins-3.c: Remove.
      	* gcc.target/i386/chkp-builtins-4.c: Remove.
      	* gcc.target/i386/chkp-const-check-1.c: Remove.
      	* gcc.target/i386/chkp-const-check-2.c: Remove.
      	* gcc.target/i386/chkp-hidden-def.c: Remove.
      	* gcc.target/i386/chkp-label-address.c: Remove.
      	* gcc.target/i386/chkp-lifetime-1.c: Remove.
      	* gcc.target/i386/chkp-narrow-bounds.c: Remove.
      	* gcc.target/i386/chkp-pr69044.c: Remove.
      	* gcc.target/i386/chkp-remove-bndint-1.c: Remove.
      	* gcc.target/i386/chkp-remove-bndint-2.c: Remove.
      	* gcc.target/i386/chkp-strchr.c: Remove.
      	* gcc.target/i386/chkp-strlen-1.c: Remove.
      	* gcc.target/i386/chkp-strlen-2.c: Remove.
      	* gcc.target/i386/chkp-strlen-3.c: Remove.
      	* gcc.target/i386/chkp-strlen-4.c: Remove.
      	* gcc.target/i386/chkp-strlen-5.c: Remove.
      	* gcc.target/i386/chkp-stropt-1.c: Remove.
      	* gcc.target/i386/chkp-stropt-10.c: Remove.
      	* gcc.target/i386/chkp-stropt-11.c: Remove.
      	* gcc.target/i386/chkp-stropt-12.c: Remove.
      	* gcc.target/i386/chkp-stropt-13.c: Remove.
      	* gcc.target/i386/chkp-stropt-14.c: Remove.
      	* gcc.target/i386/chkp-stropt-15.c: Remove.
      	* gcc.target/i386/chkp-stropt-16.c: Remove.
      	* gcc.target/i386/chkp-stropt-17.c: Remove.
      	* gcc.target/i386/chkp-stropt-2.c: Remove.
      	* gcc.target/i386/chkp-stropt-3.c: Remove.
      	* gcc.target/i386/chkp-stropt-4.c: Remove.
      	* gcc.target/i386/chkp-stropt-5.c: Remove.
      	* gcc.target/i386/chkp-stropt-6.c: Remove.
      	* gcc.target/i386/chkp-stropt-7.c: Remove.
      	* gcc.target/i386/chkp-stropt-8.c: Remove.
      	* gcc.target/i386/chkp-stropt-9.c: Remove.
      	* gcc.target/i386/i386.exp: Do not use mpx.exp.
      	* gcc.target/i386/indirect-thunk-11.c: Remove.
      	* gcc.target/i386/indirect-thunk-12.c: Remove.
      	* gcc.target/i386/indirect-thunk-attr-12.c: Remove.
      	* gcc.target/i386/indirect-thunk-attr-13.c: Remove.
      	* gcc.target/i386/indirect-thunk-bnd-1.c: Remove.
      	* gcc.target/i386/indirect-thunk-bnd-2.c: Remove.
      	* gcc.target/i386/indirect-thunk-bnd-3.c: Remove.
      	* gcc.target/i386/indirect-thunk-bnd-4.c: Remove.
      	* gcc.target/i386/interrupt-bnd-err-1.c: Remove.
      	* gcc.target/i386/interrupt-bnd-err-2.c: Remove.
      	* gcc.target/i386/mpx/alloca-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/alloca-1-nov.c: Remove.
      	* gcc.target/i386/mpx/alloca-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/arg-addr-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/arg-addr-1-nov.c: Remove.
      	* gcc.target/i386/mpx/arg-addr-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/bitfields-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/bitfields-1-nov.c: Remove.
      	* gcc.target/i386/mpx/bitfields-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-chk-ptr-bounds-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-chk-ptr-bounds-1-nov.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-chk-ptr-bounds-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-chk-ptr-bounds-2.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-chk-ptr-lbounds-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-chk-ptr-lbounds-1-nov.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-chk-ptr-lbounds-2.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-chk-ptr-ubounds-1-nov.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-chk-ptr-ubounds-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-chk-ptr-ubounds-2.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-copy-ptr-bounds-1.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-copy-ptr-bounds-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-copy-ptr-bounds-2-nov.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-copy-ptr-bounds-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-copy-ptr-bounds-3.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-get-ptr-lbound-1.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-get-ptr-lbound-2.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-get-ptr-ubound-1.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-get-ptr-ubound-2.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-init-ptr-bounds-1.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-init-ptr-bounds-2-nov.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-init-ptr-bounds-3.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-1.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-2-nov.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-3-lbv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-3-nov.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-3-ubv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-narrow-ptr-bounds-4.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-null-ptr-bounds-1-bbv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-set-ptr-bounds-1.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-set-ptr-bounds-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-set-ptr-bounds-2-nov.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-set-ptr-bounds-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-set-ptr-bounds-3.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-store-ptr-bounds-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-store-ptr-bounds-1-nov.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-store-ptr-bounds-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/builtin-bnd-store-ptr-bounds-2.c: Remove.
      	* gcc.target/i386/mpx/calloc-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/calloc-1-nov.c: Remove.
      	* gcc.target/i386/mpx/calloc-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/chkp-fix-calls-1.c: Remove.
      	* gcc.target/i386/mpx/chkp-fix-calls-2.c: Remove.
      	* gcc.target/i386/mpx/chkp-fix-calls-3.c: Remove.
      	* gcc.target/i386/mpx/chkp-fix-calls-4.c: Remove.
      	* gcc.target/i386/mpx/chkp-thunk-comdat-1.cc: Remove.
      	* gcc.target/i386/mpx/chkp-thunk-comdat-2.cc: Remove.
      	* gcc.target/i386/mpx/chkp-thunk-comdat-3.c: Remove.
      	* gcc.target/i386/mpx/fastcall-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/fastcall-1-nov.c: Remove.
      	* gcc.target/i386/mpx/fastcall-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/fastcall-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/fastcall-2-nov.c: Remove.
      	* gcc.target/i386/mpx/fastcall-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-1-nov.c: Remove.
      	* gcc.target/i386/mpx/field-addr-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-10-lbv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-10-nov.c: Remove.
      	* gcc.target/i386/mpx/field-addr-10-ubv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-2-nov.c: Remove.
      	* gcc.target/i386/mpx/field-addr-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-3-lbv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-3-nov.c: Remove.
      	* gcc.target/i386/mpx/field-addr-3-ubv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-4-lbv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-4-nov.c: Remove.
      	* gcc.target/i386/mpx/field-addr-4-ubv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-5-lbv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-5-nov.c: Remove.
      	* gcc.target/i386/mpx/field-addr-5-ubv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-6-lbv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-6-nov.c: Remove.
      	* gcc.target/i386/mpx/field-addr-6-ubv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-7-lbv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-7-nov.c: Remove.
      	* gcc.target/i386/mpx/field-addr-7-ubv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-8-lbv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-8-nov.c: Remove.
      	* gcc.target/i386/mpx/field-addr-8-ubv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-9-lbv.c: Remove.
      	* gcc.target/i386/mpx/field-addr-9-nov.c: Remove.
      	* gcc.target/i386/mpx/field-addr-9-ubv.c: Remove.
      	* gcc.target/i386/mpx/frame-address-1-nov.c: Remove.
      	* gcc.target/i386/mpx/hard-reg-1-nov.c: Remove.
      	* gcc.target/i386/mpx/hard-reg-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/hard-reg-2-nov.c: Remove.
      	* gcc.target/i386/mpx/hard-reg-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/if-stmt-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/if-stmt-1-nov.c: Remove.
      	* gcc.target/i386/mpx/if-stmt-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/if-stmt-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/if-stmt-2-nov.c: Remove.
      	* gcc.target/i386/mpx/if-stmt-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/label-address-1.c: Remove.
      	* gcc.target/i386/mpx/legacy-1-nov.c: Remove.
      	* gcc.target/i386/mpx/macro.c: Remove.
      	* gcc.target/i386/mpx/malloc-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/malloc-1-nov.c: Remove.
      	* gcc.target/i386/mpx/malloc-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/memcpy-1.c: Remove.
      	* gcc.target/i386/mpx/memmove-1.c: Remove.
      	* gcc.target/i386/mpx/memmove-2.c: Remove.
      	* gcc.target/i386/mpx/memmove-zero-length.c: Remove.
      	* gcc.target/i386/mpx/mpx-check.h: Remove.
      	* gcc.target/i386/mpx/mpx-os-support.h: Remove.
      	* gcc.target/i386/mpx/mpx.exp: Remove.
      	* gcc.target/i386/mpx/nested-function-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/nested-function-1-nov.c: Remove.
      	* gcc.target/i386/mpx/nested-function-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-1-nov.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-2-nov.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-3-lbv.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-3-nov.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-3-ubv.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-4-lbv.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-4-nov.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-4-ubv.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-5-lbv.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-5-nov.c: Remove.
      	* gcc.target/i386/mpx/pointer-arg-5-ubv.c: Remove.
      	* gcc.target/i386/mpx/pointer-diff-1.c: Remove.
      	* gcc.target/i386/mpx/pointer-store-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/pointer-store-1-nov.c: Remove.
      	* gcc.target/i386/mpx/pointer-store-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/pr65508.c: Remove.
      	* gcc.target/i386/mpx/pr65531.cc: Remove.
      	* gcc.target/i386/mpx/pr66048.cc: Remove.
      	* gcc.target/i386/mpx/pr66134.c: Remove.
      	* gcc.target/i386/mpx/pr66566.c: Remove.
      	* gcc.target/i386/mpx/pr66567.c: Remove.
      	* gcc.target/i386/mpx/pr66568.c: Remove.
      	* gcc.target/i386/mpx/pr66569.c: Remove.
      	* gcc.target/i386/mpx/pr66581.c: Remove.
      	* gcc.target/i386/mpx/pr68337-1.c: Remove.
      	* gcc.target/i386/mpx/pr68337-2.c: Remove.
      	* gcc.target/i386/mpx/pr68416.c: Remove.
      	* gcc.target/i386/mpx/pr78339.c: Remove.
      	* gcc.target/i386/mpx/pr79631.c: Remove.
      	* gcc.target/i386/mpx/pr79633.c: Remove.
      	* gcc.target/i386/mpx/pr79753.c: Remove.
      	* gcc.target/i386/mpx/pr79770.c: Remove.
      	* gcc.target/i386/mpx/pr79987.c: Remove.
      	* gcc.target/i386/mpx/pr79988.c: Remove.
      	* gcc.target/i386/mpx/realloc-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/realloc-1-nov.c: Remove.
      	* gcc.target/i386/mpx/realloc-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/realloc-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/realloc-2-nov.c: Remove.
      	* gcc.target/i386/mpx/realloc-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/reference-1-lbv.cpp: Remove.
      	* gcc.target/i386/mpx/reference-1-nov.cpp: Remove.
      	* gcc.target/i386/mpx/reference-1-ubv.cpp: Remove.
      	* gcc.target/i386/mpx/reference-2-lbv.cpp: Remove.
      	* gcc.target/i386/mpx/reference-2-nov.cpp: Remove.
      	* gcc.target/i386/mpx/reference-2-ubv.cpp: Remove.
      	* gcc.target/i386/mpx/reference-3-lbv.cpp: Remove.
      	* gcc.target/i386/mpx/reference-3-nov.cpp: Remove.
      	* gcc.target/i386/mpx/reference-3-ubv.cpp: Remove.
      	* gcc.target/i386/mpx/reference-4-lbv.cpp: Remove.
      	* gcc.target/i386/mpx/reference-4-nov.cpp: Remove.
      	* gcc.target/i386/mpx/reference-4-ubv.cpp: Remove.
      	* gcc.target/i386/mpx/return-pointer-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/return-pointer-1-nov.c: Remove.
      	* gcc.target/i386/mpx/return-pointer-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-1-nov.c: Remove.
      	* gcc.target/i386/mpx/return-struct-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-2-nov.c: Remove.
      	* gcc.target/i386/mpx/return-struct-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-3-lbv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-3-nov.c: Remove.
      	* gcc.target/i386/mpx/return-struct-3-ubv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-4-lbv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-4-nov.c: Remove.
      	* gcc.target/i386/mpx/return-struct-4-ubv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-5-lbv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-5-nov.c: Remove.
      	* gcc.target/i386/mpx/return-struct-5-ubv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-6-lbv.c: Remove.
      	* gcc.target/i386/mpx/return-struct-6-nov.c: Remove.
      	* gcc.target/i386/mpx/return-struct-6-ubv.c: Remove.
      	* gcc.target/i386/mpx/sincos-1-nov.c: Remove.
      	* gcc.target/i386/mpx/static-array-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/static-array-1-nov.c: Remove.
      	* gcc.target/i386/mpx/static-array-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/static-init-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/static-init-1-nov.c: Remove.
      	* gcc.target/i386/mpx/static-init-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/static-init-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/static-init-2-nov.c: Remove.
      	* gcc.target/i386/mpx/static-init-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/static-init-3-lbv.c: Remove.
      	* gcc.target/i386/mpx/static-init-3-nov.c: Remove.
      	* gcc.target/i386/mpx/static-init-3-ubv.c: Remove.
      	* gcc.target/i386/mpx/static-init-4-lbv.c: Remove.
      	* gcc.target/i386/mpx/static-init-4-nov.c: Remove.
      	* gcc.target/i386/mpx/static-init-4-ubv.c: Remove.
      	* gcc.target/i386/mpx/static-init-5-lbv.c: Remove.
      	* gcc.target/i386/mpx/static-init-5-nov.c: Remove.
      	* gcc.target/i386/mpx/static-init-5-ubv.c: Remove.
      	* gcc.target/i386/mpx/static-init-6-lbv.c: Remove.
      	* gcc.target/i386/mpx/static-init-6-nov.c: Remove.
      	* gcc.target/i386/mpx/static-init-6-ubv.c: Remove.
      	* gcc.target/i386/mpx/static-string-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/static-string-1-nov.c: Remove.
      	* gcc.target/i386/mpx/static-string-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-1-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-10-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-10-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-10-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-2-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-3-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-3-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-3-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-4-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-4-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-4-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-5-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-5-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-5-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-6-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-6-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-6-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-7-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-7-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-7-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-8-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-8-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-8-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-9-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-9-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-arg-9-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-copy-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-copy-1-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-copy-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/struct-copy-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/struct-copy-2-nov.c: Remove.
      	* gcc.target/i386/mpx/struct-copy-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/thread-local-var-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/thread-local-var-1-nov.c: Remove.
      	* gcc.target/i386/mpx/thread-local-var-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/union-arg-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/union-arg-1-nov.c: Remove.
      	* gcc.target/i386/mpx/union-arg-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/va-arg-pack-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/va-arg-pack-1-nov.c: Remove.
      	* gcc.target/i386/mpx/va-arg-pack-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/va-arg-pack-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/va-arg-pack-2-nov.c: Remove.
      	* gcc.target/i386/mpx/va-arg-pack-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/vararg-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/vararg-1-nov.c: Remove.
      	* gcc.target/i386/mpx/vararg-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/vararg-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/vararg-2-nov.c: Remove.
      	* gcc.target/i386/mpx/vararg-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/vararg-3-lbv.c: Remove.
      	* gcc.target/i386/mpx/vararg-3-nov.c: Remove.
      	* gcc.target/i386/mpx/vararg-3-ubv.c: Remove.
      	* gcc.target/i386/mpx/vararg-4-lbv.c: Remove.
      	* gcc.target/i386/mpx/vararg-4-nov.c: Remove.
      	* gcc.target/i386/mpx/vararg-4-ubv.c: Remove.
      	* gcc.target/i386/mpx/vararg-5-lbv.c: Remove.
      	* gcc.target/i386/mpx/vararg-5-nov.c: Remove.
      	* gcc.target/i386/mpx/vararg-5-ubv.c: Remove.
      	* gcc.target/i386/mpx/vararg-6-lbv.c: Remove.
      	* gcc.target/i386/mpx/vararg-6-nov.c: Remove.
      	* gcc.target/i386/mpx/vararg-6-ubv.c: Remove.
      	* gcc.target/i386/mpx/vararg-7-lbv.c: Remove.
      	* gcc.target/i386/mpx/vararg-7-nov.c: Remove.
      	* gcc.target/i386/mpx/vararg-7-ubv.c: Remove.
      	* gcc.target/i386/mpx/vararg-8-lbv.c: Remove.
      	* gcc.target/i386/mpx/vararg-8-nov.c: Remove.
      	* gcc.target/i386/mpx/vararg-8-ubv.c: Remove.
      	* gcc.target/i386/mpx/vla-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/vla-1-nov.c: Remove.
      	* gcc.target/i386/mpx/vla-1-ubv.c: Remove.
      	* gcc.target/i386/mpx/vla-2-lbv.c: Remove.
      	* gcc.target/i386/mpx/vla-2-nov.c: Remove.
      	* gcc.target/i386/mpx/vla-2-ubv.c: Remove.
      	* gcc.target/i386/mpx/vla-trailing-1-lbv.c: Remove.
      	* gcc.target/i386/mpx/vla-trailing-1-nov.c: Remove.
      	* gcc.target/i386/mpx/vla-trailing-1-ubv.c: Remove.
      	* gcc.target/i386/pr63995-2.c: Remove.
      	* gcc.target/i386/pr64805.c: Remove.
      	* gcc.target/i386/pr65044.c: Remove.
      	* gcc.target/i386/pr65167.c: Remove.
      	* gcc.target/i386/pr65183.c: Remove.
      	* gcc.target/i386/pr65184.c: Remove.
      	* gcc.target/i386/pr65523.c: Remove.
      	* gcc.target/i386/pr70876.c: Remove.
      	* gcc.target/i386/pr70877.c: Remove.
      	* gcc.target/i386/pr71458.c: Remove.
      	* gcc.target/i386/pr80880.c: Remove.
      	* gcc.target/i386/ret-thunk-25.c: Remove.
      	* gcc.target/i386/thunk-retbnd.c: Remove.
      	* lib/mpx-dg.exp: Remove.
      	* gcc.target/i386/funcspec-56.inc: Adjust test case.
      
      From-SVN: r261304
      Martin Liska committed
  11. 03 Apr, 2018 1 commit
  12. 02 Mar, 2018 1 commit
    • re PR rtl-optimization/84614 (wrong code with u16->u128 extension at aarch64… · ec2d7121
      re PR rtl-optimization/84614 (wrong code with u16->u128 extension at aarch64 -fno-split-wide-types -g3 --param=max-combine-insns=3)
      
      	PR target/84614
      	* rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
      	prototypes.
      	* emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
      	comments.
      	(next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
      	* cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
      	instead of a loop around prev_real_insn.
      	* combine.c (move_deaths): Use prev_real_nondebug_insn instead of
      	prev_real_insn.
      
      	* gcc.dg/pr84614.c: New test.
      
      From-SVN: r258129
      Jakub Jelinek committed
  13. 09 Feb, 2018 1 commit
    • [IEPM] Introduce inline entry point markers · 58006663
      Output DW_AT_entry_pc based on markers.
      
      Introduce DW_AT_GNU_entry_view as a DWARF extension.
      
      If views are enabled are we're not in strict compliance mode, output
      DW_AT_GNU_entry_view if it might be nonzero.
      
      This patch depends on SFN and LVU patchsets, and on the IEPM patch that
      introduces the inline_entry debug hook.
      
      for  include/ChangeLog
      
      	* dwarf2.def (DW_AT_GNU_entry_view): New.
      
      for  gcc/ChangeLog
      
      	* cfgexpand.c (expand_gimple_basic_block): Handle inline entry
      	markers.
      	* dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
      	(BLOCK_INLINE_ENTRY_LABEL): New.
      	(dwarf2out_var_location): Disregard inline entry markers.
      	(inline_entry_data): New struct.
      	(inline_entry_data_hasher): New hashtable type.
      	(inline_entry_data_hasher::hash): New.
      	(inline_entry_data_hasher::equal): New.
      	(inline_entry_data_table): New variable.
      	(add_high_low_attributes): Add DW_AT_entry_pc and
      	DW_AT_GNU_entry_view attributes if a pending entry is found
      	in inline_entry_data_table.  Add old entry_pc attribute only
      	if debug nonbinding markers are disabled.
      	(gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
      	markers are enabled.
      	(block_within_block_p, dwarf2out_inline_entry): New.
      	(dwarf2out_finish): Check that no entries remained in
      	inline_entry_data_table.
      	* final.c (reemit_insn_block_notes): Handle inline entry notes.
      	(final_scan_insn, notice_source_line): Likewise.
      	(rest_of_clean_state): Skip inline entry markers.
      	* gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
      	markers.
      	* gimple.c (gimple_build_debug_inline_entry): New.
      	* gimple.h (enum gimple_debug_subcode): Add
      	GIMPLE_DEBUG_INLINE_ENTRY.
      	(gimple_build_debug_inline_entry): Declare.
      	(gimple_debug_inline_entry_p): New.
      	(gimple_debug_nonbind_marker_p): Adjust.
      	* insn-notes.def (INLINE_ENTRY): New.
      	* print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
      	inline entry marker notes.
      	(print_insn): Likewise.
      	* rtl.h	(NOTE_MARKER_P): Add INLINE_ENTRY support.
      	(INSN_DEBUG_MARKER_KIND): Likewise.
      	(GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
      	* tree-inline.c	(expand_call_inline): Build and insert
      	debug_inline_entry stmt.
      	* tree-ssa-live.c (remove_unused_scope_block_p): Preserve
      	inline entry blocks early, if nonbind markers are enabled.
      	(dump_scope_block): Dump fragment info.
      	* var-tracking.c (reemit_marker_as_note): Handle inline entry note.
      	* doc/gimple.texi (gimple_debug_inline_entry_p): New.
      	(gimple_build_debug_inline_entry): New.
      	* doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
      	Enable/disable inline entry points too.
      	* doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
      	(DEBUG_INSN): Describe inline entry markers.
      
      From-SVN: r257511
      Alexandre Oliva committed
  14. 10 Jan, 2018 1 commit
    • Mostly revert r254296 · 2072a319
      r254296 added support for (const ...) wrappers around vectors,
      but in the end the agreement was to use a variable-length
      encoding of CONST_VECTOR (and VECTOR_CST) instead.  This patch
      therefore reverts the bits that are no longer needed.
      
      The rtl.texi part isn't a full revert, since r254296 also updated the
      documentation to mention unspecs in address calculations, and to relax
      the requirement that the mode had to be Pmode.
      
      2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* doc/rtl.texi: Remove documentation of (const ...) wrappers
      	for vectors, as a partial revert of r254296.
      	* rtl.h (const_vec_p): Delete.
      	(const_vec_duplicate_p): Don't test for vector CONSTs.
      	(unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
      	* expmed.c (make_tree): Likewise.
      
      	Revert:
      	* common.md (E, F): Use CONSTANT_P instead of checking for
      	CONST_VECTOR.
      	* emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
      	checking for CONST_VECTOR.
      
      From-SVN: r256421
      Richard Sandiford committed
  15. 06 Jan, 2018 1 commit
  16. 03 Jan, 2018 3 commits
    • poly_int: GET_MODE_PRECISION · bb94ec76
      This patch changes GET_MODE_PRECISION from an unsigned short
      to a poly_uint16.
      
      2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* machmode.h (mode_precision): Change from unsigned short to
      	poly_uint16_pod.
      	(mode_to_precision): Return a poly_uint16 rather than an unsigned
      	short.
      	(GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
      	or if measurement_type is not polynomial.
      	(HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
      	in which the mode is already known to be a scalar_int_mode.
      	* genmodes.c (emit_mode_precision): Change the type of mode_precision
      	from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
      	initializer.
      	* lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
      	for GET_MODE_PRECISION.
      	* lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
      	for GET_MODE_PRECISION.
      	* combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
      	as polynomial.
      	(try_combine, find_split_point, combine_simplify_rtx): Likewise.
      	(expand_field_assignment, make_extraction): Likewise.
      	(make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
      	(get_last_value): Likewise.
      	* convert.c (convert_to_integer_1): Likewise.
      	* cse.c (cse_insn): Likewise.
      	* expr.c (expand_expr_real_1): Likewise.
      	* lra-constraints.c (simplify_operand_subreg): Likewise.
      	* optabs-query.c (can_atomic_load_p): Likewise.
      	* optabs.c (expand_atomic_load): Likewise.
      	(expand_atomic_store): Likewise.
      	* ree.c (combine_reaching_defs): Likewise.
      	* rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
      	* rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
      	* tree.h (type_has_mode_precision_p): Likewise.
      	* ubsan.c (instrument_si_overflow): Likewise.
      
      gcc/ada/
      	* gcc-interface/misc.c (enumerate_modes): Treat GET_MODE_PRECISION
      	as polynomial.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r256198
      Richard Sandiford committed
    • re PR debug/83645 (ICE: in get_insn_template, at final.c:2100 with -gstatement-frontiers) · e3a174d0
      	PR debug/83645
      	* var-tracking.c (delete_vta_debug_insn): New inline function.
      	(delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
      	insns from get_insns () to NULL instead of each bb separately.
      	Use delete_vta_debug_insn.  No longer static.
      	(vt_debug_insns_local, variable_tracking_main_1): Adjust
      	delete_vta_debug_insns callers.
      	* rtl.h (delete_vta_debug_insns): Declare.
      	* final.c (rest_of_handle_final): Call delete_vta_debug_insns
      	instead of variable_tracking_main.
      
      	* gcc.dg/pr83645.c: New test.
      
      From-SVN: r256189
      Jakub Jelinek committed
    • Update copyright years. · 85ec4feb
      From-SVN: r256169
      Jakub Jelinek committed
  17. 02 Jan, 2018 2 commits
    • Make CONST_VECTOR_ELT handle implicitly-encoded elements · cd5ff7bc
      This patch makes CONST_VECTOR_ELT handle implicitly-encoded elements,
      in a similar way to VECTOR_CST_ELT.
      
      2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
      	(const_vector_encoded_nelts): New function.
      	(CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
      	(const_vector_int_elt, const_vector_elt): Declare.
      	* emit-rtl.c (const_vector_int_elt_1): New function.
      	(const_vector_elt): Likewise.
      	* simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
      	of CONST_VECTOR_ELT.
      
      From-SVN: r256104
      Richard Sandiford committed
    • New CONST_VECTOR layout · 3877c560
      This patch makes CONST_VECTOR use the same encoding as VECTOR_CST.
      
      One problem that occurs in RTL but not at the tree level is that a fair
      amount of code uses XVEC and XVECEXP directly on CONST_VECTORs (which is
      valid, just with looser checking).  This is complicated by the fact that
      vectors are also represented as PARALLELs in some target interfaces,
      so using XVECEXP is a good polymorphic way of handling both forms.
      
      Rather than try to untangle all that, the best approach seemed to be to
      continue to encode every element in a fixed-length vector.  That way only
      target-independent and AArch64 code need to be precise about using
      CONST_VECTOR_ELT over XVECEXP.
      
      After this change is no longer valid to modify CONST_VECTORs in-place.
      This needed some fix-up in the powerpc backends.
      
      2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* doc/rtl.texi (const_vector): Describe new encoding scheme.
      	* Makefile.in (OBJS): Add rtx-vector-builder.o.
      	* rtx-vector-builder.h: New file.
      	* rtx-vector-builder.c: Likewise.
      	* rtl.h (rtx_def::u2): Add a const_vector field.
      	(CONST_VECTOR_NPATTERNS): New macro.
      	(CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
      	(CONST_VECTOR_DUPLICATE_P): Likewise.
      	(CONST_VECTOR_STEPPED_P): Likewise.
      	(CONST_VECTOR_ENCODED_ELT): Likewise.
      	(const_vec_duplicate_p): Check for a duplicated vector encoding.
      	(unwrap_const_vec_duplicate): Likewise.
      	(const_vec_series_p): Check for a non-duplicated vector encoding.
      	Say that the function only returns true for integer vectors.
      	* emit-rtl.c: Include rtx-vector-builder.h.
      	(gen_const_vec_duplicate_1): Delete.
      	(gen_const_vector): Call gen_const_vec_duplicate instead of
      	gen_const_vec_duplicate_1.
      	(const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
      	(gen_const_vec_duplicate): Use rtx_vector_builder.
      	(gen_const_vec_series): Likewise.
      	(gen_rtx_CONST_VECTOR): Likewise.
      	* config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
      	(swap_const_vector_halves): Take an rtx pointer rather than rtx.
      	Build a new vector rather than modifying a CONST_VECTOR in-place.
      	(handle_special_swappables): Update call accordingly.
      	* config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
      	(swap_const_vector_halves): Take an rtx pointer rather than rtx.
      	Build a new vector rather than modifying a CONST_VECTOR in-place.
      	(handle_special_swappables): Update call accordingly.
      
      From-SVN: r256102
      Richard Sandiford committed
  18. 21 Dec, 2017 1 commit
    • poly_int: REG_ARGS_SIZE · 68184180
      This patch adds new utility functions for manipulating REG_ARGS_SIZE
      notes and allows the notes to carry polynomial as well as constant sizes.
      
      The code was inconsistent about whether INT_MIN or HOST_WIDE_INT_MIN
      should be used to represent an unknown size.  The patch uses
      HOST_WIDE_INT_MIN throughout.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* rtl.h (get_args_size, add_args_size_note): New functions.
      	(find_args_size_adjust): Return a poly_int64 rather than a
      	HOST_WIDE_INT.
      	(fixup_args_size_notes): Likewise.  Make the same change to the
      	end_args_size parameter.
      	* rtlanal.c (get_args_size, add_args_size_note): New functions.
      	* builtins.c (expand_builtin_trap): Use add_args_size_note.
      	* calls.c (emit_call_1): Likewise.
      	* explow.c (adjust_stack_1): Likewise.
      	* cfgcleanup.c (old_insns_match_p): Update use of
      	find_args_size_adjust.
      	* combine.c (distribute_notes): Track polynomial arg sizes.
      	* dwarf2cfi.c (dw_trace_info): Change beg_true_args_size,
      	end_true_args_size, beg_delay_args_size and end_delay_args_size
      	from HOST_WIDE_INT to poly_int64.
      	(add_cfi_args_size): Take the args_size as a poly_int64 rather
      	than a HOST_WIDE_INT.
      	(notice_args_size, notice_eh_throw, maybe_record_trace_start)
      	(maybe_record_trace_start_abnormal, scan_trace, connect_traces): Track
      	polynomial arg sizes.
      	* emit-rtl.c (try_split): Use get_args_size.
      	* recog.c (peep2_attempt): Likewise.
      	* reload1.c (reload_as_needed): Likewise.
      	* expr.c (find_args_size_adjust): Return the adjustment as a
      	poly_int64 rather than a HOST_WIDE_INT.
      	(fixup_args_size_notes): Change end_args_size from a HOST_WIDE_INT
      	to a poly_int64 and change the return type in the same way.
      	(emit_single_push_insn): Track polynomial arg sizes.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255919
      Richard Sandiford committed
  19. 20 Dec, 2017 6 commits
    • poly_int: operand_subword · fdbfe4e5
      This patch makes operand_subword and operand_subword_force take
      polynomial offsets.  This is a fairly old-school interface and
      these days should only be used when splitting multiword operations
      into word operations.  It still doesn't hurt to support polynomial
      offsets and it helps make callers easier to write.
      
      2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* rtl.h (operand_subword, operand_subword_force): Take the offset
      	as a poly_uint64 an unsigned int.
      	* emit-rtl.c (operand_subword, operand_subword_force): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255883
      Richard Sandiford committed
    • poly_int: SUBREG_BYTE · 91914e56
      This patch changes SUBREG_BYTE from an int to a poly_int.
      Since valid SUBREG_BYTEs must be contained within the mode of the
      SUBREG_REG, the required range is the same as for GET_MODE_SIZE,
      i.e. unsigned short.  The patch therefore uses poly_uint16(_pod)
      for the SUBREG_BYTE.
      
      Using poly_uint16_pod rtx fields requires a new field code ('p').
      Since there are no other uses of 'p' besides SUBREG_BYTE, the patch
      doesn't add an XPOLY or whatever; all uses should go via SUBREG_BYTE
      instead.
      
      The patch doesn't bother implementing 'p' support for legacy
      define_peepholes, since none of the remaining ones have subregs
      in their patterns.
      
      As it happened, the rtl documentation used SUBREG as an example of a
      code with mixed field types, accessed via XEXP (x, 0) and XINT (x, 1).
      Since there's no direct replacement for XINT, and since people should
      never use it even if there were, the patch changes the example to use
      INT_LIST instead.
      
      The patch also changes subreg-related helper functions so that they too
      take and return polynomial offsets.  This makes the patch quite big, but
      it's mostly mechanical.  The patch generally sticks to existing choices
      wrt signedness.
      
      2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* doc/rtl.texi: Update documentation of SUBREG_BYTE.  Document the
      	'p' format code.  Use INT_LIST rather than SUBREG as the example of
      	a code with an XINT and an XEXP.  Remove the implication that
      	accessing an rtx field using XINT is expected to work.
      	* rtl.def (SUBREG): Change format from "ei" to "ep".
      	* rtl.h (rtunion::rt_subreg): New field.
      	(XCSUBREG): New macro.
      	(SUBREG_BYTE): Use it.
      	(subreg_shape): Change offset from an unsigned int to a poly_uint16.
      	Update constructor accordingly.
      	(subreg_shape::operator ==): Update accordingly.
      	(subreg_shape::unique_id): Return an unsigned HOST_WIDE_INT rather
      	than an unsigned int.
      	(subreg_lsb, subreg_lowpart_offset, subreg_highpart_offset): Return
      	a poly_uint64 rather than an unsigned int.
      	(subreg_lsb_1): Likewise.  Take the offset as a poly_uint64 rather
      	than an unsigned int.
      	(subreg_size_offset_from_lsb, subreg_size_lowpart_offset)
      	(subreg_size_highpart_offset): Return a poly_uint64 rather than
      	an unsigned int.  Take the sizes as poly_uint64s.
      	(subreg_offset_from_lsb): Return a poly_uint64 rather than
      	an unsigned int.  Take the shift as a poly_uint64 rather than
      	an unsigned int.
      	(subreg_regno_offset, subreg_offset_representable_p): Take the offset
      	as a poly_uint64 rather than an unsigned int.
      	(simplify_subreg_regno): Likewise.
      	(byte_lowpart_offset): Return the memory offset as a poly_int64
      	rather than an int.
      	(subreg_memory_offset): Likewise.  Take the subreg offset as a
      	poly_uint64 rather than an unsigned int.
      	(simplify_subreg, simplify_gen_subreg, subreg_get_info)
      	(gen_rtx_SUBREG, validate_subreg): Take the subreg offset as a
      	poly_uint64 rather than an unsigned int.
      	* rtl.c (rtx_format): Describe 'p' in comment.
      	(copy_rtx, rtx_equal_p_cb, rtx_equal_p): Handle 'p'.
      	* emit-rtl.c (validate_subreg, gen_rtx_SUBREG): Take the subreg
      	offset as a poly_uint64 rather than an unsigned int.
      	(byte_lowpart_offset): Return the memory offset as a poly_int64
      	rather than an int.
      	(subreg_memory_offset): Likewise.  Take the subreg offset as a
      	poly_uint64 rather than an unsigned int.
      	(subreg_size_lowpart_offset, subreg_size_highpart_offset): Take the
      	mode sizes as poly_uint64s rather than unsigned ints.  Return a
      	poly_uint64 rather than an unsigned int.
      	(subreg_lowpart_p): Treat subreg offsets as poly_ints.
      	(copy_insn_1): Handle 'p'.
      	* rtlanal.c (set_noop_p): Treat subregs offsets as poly_uint64s.
      	(subreg_lsb_1): Take the subreg offset as a poly_uint64 rather than
      	an unsigned int.  Return the shift in the same way.
      	(subreg_lsb): Return the shift as a poly_uint64 rather than an
      	unsigned int.
      	(subreg_size_offset_from_lsb): Take the sizes and shift as
      	poly_uint64s rather than unsigned ints.  Return the offset as
      	a poly_uint64.
      	(subreg_get_info, subreg_regno_offset, subreg_offset_representable_p)
      	(simplify_subreg_regno): Take the offset as a poly_uint64 rather than
      	an unsigned int.
      	* rtlhash.c (add_rtx): Handle 'p'.
      	* genemit.c (gen_exp): Likewise.
      	* gengenrtl.c (type_from_format, gendef): Likewise.
      	* gensupport.c (subst_pattern_match, get_alternatives_number)
      	(collect_insn_data, alter_predicate_for_insn, alter_constraints)
      	(subst_dup): Likewise.
      	* gengtype.c (adjust_field_rtx_def): Likewise.
      	* genrecog.c (find_operand, find_matching_operand, validate_pattern)
      	(match_pattern_2): Likewise.
      	(rtx_test::SUBREG_FIELD): New rtx_test::kind_enum.
      	(rtx_test::subreg_field): New function.
      	(operator ==, safe_to_hoist_p, transition_parameter_type)
      	(print_nonbool_test, print_test): Handle SUBREG_FIELD.
      	* genattrtab.c (attr_rtx_1): Say that 'p' is deliberately not handled.
      	* genpeep.c (match_rtx): Likewise.
      	* print-rtl.c (print_poly_int): Include if GENERATOR_FILE too.
      	(rtx_writer::print_rtx_operand): Handle 'p'.
      	(print_value): Handle SUBREG.
      	* read-rtl.c (apply_int_iterator): Likewise.
      	(rtx_reader::read_rtx_operand): Handle 'p'.
      	* alias.c (rtx_equal_for_memref_p): Likewise.
      	* cselib.c (rtx_equal_for_cselib_1, cselib_hash_rtx): Likewise.
      	* caller-save.c (replace_reg_with_saved_mem): Treat subreg offsets
      	as poly_ints.
      	* calls.c (expand_call): Likewise.
      	* combine.c (combine_simplify_rtx, expand_field_assignment): Likewise.
      	(make_extraction, gen_lowpart_for_combine): Likewise.
      	* loop-invariant.c (hash_invariant_expr_1, invariant_expr_equal_p):
      	Likewise.
      	* cse.c (remove_invalid_subreg_refs): Take the offset as a poly_uint64
      	rather than an unsigned int.  Treat subreg offsets as poly_ints.
      	(exp_equiv_p): Handle 'p'.
      	(hash_rtx_cb): Likewise.  Treat subreg offsets as poly_ints.
      	(equiv_constant, cse_insn): Treat subreg offsets as poly_ints.
      	* dse.c (find_shift_sequence): Likewise.
      	* dwarf2out.c (rtl_for_decl_location): Likewise.
      	* expmed.c (extract_low_bits): Likewise.
      	* expr.c (emit_group_store, undefined_operand_subword_p): Likewise.
      	(expand_expr_real_2): Likewise.
      	* final.c (alter_subreg): Likewise.
      	(leaf_renumber_regs_insn): Handle 'p'.
      	* function.c (assign_parm_find_stack_rtl, assign_parm_setup_stack):
      	Treat subreg offsets as poly_ints.
      	* fwprop.c (forward_propagate_and_simplify): Likewise.
      	* ifcvt.c (noce_emit_move_insn, noce_emit_cmove): Likewise.
      	* ira.c (get_subreg_tracking_sizes): Likewise.
      	* ira-conflicts.c (go_through_subreg): Likewise.
      	* ira-lives.c (process_single_reg_class_operands): Likewise.
      	* jump.c (rtx_renumbered_equal_p): Likewise.  Handle 'p'.
      	* lower-subreg.c (simplify_subreg_concatn): Take the subreg offset
      	as a poly_uint64 rather than an unsigned int.
      	(simplify_gen_subreg_concatn, resolve_simple_move): Treat
      	subreg offsets as poly_ints.
      	* lra-constraints.c (operands_match_p): Handle 'p'.
      	(match_reload, curr_insn_transform): Treat subreg offsets as poly_ints.
      	* lra-spills.c (assign_mem_slot): Likewise.
      	* postreload.c (move2add_valid_value_p): Likewise.
      	* recog.c (general_operand, indirect_operand): Likewise.
      	* regcprop.c (copy_value, maybe_mode_change): Likewise.
      	(copyprop_hardreg_forward_1): Likewise.
      	* reginfo.c (simplifiable_subregs_hasher::hash, simplifiable_subregs)
      	(record_subregs_of_mode): Likewise.
      	* rtlhooks.c (gen_lowpart_general, gen_lowpart_if_possible): Likewise.
      	* reload.c (operands_match_p): Handle 'p'.
      	(find_reloads_subreg_address): Treat subreg offsets as poly_ints.
      	* reload1.c (alter_reg, choose_reload_regs): Likewise.
      	(compute_reload_subreg_offset): Likewise, and return an poly_int64.
      	* simplify-rtx.c (simplify_truncation, simplify_binary_operation_1):
      	(test_vector_ops_duplicate): Treat subreg offsets as poly_ints.
      	(simplify_const_poly_int_tests<N>::run): Likewise.
      	(simplify_subreg, simplify_gen_subreg): Take the subreg offset as
      	a poly_uint64 rather than an unsigned int.
      	* valtrack.c (debug_lowpart_subreg): Likewise.
      	* var-tracking.c (var_lowpart): Likewise.
      	(loc_cmp): Handle 'p'.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255882
      Richard Sandiford committed
    • poly_int: extract_bit_field bitrange · fc60a416
      Similar to the previous store_bit_field patch, but for extractions
      rather than insertions.  The patch splits out the extraction-as-subreg
      handling into a new function (extract_bit_field_as_subreg), both for
      ease of writing and because a later patch will add another caller.
      
      The simplify_gen_subreg overload is temporary; it goes away
      in a later patch.
      
      2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* rtl.h (simplify_gen_subreg): Add a temporary overload that
      	accepts poly_uint64 offsets.
      	* expmed.h (extract_bit_field): Take bitsize and bitnum as
      	poly_uint64s rather than unsigned HOST_WIDE_INTs.
      	* expmed.c (lowpart_bit_field_p): Likewise.
      	(extract_bit_field_as_subreg): New function, split out from...
      	(extract_bit_field_1): ...here.  Take bitsize and bitnum as
      	poly_uint64s rather than unsigned HOST_WIDE_INTs.  For vector
      	extractions, check that BITSIZE matches the size of the extracted
      	value and that BITNUM is an exact multiple of that size.
      	If all else fails, try forcing the value into memory if
      	BITNUM is variable, and adjusting the address so that the
      	offset is constant.  Split the part that can only handle constant
      	bitsize and bitnum out into...
      	(extract_integral_bit_field): ...this new function.
      	(extract_bit_field): Take bitsize and bitnum as poly_uint64s
      	rather than unsigned HOST_WIDE_INTs.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255878
      Richard Sandiford committed
    • poly_int: MEM_OFFSET and MEM_SIZE · d05d7551
      This patch changes the MEM_OFFSET and MEM_SIZE memory attributes
      from HOST_WIDE_INT to poly_int64.  Most of it is mechanical,
      but there is one nonbovious change in widen_memory_access.
      Previously the main while loop broke with:
      
            /* Similarly for the decl.  */
            else if (DECL_P (attrs.expr)
                     && DECL_SIZE_UNIT (attrs.expr)
                     && TREE_CODE (DECL_SIZE_UNIT (attrs.expr)) == INTEGER_CST
                     && compare_tree_int (DECL_SIZE_UNIT (attrs.expr), size) >= 0
                     && (! attrs.offset_known_p || attrs.offset >= 0))
              break;
      
      but it seemed wrong to optimistically assume the best case
      when the offset isn't known (and thus might be negative).
      As it happens, the "! attrs.offset_known_p" condition was
      always false, because we'd already nullified attrs.expr in
      that case:
      
        /* If we don't know what offset we were at within the expression, then
           we can't know if we've overstepped the bounds.  */
        if (! attrs.offset_known_p)
          attrs.expr = NULL_TREE;
      
      The patch therefore drops "! attrs.offset_known_p ||" when
      converting the offset check to the may/must interface.
      
      2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* rtl.h (mem_attrs): Add a default constructor.  Change size and
      	offset from HOST_WIDE_INT to poly_int64.
      	* emit-rtl.h (set_mem_offset, set_mem_size, adjust_address_1)
      	(adjust_automodify_address_1, set_mem_attributes_minus_bitpos)
      	(widen_memory_access): Take the sizes and offsets as poly_int64s
      	rather than HOST_WIDE_INTs.
      	* alias.c (ao_ref_from_mem): Handle the new form of MEM_OFFSET.
      	(offset_overlap_p): Take poly_int64s rather than HOST_WIDE_INTs
      	and ints.
      	(adjust_offset_for_component_ref): Change the offset from a
      	HOST_WIDE_INT to a poly_int64.
      	(nonoverlapping_memrefs_p): Track polynomial offsets and sizes.
      	* cfgcleanup.c (merge_memattrs): Update after mem_attrs changes.
      	* dce.c (find_call_stack_args): Likewise.
      	* dse.c (record_store): Likewise.
      	* dwarf2out.c (tls_mem_loc_descriptor, dw_sra_loc_expr): Likewise.
      	* print-rtl.c (rtx_writer::print_rtx): Likewise.
      	* read-rtl-function.c (test_loading_mem): Likewise.
      	* rtlanal.c (may_trap_p_1): Likewise.
      	* simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
      	* var-tracking.c (int_mem_offset, track_expr_p): Likewise.
      	* emit-rtl.c (mem_attrs_eq_p, get_mem_align_offset): Likewise.
      	(mem_attrs::mem_attrs): New function.
      	(set_mem_attributes_minus_bitpos): Change bitpos from a
      	HOST_WIDE_INT to poly_int64.
      	(set_mem_alias_set, set_mem_addr_space, set_mem_align, set_mem_expr)
      	(clear_mem_offset, clear_mem_size, change_address)
      	(get_spill_slot_decl, set_mem_attrs_for_spill): Directly
      	initialize mem_attrs.
      	(set_mem_offset, set_mem_size, adjust_address_1)
      	(adjust_automodify_address_1, offset_address, widen_memory_access):
      	Likewise.  Take poly_int64s rather than HOST_WIDE_INT.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255875
      Richard Sandiford committed
    • poly_int: REG_OFFSET · 84bc717b
      This patch changes the type of the reg_attrs offset field
      from HOST_WIDE_INT to poly_int64 and updates uses accordingly.
      This includes changing reg_attr_hasher::hash to use inchash.
      (Doing this has no effect on code generation since the only
      use of the hasher is to avoid creating duplicate objects.)
      
      2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
                  Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64.
      	(gen_rtx_REG_offset): Take the offset as a poly_int64.
      	* inchash.h (inchash::hash::add_poly_hwi): New function.
      	* gengtype.c (main): Register poly_int64.
      	* emit-rtl.c (reg_attr_hasher::hash): Use inchash.  Treat the
      	offset as a poly_int.
      	(reg_attr_hasher::equal): Use must_eq to compare offsets.
      	(get_reg_attrs, update_reg_offset, gen_rtx_REG_offset): Take the
      	offset as a poly_int64.
      	(set_reg_attrs_from_value): Treat the offset as a poly_int64.
      	* print-rtl.c (print_poly_int): New function.
      	(rtx_writer::print_rtx_operand_code_r): Treat REG_OFFSET as
      	a poly_int.
      	* var-tracking.c (track_offset_p, get_tracked_reg_offset): New
      	functions.
      	(var_reg_set, var_reg_delete_and_set, var_reg_delete): Use them.
      	(same_variable_part_p, track_loc_p): Take the offset as a poly_int64.
      	(vt_get_decl_and_offset): Return the offset as a poly_int64.
      	Enforce track_offset_p for parts of a PARALLEL.
      	(vt_add_function_parameter): Use const_offset for the final
      	offset to track.  Use get_tracked_reg_offset for the parts
      	of a PARALLEL.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255867
      Richard Sandiford committed
    • poly_int: rtx constants · 0c12fc9b
      This patch adds an rtl representation of poly_int values.
      There were three possible ways of doing this:
      
      (1) Add a new rtl code for the poly_ints themselves and store the
          coefficients as trailing wide_ints.  This would give constants like:
      
            (const_poly_int [c0 c1 ... cn])
      
          The runtime value would be:
      
            c0 + c1 * x1 + ... + cn * xn
      
      (2) Like (1), but use rtxes for the coefficients.  This would give
          constants like:
      
            (const_poly_int [(const_int c0)
                             (const_int c1)
                             ...
                             (const_int cn)])
      
          although the coefficients could be const_wide_ints instead
          of const_ints where appropriate.
      
      (3) Add a new rtl code for the polynomial indeterminates,
          then use them in const wrappers.  A constant like c0 + c1 * x1
          would then look like:
      
            (const:M (plus:M (mult:M (const_param:M x1)
                                     (const_int c1))
                             (const_int c0)))
      
      There didn't seem to be that much to choose between them.  The main
      advantage of (1) is that it's a more efficient representation and
      that we can refer to the cofficients directly as wide_int_storage.
      
      2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* doc/rtl.texi (const_poly_int): Document.  Also document the
      	rtl sharing behavior.
      	* gengenrtl.c (excluded_rtx): Return true for CONST_POLY_INT.
      	* rtl.h (const_poly_int_def): New struct.
      	(rtx_def::u): Add a cpi field.
      	(CASE_CONST_UNIQUE, CASE_CONST_ANY): Add CONST_POLY_INT.
      	(CONST_POLY_INT_P, CONST_POLY_INT_COEFFS): New macros.
      	(wi::rtx_to_poly_wide_ref): New typedef
      	(const_poly_int_value, wi::to_poly_wide, rtx_to_poly_int64)
      	(poly_int_rtx_p): New functions.
      	(trunc_int_for_mode): Declare a poly_int64 version.
      	(plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
      	(immed_wide_int_const): Take a poly_wide_int_ref rather than
      	a wide_int_ref.
      	(strip_offset): Declare.
      	(strip_offset_and_add): New function.
      	* rtl.def (CONST_POLY_INT): New rtx code.
      	* rtl.c (rtx_size): Handle CONST_POLY_INT.
      	(shared_const_p): Use poly_int_rtx_p.
      	* emit-rtl.h (gen_int_mode): Take a poly_int64 instead of a
      	HOST_WIDE_INT.
      	(gen_int_shift_amount): Likewise.
      	* emit-rtl.c (const_poly_int_hasher): New class.
      	(const_poly_int_htab): New variable.
      	(init_emit_once): Initialize it when NUM_POLY_INT_COEFFS > 1.
      	(const_poly_int_hasher::hash): New function.
      	(const_poly_int_hasher::equal): Likewise.
      	(gen_int_mode): Take a poly_int64 instead of a HOST_WIDE_INT.
      	(immed_wide_int_const): Rename to...
      	(immed_wide_int_const_1): ...this and make static.
      	(immed_wide_int_const): New function, taking a poly_wide_int_ref
      	instead of a wide_int_ref.
      	(gen_int_shift_amount): Take a poly_int64 instead of a HOST_WIDE_INT.
      	(gen_lowpart_common): Handle CONST_POLY_INT.
      	* cse.c (hash_rtx_cb, equiv_constant): Likewise.
      	* cselib.c (cselib_hash_rtx): Likewise.
      	* dwarf2out.c (const_ok_for_output_1): Likewise.
      	* expr.c (convert_modes): Likewise.
      	* print-rtl.c (rtx_writer::print_rtx, print_value): Likewise.
      	* rtlhash.c (add_rtx): Likewise.
      	* explow.c (trunc_int_for_mode): Add a poly_int64 version.
      	(plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
      	Handle existing CONST_POLY_INT rtxes.
      	* expmed.h (expand_shift): Take a poly_int64 instead of a
      	HOST_WIDE_INT.
      	* expmed.c (expand_shift): Likewise.
      	* rtlanal.c (strip_offset): New function.
      	(commutative_operand_precedence): Give CONST_POLY_INT the same
      	precedence as CONST_DOUBLE and put CONST_WIDE_INT between that
      	and CONST_INT.
      	* rtl-tests.c (const_poly_int_tests): New struct.
      	(rtl_tests_c_tests): Use it.
      	* simplify-rtx.c (simplify_const_unary_operation): Handle
      	CONST_POLY_INT.
      	(simplify_const_binary_operation): Likewise.
      	(simplify_binary_operation_1): Fold additions of symbolic constants
      	and CONST_POLY_INTs.
      	(simplify_subreg): Handle extensions and truncations of
      	CONST_POLY_INTs.
      	(simplify_const_poly_int_tests): New struct.
      	(simplify_rtx_c_tests): Use it.
      	* wide-int.h (storage_ref): Add default constructor.
      	(wide_int_ref_storage): Likewise.
      	(trailing_wide_ints): Use GTY((user)).
      	(trailing_wide_ints::operator[]): Add a const version.
      	(trailing_wide_ints::get_precision): New function.
      	(trailing_wide_ints::extra_size): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255862
      Richard Sandiford committed
  20. 12 Dec, 2017 3 commits
    • [SFN] Introduce -gstatement-frontiers option, enable debug markers · 8697bf9f
      Introduce a command line option to enable statement frontiers, enabled
      by default in optimized builds with DWARF2+ debug information.
      
      This patch depends on an earlier patch that completed the
      infrastructure for debug markers, and on another patch that turns -g
      into a negatable option prefix.
      
      for  gcc/ChangeLog
      
      	* common.opt (gstatement-frontiers): New, setting
      	debug_nonbind_markers_p.
      	* rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
      	* toplev.c (process_options): Autodetect value for debug statement
      	frontiers option.
      	* tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
      	* doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.
      
      From-SVN: r255569
      Alexandre Oliva committed
    • [SFN] boilerplate changes in preparation to introduce nonbind markers · 36f52e8f
      This patch introduces a number of new macros and functions that will
      be used to distinguish between different kinds of debug stmts, insns
      and notes, namely, preexisting debug bind ones and to-be-introduced
      nonbind markers.
      
      In a seemingly mechanical way, it adjusts several uses of the macros
      and functions, so that they refer to narrower categories when
      appropriate.
      
      These changes, by themselves, should not have any visible effect in
      the compiler behavior, since the upcoming debug markers are never
      created with this patch alone.
      
      for  gcc/ChangeLog
      
      	* gimple.h (enum gimple_debug_subcode): Add
      	GIMPLE_DEBUG_BEGIN_STMT.
      	(gimple_debug_begin_stmt_p): New.
      	(gimple_debug_nonbind_marker_p): New.
      	* tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New.
      	(MAY_HAVE_DEBUG_BIND_STMTS): Renamed from....
      	(MAY_HAVE_DEBUG_STMTS): ... this.  Check both.
      	* insn-notes.def (BEGIN_STMT): New.
      	* rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New.
      	(MAY_HAVE_DEBUG_BIND_INSNS): Renamed from....
      	(MAY_HAVE_DEBUG_INSNS): ... this.  Check both.
      	(NOTE_MARKER_LOCATION, NOTE_MARKER_P): New.
      	(DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New.
      	(INSN_DEBUG_MARKER_KIND): New.
      	(GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New.
      	(INSN_VAR_LOCATION): Check for VAR_LOCATION.
      	(INSN_VAR_LOCATION_PTR): New.
      	* cfgexpand.c (expand_debug_locations): Handle debug bind insns
      	only.
      	(expand_gimple_basic_block): Likewise.  Emit debug temps for TER
      	deps only if debug bind insns are enabled.
      	(pass_expand::execute): Avoid deep TER and expand
      	debug locations for debug bind insns only.
      	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow
      	debug stmts special handling down to debug bind stmts.
      	* combine.c (try_combine): Narrow debug insns special handling
      	down to debug bind insns.
      	* cse.c (delete_trivially_dead_insns): Handle debug bindings.
      	Narrow debug insns preexisting special handling down to debug
      	bind insns.
      	* dce.c (rest_of_handle_ud_dce): Narrow debug insns special
      	handling down to debug bind insns.
      	* function.c (instantiate_virtual_regs): Skip debug markers,
      	adjust handling of debug binds.
      	* gimple-ssa-backprop.c (backprop::prepare_change): Try debug
      	temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS.
      	* haifa-sched.c (schedule_insn): Narrow special handling of debug
      	insns to debug bind insns.
      	* ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow
      	special handling of debug stmts to debug bind stmts.
      	* ipa-split.c (split_function): Likewise.
      	* ira.c (combine_and_move_insns): Adjust debug bind insns only.
      	* loop-unroll.c (apply_opt_in_copies): Adjust tests on bind
      	debug insns.
      	* reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P.
      	* regrename.c (build_def_use): Likewise.
      	* regcprop.c (copyprop_hardreg_forward_1): Likewise.
      	(pass_cprop_hardreg): Narrow special casing of debug insns to
      	debug bind insns.
      	* regstat.c (regstat_init_n_sets_and_refs): Likewise.
      	* reload1.c (reload): Likewise.
      	* sese.c (sese_insert_phis_for_liveouts): Narrow special
      	casing of debug stmts to debug bind stmts.
      	* shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
      	* ssa-iterators.h (num_imm_uses): Likewise.
      	* tree-cfg.c (gimple_merge_blocks): Narrow special casing of
      	debug stmts to debug bind stmts.
      	* tree-inline.c	(tree_function_versioning): Narrow special casing
      	of debug stmts to debug bind stmts.
      	* tree-loop-distribution.c (generate_loops_for_partition):
      	Narrow special casing of debug stmts to debug bind stmts.
      	* tree-sra.c (analyze_access_subtree): Narrow special casing
      	of debug stmts to debug bind stmts.
      	* tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug
      	stmts to debug bind stmts.
      	* tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special
      	casing of debug stmts to debug bind stmts.
      	* tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise.
      	* tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special
      	casing of debug stmts to debug bind stmts.
      	* tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
      	Likewise.
      	* tree-ssa.c (flush_pending_stmts): Narrow special casing of
      	debug stmts to debug bind stmts.
      	(gimple_replace_ssa_lhs): Likewise.
      	(insert_debug_temp_for_var_def): Likewise.
      	(insert_debug_temps_for_defs): Likewise.
      	(reset_debug_uses): Likewise.
      	* tree-ssanames.c (release_ssa_name_fn): Likewise.
      	* tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise.
      	(adjust_debug_stmts): Likewise.
      	(adjust_phi_and_debug_stmts): Likewise.
      	(vect_do_peeling): Likewise.
      	* tree-vect-loop.c (vect_transform_loop): Likewise.
      	* valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P.
      	* var-tracking.c (adjust_mems): Narrow special casing of debug
      	insns to debug bind insns.
      	(dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise.
      	(compute_bb_dataflow, vt_find_locations): Likewise.
      	(vt_expand_loc, emit_notes_for_changes): Likewise.
      	(vt_init_cfa_base): Likewise.
      	(vt_emit_notes): Likewise.
      	(vt_initialize): Likewise.
      	(vt_finalize): Likewise.
      
      From-SVN: r255565
      Alexandre Oliva committed
    • [SFN] adjust RTL insn-walking API · f40dd646
      This patch removes unused RTL functions, introduces alternate ones for
      use in a later SFN patch, and regroups other related functions so that
      they appear in a more consistent order.
      
      for  gcc/ChangeLog
      
      	* emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder.
      	(next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder.
      	(next_nonnote_nondebug_insn_bb): New.
      	(prev_nonnote_nondebug_insn_bb): New.
      	(prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
      	* rtl.h	(prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls.
      	(prev_nonnote_nondebug_insn_bb): Declare.
      	(next_nonnote_nondebug_insn_bb): Declare.
      	* cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns.
      	* cfgrtl.c (get_last_bb_insn): Likewise.
      	* lra.c (push_insns): Likewise.
      
      From-SVN: r255564
      Alexandre Oliva committed
  21. 01 Nov, 2017 5 commits
    • Add narrower_subreg_mode helper function · b3ad445f
      This patch adds a narrowing equivalent of wider_subreg_mode.  At present
      there is only one user.
      
      2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* rtl.h (narrower_subreg_mode): New function.
      	* ira-color.c (update_costs_from_allocno): Use it.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254304
      Richard Sandiford committed
    • Add a fixed_size_mode class · ef1d3b57
      This patch adds a fixed_size_mode machine_mode wrapper
      for modes that are known to have a fixed size.  That applies
      to all current modes, but future patches will add support for
      variable-sized modes.
      
      The use of this class should be pretty restricted.  One important
      use case is to hold the mode of static data, which can never be
      variable-sized with current file formats.  Another is to hold
      the modes of registers involved in __builtin_apply and
      __builtin_result, since those interfaces don't cope well with
      variable-sized data.
      
      The class can also be useful when reinterpreting the contents of
      a fixed-length bit string as a different kind of value.
      
      2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* machmode.h (fixed_size_mode): New class.
      	* rtl.h (get_pool_mode): Return fixed_size_mode.
      	* gengtype.c (main): Add fixed_size_mode.
      	* target.def (get_raw_result_mode): Return a fixed_size_mode.
      	(get_raw_arg_mode): Likewise.
      	* doc/tm.texi: Regenerate.
      	* targhooks.h (default_get_reg_raw_mode): Return a fixed_size_mode.
      	* targhooks.c (default_get_reg_raw_mode): Likewise.
      	* config/ia64/ia64.c (ia64_get_reg_raw_mode): Likewise.
      	* config/mips/mips.c (mips_get_reg_raw_mode): Likewise.
      	* config/msp430/msp430.c (msp430_get_raw_arg_mode): Likewise.
      	(msp430_get_raw_result_mode): Likewise.
      	* config/avr/avr-protos.h (regmask): Use as_a <fixed_side_mode>
      	* dbxout.c (dbxout_parms): Require fixed-size modes.
      	* expr.c (copy_blkmode_from_reg, copy_blkmode_to_reg): Likewise.
      	* gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
      	* omp-low.c (lower_oacc_reductions): Likewise.
      	* simplify-rtx.c (simplify_immed_subreg): Take fixed_size_modes.
      	(simplify_subreg): Update accordingly.
      	* varasm.c (constant_descriptor_rtx::mode): Change to fixed_size_mode.
      	(force_const_mem): Update accordingly.  Return NULL_RTX for modes
      	that aren't fixed-size.
      	(get_pool_mode): Return a fixed_size_mode.
      	(output_constant_pool_2): Take a fixed_size_mode.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254300
      Richard Sandiford committed
    • Add a VEC_SERIES rtl code · ef339d6e
      This patch adds an rtl representation of a vector linear series
      of the form:
      
        a[I] = BASE + I * STEP
      
      Like vec_duplicate;
      
      - the new rtx can be used for both constant and non-constant vectors
      - when used for constant vectors it is wrapped in a (const ...)
      - the constant form is only used for variable-length vectors;
        fixed-length vectors still use CONST_VECTOR
      
      At the moment the code is restricted to integer elements, to avoid
      concerns over floating-point rounding.
      
      2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* doc/rtl.texi (vec_series): Document.
      	(const): Say that the operand can be a vec_series.
      	* rtl.def (VEC_SERIES): New rtx code.
      	* rtl.h (const_vec_series_p_1): Declare.
      	(const_vec_series_p): New function.
      	* emit-rtl.h (gen_const_vec_series): Declare.
      	(gen_vec_series): Likewise.
      	* emit-rtl.c (const_vec_series_p_1, gen_const_vec_series)
      	(gen_vec_series): Likewise.
      	* optabs.c (expand_mult_highpart): Use gen_const_vec_series.
      	* simplify-rtx.c (simplify_unary_operation): Handle negations
      	of vector series.
      	(simplify_binary_operation_series): New function.
      	(simplify_binary_operation_1): Use it.  Handle VEC_SERIES.
      	(test_vector_ops_series): New function.
      	(test_vector_ops): Call it.
      	* config/powerpcspe/altivec.md (altivec_lvsl): Use
      	gen_const_vec_series.
      	(altivec_lvsr): Likewise.
      	* config/rs6000/altivec.md (altivec_lvsl, altivec_lvsr): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254297
      Richard Sandiford committed
    • Allow vector CONSTs · 06ec586d
      This patch allows (const ...) wrappers to be used for rtx vector
      constants, as an alternative to const_vector.  This is useful
      for SVE, where the number of elements isn't known until runtime.
      
      It could also be useful in future for fixed-length vectors, to
      reduce the amount of memory needed to represent simple constants
      with high element counts.  However, one nice thing about keeping
      it restricted to variable-length vectors is that there is never
      any need to handle combinations of (const ...) and CONST_VECTOR.
      
      2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* doc/rtl.texi (const): Update description of address constants.
      	Say that vector constants are allowed too.
      	* common.md (E, F): Use CONSTANT_P instead of checking for
      	CONST_VECTOR.
      	* emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
      	checking for CONST_VECTOR.
      	* expmed.c (make_tree): Use build_vector_from_val for a CONST
      	VEC_DUPLICATE.
      	* expr.c (expand_expr_real_2): Check for vector modes instead
      	of checking for CONST_VECTOR.
      	* rtl.h (const_vec_p): New function.
      	(const_vec_duplicate_p): Check for a CONST VEC_DUPLICATE.
      	(unwrap_const_vec_duplicate): Handle them here too.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254296
      Richard Sandiford committed
    • Add more vec_duplicate simplifications · 9b1de7e2
      This patch adds a vec_duplicate_p helper that tests for constant
      or non-constant vector duplicates.  Together with the existing
      const_vec_duplicate_p, this complements the gen_vec_duplicate
      and gen_const_vec_duplicate added by a previous patch.
      
      The patch uses the new routines to add more rtx simplifications
      involving vector duplicates.  These mirror simplifications that
      we already do for CONST_VECTOR broadcasts and are needed for
      variable-length SVE, which uses:
      
        (const:M (vec_duplicate:M X))
      
      to represent constant broadcasts instead.  The simplifications do
      trigger on the testsuite for variable duplicates too, and in each
      case I saw the change was an improvement.
      
      The best way of testing the new simplifications seemed to be
      via selftests.  The patch cribs part of David's patch here:
      https://gcc.gnu.org/ml/gcc-patches/2016-07/msg00270.html .
      
      2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
      	    David Malcolm  <dmalcolm@redhat.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* rtl.h (vec_duplicate_p): New function.
      	* selftest-rtl.c (assert_rtx_eq_at): New function.
      	* selftest-rtl.h (ASSERT_RTX_EQ): New macro.
      	(assert_rtx_eq_at): Declare.
      	* selftest.h (selftest::simplify_rtx_c_tests): Declare.
      	* selftest-run-tests.c (selftest::run_tests): Call it.
      	* simplify-rtx.c: Include selftest.h and selftest-rtl.h.
      	(simplify_unary_operation_1): Recursively handle vector duplicates.
      	(simplify_binary_operation_1): Likewise.  Handle VEC_SELECTs of
      	vector duplicates.
      	(simplify_subreg): Handle subregs of vector duplicates.
      	(make_test_reg, test_vector_ops_duplicate, test_vector_ops)
      	(selftest::simplify_rtx_c_tests): New functions.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Malcolm <dmalcolm@redhat.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254294
      Richard Sandiford committed
  22. 26 Oct, 2017 1 commit
    • Add wider_subreg_mode helper functions · bd5a2c67
      This patch adds helper functions that say which of the two modes
      involved in a subreg is the larger, preferring the outer mode in
      the event of a tie.  It also converts IRA and reload to track modes
      instead of byte sizes, since this is slightly more convenient when
      variable-sized modes are added later.
      
      2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* rtl.h (wider_subreg_mode): New function.
      	* ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode *
      	rather than an unsigned int *.
      	* ira-color.c (regno_max_ref_width): Replace with...
      	(regno_max_ref_mode): ...this new variable.
      	(coalesced_pseudo_reg_slot_compare): Update accordingly.
      	Use wider_subreg_mode.
      	(ira_sort_regnos_for_alter_reg): Likewise.  Take a machine_mode *
      	rather than an unsigned int *.
      	* lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode.
      	(process_alt_operands): Likewise.
      	(invariant_p): Likewise.
      	* lra-spills.c (assign_mem_slot): Likewise.
      	(add_pseudo_to_slot): Likewise.
      	* lra.c (collect_non_operand_hard_regs): Likewise.
      	(add_regs_to_insn_regno_info): Likewise.
      	* reload1.c (regno_max_ref_width): Replace with...
      	(regno_max_ref_mode): ...this new variable.
      	(reload): Update accordingly.  Update call to
      	ira_sort_regnos_for_alter_reg.
      	(alter_reg): Update to use regno_max_ref_mode.  Call wider_subreg_mode.
      	(init_eliminable_invariants): Update to use regno_max_ref_mode.
      	(scan_paradoxical_subregs): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254115
      Richard Sandiford committed
  23. 09 Oct, 2017 1 commit
    • Replace insn_rtx_cost with insn_cost and pattern_cost · d09e78e8
      This replaces insn_rtx_cost with insn_cost if an insn is readily
      available, and with pattern_cost otherwise.
      
      
      	* cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with
      	insn_cost.
      	* combine.c (uid_insn_cost): Adjust comment.
      	(combine_validate_cost): Adjust comment.  Use pattern_cost instead
      	of insn_rtx_cost
      	(combine_instructions): Use insn_cost instead of insn_rtx_cost.
      	* dse.c (find_shift_sequence): Ditto.
      	* ifcvt.c (cheap_bb_rtx_cost_p): Ditto.
      	(bb_valid_for_noce_process_p): Use pattern_cost.
      	* rtl.h (insn_rtx_cost): Delete.
      	(pattern_cost): New prototype.
      	(insn_cost): New prototype.
      	* rtlanal.c (insn_rtx_cost): Rename to...
      	(pattern_cost): ... this.
      	(insn_cost): New.
      
      From-SVN: r253560
      Segher Boessenkool committed