Commit Graph

133976 Commits

Author SHA1 Message Date
Martin Liska d862b3439d re PR ipa/63580 (ICE : error: invalid argument to gimple call)
PR ipa/63580
        * cgraphunit.c (cgraph_node::create_wrapper):
	TREE_ADDRESSABLE is set to false for a newly created thunk.
	* g++.dg/ipa/pr63580.C: New test.

From-SVN: r217222
2014-11-07 13:37:41 +00:00
Joseph Myers 6343f5d75b * ja.po: Update.
From-SVN: r217220
2014-11-07 12:45:36 +00:00
Martin Liska fdaaeea1b6 re PR tree-optimization/63747 (icf mis-compares switch gimple)
PR ipa/63747
	* gcc.dg/ipa/pr63747.c: New test.
	* ipa-icf-gimple.c (func_checker::compare_gimple_switch):
	Missing checking for CASE_LOW and CASE_HIGH added.

From-SVN: r217219
2014-11-07 12:35:43 +00:00
Martin Liska 8c14c817f3 re PR tree-optimization/63595 (Segmentation faults inside kernel)
PR ipa/63595
	* g++.dg/ipa/pr63595.C: New test.

	* cgraphunit.c (cgraph_node::expand_thunk): DECL_BY_REFERENCE
	is correctly handled for thunks created by IPA ICF.

From-SVN: r217218
2014-11-07 12:32:30 +00:00
Jiong Wang 8c00ba08c6 [PATCH] PR63676, exit tree fold when node be TREE_CLOBBER_P
gcc/
    PR tree-optimization/63676
    * gimple-fold.c (fold_gimple_assign): Do not fold node when
    TREE_CLOBBER_P be true.

From-SVN: r217215
2014-11-07 11:08:30 +00:00
Richard Biener ad6f996c03 re PR middle-end/63770 (ICE on valid code at all optimization levels on x86_64-linux-gnu)
2014-11-07  Richard Biener  <rguenther@suse.de>

	PR middle-end/63770
	* match.pd: Guard conflicting GENERIC pattern properly.

	* gcc.dg/pr63770.c: New testcase.

From-SVN: r217214
2014-11-07 10:51:06 +00:00
Richard Biener a499aac5df match.pd: Add patterns for POINTER_PLUS_EXPR association and special patterns from...
2014-11-07  Richard Biener  <rguenther@suse.de>

	* match.pd: Add patterns for POINTER_PLUS_EXPR association
	and special patterns from tree-ssa-forwprop.c
	* fold-const.c (fold_binary_loc): Remove them here.
	* tree-ssa-forwprop.c (to_purge): New global bitmap.
	(fwprop_set_lattice_val): New function.
	(fwprop_invalidate_lattice): Likewise.
	(remove_prop_source_from_use): Instead of purging dead EH
	edges record blocks to do that in to_purge.
	(tidy_after_forward_propagate_addr): Likewise.
	(forward_propagate_addr_expr): Invalidate the lattice for
	SSA names we release.
	(simplify_conversion_from_bitmask): Likewise.
	(simplify_builtin_call): Likewise.
	(associate_pointerplus_align): Remove.
	(associate_pointerplus_diff): Likewise.
	(associate_pointerplus): Likewise.
	(fold_all_stmts): Merge with ...
	(pass_forwprop::execute): ... the original loop over all
	basic-blocks.  Delay purging dead EH edges and invalidate
	the lattice for SSA names we release.

From-SVN: r217213
2014-11-07 09:00:32 +00:00
Marat Zakirov a8cfbbdc74 mklog: Always doubt in functions.
contrib/

2014-11-07  Marat Zakirov  <m.zakirov@samsung.com>

	* mklog: Always doubt in functions.  
	Add EOF protection.

From-SVN: r217212
2014-11-07 08:15:19 +00:00
Terry Guo decfc6e113 arm.opt (masm-syntax-unified): New option.
gcc/ChangeLog:
2014-11-07  Terry Guo  <terry.guo@arm.com>

	* config/arm/arm.opt (masm-syntax-unified): New option.
	* doc/invoke.texi (-masm-syntax-unified): Document new option.
	* config/arm/arm.h (TARGET_UNIFIED_ASM): Also include thumb1.
	(ASM_APP_ON): Redefined.
	* config/arm/arm.c (arm_option_override): Thumb2 inline assembly
	code always use UAL syntax.
	(arm_output_mi_thunk): Use UAL syntax for Thumb1 target.
	* config/arm/thumb1.md: Likewise.

gcc/testsuite/ChangeLog:
2014-11-07  Terry Guo  <terry.guo@arm.com>

	* gcc.target/arm/anddi_notdi-1.c: Match with UAL format.
	* gcc.target/arm/pr40956.c: Likewise.
	* gcc.target/arm/thumb1-Os-mult.c: Likewise.
	* gcc.target/arm/thumb1-load-64bit-constant-3.c: Likewise.
	* gcc.target/arm/scd42-1.c: Likewise.

From-SVN: r217211
2014-11-07 03:02:29 +00:00
John David Anglin efb1c0d318 pa.md (trap): New insn.
* config/pa/pa.md (trap): New insn.  Add "trap" to attribute type.
	Don't allow trap insn in in_branch_delay, in_nullified_branch_delay
	or in_call_delay.

From-SVN: r217208
2014-11-07 00:50:44 +00:00
GCC Administrator 35e9ff39f9 Daily bump.
From-SVN: r217207
2014-11-07 00:16:27 +00:00
Steve Ellcey 8cfebf8687 config.gcc (mips*-mti-linux*): Remove gnu_ld and gas assignments.
2014-11-06  Steve Ellcey  <sellcey@imgtec.com>

	* config.gcc (mips*-mti-linux*): Remove gnu_ld and gas assignments.
	Set default_mips_arch and default_mips_abi instead of tm_defines.
	(mips*-*-linux*): Set default_mips_arch and default_mips_abi instead
	of tm_defines.
	(mips*-*-*): Check with_arch and with_abi.  Set tm_defines.
	* config/mips/mips.h (STANDARD_STARTFILE_PREFIX_1): Set default
	based on MIPS_ABI_DEFAULT.
	(STANDARD_STARTFILE_PREFIX_2): Ditto.

From-SVN: r217203
2014-11-06 22:29:39 +00:00
Joseph Myers be5ffc59ad Preserve original spellings of extended identifiers.
This patch makes cpplib track the original spellings of extended
identifiers, as well as the canonical UTF-8 version, in order to
follow standard semantics properly without needing a convoluted and
undocumented canonicalization in translation phase 1 (see bug 9449
comments 39-46 regarding such a canonicalization).

The spelling is tracked in cpp_identifier and cpp_macro_arg without
making cpp_token any larger.  The original spelling is used for checks
of duplicate macro definitions, stringizing (see the C++ tests added;
this case is only an issue for C++ not C because C makes it
implementation-defined whether a \ is inserted before the \ of a UCN
in a string or character constant when stringizing, while C++ does
not), pasting (relevant when the result is then stringized for C++)
and when macro definitions are output as text (e.g. for -d options).

Once a macro has been defined, only the original spelling of the
argument names needs keeping in the argument list.  While it is being
defined, however, both spellings are needed: the original one for
subsequent saving for checks of duplicate macro definitions, and the
canonical one which is the node marked specially to generate macro
argument tokens rather than normal identifier tokens.  The buffer that
is used to save the original values of the identifier tokens is
changed so that it stores both those original values and a pointer to
the canonical hash nodes, so that those canonical nodes can be found
when their values need restoring after the macro definition has been
parsed.

I believe this covers the known standards issues in extended
identifiers support (the remaining unimplemented C99 areas in GCC all
being floating-point-related), except for C++ translation of extended
characters to UCNs in phase 1 (which I have no plans to work on).
There are however probably issues left with handling of extended
identifiers in other places, as listed in
<https://gcc.gnu.org/ml/gcc-patches/2014-11/msg00337.html> (those
issues are generally the sort of thing that could be addressed as bugs
outside development stage 1).  (The bulk of the potential issues Zack
was concerned about in 2003-5, that resulted in extended identifiers
being disabled in the absence of -fextended-identifiers, were
effectively eliminated by the audit and fixes I did in 2009, however;
that todo list reflects what was left over after that audit.)

Bootstrapped with no regressions on x86_64-unknown-linux-gnu.

libcpp:
	* include/cpp-id-data.h (struct cpp_macro): Update comment
	regarding parameters.
	* include/cpplib.h (struct cpp_macro_arg, struct cpp_identifier):
	Add spelling fields.
	(struct cpp_token): Update comment on macro_arg.
	* internal.h (_cpp_save_parameter): Add extra argument.
	(_cpp_spell_ident_ucns): New declaration.
	* lex.c (lex_identifier): Add SPELLING argument.  Set *SPELLING to
	original spelling of identifier.
	(_cpp_lex_direct): Update calls to lex_identifier.
	(_cpp_spell_ident_ucns): New function, factored out of
	cpp_spell_token.
	(cpp_spell_token): Adjust FORSTRING argument semantics to return
	original spelling of identifiers.  Use _cpp_spell_ident_ucns in
	!FORSTRING case.
	(_cpp_equiv_tokens): Check spellings of identifiers and macro
	arguments are identical.
	* macro.c (macro_arg_saved_data): New structure.
	(paste_tokens): Use original spellings of identifiers from
	cpp_spell_token.
	(_cpp_save_parameter): Add argument SPELLING.  Save both canonical
	node and its value.
	(parse_params): Update calls to _cpp_save_parameter.
	(lex_expansion_token): Save spelling of macro argument tokens.
	(_cpp_create_definition): Extract canonical node from saved data.
	(cpp_macro_definition): Use UCNs in spelling of macro name.  Use
	original spellings of macro argument tokens and identifiers.
	* traditional.c (scan_parameters): Update call to
	_cpp_save_parameter.

gcc:
	* doc/invoke.texi (-std=c99, -std=c11): Don't refer to corner
	cases of extended identifiers.

gcc/testsuite:
	* g++.dg/cpp/ucnid-2.C, g++.dg/cpp/ucnid-3.C,
	gcc.dg/cpp/ucnid-11.c, gcc.dg/cpp/ucnid-12.c,
	gcc.dg/cpp/ucnid-13.c, gcc.dg/cpp/ucnid-14.c,
	gcc.dg/cpp/ucnid-15.c: New tests.

From-SVN: r217202
2014-11-06 21:08:52 +00:00
Eric Botcazou 2f1b0141be * tree-cfgcleanup.c (fixup_noreturn_call): Do not perform DCE here.
From-SVN: r217201
2014-11-06 20:13:18 +00:00
DJ Delorie 45d898e429 cond.md (movqicc_<code>_<mode>): Remove mode of conditional.
* config/m32c/cond.md (movqicc_<code>_<mode>): Remove mode of
conditional.
(movhicc_<code>_<mode>): Likewise.
* config/m32c/m32c.c (encode_pattern_1): Specialise PSImode
subregs.
(m32c_eh_return_data_regno): Change to using memregs to avoid
tying up all the compute regs.
(m32c_legitimate_address_p) Subregs are not valid addresses.

From-SVN: r217200
2014-11-06 12:57:15 -05:00
Bernd Schmidt 2f21e1ba46 Add a hook to inform a port about call arguments.
* target.def (call_args, end_call_args): New hooks.
	* hooks.c (hook_void_rtx_tree): New empty function.
	* hooks.h (hook_void_rtx_tree): Declare.
	* doc/tm.texi.in (TARGET_CALL_ARGS, TARGET_END_CALL_ARGS): Add.
	* doc/tm.texi: Regenerate.
	* calls.c (expand_call): Slightly rearrange the code.  Use the two new
	hooks.
	(expand_library_call_value_1): Use the two new hooks.

From-SVN: r217199
2014-11-06 17:20:13 +00:00
Bernd Schmidt 11717c64bf Allow a port to use pseudos as call args; don't put them in the fusage.
* expr.c (use_reg_mode): Just return for pseudo registers.

From-SVN: r217198
2014-11-06 17:20:05 +00:00
Bernd Schmidt 9cb6671480 Don't combine calls into i3, it wouldn't be changed into a CALL_INSN.
* combine.c (try_combine): Don't allow a call as one of the source
	insns.

From-SVN: r217197
2014-11-06 17:19:57 +00:00
Bernd Schmidt dc2af904c9 Add a new asm hook to print the end of a variable definition.
* target.def (decl_end): New hook.
	* varasm.c (assemble_variable_contents, assemble_constant_contents):
	Use it.
	* doc/tm.texi.in (TARGET_ASM_DECL_END): Add.
	* doc/tm.texi: Regenerate.

From-SVN: r217196
2014-11-06 17:19:48 +00:00
Dominik Vogt 4ad4ebfeae runtime: Use stckf unconditionally on s390.
2014-11-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* libgo/runtime/runtime.c (runtime_cputicks): s390: use stckf
unconditionally

From-SVN: r217195
2014-11-06 17:00:13 +00:00
Dominik Vogt 5c2648fb01 mksysinfo: Tolerate missing structures in upcase_fields.
2014-11-06  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* libgo/mksysinfo.sh: Tolerate missing structures.

From-SVN: r217194
2014-11-06 16:44:32 +00:00
Renlin Li 0c6caaf8b4 [AArch64] Add ACLE arch-related predefined macros
2014-11-06  Renlin Li  <renlin.li@arm.com>

	* config/aarch64/aarch64.c (aarch64_architecture_version): New.
	(processor): New architecture_version field.
	(aarch64_override_options): Initialize aarch64_architecture_version.
	* config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_ARCH,
	__ARM_ARCH_PROFILE, aarch64_arch_name macro.

From-SVN: r217192
2014-11-06 14:41:52 +00:00
James Greenhalgh 5a6bc9c718 [Patchv3] Control SRA and IPA-SRA by a param rather than MOVE_RATIO
gcc/

	* params.def (sra-max-scalarization-size-Ospeed): New.
	(sra-max-scalarization-size-Osize): Likewise.
	* doc/invoke.texi (sra-max-scalarization-size-Ospeed): Document.
	(sra-max-scalarization-size-Osize): Likewise.
	* toplev.c (process_options): Set default values for new
	parameters.
	* tree-sra.c (analyze_all_variable_accesses): Use new parameters.
	* targhooks.c (get_move_ratio): Remove static designator.
	* target.h (get_move_ratio): Declare.

From-SVN: r217191
2014-11-06 14:18:52 +00:00
Marek Polacek 34896cd612 sanopt.c (sanopt_optimize_walker): Limit removal of the checks.
* sanopt.c (sanopt_optimize_walker): Limit removal of the checks.
	Remove vector limit.
testsuite/
	* c-c++-common/ubsan/align-2.c: Add dg-output.
	* c-c++-common/ubsan/align-4.c: Likewise.
	* c-c++-common/ubsan/align-6.c: New test.
	* c-c++-common/ubsan/align-7.c: New test.
	* c-c++-common/ubsan/align-8.c: New test.
	* g++.dg/ubsan/null-1.C: Add dg-output.
	* g++.dg/ubsan/null-2.C: Likewise.
	* g++.dg/ubsan/null-3.C: New test.
	* g++.dg/ubsan/null-4.C: New test.
	* g++.dg/ubsan/null-5.C: New test.

From-SVN: r217189
2014-11-06 11:22:59 +00:00
Ilya Tocar 32dee76568 Correctly check dg-require-effective-target in avx512 tests.
gcc/testsuite

	* gcc.target/i386/avx512vl-vandnpd-2.c: Fix
	dg-require-effective-target check.
	* gcc.target/i386/avx512vl-vandnps-2.c: Ditto.
	* gcc.target/i386/avx512vl-vandpd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vandps-2.c: Ditto.
	* gcc.target/i386/avx512vl-vbroadcastf32x2-2.c: Ditto.
	* gcc.target/i386/avx512vl-vbroadcastf32x4-2.c: Ditto.
	* gcc.target/i386/avx512vl-vbroadcastf64x2-2.c: Ditto.
	* gcc.target/i386/avx512vl-vbroadcasti32x2-2.c: Ditto.
	* gcc.target/i386/avx512vl-vbroadcasti32x4-2.c: Ditto.
	* gcc.target/i386/avx512vl-vbroadcasti64x2-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvtpd2qq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvtpd2uqq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvtps2qq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvtps2uqq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvtqq2pd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvtqq2ps-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvttpd2qq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvttpd2uqq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvttps2qq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvttps2uqq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvtuqq2pd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vcvtuqq2ps-2.c: Ditto.
	* gcc.target/i386/avx512vl-vdbpsadbw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vextractf64x2-2.c: Ditto.
	* gcc.target/i386/avx512vl-vextracti64x2-2.c: Ditto.
	* gcc.target/i386/avx512vl-vfpclasspd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vfpclassps-2.c: Ditto.
	* gcc.target/i386/avx512vl-vinsertf64x2-2.c: Ditto.
	* gcc.target/i386/avx512vl-vinserti64x2-2.c: Ditto.
	* gcc.target/i386/avx512vl-vmovdqu16-2.c: Ditto.
	* gcc.target/i386/avx512vl-vmovdqu8-2.c: Ditto.
	* gcc.target/i386/avx512vl-vorpd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vorps-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpabsb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpabsw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpackssdw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpacksswb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpackusdw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpackuswb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpaddb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpaddsb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpaddsw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpaddusb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpaddusw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpaddw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpalignr-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpavgb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpavgw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpblendmb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpblendmw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpbroadcastb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpbroadcastw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpeqb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpequb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpequw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpeqw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpgtb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpgtub-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpgtuw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpgtw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpub-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpuw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpcmpw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpermi2w-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpermt2w-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpermw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmaddubsw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmaddwd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmaxsb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmaxsw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmaxub-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmaxuw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpminsb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpminsw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpminub-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpminuw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovb2m-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovd2m-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovm2b-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovm2d-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovm2q-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovm2w-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovq2m-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovswb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovsxbw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovuswb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovw2m-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovwb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmovzxbw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmulhrsw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmulhuw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmulhw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmullq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmullw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpshufb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpshufhw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpshuflw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsllvw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsllw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsllwi-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsravw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsraw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsrawi-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsrlvw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsrlw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsrlwi-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsubb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsubsb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsubsw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsubusb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsubusw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpsubw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vptestmb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vptestmw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vptestnmb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vptestnmw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpunpckhbw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpunpckhwd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpunpcklbw-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpunpcklwd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vrangepd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vrangeps-2.c: Ditto.
	* gcc.target/i386/avx512vl-vreducepd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vreduceps-2.c: Ditto.
	* gcc.target/i386/avx512vl-vxorpd-2.c: Ditto.
	* gcc.target/i386/avx512vl-vxorps-2.c: Ditto.

From-SVN: r217188
2014-11-06 14:01:59 +03:00
Hale Wang ac9bcc2650 Fix incorrect ChangeLog entry.
From-SVN: r217186
2014-11-06 10:57:43 +00:00
Hale Wang e673b7a36b Move testsuits ChangeLog entry to correct ChangeLog.
From-SVN: r217185
2014-11-06 10:46:58 +00:00
Ilya Enkovich b1d7d1b8c5 mpx-dg.exp: New.
gcc/testsuite/

	* lib/mpx-dg.exp: New.
	* gcc.target/i386/i386.exp: Load mpx-dg.exp.
	* gcc.target/i386/chkp-builtins-1.c: Require mpx target.
	* gcc.target/i386/chkp-builtins-2.c: Likewise.
	* gcc.target/i386/chkp-builtins-3.c: Likewise.
	* gcc.target/i386/chkp-builtins-4.c: Likewise.
	* gcc.target/i386/chkp-const-check-1.c: Likewise.
	* gcc.target/i386/chkp-const-check-2.c: Likewise.
	* gcc.target/i386/chkp-lifetime-1.c: Likewise.
	* gcc.target/i386/chkp-remove-bndint-1.c: Likewise.
	* gcc.target/i386/chkp-remove-bndint-2.c: Likewise.

From-SVN: r217180
2014-11-06 09:44:05 +00:00
Richard Biener 5609420fba match.pd: Implement bitwise binary and unary simplifications from tree-ssa-forwprop.c.
2014-11-06  Richard Biener  <rguenther@suse.de>

	* match.pd: Implement bitwise binary and unary simplifications
	from tree-ssa-forwprop.c.
	* fold-const.c (fold_unary_loc): Remove them here.
	(fold_binary_loc): Likewise.
	* tree-ssa-forwprop.c (simplify_not_neg_expr): Remove.
	(truth_valued_ssa_name): Likewise.
	(lookup_logical_inverted_value): Likewise.
	(simplify_bitwise_binary_1): Likewise.
	(hoist_conversion_for_bitop_p): Likewise.
	(simplify_bitwise_binary_boolean): Likewise.
	(simplify_bitwise_binary): Likewise.
	(pass_forwprop::execute): Remove calls to simplify_not_neg_expr
	and simplify_bitwise_binary.
	* genmatch.c (dt_node::append_true_op): Use safe_as_a for parent.
	(decision_tree::insert): Also insert non-expressions.

	* gcc.dg/tree-ssa/forwprop-28.c: Adjust scanning for the
	desired transform.

From-SVN: r217178
2014-11-06 09:07:39 +00:00
Hale Wang 45ea41fe8a arm-cores.def: Add support for -mcpu=cortex-m0.small-multiply,cortex-m0plus.small-multiply...
2014-11-06  Hale Wang  <Hale.Wang@arm.com>

	* config/arm/arm-cores.def: Add support for
	-mcpu=cortex-m0.small-multiply,cortex-m0plus.small-multiply,
	cortex-m1.small-multiply.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/arm-tune.md: Regenerate.
	* config/arm/arm.c: Update the rtx-costs for MUL.
	* config/arm/bpabi.h: Handle
	-mcpu=cortex-m0.small-multiply,cortex-m0plus.small-multiply,
	cortex-m1.small-multiply.
	* doc/invoke.texi: Document
	-mcpu=cortex-m0.small-multiply,cortex-m0plus.small-multiply,
	cortex-m1.small-multiply.
	* testsuite/gcc.target/arm/small-multiply-m0-1.c: New test case.
	* testsuite/gcc.target/arm/small-multiply-m0-2.c: Likewise.
	* testsuite/gcc.target/arm/small-multiply-m0-3.c: Likewise.
	* testsuite/gcc.target/arm/small-multiply-m0plus-1.c: Likewise.
	* testsuite/gcc.target/arm/small-multiply-m0plus-2.c: Likewise.
	* testsuite/gcc.target/arm/small-multiply-m0plus-3.c: Likewise.
	* testsuite/gcc.target/arm/small-multiply-m1-1.c: Likewise.
	* testsuite/gcc.target/arm/small-multiply-m1-2.c: Likewise.
	* testsuite/gcc.target/arm/small-multiply-m1-3.c: Likewise.

From-SVN: r217175
2014-11-06 07:02:30 +00:00
Hale Wang 3db7c8e4b4 Fix incorrect ChangeLog entry.
From-SVN: r217174
2014-11-06 06:26:27 +00:00
Hale Wang 3ff9b352df arm.c: Add cortex-m7 tune.
2014-10-11  Hale Wang  <Hale.Wang@arm.com>

	* config/arm/arm.c: Add cortex-m7 tune.
	* config/arm/arm-cores.def: Use cortex-m7 tune.

From-SVN: r217173
2014-11-06 05:38:45 +00:00
Prachi Godbole 9b591dd19f MAINTAINERS (Write After Approval): Add myself.
2014-11-06  Prachi Godbole  <prachi.godbole@imgtec.com>

	* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r217172
2014-11-06 04:42:33 +00:00
GCC Administrator 17622df0a8 Daily bump.
From-SVN: r217170
2014-11-06 00:16:24 +00:00
Matthew Fortune 5fc841e5c6 Fix all MIPS test failures caused by implicit declaration/int warnings.
gcc/testsuite/

	* gcc.target/mips/asm-1.c (bar): Add prototype.
	* gcc.target/mips/call-1.c (f, h): Add return type.
	* gcc.target/mips/call-5.c (f, h): Likewise.
	* gcc.target/mips/call-6.c (f, h): Likewise.
	* gcc.target/mips/call-3.c (f): Likewise.
	* gcc.target/mips/call-2.c (g): Add prototype.
	(f): Add return type.
	* gcc.target/mips/call-4.c: Likewise.
	* gcc.target/mips/code-readable-1.c (foo): Add type for x.
	* gcc.target/mips/code-readable-2.c (foo): Likewise.
	* gcc.target/mips/code-readable-3.c (foo): Likewise.
	* gcc.target/mips/code-readable-4.c (foo): Likewise.
	* gcc.target/mips/const-anchor-1.c (g): Add prototype.
	* gcc.target/mips/const-anchor-2.c (g): Likewise.
	* gcc.target/mips/const-anchor-3.c (g): Likewise.
	* gcc.target/mips/const-anchor-4.c (g): Likewise.
	* gcc.target/mips/interrupt_handler.c (t): Likewise.
	* gcc.target/mips/mips-nonpic/main-1.c (main): Add return type.
	* gcc.target/mips/mips-nonpic/main-2.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-3.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-4.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-5.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-6.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-7.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-8.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-9.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-10.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-11.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-12.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-13.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-14.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-15.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/main-16.c (main): Likewise.
	* gcc.target/mips/mips-nonpic/mips-nonpic.h
	(nonpic_call, nonpic_addr_call): Add prototype.
	(pic_call, pic_addr_call): Likewise.
	* gcc.target/mips/mips16e-extends.c (validate): Likewise.
	* gcc.target/mips/octeon-bbit-3.c (foo): Likewise.
	* gcc.target/mips/octeon-seq-4.c (h): Likewise.
	* gcc.target/mips/truncate-3.c (g): Add prototype.
	(f): Add return type.

From-SVN: r217167
2014-11-05 23:37:02 +00:00
Manuel López-Ibáñez 10a241382b Revert revision 217149 because it breaks Ada:
gcc/testsuite/ChangeLog:

2014-11-05  Anthony Brandon  <anthony.brandon@gmail.com>

        PR driver/36312
        * gcc.misc-tests/output.exp: New test case for identical input and
        output files.

include/ChangeLog:

2014-11-05  Anthony Brandon  <anthony.brandon@gmail.com>

        PR driver/36312
        * filenames.h: Add prototype for canonical_filename_eq.

gcc/ChangeLog:

2014-11-05  Anthony Brandon  <anthony.brandon@gmail.com>

        PR driver/36312
        * diagnostic-core.h: Add prototype for fatal_error.
        * diagnostic.c (fatal_error): New function fatal_error.
        * gcc.c (store_arg): Remove have_o_argbuf_index.
        (process_command): Check if input and output files are the same.
        * toplev.c (init_asm_output): Check if input and output files are
        the same.

libiberty/ChangeLog:

2014-11-05  Anthony Brandon  <anthony.brandon@gmail.com>

        PR driver/36312
        * filename_cmp.c (canonical_filename_eq): New function to check if
        file names are the same.
        * functions.texi: Updated with documentation for new function.

From-SVN: r217159
2014-11-05 22:17:22 +00:00
Eric Botcazou 14abf8cae1 * gnatvsn.ads (Library_Version): Bump to 5.0.
From-SVN: r217157
2014-11-05 21:04:50 +00:00
Uros Bizjak b478c0cd39 re PR target/63538 ([X86_64] With -mcmodel=medium .lrodata accesses do not use 64-bit addresses)
PR target/63538
	* config/i386/i386.c (in_large_data_p): Reject automatic variables.
	(ix86_encode_section_info): Do not check for non-automatic varibles
	when setting SYMBOL_FLAG_FAR_ADDR flag.
	(x86_64_elf_select_section): Do not check ix86_cmodel here.
	(x86_64_elf_unique_section): Ditto.
	(x86_elf_aligned_common): Emit tab before .largecomm.

testsuite/ChangeLog:

	PR target/63538
	* gcc.target/i386/pr63538.c: New test.

From-SVN: r217156
2014-11-05 22:00:07 +01:00
Eric Botcazou 2374257aff trans.c (Subprogram_Body_to_gnu): For a function with copy-in/copy-out parameters and which returns by invisible...
* gcc-interface/trans.c (Subprogram_Body_to_gnu): For a function with
	copy-in/copy-out parameters and which returns by invisible reference,
	do not create the variable for the return value; instead, manually
	generate the indirect copy out statements on exit.
	(gnat_to_gnu) <N_Simple_Return_Statement>: Adjust accordingly and build
	a simple indirect assignment for the return value.

From-SVN: r217155
2014-11-05 19:17:00 +00:00
François Dumont 6c52b7dfc4 re PR libstdc++/63698 (std::set leaks nodes on assignment)
2014-11-04  François Dumont  <fdumont@gcc.gnu.org>
	    Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/63698
	* include/bits/stl_tree.h (_Reuse_or_alloc_node): Simplify constructor.
	Always move to the left node if there is one.
	* testsuite/23_containers/set/allocator/move_assign.cc (test04): New.

Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>

From-SVN: r217154
2014-11-05 19:16:13 +00:00
Eric Botcazou e028b0bbca decl.c (gnat_to_gnu_entity): For a derived untagged type that renames discriminants...
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: For a
	derived untagged type that renames discriminants, be prepared for
	a type derived from a private discriminated type when changing the
	type of the stored discriminants.

From-SVN: r217153
2014-11-05 19:03:26 +00:00
Eric Botcazou e84314ddc5 trans.c (Handled_Sequence_Of_Statements_to_gnu): Set the SLOC of the node on the call to set_jmpbuf_address_soft emitted on...
* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): Set
	the SLOC of the node on the call to set_jmpbuf_address_soft emitted
	on block entry with SJLJ.

From-SVN: r217152
2014-11-05 18:52:07 +00:00
Eric Botcazou 87411e95ef utils.c (create_subprog_decl): Move code dealing with conflicting inlining status of nested subprograms to...
* gcc-interface/utils.c (create_subprog_decl): Move code dealing with
	conflicting inlining status of nested subprograms to...
	* gcc-interface/trans.c (check_inlining_for_nested_subprog): ...here.
	(Attribute_to_gnu) <Attr_Access>: Call it.
	(Call_to_gnu): Likewise.
	(Subprogram_Body_to_gnu): Drop the body if it is an inlined external
	function that has been marked uninlinable.

From-SVN: r217151
2014-11-05 18:47:04 +00:00
Anthony Brandon 9c7a77fcc3 re PR driver/36312 (should refuse to overwrite input file with output file)
gcc/testsuite/ChangeLog:

2014-11-05  Anthony Brandon  <anthony.brandon@gmail.com>

	PR driver/36312
	* gcc.misc-tests/output.exp: New test case for identical input and
	output files.

include/ChangeLog:

2014-11-05  Anthony Brandon  <anthony.brandon@gmail.com>

	PR driver/36312
	* filenames.h: Add prototype for canonical_filename_eq.

gcc/ChangeLog:

2014-11-05  Anthony Brandon  <anthony.brandon@gmail.com>

	PR driver/36312
	* diagnostic-core.h: Add prototype for fatal_error.
	* diagnostic.c (fatal_error): New function fatal_error.
	* gcc.c (store_arg): Remove have_o_argbuf_index.
	(process_command): Check if input and output files are the same.
	* toplev.c (init_asm_output): Check if input and output files are
	the same.

libiberty/ChangeLog:

2014-11-05  Anthony Brandon  <anthony.brandon@gmail.com>

	PR driver/36312
	* filename_cmp.c (canonical_filename_eq): New function to check if
	file names are the same.
	* functions.texi: Updated with documentation for new function.

From-SVN: r217149
2014-11-05 17:23:46 +00:00
Joseph Myers 701cade1a2 Enable -fextended-identifiers by default.
As proposed at <https://gcc.gnu.org/ml/gcc/2014-11/msg00014.html>,
this patch enables -fextended-identifiers by default for all standard
versions including this feature (all C++ versions, C99 and above for
C, but not C90 / C94 / gnu89 / preprocessing assembler).  It adds a
couple of tests for areas where I previously noted testsuite coverage
for extended identifiers was lacking, removes -fextended-identifiers
from existing tests, adds -g to various such tests to verify that
extended identifiers don't break debug info generation and removes the
test that was only there to verify that the feature was off by
default.

The current state of the feature may not correspond exactly to any
particular checklist from 2004/5 (see bug 9449) of what was wanted
before enabling the feature by default, but I don't think it's any
worse than plenty of other features supported by default before every
corner case is fully functional, and think problems can readily be
fixed incrementally.

The following aspects of extended identifiers could still do with more
work (and should be straightforward):

* C -aux-info (output should use UCNs).

* ObjC -gen-decls (output should use UCNs; associated diagnostics from
  the ObjC front end should use extended characters or UCNs as
  appropriate to the locale, via using %qE or identifier_to_locale).

* Use DW_AT_use_UTF8 in DWARF-3 debug info for compilation units built
  with extended identifiers enabled (or unconditionally).

* cpplib diagnostics (outputting characters or UCNs as appropriate
  depending on the locale, as done for identifiers in non-cpplib
  diagnostics).

* C++ test for UCN linking with C and extern "C".

* Check GDB support / file issues for support if needed.

* Actual UTF-8 in identifiers (?).  (Be careful about not affecting
  performance for the normal fast path of lexing identifiers, if
  possible.)

The following may be trickier:

* cpplib spelling preservation (required to diagnose macro
  redefinition with different spellings of the same identifier in the
  definition or argument names; different spellings of the name of the
  macro itself are OK, however; also required for correct handling of
  multiple stringizing in C++); correct output for -d (UCNs), DWARF
  debug info for macros (UCNs), PCH and PCH tests.  (Spelling
  preservation is the issue that needs fixing to remove references to
  corner cases in the documentation of -std=c99 and -std=c11 and in
  c99status.html.)  The idea would be to add a second pointer to
  cpp_identifier that stores the original spelling (whether for
  extended identifiers only, or for all identifiers); this does not
  enlarge cpp_token because the resulting larger cpp_identifier
  structure is no bigger than cpp_string.

* C++ translation of extended characters (including $@` and various
  control characters) to UCNs in phase 1 (note diagnostics thus
  needed, but not for C++11, for control characters in strings /
  character constants as those UCNs invalid); a likely implementation
  approach is to do translation when identifiers / strings / character
  constants are lexed, together with errors for stray $@` / control
  characters in program as not being valid UCNs in identifiers ($ only
  if not accepted in identifiers); note that this translation should
  not take place inside raw string literals.

Bootstrapped with no regressions on x86_64-unknown-linux-gnu.

libcpp:
	PR preprocessor/9449
	* init.c (lang_defaults): Enable extended identifiers for C++ and
	C99-based standards.

gcc:
	PR preprocessor/9449
	* doc/cpp.texi (Character sets, Tokenization)
	(Implementation-defined behavior): Don't refer to UCNs in
	identifiers requiring -fextended-identifiers.
	* doc/cppopts.texi (-fextended-identifiers): Document as enabled
	by default for C99 and later and C++.
	* doc/invoke.texi (-std=c99, -std=c11): Don't refer to extended
	identifiers needing -fextended-identifiers.

gcc/testsuite:
	PR preprocessor/9449
	* lib/target-supports.exp (check_effective_target_ucn_nocache):
	Don't use -fextended-identifiers.
	* c-c++-common/cpp/normalize-3.c, c-c++-common/cpp/ucnid-2011-1.c,
	g++.dg/cpp/ucn-1.C, g++.dg/cpp/ucnid-1.C, g++.dg/other/ucnid-1.C,
	gcc.dg/cpp/normalize-1.c, gcc.dg/cpp/normalize-2.c,
	gcc.dg/cpp/normalize-4.c: Don't use -fextended-identifiers.
	* gcc.dg/cpp/ucnid-1.c: Don't use -fextended-identifiers.  Use
	-g3.
	* gcc.dg/cpp/ucnid-10.c, gcc.dg/cpp/ucnid-2.c,
	gcc.dg/cpp/ucnid-3.c, gcc.dg/cpp/ucnid-4.c, gcc.dg/cpp/ucnid-5.c,
	gcc.dg/cpp/ucnid-7.c, gcc.dg/cpp/ucnid-9.c,
	gcc.dg/cpp/warn-normalized-1.c, gcc.dg/cpp/warn-normalized-2.c,
	gcc.dg/cpp/warn-normalized-3.c: Don't use -fextended-identifiers.
	* gcc.dg/ucnid-1.c, gcc.dg/ucnid-2.c, gcc.dg/ucnid-3.c,
	gcc.dg/ucnid-4.c, gcc.dg/ucnid-5.c, gcc.dg/ucnid-6.c: Don't use
	-fextended-identifiers.  Use -g.
	* gcc.dg/ucnid-7.c, gcc.dg/ucnid-8.c: Don't use
	-fextended-identifiers.
	* gcc.dg/ucnid-9.c: Don't use -fextended-identifiers.  Use -g.
	* gcc.dg/ucnid-10.c: Don't use -fextended-identifiers.
	* gcc.dg/ucnid-11.c, gcc.dg/ucnid-12.c: Don't use
	-fextended-identifiers.  Use -g.
	* gcc.dg/ucnid-13.c: Don't use -fextended-identifiers.
	* gcc.dg/cpp/ucnid-8.c: Remove test.
	* gcc.dg/cpp/ucnid-10.c, gcc.dg/ucnid-14.c: New tests.

From-SVN: r217144
2014-11-05 16:19:10 +00:00
Ilya Tocar b92883d6ba Fix dg.torture tests with avx512
gcc/
	* config/i386/i386.c (expand_vec_perm_pshufb): Try vpermq/vpermd
	for 512-bit wide modes.
	(expand_vec_perm_1): Use correct versions of patterns.
	* config/i386/sse.md (avx512f_vec_dup_<mode>_1): New.
	(vashr<mode>3<mask_name>): Split V8HImode and V16QImode.

From-SVN: r217138
2014-11-05 18:55:44 +03:00
Christophe Lyon d80b40be2f advsimd-intrinsics.exp: Skip tests if target does not support Neon.
2014-11-05  Christophe Lyon  <christophe.lyon@linaro.org>

	* gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp:
	Skip tests if target does not support Neon.

From-SVN: r217134
2014-11-05 16:22:28 +01:00
Christophe Lyon e3e596ed32 [AArch64,ARM] support bswap tests on aarch64_be.
[AArch64,ARM] support bswap tests on aarch64_be. Skip them on ARM
targets older than v6.

2014-11-05  Christophe Lyon  <christophe.lyon@linaro.org>

	* lib/target-supports.exp (check_effective_target_bswap): Update
	conditions for AArch64 and ARM targets.

From-SVN: r217133
2014-11-05 16:19:19 +01:00
David Edelsohn a63cadc120 pr59166.c: XFAIL on AIX.
* gcc.dg/torture/pr59166.c: XFAIL on AIX.
        * g++.dg/ext/visitibility/anon1.C: XFAIL on AIX.
        * g++.dg/opt/pr60002.C: XFAIL on AIX.
        * g++.dg/torture/pr63419.C: Ignore non-standard ABI warning.
        * g++.dg/ipa/ipa-icf-5.C: Require visibility support.

From-SVN: r217129
2014-11-05 09:32:59 -05:00
Ilya Enkovich d5e254e19c ipa-chkp.c: New.
gcc/

2014-11-05  Ilya Enkovich  <ilya.enkovich@intel.com>

	* ipa-chkp.c: New.
	* ipa-chkp.h: New.
	* tree-chkp.c: New.
	* tree-chkp.h: New.
	* tree-chkp-opt.c: New.
	* rtl-chkp.c: New.
	* rtl-chkp.h: New.
	* Makefile.in (OBJS): Add ipa-chkp.o, rtl-chkp.o, tree-chkp.o
	tree-chkp-opt.o.
	(GTFILES): Add tree-chkp.c.
	* mode-classes.def (MODE_POINTER_BOUNDS): New.
	* tree.def (POINTER_BOUNDS_TYPE): New.
	* genmodes.c (complete_mode): Support MODE_POINTER_BOUNDS.
	(POINTER_BOUNDS_MODE): New.
	(make_pointer_bounds_mode): New.
	* machmode.h (POINTER_BOUNDS_MODE_P): New.
	* stor-layout.c (int_mode_for_mode): Support MODE_POINTER_BOUNDS.
	(layout_type): Support POINTER_BOUNDS_TYPE.
	* tree-pretty-print.c (dump_generic_node): Support POINTER_BOUNDS_TYPE.
	* tree-core.h (tree_index): Add TI_POINTER_BOUNDS_TYPE.
	* tree.c (build_int_cst_wide): Support POINTER_BOUNDS_TYPE.
	(type_contains_placeholder_1): Likewise.
	(build_common_tree_nodes): Initialize
	pointer_bounds_type_node.
	* tree.h (POINTER_BOUNDS_TYPE_P): New.
	(pointer_bounds_type_node): New.
	(POINTER_BOUNDS_P): New.
	(BOUNDED_TYPE_P): New.
	(BOUNDED_P): New.
	(CALL_WITH_BOUNDS_P): New.
	* gimple.h (gf_mask): Add GF_CALL_WITH_BOUNDS.
	(gimple_call_with_bounds_p): New.
	(gimple_call_set_with_bounds): New.
	(gimple_return_retbnd): New.
	(gimple_return_set_retbnd): New
	* gimple.c (gimple_build_return): Increase number of ops
	for return statement.
	(gimple_build_call_from_tree): Propagate CALL_WITH_BOUNDS_P
	flag.
	* gimple-pretty-print.c (dump_gimple_return): Print second op.
	* rtl.h (CALL_EXPR_WITH_BOUNDS_P): New.
	* gimplify.c (gimplify_init_constructor): Avoid infinite
	loop during gimplification of bounds initializer.
	* calls.c: Include tree-chkp.h, rtl-chkp.h, bitmap.h.
	(special_function_p): Use original decl name when analyzing
	instrumentation clone.
	(arg_data): Add fields special_slot, pointer_arg and
	pointer_offset.
	(store_bounds): New.
	(emit_call_1): Propagate instrumentation flag for CALL.
	(initialize_argument_information): Compute pointer_arg,
	pointer_offset and special_slot for pointer bounds arguments.
	(finalize_must_preallocate): Preallocate when storing bounds
	in bounds table.
	(compute_argument_addresses): Skip pointer bounds.
	(expand_call): Store bounds into tables separately.  Return
	result joined with resulting bounds.
	* cfgexpand.c: Include tree-chkp.h, rtl-chkp.h.
	(expand_call_stmt): Propagate bounds flag for CALL_EXPR.
	(expand_return): Add returned bounds arg.  Handle returned bounds.
	(expand_gimple_stmt_1): Adjust to new expand_return signature.
	(gimple_expand_cfg): Reset rtx bounds map.
	* expr.c: Include tree-chkp.h, rtl-chkp.h.
	(expand_assignment): Handle returned bounds.
	(store_expr_with_bounds): New.  Replaces store_expr with new bounds
	target argument.  Handle bounds returned by calls.
	(store_expr): Now wraps store_expr_with_bounds.
	* expr.h (store_expr_with_bounds): New.
	* function.c: Include tree-chkp.h, rtl-chkp.h.
	(bounds_parm_data): New.
	(use_register_for_decl): Do not registerize decls used for bounds
	stores and loads.
	(assign_parms_augmented_arg_list): Add bounds of the result
	structure pointer as the second argument.
	(assign_parm_find_entry_rtl): Mark bounds are never passed on
	the stack.
	(assign_parm_is_stack_parm): Likewise.
	(assign_parm_load_bounds): New.
	(assign_bounds): New.
	(assign_parms): Load bounds and determine a location for
	returned bounds.
	(diddle_return_value_1): New.
	(diddle_return_value): Handle returned bounds.
	* function.h (rtl_data): Add field for returned bounds.
	* varasm.c: Include tree-chkp.h.
	(output_constant): Support POINTER_BOUNDS_TYPE.
	(output_constant_pool_2): Support MODE_POINTER_BOUNDS.
	(ultimate_transparent_alias_target): Move up.
	(make_decl_rtl): For instrumented function use
	name of the original decl.
	(assemble_start_function): Mark function as global
	in case it is instrumentation clone of the global
	function.
	(do_assemble_alias): Follow transparent alias chain
	for identifier.  Check if original alias is public.
	(maybe_assemble_visibility): Use visibility of the
	original function for instrumented version.
	(default_unique_section): Likewise.
	* emit-rtl.c (immed_double_const): Support MODE_POINTER_BOUNDS.
	(init_emit_once): Build pointer bounds zero constants.
	* explow.c (trunc_int_for_mode): Support MODE_POINTER_BOUNDS.
	* target.def (builtin_chkp_function): New.
	(chkp_bound_type): New.
	(chkp_bound_mode): New.
	(chkp_make_bounds_constant): New.
	(chkp_initialize_bounds): New.
	(load_bounds_for_arg): New.
	(store_bounds_for_arg): New.
	(load_returned_bounds): New.
	(store_returned_bounds): New.
	(chkp_function_value_bounds): New.
	(setup_incoming_vararg_bounds): New.
	(function_arg): Update hook description with new possible return
	value CONST_INT.
	* targhooks.h (default_load_bounds_for_arg): New.
	(default_store_bounds_for_arg): New.
	(default_load_returned_bounds): New.
	(default_store_returned_bounds): New.
	(default_chkp_bound_type): New.
	(default_chkp_bound_mode): New.
	(default_builtin_chkp_function): New.
	(default_chkp_function_value_bounds): New.
	(default_chkp_make_bounds_constant): New.
	(default_chkp_initialize_bounds): New.
	(default_setup_incoming_vararg_bounds): New.
	* targhooks.c (default_load_bounds_for_arg): New.
	(default_store_bounds_for_arg): New.
	(default_load_returned_bounds): New.
	(default_store_returned_bounds): New.
	(default_chkp_bound_type): New.
	(default_chkp_bound_mode); New.
	(default_builtin_chkp_function): New.
	(default_chkp_function_value_bounds): New.
	(default_chkp_make_bounds_constant): New.
	(default_chkp_initialize_bounds): New.
	(default_setup_incoming_vararg_bounds): New.
	* builtin-types.def (BT_BND): New.
	(BT_FN_PTR_CONST_PTR): New.
	(BT_FN_CONST_PTR_CONST_PTR): New.
	(BT_FN_BND_CONST_PTR): New.
	(BT_FN_CONST_PTR_BND): New.
	(BT_FN_PTR_CONST_PTR_SIZE): New.
	(BT_FN_PTR_CONST_PTR_CONST_PTR): New.
	(BT_FN_VOID_PTRPTR_CONST_PTR): New.
	(BT_FN_VOID_CONST_PTR_SIZE): New.
	(BT_FN_VOID_PTR_BND): New.
	(BT_FN_CONST_PTR_CONST_PTR_CONST_PTR): New.
	(BT_FN_BND_CONST_PTR_SIZE): New.
	(BT_FN_PTR_CONST_PTR_CONST_PTR_SIZE): New.
	(BT_FN_VOID_CONST_PTR_BND_CONST_PTR): New.
	* chkp-builtins.def: New.
	* builtins.def: include chkp-builtins.def.
	(DEF_CHKP_BUILTIN): New.
	* builtins.c: Include tree-chkp.h and rtl-chkp.h.
	(expand_builtin): Support BUILT_IN_CHKP_INIT_PTR_BOUNDS,
	BUILT_IN_CHKP_NULL_PTR_BOUNDS, BUILT_IN_CHKP_COPY_PTR_BOUNDS,
	BUILT_IN_CHKP_CHECK_PTR_LBOUNDS, BUILT_IN_CHKP_CHECK_PTR_UBOUNDS,
	BUILT_IN_CHKP_CHECK_PTR_BOUNDS, BUILT_IN_CHKP_SET_PTR_BOUNDS,
	BUILT_IN_CHKP_NARROW_PTR_BOUNDS, BUILT_IN_CHKP_STORE_PTR_BOUNDS,
	BUILT_IN_CHKP_GET_PTR_LBOUND, BUILT_IN_CHKP_GET_PTR_UBOUND,
	BUILT_IN_CHKP_BNDMK, BUILT_IN_CHKP_BNDSTX, BUILT_IN_CHKP_BNDCL,
	BUILT_IN_CHKP_BNDCU, BUILT_IN_CHKP_BNDLDX, BUILT_IN_CHKP_BNDRET,
	BUILT_IN_CHKP_INTERSECT, BUILT_IN_CHKP_NARROW,
	BUILT_IN_CHKP_EXTRACT_LOWER, BUILT_IN_CHKP_EXTRACT_UPPER.
	(std_expand_builtin_va_start): Init bounds for va_list.
	* cppbuiltin.c (define_builtin_macros_for_compilation_flags): Add
	__CHKP__ macro when Pointer Bounds Checker is on.
	* params.def (PARAM_CHKP_MAX_CTOR_SIZE): New.
	* passes.def (pass_ipa_chkp_versioning): New.
	(pass_early_local_passes): Renamed to pass_build_ssa_passes.
	(pass_fixup_cfg): Moved to pass_chkp_instrumentation_passes.
	(pass_chkp_instrumentation_passes): New.
	(pass_ipa_chkp_produce_thunks): New.
	(pass_local_optimization_passes): New.
	(pass_chkp_opt): New.
	* tree-pass.h (make_pass_ipa_chkp_versioning): New.
	(make_pass_ipa_chkp_produce_thunks): New.
	(make_pass_chkp): New.
	(make_pass_chkp_opt): New.
	(make_pass_early_local_passes): Renamed to ...
	(make_pass_build_ssa_passes): This.
	(make_pass_chkp_instrumentation_passes): New.
	(make_pass_local_optimization_passes): New.
	* passes.c (pass_manager::execute_early_local_passes): Execute
	early passes in three steps.
	(execute_all_early_local_passes): Renamed to ...
	(execute_build_ssa_passes): This.
	(pass_data_early_local_passes): Renamed to ...
	(pass_data_build_ssa_passes): This.
	(pass_early_local_passes): Renamed to ...
	(pass_build_ssa_passes): This.
	(pass_data_chkp_instrumentation_passes): New.
	(pass_chkp_instrumentation_passes): New.
	(pass_data_local_optimization_passes): New.
	(pass_local_optimization_passes): New.
	(make_pass_early_local_passes): Renamed to ...
	(make_pass_build_ssa_passes): This.
	(make_pass_chkp_instrumentation_passes): New.
	(make_pass_local_optimization_passes): New.
	* c-family/c.opt (fcheck-pointer-bounds): New.
	(fchkp-check-incomplete-type): New.
	(fchkp-zero-input-bounds-for-main): New.
	(fchkp-first-field-has-own-bounds): New.
	(fchkp-narrow-bounds): New.
	(fchkp-narrow-to-innermost-array): New.
	(fchkp-optimize): New.
	(fchkp-use-fast-string-functions): New.
	(fchkp-use-nochk-string-functions): New.
	(fchkp-use-static-bounds): New.
	(fchkp-use-static-const-bounds): New.
	(fchkp-treat-zero-dynamic-size-as-infinite): New.
	(fchkp-check-read): New.
	(fchkp-check-write): New.
	(fchkp-store-bounds): New.
	(fchkp-instrument-calls): New.
	(fchkp-instrument-marked-only): New.
	(Wchkp): New.
	* c-family/c-common.c (handle_bnd_variable_size_attribute): New.
	(handle_bnd_legacy): New.
	(handle_bnd_instrument): New.
	(c_common_attribute_table): Add bnd_variable_size, bnd_legacy
	and bnd_instrument.  Fix documentation.
	(c_common_format_attribute_table): Likewsie.
	* toplev.c: include tree-chkp.h.
	(process_options): Check Pointer Bounds Checker is supported.
	(compile_file): Add chkp_finish_file call.
	* ipa-cp.c (initialize_node_lattices): Use cgraph_local_p
	to handle instrumentation clones properly.
	(propagate_constants_accross_call): Do not propagate
	through instrumentation thunks.
	* ipa-pure-const.c (propagate_pure_const): Support
	IPA_REF_CHKP.
	* ipa-inline.c (early_inliner): Check edge has summary allocated.
	* ipa-split.c: Include tree-chkp.h.
	(find_retbnd): New.
	(split_part_set_ssa_name_p): New.
	(consider_split): Do not split retbnd and retval
	producers.
	(insert_bndret_call_after): new.
	(split_function): Propagate Pointer Bounds Checker
	instrumentation marks and handle returned bounds.
	* tree-ssa-sccvn.h (vn_reference_op_struct): Transform opcode
	into bit field and add with_bounds field.
	* tree-ssa-sccvn.c (copy_reference_ops_from_call): Set
	with_bounds field for instrumented calls.
	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Restore
	CALL_WITH_BOUNDS_P flag for calls.
	* tree-ssa-ccp.c: Include tree-chkp.h.
	(insert_clobber_before_stack_restore): Handle
	BUILT_IN_CHKP_BNDRET calls.
	* tree-ssa-dce.c: Include tree-chkp.h.
	(propagate_necessity): For free call fed by alloc check
	bounds are also provided by the same alloc.
	(eliminate_unnecessary_stmts): Handle BUILT_IN_CHKP_BNDRET
	used by free calls.
	* tree-inline.c: Include tree-chkp.h.
	(declare_return_variable): Add arg holding
	returned bounds slot.  Create and initialize returned bounds var.
	(remap_gimple_stmt): Handle returned bounds.
	Return sequence of statements instead of a single statement.
	(insert_init_stmt): Add declaration.
	(remap_gimple_seq): Adjust to new remap_gimple_stmt signature.
	(copy_bb): Adjust to changed return type of remap_gimple_stmt.
	Properly handle bounds in va_arg_pack and va_arg_pack_len.
	(expand_call_inline): Handle returned bounds.  Add bounds copy
	for generated mem to mem assignments.
	* tree-inline.h (copy_body_data): Add fields retbnd and
	assign_stmts.
	* value-prof.c: Include tree-chkp.h.
	(gimple_ic): Support returned bounds.
	* ipa.c (cgraph_build_static_cdtor_1): Support contructors
	with "chkp ctor" and "bnd_legacy" attributes.
	(symtab_remove_unreachable_nodes): Keep initial values for
	pointer bounds to be used for checks eliminations.
	(process_references): Handle IPA_REF_CHKP.
	(walk_polymorphic_call_targets): Likewise.
	* ipa-visibility.c (cgraph_externally_visible_p): Mark
	instrumented 'main' as externally visible.
	(function_and_variable_visibility): Filter instrumentation
	thunks.
	* cgraph.h (cgraph_thunk_info): Add add_pointer_bounds_args
	field.
	(cgraph_node): Add instrumented_version, orig_decl and
	instrumentation_clone fields.
	(symtab_node::get_alias_target): Allow IPA_REF_CHKP reference.
	(varpool_node): Add need_bounds_init field.
	(cgraph_local_p): New.
	* cgraph.c: Include tree-chkp.h.
	(cgraph_node::remove): Fix instrumented_version
	of the referenced node if any.
	(cgraph_node::dump): Dump instrumentation_clone and
	instrumented_version fields.
	(cgraph_node::verify_node): Check correctness of IPA_REF_CHKP
	references and instrumentation thunks.
	(cgraph_can_remove_if_no_direct_calls_and_refs_p): Keep
	all not instrumented instrumentation clones alive.
	(cgraph_redirect_edge_call_stmt_to_callee): Support
	returned bounds.
	* cgraphbuild.c (rebuild_cgraph_edges): Rebuild IPA_REF_CHKP
	reference.
	(cgraph_rebuild_references): Likewise.
	* cgraphunit.c: Include tree-chkp.h.
	(assemble_thunks_and_aliases): Skip thunks calling instrumneted
	function version.
	(varpool_finalize_decl): Register statically initialized decls
	in Pointer Bounds Checker.
	(walk_polymorphic_call_targets): Do not mark generated call to
	__builtin_unreachable as with_bounds.
	(output_weakrefs): If there are both instrumented and original
	versions, output only one of them.
	(cgraph_node::expand_thunk): Set with_bounds flag
	for created call statement.
	* ipa-ref.h (ipa_ref_use): Add IPA_REF_CHKP.
	(ipa_ref): increase size of use field.
	* symtab.c (ipa_ref_use_name): Add element for IPA_REF_CHKP.
	* varpool.c (dump_varpool_node): Dump need_bounds_init field.
	(ctor_for_folding): Do not fold constant bounds vars.
	* lto-streamer.h (LTO_minor_version): Change minor version from
	0 to 1.
	* lto-cgraph.c (compute_ltrans_boundary): Keep initial values for
	pointer bounds.
	(lto_output_node): Output instrumentation_clone,
	thunk.add_pointer_bounds_args and orig_decl field.
	(lto_output_ref): Adjust to new ipa_ref::use field size.
	(input_overwrite_node): Read instrumentation_clone field.
	(input_node): Read thunk.add_pointer_bounds_args and orig_decl
	fields.
	(input_ref): Adjust to new ipa_ref::use field size.
	(input_cgraph_1): Compute instrumented_version fields and restore
	IDENTIFIER_TRANSPARENT_ALIAS chains.
	(lto_output_varpool_node): Output
	need_bounds_init value.
	(input_varpool_node): Read need_bounds_init value.
	* lto-partition.c (add_symbol_to_partition_1): Keep original
	and instrumented versions together.
	(privatize_symbol_name): Restore transparent alias chain if required.
	(add_references_to_partition): Add references to pointer bounds vars.
	* dbxout.c (dbxout_type): Ignore POINTER_BOUNDS_TYPE.
	* dwarf2out.c (gen_subprogram_die): Ignore bound args.
	(gen_type_die_with_usage): Skip pointer bounds.
	(dwarf2out_global_decl): Likewise.
	(is_base_type): Support POINTER_BOUNDS_TYPE.
	(gen_formal_types_die): Skip pointer bounds.
	(gen_decl_die): Likewise.
	* var-tracking.c (vt_add_function_parameters): Skip
	bounds parameters.
	* ipa-icf.c (sem_function::merge): Do not merge when instrumentation
	thunk still exists.
	(sem_variable::merge): Reset need_bounds_init flag.
	* doc/extend.texi: Document Pointer Bounds Checker built-in functions
	and attributes.
	* doc/tm.texi.in (TARGET_LOAD_BOUNDS_FOR_ARG): New.
	(TARGET_STORE_BOUNDS_FOR_ARG): New.
	(TARGET_LOAD_RETURNED_BOUNDS): New.
	(TARGET_STORE_RETURNED_BOUNDS): New.
	(TARGET_CHKP_FUNCTION_VALUE_BOUNDS): New.
	(TARGET_SETUP_INCOMING_VARARG_BOUNDS): New.
	(TARGET_BUILTIN_CHKP_FUNCTION): New.
	(TARGET_CHKP_BOUND_TYPE): New.
	(TARGET_CHKP_BOUND_MODE): New.
	(TARGET_CHKP_MAKE_BOUNDS_CONSTANT): New.
	(TARGET_CHKP_INITIALIZE_BOUNDS): New.
	* doc/tm.texi: Regenerated.
	* doc/rtl.texi (MODE_POINTER_BOUNDS): New.
	(BND32mode): New.
	(BND64mode): New.
	* doc/invoke.texi (-mmpx): New.
	(-mno-mpx): New.
	(chkp-max-ctor-size): New.
	* config/i386/constraints.md (w): New.
	(Ti): New.
	(Tb): New.
	* config/i386/i386-c.c (ix86_target_macros_internal): Add __MPX__.
	* config/i386/i386-modes.def (BND32): New.
	(BND64): New.
	* config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): New.
	* config/i386/i386.c: Include tree-chkp.h, rtl-chkp.h, tree-iterator.h.
	(regclass_map): Add bound registers.
	(dbx_register_map): Likewise.
	(dbx64_register_map): Likewise.
	(svr4_dbx_register_map): Likewise.
	(isa_opts): Add -mmpx.
	(PTA_MPX): New.
	(ix86_option_override_internal): Support MPX ISA.
	(ix86_conditional_register_usage): Support bound registers.
	(ix86_code_end): Add MPX bnd prefix.
	(output_set_got): Likewise.
	(print_reg): Avoid prefixes for bound registers.
	(ix86_print_operand): Add '!' (MPX bnd) print prefix support.
	(ix86_print_operand_punct_valid_p): Likewise.
	(ix86_print_operand_address): Support UNSPEC_BNDMK_ADDR and
	UNSPEC_BNDLDX_ADDR.
	(ix86_output_call_insn): Add MPX bnd prefix to branch instructions.
	(ix86_class_likely_spilled_p): Add bound regs support.
	(ix86_hard_regno_mode_ok): Likewise.
	(x86_order_regs_for_local_alloc): Likewise.
	(ix86_bnd_prefixed_insn_p): New.
	(ix86_builtins): Add
	IX86_BUILTIN_BNDMK, IX86_BUILTIN_BNDSTX,
	IX86_BUILTIN_BNDLDX, IX86_BUILTIN_BNDCL,
	IX86_BUILTIN_BNDCU, IX86_BUILTIN_BNDRET,
	IX86_BUILTIN_BNDNARROW, IX86_BUILTIN_BNDINT,
	IX86_BUILTIN_SIZEOF, IX86_BUILTIN_BNDLOWER,
	IX86_BUILTIN_BNDUPPER.
	(builtin_isa): Add leaf_p and nothrow_p fields.
	(def_builtin): Initialize leaf_p and nothrow_p.
	(ix86_add_new_builtins): Handle leaf_p and nothrow_p
	flags.
	(bdesc_mpx): New.
	(bdesc_mpx_const): New.
	(ix86_init_mpx_builtins): New.
	(ix86_init_builtins): Call ix86_init_mpx_builtins.
	(ix86_emit_cmove): New.
	(ix86_emit_move_max): New.
	(ix86_expand_builtin): Expand IX86_BUILTIN_BNDMK,
	IX86_BUILTIN_BNDSTX, IX86_BUILTIN_BNDLDX,
	IX86_BUILTIN_BNDCL, IX86_BUILTIN_BNDCU,
	IX86_BUILTIN_BNDRET, IX86_BUILTIN_BNDNARROW,
	IX86_BUILTIN_BNDINT, IX86_BUILTIN_SIZEOF,
	IX86_BUILTIN_BNDLOWER, IX86_BUILTIN_BNDUPPER.
	(ix86_function_value_bounds): New.
	(ix86_builtin_mpx_function): New.
	(ix86_get_arg_address_for_bt): New.
	(ix86_load_bounds): New.
	(ix86_store_bounds): New.
	(ix86_load_returned_bounds): New.
	(ix86_store_returned_bounds): New.
	(ix86_mpx_bound_mode): New.
	(ix86_make_bounds_constant): New.
	(ix86_initialize_bounds):
	(TARGET_LOAD_BOUNDS_FOR_ARG): New.
	(TARGET_STORE_BOUNDS_FOR_ARG): New.
	(TARGET_LOAD_RETURNED_BOUNDS): New.
	(TARGET_STORE_RETURNED_BOUNDS): New.
	(TARGET_CHKP_BOUND_MODE): New.
	(TARGET_BUILTIN_CHKP_FUNCTION): New.
	(TARGET_CHKP_FUNCTION_VALUE_BOUNDS): New.
	(TARGET_CHKP_MAKE_BOUNDS_CONSTANT): New.
	(TARGET_CHKP_INITIALIZE_BOUNDS): New.
	(ix86_option_override_internal): Do not
	support x32 with MPX.
	(init_cumulative_args): Init stdarg, bnd_regno, bnds_in_bt
	and force_bnd_pass.
	(function_arg_advance_32): Return number of used integer
	registers.
	(function_arg_advance_64): Likewise.
	(function_arg_advance_ms_64): Likewise.
	(ix86_function_arg_advance): Handle pointer bounds.
	(ix86_function_arg): Likewise.
	(ix86_function_value_regno_p): Mark fisrt bounds registers as
	possible function value.
	(ix86_function_value_1): Handle pointer bounds type/mode
	(ix86_return_in_memory): Likewise.
	(ix86_print_operand): Analyse insn to decide abounf "bnd" prefix.
	(ix86_expand_call): Generate returned bounds.
	(ix86_setup_incoming_vararg_bounds): New.
	(ix86_va_start): Initialize bounds for pointers in va_list.
	(TARGET_SETUP_INCOMING_VARARG_BOUNDS): New.
	* config/i386/i386.h (TARGET_MPX): New.
	(TARGET_MPX_P): New.
	(FIRST_PSEUDO_REGISTER): Fix to new value.
	(FIXED_REGISTERS): Add bound registers.
	(CALL_USED_REGISTERS): Likewise.
	(REG_ALLOC_ORDER): Likewise.
	(HARD_REGNO_NREGS): Likewise.
	(VALID_BND_REG_MODE): New.
	(FIRST_BND_REG): New.
	(LAST_BND_REG): New.
	(reg_class): Add BND_REGS.
	(REG_CLASS_NAMES): Likewise.
	(REG_CLASS_CONTENTS): Likewise.
	(BND_REGNO_P): New.
	(ANY_BND_REG_P): New.
	(BNDmode): New.
	(HI_REGISTER_NAMES): Add bound registers.
	(ix86_args): Add bnd_regno, bnds_in_bt,	force_bnd_pass and
	stdarg fields.
	* config/i386/i386.md (UNSPEC_BNDMK): New.
	(UNSPEC_BNDMK_ADDR): New.
	(UNSPEC_BNDSTX): New.
	(UNSPEC_BNDLDX): New.
	(UNSPEC_BNDLDX_ADDR): New.
	(UNSPEC_BNDCL): New.
	(UNSPEC_BNDCU): New.
	(UNSPEC_BNDCN): New.
	(UNSPEC_MPX_FENCE): New.
	(UNSPEC_SIZEOF): New.
	(BND0_REG): New.
	(BND1_REG): New.
	(type): Add mpxmov, mpxmk, mpxchk, mpxld, mpxst.
	(length_immediate): Support mpxmov, mpxmk, mpxchk, mpxld, mpxst.
	(prefix_rep): Check for bnd prefix.
	(prefix_0f): Support mpxmov, mpxmk, mpxchk, mpxld, mpxst.
	(length_nobnd): New.
	(length): Use length_nobnd when specified.
	(memory): Support mpxmov, mpxmk, mpxchk, mpxld, mpxst.
	(BND): New.
	(bnd_ptr): New.
	(BNDCHECK): New.
	(bndcheck): New.
	(*jcc_1): Add MPX bnd prefix.
	(*jcc_2): Likewise.
	(jump): Likewise.
	(*indirect_jump): Likewise.
	(*tablejump_1): Likewise.
	(simple_return_internal): Likewise.
	(simple_return_internal_long): Likewise.
	(simple_return_pop_internal): Likewise.
	(simple_return_indirect_internal): Likewise.
	(<mode>_mk): New.
	(*<mode>_mk): New.
	(mov<mode>): New.
	(*mov<mode>_internal_mpx): New.
	(<mode>_<bndcheck>): New.
	(*<mode>_<bndcheck>): New.
	(<mode>_ldx): New.
	(*<mode>_ldx): New.
	(<mode>_stx): New.
	(*<mode>_stx): New.
	move_size_reloc_<mode>): New.
	* config/i386/predicates.md (address_mpx_no_base_operand): New.
	(address_mpx_no_index_operand): New.
	(bnd_mem_operator): New.
	(symbol_operand): New.
	(x86_64_immediate_size_operand): New.
	* config/i386/i386.opt (mmpx): New.
	* config/i386/i386-builtin-types.def (BND): New.
	(ULONG): New.
	(BND_FTYPE_PCVOID_ULONG): New.
	(VOID_FTYPE_BND_PCVOID): New.
	(VOID_FTYPE_PCVOID_PCVOID_BND): New.
	(BND_FTYPE_PCVOID_PCVOID): New.
	(BND_FTYPE_PCVOID): New.
	(BND_FTYPE_BND_BND): New.
	(PVOID_FTYPE_PVOID_PVOID_ULONG): New.
	(PVOID_FTYPE_PCVOID_BND_ULONG): New.
	(ULONG_FTYPE_VOID): New.
	(PVOID_FTYPE_BND): New.

gcc/testsuite/

2014-11-05  Ilya Enkovich  <ilya.enkovich@intel.com>

	* gcc.target/i386/chkp-builtins-1.c: New.
	* gcc.target/i386/chkp-builtins-2.c: New.
	* gcc.target/i386/chkp-builtins-3.c: New.
	* gcc.target/i386/chkp-builtins-4.c: New.
	* gcc.target/i386/chkp-remove-bndint-1.c: New.
	* gcc.target/i386/chkp-remove-bndint-2.c: New.
	* gcc.target/i386/chkp-const-check-1.c: New.
	* gcc.target/i386/chkp-const-check-2.c: New.
	* gcc.target/i386/chkp-lifetime-1.c: New.
	* gcc.dg/pr37858.c: Replace early_local_cleanups pass name
	with build_ssa_passes.

From-SVN: r217125
2014-11-05 12:42:03 +00:00