Commit Graph

133882 Commits

Author SHA1 Message Date
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
Bernd Schmidt
433e416433 Reorganize post-ra pipeline for targets without register allocation.
* passes.def (pass_compute_alignments, pass_duplicate_computed_gotos,
	pass_variable_tracking, pass_free_cfg, pass_machine_reorg,
	pass_cleanup_barriers, pass_delay_slots,
	pass_split_for_shorten_branches, pass_convert_to_eh_region_ranges,
	pass_shorten_branches, pass_est_nothrow_function_flags,
	pass_dwarf2_frame, pass_final): Move outside of pass_postreload and
	into pass_late_compilation.
	(pass_late_compilation): Add.
	* passes.c (pass_data_late_compilation, pass_late_compilation,
	make_pass_late_compilation): New.
	* timevar.def (TV_LATE_COMPILATION): New.

From-SVN: r217124
2014-11-05 12:14:45 +00:00
Bernd Schmidt
e0d14c396a Allow a target to skip an unnecssary register return value for a struct return.
* target.def (omit_struct_return_reg): New data hook.
	* doc/tm.texi.in: Add @hook TARGET_OMIT_STRUCT_RETURN_REG.
	* doc/tm.texi: Regenerate.
	* function.c (expand_function_end): Use it.

From-SVN: r217123
2014-11-05 12:14:36 +00:00
Bernd Schmidt
a50fa76a9d Add a no_register_allocation target hook.
* target.def (no_register_allocation): New data hook.
	* doc/tm.texi.in: Add @hook TARGET_NO_REGISTER_ALLOCATION.
	* doc/tm.texi: Regenerate.
	* ira.c (gate_ira): New function.
	(pass_data_ira): Set has_gate.
	(pass_ira): Add a gate function.
	(pass_data_reload): Likewise.
	(pass_reload): Add a gate function.
	(pass_ira): Use it.
	* reload1.c (eliminate_regs): If reg_eliminate_is NULL, assert that
	no register allocation happens on the target and return.
	* final.c (alter_subreg): Ensure register is not a pseudo before
	calling simplify_subreg.
	(output_operand): Assert that x isn't a pseudo only if doing
	register allocation.

From-SVN: r217122
2014-11-05 12:14:27 +00:00
Bernd Schmidt
146ca14466 Don't unnecessarily call eliminate_regs.
* dbxout.c (dbxout_symbol): Don't call eliminate_regs on decls for
	global vars.

From-SVN: r217121
2014-11-05 12:14:18 +00:00
Bernd Schmidt
68df21f784 Allow a port not to define an indirect_jump pattern.
* optabs.c (emit_indirect_jump): Test HAVE_indirect_jump and emit a
	sorry if necessary.

From-SVN: r217120
2014-11-05 12:14:10 +00:00
Alex Velenko
96023bbaff simplify-rtx.c (simplify_binary_operation_1): Div check added.
2014-11-05  Alex Velenko  <Alex.Velenko@arm.com>

    gcc/
    * simplify-rtx.c (simplify_binary_operation_1): Div check added.
    * rtl.h (SUBREG_P): New macro added.

    gcc/testsuite/
    * gcc.dg/asr-div1.c: New testcase.

From-SVN: r217118
2014-11-05 11:22:28 +00:00
Rainer Orth
8c7686294e Fix gnu11 fallout on Solaris 10+
libobjc:
	* thr.c (_XOPEN_SOURCE): Define as 600.

	libiberty:
	* sigsetmask.c (_POSIX_SOURCE): Remove.

	libgomp:
	* config/posix/lock.c (_XOPEN_SOURCE) Define as 600.

From-SVN: r217117
2014-11-05 09:52:42 +00:00
Tejas Belagod
f9d53c273b [AArch64] Restructure arm_neon.h vector types.
2014-11-05  Tejas Belagod  <tejas.belagod@arm.com>

	* config/aarch64/aarch64-builtins.c
	(aarch64_build_scalar_type): Remove.
	(aarch64_scalar_builtin_types, aarch64_simd_type,
	aarch64_simd_type, aarch64_mangle_builtin_scalar_type,
	aarch64_mangle_builtin_vector_type,
	aarch64_mangle_builtin_type, aarch64_simd_builtin_std_type,
	aarch64_lookup_simd_builtin_type, aarch64_simd_builtin_type,
	aarch64_init_simd_builtin_types,
	aarch64_init_simd_builtin_scalar_types): New.
	(aarch64_init_simd_builtins): Refactor.
	(aarch64_init_crc32_builtins): Fixup with qualifier.
	* config/aarch64/aarch64-protos.h
	(aarch64_mangle_builtin_type): Export.
	* config/aarch64/aarch64-simd-builtin-types.def: New.
	* config/aarch64/aarch64.c (aarch64_simd_mangle_map): Remove.
	(aarch64_mangle_type): Refactor.
	* config/aarch64/arm_neon.h: Declare vector types based on
	internal types.
	* config/aarch64/t-aarch64: Update dependency.

From-SVN: r217114
2014-11-05 08:26:54 +00:00
Dominik Vogt
3cbdd8312a * go.test/go-test.exp (go-set-goarch): Enable tests on s390[x].
From-SVN: r217112
2014-11-05 04:08:11 +00:00
Ian Lance Taylor
350aa52801 go-test.exp: In +build lines, require whitespace around expected strings, fix check for negation.
* go.test/go-test.exp: In +build lines, require whitespace around
	expected strings, fix check for negation.

From-SVN: r217111
2014-11-05 04:04:24 +00:00
Ian Lance Taylor
c9bc4e2d2b sync/atomic: fix data races in tests
Backport https://codereview.appspot.com/111320044 from Go
master library.

From-SVN: r217110
2014-11-05 03:39:49 +00:00
GCC Administrator
659e39f1bc Daily bump.
From-SVN: r217109
2014-11-05 00:16:21 +00:00
Ian Lance Taylor
1fec5f5274 libgo: add s390 support
From Dominik Vogt.

* libgo/go/syscall/libcall_linux_s390.go: New file for s390 support.
* libgo/go/syscall/syscall_linux_s390.go: Ditto.
* libgo/go/syscall/libcall_linux_s390x.go: New file for s390x support.
* libgo/go/syscall/syscall_linux_s390x.go: Ditto.
* libgo/go/runtime/pprof/pprof.go (printStackRecord): Support s390 and
s390x.
* libgo/runtime/runtime.c (runtime_cputicks): Add support for s390 and
s390x
* libgo/mksysinfo.sh: Ditto.
(upcase_fields): New helper function

* libgo/go/debug/elf/file.go (applyRelocations): Implement relocations
on s390x.
(applyRelocationsS390x): Ditto.
(DWARF): Ditto.
* libgo/go/debug/elf/elf.go (R_390): New constants for S390 relocations.
(r390Strings): Ditto.
(String): Helper function for S390 relocations.
(GoString): Ditto.

* libgo/go/reflect/makefuncgo_s390.go: New file.
(S390MakeFuncStubGo): Implementation of s390 abi.
* libgo/go/reflect/makefuncgo_s390x.go: New file.
(S390xMakeFuncStubGo): Implementation of s390x abi.
* libgo/go/reflect/makefunc_s390.c: New file.
(makeFuncStub): s390 and s390x specific implementation of function.
* libgo/go/reflect/makefunc.go
(MakeFunc): Add support for s390 and s390x.
(makeMethodValue): Ditto.
(makeValueMethod): Ditto.
* libgo/Makefile.am (go_reflect_makefunc_s_file): Ditto.
(go_reflect_makefunc_file): Ditto.
* libgo/go/reflect/makefunc_dummy.c: Ditto.
* libgo/runtime/runtime.h (__go_makefunc_can_recover): Export prototype
for use in makefunc_s390.c.
(__go_makefunc_returning): Ditto.

* libgo/go/syscall/exec_linux.go (forkAndExecInChild): Fix order of the
arguments of the clone system call for s390[x].

* libgo/configure.ac (is_s390): New variable.
(is_s390x): Ditto
(LIBGO_IS_S390): Ditto.
(LIBGO_IS_S390X): Ditto.
(GOARCH): Support s390 and s390x.
* libgo/go/go/build/build.go (cgoEnabled): Ditto.
* libgo/go/go/build/syslist.go (goarchList): Ditto.

From-SVN: r217106
2014-11-04 22:39:30 +00:00
Pat Haugen
f6166a42cc rs6000.c (atomic_hold_decl, [...]): Guard declaration with #ifdef.
* config/rs6000/rs6000.c (atomic_hold_decl, atomic_clear_decl,
	atomic_update_decl): Guard declaration with #ifdef.

From-SVN: r217105
2014-11-04 22:34:43 +00:00
Richard Biener
6f45018142 c-common.c (shorten_compare): Do not shorten mixed DFP and non-DFP compares.
2014-11-04  Richard Biener  <rguenther@suse.de>

	* c-common.c (shorten_compare): Do not shorten mixed
	DFP and non-DFP compares.

From-SVN: r217101
2014-11-04 20:46:52 +00:00
Marek Polacek
673fade339 * sanopt.c (sanopt_optimize_walker): Remove unused variables.
From-SVN: r217100
2014-11-04 19:59:35 +00:00
Marek Polacek
06cefae97e Makefile.in (OBJS): Add sanopt.o.
* Makefile.in (OBJS): Add sanopt.o.
	(GTFILES): Add sanopt.c.
	* asan.h (asan_expand_check_ifn): Declare.
	* asan.c (asan_expand_check_ifn): No longer static.
	(class pass_sanopt, pass_sanopt::execute, make_pass_sanopt): Move...
	* sanopt.c: ...here.  New file.
testsuite/
	* c-c++-common/ubsan/align-2.c: Remove dg-output.
	* c-c++-common/ubsan/align-4.c: Likewise.
	* g++.dg/ubsan/null-1.C: Likewise.
	* g++.dg/ubsan/null-2.C: Likewise.

From-SVN: r217099
2014-11-04 19:43:01 +00:00
Uros Bizjak
9c636298c0 godump-1.c (dg-skip-if): Add alpha*-*-*.
* gcc.misc-tests/godump-1.c (dg-skip-if): Add alpha*-*-*.

From-SVN: r217098
2014-11-04 19:30:32 +01:00
Uros Bizjak
a765878ad7 devirt-44.C (dg-options): Remove -fdump-tree-optimized.
* g++.dg/ipa/devirt-44.C (dg-options): Remove -fdump-tree-optimized.
	* g++.dg/ipa/devirt-45.C (dg-options): Ditto.
	* g++.dg/tree-prof/morefunc.C (dg-final-use): Cleanup profile ipa dump.
	* g++.dg/tree-prof/reorder.C (dg-final-use): Ditto.
	* g++.dg/tree-prof/pr35545.C (dg-fina-use): Cleanup profile_estimate
	ipa dump.
	* gcc.dg/fold-reassoc-3.c (dg-final): Fix scan string.
	Cleanup original tree dump.
	* gcc.dg/tree-prof/20050826-2.c (dg-final-use): Cleanup dom1 tree dump.
	* gcc.dg/tree-prof/cmpsf-1.c (dg-final-use): Ditto.
	* gcc.dg/tree-ssa/pr61144.c (dg-final): Cleanup optimized tree dump.

From-SVN: r217097
2014-11-04 19:21:34 +01:00
Ian Lance Taylor
8b06e1880e compiler: Logical operators should yield untyped bool for untyped operands.
Fixes issue 6671 for gccgo.

From-SVN: r217094
2014-11-04 17:49:01 +00:00
Martin Jambor
4456c6bff2 devirt-40.C: Changed dump to not matching OBJ_TYPE_REF in function body.
gcc/testsuite/

2014-11-04  Martin Jambor  <mjambor@suse.cz>

	* g++/dg/ipa/devirt-40.C: Changed dump to not matching OBJ_TYPE_REF in
	function body.

From-SVN: r217092
2014-11-04 18:39:06 +01:00
Jiong Wang
7e8c2bd54a [AArch64] fix unsafe access to deallocated stack
2014-11-04  Jiong Wang  <jiong.wang@arm.com>
2014-11-04  Wilco Dijkstra  <wilco.dijkstra@arm.com>

  gcc/
    PR target/63293
    * config/aarch64/aarch64.c (aarch64_expand_epiloue): Add barriers before
    stack adjustment.

From-SVN: r217091
2014-11-04 17:13:25 +00:00
Jonathan Wakely
2acb709654 * testsuite/util/testsuite_allocator.h (operator==): Fix recursion.
From-SVN: r217090
2014-11-04 16:54:49 +00:00
Bernd Schmidt
bf42f4fd59 Fix up mode confusion in combine_simplify_rtx.
The surrounding code was already fixed back when BImode was added.

	* combine.c (combine_simplify_rtx): In STORE_FLAG_VALUE == -1 case,
	also verify that mode is equal to the mode of op0.

From-SVN: r217089
2014-11-04 15:25:45 +00:00
Bernd Schmidt
ed2b2162d0 Make a temporary sequence for a jump emitted only to examine its length.
* bb-reorder.c (get_uncond_jump_length): Avoid using delete_insn,
	emit into a sequence instead.

From-SVN: r217088
2014-11-04 15:25:37 +00:00
Bernd Schmidt
5cfd56a7db Fix type mismatches in intrinsic functions.
* f95-lang.c (gfc_init_builtin_functions): Use type index 2 for
	scalbn, scalbnl and scalbnf.
	* mathbuiltins.def (JN, YN): Use type index 5.

From-SVN: r217087
2014-11-04 15:25:28 +00:00
Jason Merrill
0dadf72895 g++-dg.exp (g++-dg-runtest): Change -std=c++1y to -std=c++14.
* lib/g++-dg.exp (g++-dg-runtest): Change -std=c++1y to -std=c++14.
	* lib/target-supports.exp (check_effective_target_c++14_only): Likewise.

From-SVN: r217085
2014-11-04 09:55:32 -05:00
Jan-Benedict Glaw
0caee3cadf sh.c (emit_fpu_switch): Drop unused automatic variable.
2014-11-04  Jan-Benedict Glaw  <jbglaw@lug-owl.de>

	* config/sh/sh.c (emit_fpu_switch): Drop unused automatic variable.

From-SVN: r217082
2014-11-04 12:41:23 +00:00
Andrew Stubbs
a5fc83a151 pr60102.c: Move dg-skip-if after dg-options.
gcc/testsuite/
	* gcc.target/powerpc/pr60102.c: Move dg-skip-if after dg-options.
	* gcc.target/powerpc/swaps-p8-12.c: Skip test if there would be
	conflicting -mcpu options.
	* gcc.target/powerpc/ppc-target-2.c: Likewise.
	* gcc.target/powerpc/cell_builtin-7.c: Likewise.
	* gcc.target/powerpc/dfp-builtin-1.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-1.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-7.c: Likewise.
	* gcc.target/powerpc/p8vector-vectorize-1.c: Likewise.
	* gcc.target/powerpc/pr48053-3.c: Likewise.
	* gcc.target/powerpc/vsx-builtin-6.c: Likewise.
	* gcc.target/powerpc/440-nmaclhw-1.c: Likewise.
	* gcc.target/powerpc/pr57744.c: Likewise.
	* gcc.target/powerpc/pr47862.c: Likewise.
	* gcc.target/powerpc/vsx-vectorize-8.c: Likewise.
	* gcc.target/powerpc/recip-1.c: Likewise.
	* gcc.target/powerpc/darwin-longlong.c: Likewise.
	* gcc.target/powerpc/bool2-p8.c: Likewise.
	* gcc.target/powerpc/mmfpgpr.c: Likewise.
	* gcc.target/powerpc/pr60203.c: Likewise.
	* gcc.target/powerpc/direct-move-vint1.c: Likewise.
	* gcc.target/powerpc/bool2-av.c: Likewise.
	* gcc.target/powerpc/pr43154.c: Likewise.
	* gcc.target/powerpc/ppc-fma-2.c: Likewise.
	* gcc.target/powerpc/swaps-p8-5.c: Likewise.
	* gcc.target/powerpc/pr59054.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-11.c: Likewise.
	* gcc.target/powerpc/440-mullhwu-1.c: Likewise.
	* gcc.target/powerpc/swaps-p8-13.c: Likewise.
	* gcc.target/powerpc/ppc-target-3.c: Likewise.
	* gcc.target/powerpc/cell_builtin-8.c: Likewise.
	* gcc.target/powerpc/dfp-builtin-2.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-2.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-8.c: Likewise.
	* gcc.target/powerpc/p8vector-vectorize-2.c: Likewise.
	* gcc.target/powerpc/p8vector-vbpermq.c: Likewise.
	* gcc.target/powerpc/vsx-vectorize-1.c: Likewise.
	* gcc.target/powerpc/bswap64-3.c: Likewise.
	* gcc.target/powerpc/bcd-1.c: Likewise.
	* gcc.target/powerpc/440-mulchwu-1.c: Likewise.
	* gcc.target/powerpc/extend-divide-1.c: Likewise.
	* gcc.target/powerpc/vsx-builtin-7.c: Likewise.
	* gcc.target/powerpc/pr48192.c: Likewise.
	* gcc.target/powerpc/pr52775.c: Likewise.
	* gcc.target/powerpc/p8vector-int128-1.c: Likewise.
	* gcc.target/powerpc/pr58673-1.c: Likewise.
	* gcc.target/powerpc/pr53487.c: Likewise.
	* gcc.target/powerpc/440-nmaclhw-2.c: Likewise.
	* gcc.target/powerpc/recip-2.c: Likewise.
	* gcc.target/powerpc/p8vector-fp.c: Likewise.
	* gcc.target/powerpc/direct-move-vint2.c: Likewise.
	* gcc.target/powerpc/ppc-fma-3.c: Likewise.
	* gcc.target/powerpc/pr57150.c: Likewise.
	* gcc.target/powerpc/pr47251.c: Likewise.
	* gcc.target/powerpc/swaps-p8-6.c: Likewise.
	* gcc.target/powerpc/440-mullhwu-2.c: Likewise.
	* gcc.target/powerpc/bool3-p7.c: Likewise.
	* gcc.target/powerpc/cell_builtin-1.c: Likewise.
	* gcc.target/powerpc/swaps-p8-14.c: Likewise.
	* gcc.target/powerpc/ppc-target-4.c: Likewise.
	* gcc.target/powerpc/440-mulhhw-1.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-1.c: Likewise.
	* gcc.target/powerpc/440-machhw-1.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-3.c: Likewise.
	* gcc.target/powerpc/vsx-mass-1.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-9.c: Likewise.
	* gcc.target/powerpc/p8vector-vectorize-3.c: Likewise.
	* gcc.target/powerpc/loop_align.c: Likewise.
	* gcc.target/powerpc/lhs-1.c: Likewise.
	* gcc.target/powerpc/sd-vsx.c: Likewise.
	* gcc.target/powerpc/vsx-vectorize-2.c: Likewise.
	* gcc.target/powerpc/bcd-2.c: Likewise.
	* gcc.target/powerpc/20040121-1.c: Likewise.
	* gcc.target/powerpc/pr52457.c: Likewise.
	* gcc.target/powerpc/440-mulchwu-2.c: Likewise.
	* gcc.target/powerpc/extend-divide-2.c: Likewise.
	* gcc.target/powerpc/vsx-builtin-8.c: Likewise.
	* gcc.target/powerpc/p8vector-int128-2.c: Likewise.
	* gcc.target/powerpc/pr58673-2.c: Likewise.
	* gcc.target/powerpc/atomic-p7.c: Likewise.
	* gcc.target/powerpc/recip-3.c: Likewise.
	* gcc.target/powerpc/440-maclhwu-1.c: Likewise.
	* gcc.target/powerpc/optimize-bswapsi-2.c: Likewise.
	* gcc.target/powerpc/popcount-1.c: Likewise.
	* gcc.target/powerpc/altivec-32.c: Likewise.
	* gcc.target/powerpc/timode_off.c: Likewise.
	* gcc.target/powerpc/p8vector-ldst.c: Likewise.
	* gcc.target/powerpc/pack01.c: Likewise.
	* gcc.target/powerpc/pr55033.c: Likewise.
	* gcc.target/powerpc/ppc-fma-4.c: Likewise.
	* gcc.target/powerpc/swaps-p8-7.c: Likewise.
	* gcc.target/powerpc/ppu-intrinsics.c: Likewise.
	* gcc.target/powerpc/440-macchwu-1.c: Likewise.
	* gcc.target/powerpc/440-mulhhwu-1.c: Likewise.
	* gcc.target/powerpc/440-mulchw-1.c: Likewise.
	* gcc.target/powerpc/bool3-p8.c: Likewise.
	* gcc.target/powerpc/cell_builtin-2.c: Likewise.
	* gcc.target/powerpc/swaps-p8-15.c: Likewise.
	* gcc.target/powerpc/440-macchw-1.c: Likewise.
	* gcc.target/powerpc/440-mulhhw-2.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-2.c: Likewise.
	* gcc.target/powerpc/440-machhw-2.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-4.c: Likewise.
	* gcc.target/powerpc/pr46728-16.c: Likewise.
	* gcc.target/powerpc/vsx-builtin-1.c: Likewise.
	* gcc.target/powerpc/bool3-av.c: Likewise.
	* gcc.target/powerpc/p8vector-vectorize-4.c: Likewise.
	* gcc.target/powerpc/ppc-pow.c: Likewise.
	* gcc.target/powerpc/lhs-2.c: Likewise.
	* gcc.target/powerpc/pr39902-2.c: Likewise.
	* gcc.target/powerpc/20041111-1.c: Likewise.
	* gcc.target/powerpc/builtins-1.c: Likewise.
	* gcc.target/powerpc/bcd-3.c: Likewise.
	* gcc.target/powerpc/vsx-vectorize-3.c: Likewise.
	* gcc.target/powerpc/pr57949-1.c: Likewise.
	* gcc.target/powerpc/atomic-p8.c: Likewise.
	* gcc.target/powerpc/sd-pwr6.c: Likewise.
	* gcc.target/powerpc/recip-4.c: Likewise.
	* gcc.target/powerpc/440-maclhwu-2.c: Likewise.
	* gcc.target/powerpc/warn-2.c: Likewise.
	* gcc.target/powerpc/parity-1.c: Likewise.
	* gcc.target/powerpc/popcount-2.c: Likewise.
	* gcc.target/powerpc/crypto-builtin-1.c: Likewise.
	* gcc.target/powerpc/ppc-fma-5.c: Likewise.
	* gcc.target/powerpc/swaps-p8-8.c: Likewise.
	* gcc.target/powerpc/pr42747.c: Likewise.
	* gcc.target/powerpc/440-macchwu-2.c: Likewise.
	* gcc.target/powerpc/440-mulhhwu-2.c: Likewise.
	* gcc.target/powerpc/dfp-dd-2.c: Likewise.
	* gcc.target/powerpc/direct-move-float1.c: Likewise.
	* gcc.target/powerpc/440-mulchw-2.c: Likewise.
	* gcc.target/powerpc/cell_builtin-3.c: Likewise.
	* gcc.target/powerpc/swaps-p8-16.c: Likewise.
	* gcc.target/powerpc/440-macchw-2.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-3.c: Likewise.
	* gcc.target/powerpc/dfp-td-2.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-5.c: Likewise.
	* gcc.target/powerpc/vsx-builtin-2.c: Likewise.
	* gcc.target/powerpc/p8vector-vectorize-5.c: Likewise.
	* gcc.target/powerpc/lhs-3.c: Likewise.
	* gcc.target/powerpc/440-nmachhw-1.c: Likewise.
	* gcc.target/powerpc/builtins-2.c: Likewise.
	* gcc.target/powerpc/vsx-vectorize-4.c: Likewise.
	* gcc.target/powerpc/pr52199.c: Likewise.
	* gcc.target/powerpc/440-machhwu-1.c: Likewise.
	* gcc.target/powerpc/pr57949-2.c: Likewise.
	* gcc.target/powerpc/recip-5.c: Likewise.
	* gcc.target/powerpc/popcount-3.c: Likewise.
	* gcc.target/powerpc/vsx-vector-1.c: Likewise.
	* gcc.target/powerpc/swaps-p8-1.c: Likewise.
	* gcc.target/powerpc/optimize-bswapdi-2.c: Likewise.
	* gcc.target/powerpc/ppc-fma-6.c: Likewise.
	* gcc.target/powerpc/vsx-extract-1.c: Likewise.
	* gcc.target/powerpc/pr48226.c: Likewise.
	* gcc.target/powerpc/swaps-p8-9.c: Likewise.
	* gcc.target/powerpc/pr47755-2.c: Likewise.
	* gcc.target/powerpc/direct-move-float2.c: Likewise.
	* gcc.target/powerpc/cell_builtin-4.c: Likewise.
	* gcc.target/powerpc/direct-move-double1.c: Likewise.
	* gcc.target/powerpc/swaps-p8-17.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-4.c: Likewise.
	* gcc.target/powerpc/dfp-td-3.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-6.c: Likewise.
	* gcc.target/powerpc/440-nmacchw-1.c: Likewise.
	* gcc.target/powerpc/vsx-builtin-3.c: Likewise.
	* gcc.target/powerpc/440-nmachhw-2.c: Likewise.
	* gcc.target/powerpc/vsx-vectorize-5.c: Likewise.
	* gcc.target/powerpc/bool2-p5.c: Likewise.
	* gcc.target/powerpc/440-machhwu-2.c: Likewise.
	* gcc.target/powerpc/fusion.c: Likewise.
	* gcc.target/powerpc/recip-6.c: Likewise.
	* gcc.target/powerpc/altivec-cell-6.c: Likewise.
	* gcc.target/powerpc/vsx-vector-2.c: Likewise.
	* gcc.target/powerpc/swaps-p8-2.c: Likewise.
	* gcc.target/powerpc/optimize-bswapdi-3.c: Likewise.
	* gcc.target/powerpc/ppc-fma-7.c: Likewise.
	* gcc.target/powerpc/vsx-extract-2.c: Likewise.
	* gcc.target/powerpc/direct-move-long1.c: Likewise.
	* gcc.target/powerpc/dfp-dd.c: Likewise.
	* gcc.target/powerpc/swaps-p8-10.c: Likewise.
	* gcc.target/powerpc/cell_builtin-5.c: Likewise.
	* gcc.target/powerpc/direct-move-double2.c: Likewise.
	* gcc.target/powerpc/440-mullhw-1.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-5.c: Likewise.
	* gcc.target/powerpc/440-maclhw-1.c: Likewise.
	* gcc.target/powerpc/dfp-td.c: Likewise.
	* gcc.target/powerpc/p8vector-builtin-7.c: Likewise.
	* gcc.target/powerpc/pr48053-1.c: Likewise.
	* gcc.target/powerpc/440-nmacchw-2.c: Likewise.
	* gcc.target/powerpc/vsx-builtin-4.c: Likewise.
	* gcc.target/powerpc/pr60676.c: Likewise.
	* gcc.target/powerpc/pr48258-1.c: Likewise.
	* gcc.target/powerpc/vsx-vectorize-6.c: Likewise.
	* gcc.target/powerpc/pr48857.c: Likewise.
	* gcc.target/powerpc/quad-atomic.c: Likewise.
	* gcc.target/powerpc/altivec-cell-7.c: Likewise.
	* gcc.target/powerpc/atomic_load_store-p8.c: Likewise.
	* gcc.target/powerpc/vsx-vector-3.c: Likewise.
	* gcc.target/powerpc/swaps-p8-3.c: Likewise.
	* gcc.target/powerpc/pr56605.c: Likewise.
	* gcc.target/powerpc/vsx-extract-3.c: Likewise.
	* gcc.target/powerpc/pr53199.c: Likewise.
	* gcc.target/powerpc/direct-move-long2.c: Likewise.
	* gcc.target/powerpc/swaps-p8-11.c: Likewise.
	* gcc.target/powerpc/vsx-float0.c: Likewise.
	* gcc.target/powerpc/ppc-target-1.c: Likewise.
	* gcc.target/powerpc/altivec-20.c: Likewise.
	* gcc.target/powerpc/cell_builtin-6.c: Likewise.
	* gcc.target/powerpc/440-mullhw-2.c: Likewise.
	* gcc.target/powerpc/darwin-ehreturn-1.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-6.c: Likewise.
	* gcc.target/powerpc/440-maclhw-2.c: Likewise.
	* gcc.target/powerpc/440-dlmzb-strlen-1.c: Likewise.
	* gcc.target/powerpc/pr60137.c: Likewise.
	* gcc.target/powerpc/bswap64-1.c: Likewise.
	* gcc.target/powerpc/pr48053-2.c: Likewise.
	* gcc.target/powerpc/vsx-builtin-5.c: Likewise.
	* gcc.target/powerpc/pr48258-2.c: Likewise.
	* gcc.target/powerpc/vsx-vectorize-7.c: Likewise.
	* gcc.target/powerpc/vsx-sfminmax.c: Likewise.
	* gcc.target/powerpc/bool2-p7.c: Likewise.
	* gcc.target/powerpc/ppc-round.c: Likewise.
	* gcc.target/powerpc/altivec-cell-8.c: Likewise.
	* gcc.target/powerpc/vsx-vector-4.c: Likewise.
	* gcc.target/powerpc/ppc-fma-1.c: Likewise.
	* gcc.target/powerpc/swaps-p8-4.c: Likewise.
	* gcc.target/powerpc/ppc-fpconv-10.c: Likewise.
	* gcc.target/powerpc/pr47755.c: Likewise.

From-SVN: r217081
2014-11-04 12:09:50 +00:00
Alan Lawrence
f5dcbee165 [ARM] Migrate to new reduc_[us](min|max)_scal_optab
config/arm/neon.md (reduc_smin_<mode> *2): Rename to...
	(reduc_smin_scal_<mode> *2): ...this; extract scalar result.
	(reduc_smax_<mode> *2): Rename to...
	(reduc_smax_scal_<mode> *2): ...this; extract scalar result.
	(reduc_umin_<mode> *2): Rename to...
	(reduc_umin_scal_<mode> *2): ...this; extract scalar result.
	(reduc_umax_<mode> *2): Rename to...
	(reduc_umax_scal_<mode> *2): ...this; extract scalar result.

From-SVN: r217080
2014-11-04 12:09:38 +00:00
Alan Lawrence
89edc98667 [ARM] Migrate to new reduc_plus_scal_optab
config/arm/neon.md (reduc_plus_*): Rename to...
	(reduc_plus_scal_*): ...this; reduce to temp and extract scalar result.

From-SVN: r217079
2014-11-04 12:05:52 +00:00
Michael Collison
95d47b10be [AArch64] Fix predicate and constraint mismatch in logical atomic operations
2014-11-04  Michael Collison <michael.collison@linaro.org>

	* config/aarch64/iterators.md (lconst_atomic): New mode attribute
	to support constraints for CONST_INT in atomic operations.
	* config/aarch64/atomics.md
	(atomic_<atomic_optab><mode>): Use lconst_atomic constraint.
	(atomic_nand<mode>): Likewise.
	(atomic_fetch_<atomic_optab><mode>): Likewise.
	(atomic_fetch_nand<mode>): Likewise.
	(atomic_<atomic_optab>_fetch<mode>): Likewise.
	(atomic_nand_fetch<mode>): Likewise.

From-SVN: r217076
2014-11-04 12:23:10 +01:00
Ramana Radhakrishnan
5d1f63255b Fix typo in definition of __ARM_FEATURE_IDIV
From-SVN: r217073
2014-11-04 09:45:22 +00:00
Ramana Radhakrishnan
06c0c6fa0c Fix typo in definition of __ARM_FEATURE_IDIV
From-SVN: r217072
2014-11-04 09:45:06 +00:00
Marek Polacek
74e3d997b3 ubsan.c (instrument_object_size): Optimize [x & CST] array accesses.
* ubsan.c (instrument_object_size): Optimize [x & CST] array accesses.
testsuite/
	* c-c++-common/ubsan/object-size-10.c: New test.

From-SVN: r217071
2014-11-04 09:30:47 +00:00
Jan-Benedict Glaw
107bdb31ee rx.c (rx_handle_func_attribute): Mark unused argument.
2014-11-03  Jan-Benedict Glaw  <jbglaw@lug-owl.de>

	* config/rx/rx.c (rx_handle_func_attribute): Mark unused argument.

From-SVN: r217070
2014-11-04 09:22:51 +00:00
Jonathan Wakely
335a3ed6a1 numeric.h: Do not use default arguments in function template redeclarations (definitions).
* include/parallel/numeric.h: Do not use default arguments in function
	template redeclarations (definitions).

From-SVN: r217069
2014-11-04 03:41:16 +00:00
Jonathan Wakely
d3cf41899e Do not assume allocator is assignable.
* include/bits/stl_deque.h (_Deque_base(_Deque_base&&)): Copy
	allocator instead of moving.
	* testsuite/23_containers/deque/allocator/move-2.cc: New.

From-SVN: r217068
2014-11-04 03:41:12 +00:00
Jonathan Wakely
565115eaaf Make reference_wrapper trivially copyable.
* include/std/functional (reference_wrapper): Define copy constructor
	and copy assignment as defaulted.
	* testsuite/20_util/bind/ref_neg.cc: Adjust dg-error.
	* testsuite/20_util/reference_wrapper/requirements.cc: New.

From-SVN: r217067
2014-11-04 02:49:33 +00:00
Jonathan Wakely
ac6f071ad9 Use ctype_base::blank in regex_traits.
* include/bits/regex.h (regex_traits::_RegexMask): Remove _S_blank and
	adjust _S_valid_mask.
	* include/bits/regex.tcc (regex_traits::lookup_classname): Use
	ctype_base::blank.

From-SVN: r217066
2014-11-04 02:49:30 +00:00
Jonathan Wakely
9bcb72e0b0 * include/std/functional (_Bind_simple): Simplify construction.
From-SVN: r217065
2014-11-04 02:49:27 +00:00
Jonathan Wakely
8a57bed1d6 Use aliases for type traits in C++14 mode.
* include/bits/unique_ptr.h (make_unique): Use alias for trait.
	* include/experimental/optional (__constexpr_addressof): Likewise.
	(_Optional_base, optional, make_optional): Likewise.

From-SVN: r217064
2014-11-04 02:49:20 +00:00
Zhenqiang Chen
fc628a8153 revert: ifcvt.c (noce_emit_cmove, [...]): Allow CC mode if HAVE_cbranchcc4.
2014-11-04  Zhenqiang Chen  <zhenqiang.chen@arm.com>

	Revert:
	2014-11-03  Zhenqiang Chen  <zhenqiang.chen@arm.com>
	* ifcvt.c (noce_emit_cmove, noce_get_alt_condition, noce_get_condition):
	Allow CC mode if HAVE_cbranchcc4.

From-SVN: r217062
2014-11-04 02:21:51 +00:00
GCC Administrator
b86fa3ee6d Daily bump.
From-SVN: r217061
2014-11-04 00:16:27 +00:00