Add testcase for PR 63894

2014-11-17  Markus Trippelsdorf  <markus@trippelsdorf.de>

  PR ipa/63894
  * g++.dg/ipa/pr63894.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217648 138bc75d-0d04-0410-961f-82ee72b054a4
Added Dodji Seketeli as line map maintainer

	* MAINTAINERS (Various Maintainers): Added myself as line map
	maintainer.
	* ChangeLog: Update this.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217649 138bc75d-0d04-0410-961f-82ee72b054a4
2014-11-17  Richard Biener  <rguenther@suse.de>

	PR middle-end/63898
	* match.pd: Guard X / CST -> X * CST' transform against
	zero CST.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217650 138bc75d-0d04-0410-961f-82ee72b054a4
	* config/avr/avr-log.c (avr_log_set_avr_log) [TARGET_ALL_DEBUG]:
	Set avr_log_details to "all".



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217651 138bc75d-0d04-0410-961f-82ee72b054a4
2014-11-17  Richard Biener  <rguenther@suse.de>

	PR middle-end/63898
	PR middle-end/63883
	* gfortran.dg/pr63883.f90: New testcase.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217652 138bc75d-0d04-0410-961f-82ee72b054a4
Add more comments to some gimple accessors

gcc/ChangeLog:

	* gimple.h (gimple_set_visited, gimple_visited_p)
	(gimple_set_plf, gimple_plf, gimple_set_uid, gimple_uid): Add more
	comments to these accessors.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217653 138bc75d-0d04-0410-961f-82ee72b054a4
Replace unsigned long with __SIZE_TYPE__

	* g++.dg/ipa/pr63894.C (new): Replace unsigned long with
	__SIZE_TYPE__.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217654 138bc75d-0d04-0410-961f-82ee72b054a4
	* tree-core.h (built_in_class): Add builtin codes to be used
	by Pointer Bounds Checker for instrumented builtin functions.
	* tree-streamer-in.c: Include ipa-chkp.h.
	(streamer_get_builtin_tree): Created instrumented decl if
	required.
	* ipa-chkp.h (chkp_maybe_clone_builtin_fndecl): New.
	* ipa-chkp.c (chkp_build_instrumented_fndecl): Support builtin
	function decls.
	(chkp_maybe_clone_builtin_fndecl): New.
	(chkp_maybe_create_clone): Support builtin function decls.
	(chkp_versioning): Clone builtin functions.
	* tree-chkp.c (chkp_instrument_normal_builtin): New.
	(chkp_add_bounds_to_call_stmt): Support builtin functions.
	(chkp_replace_function_pointer): Likewise.
	* builtins.c (expand_builtin_memcpy_args): New.
	(expand_builtin_memcpy): Call expand_builtin_memcpy_args.
	(expand_builtin_memcpy_with_bounds): New.
	(expand_builtin_mempcpy_with_bounds): New.
	(expand_builtin_mempcpy_args): Add orig_exp arg. Support
	BUILT_IN_CHKP_MEMCPY_NOBND_NOCHK
	(expand_builtin_memset_with_bounds): New.
	(expand_builtin_memset_args): Support BUILT_IN_CHKP_MEMSET_NOBND_NOCHK.
	(expand_builtin_with_bounds): New.
	* builtins.h (expand_builtin_with_bounds): New.
	* expr.c (expand_expr_real_1): Support instrumented builtin calls.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217655 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/

	* tree-chkp-opt.c (chkp_get_nobnd_fndecl): New.
	(chkp_get_nochk_fndecl): New.
	(chkp_optimize_string_function_calls): New.
	(chkp_opt_execute): Call chkp_optimize_string_function_calls.
	* tree-cfg.h (insert_cond_bb): New.
	* tree-cfg.c (insert_cond_bb): New.

gcc/testsuite/

	* gcc.target/i386/chkp-stropt-1.c: New.
	* gcc.target/i386/chkp-stropt-2.c: New.
	* gcc.target/i386/chkp-stropt-3.c: New.
	* gcc.target/i386/chkp-stropt-4.c: New.
	* gcc.target/i386/chkp-stropt-5.c: New.
	* gcc.target/i386/chkp-stropt-6.c: New.
	* gcc.target/i386/chkp-stropt-7.c: New.
	* gcc.target/i386/chkp-stropt-8.c: New.
	* gcc.target/i386/chkp-stropt-9.c: New.
	* gcc.target/i386/chkp-stropt-10.c: New.
	* gcc.target/i386/chkp-stropt-11.c: New.
	* gcc.target/i386/chkp-stropt-12.c: New.
	* gcc.target/i386/chkp-stropt-13.c: New.
	* gcc.target/i386/chkp-stropt-14.c: New.
	* gcc.target/i386/chkp-stropt-15.c: New.
	* gcc.target/i386/chkp-stropt-16.c: New.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217656 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/

	* tree-ssa-strlen.c: include ipa-chkp.h, cgraph.h,
	ipa-ref.h, plugin-api.h.
	(get_string_length): Handle calls with bounds.
	(adjust_last_stmt): Likewise.
	(handle_builtin_strchr): Likewise.
	(handle_builtin_strcpy): Likewise.
	(handle_builtin_memcpy): Likewise.
	(handle_builtin_strcat): Likewise.

gcc/testsuite/

	* gcc.target/i386/chkp-strlen-1.c: New.
	* gcc.target/i386/chkp-strlen-2.c: New.
	* gcc.target/i386/chkp-strlen-3.c: New.
	* gcc.target/i386/chkp-strlen-4.c: New.
	* gcc.target/i386/chkp-strlen-5.c: New.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217657 138bc75d-0d04-0410-961f-82ee72b054a4
	* builtins.c (expand_builtin_memcpy_with_bounds): Use target hook
	instead of BNDmode.
	(expand_builtin_mempcpy_with_bounds): Likewise.
	(expand_builtin_memset_with_bounds): Likewise.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217658 138bc75d-0d04-0410-961f-82ee72b054a4
	* tree.c (free_lang_data_in_decl): Annotate all functio nbodies with
	DECL_FUNCTION_SPECIFIC_TARGET.
	* i386.c (ix86_set_current_function): Handle explicit default options.

	* lto.c (lto_read_decls): Do not rebuild DECL_FUNCTION_SPECIFIC_TARGET.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217659 138bc75d-0d04-0410-961f-82ee72b054a4
	PR c++/52282
	* decl.c (build_ptrmemfunc_type): Don't build a different
	RECORD_TYPE for a qualified PMF.
	* cp-tree.h (TYPE_PTRMEMFUNC_FN_TYPE): Merge cv-quals.
	(TYPE_PTRMEMFUNC_FN_TYPE_RAW): New.
	* decl2.c (cplus_decl_attributes): Use TYPE_PTRMEMFUNC_FN_TYPE_RAW.
	* tree.c (cp_walk_subtrees): Likewise.
	(cp_build_qualified_type_real): Remove special PMF handling.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217660 138bc75d-0d04-0410-961f-82ee72b054a4
[AArch64] Remove crypto extension from default for cortex-a53, cortex-a57

	* config/aarch64/aarch64-cores.def (cortex-a53): Remove
	AARCH64_FL_CRYPTO from feature flags.
	(cortex-a57): Likewise.
	(cortex-a57.cortex-a53): Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217661 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/:

	* config/aarch64/aarch64-builtins.c (TYPES_CREATE): Remove.
	* config/aarch64/aarch64-simd-builtins.def (create): Remove.
	* config/aarch64/aarch64-simd.md (aarch64_create<mode>): Remove.
	* config/aarch64/arm_neon.h (vcreate_f64, vreinterpret_f64_s64,
	vreinterpret_f64_u64): Replace __builtin_aarch64_createv1df with C casts.
	* config/aarch64/iterators.md (VD1): Remove.

gcc/testsuite/:

	* gcc.target/aarch64/simd/vfma_f64.c: Add asm volatile memory.
	* gcc.target/aarch64/simd/vfms_f64.c: Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217662 138bc75d-0d04-0410-961f-82ee72b054a4
	C++14 constexpr support (minus loops and multiple returns)
gcc/
	* tree-inline.c (copy_fn): New.
	* tree-inline.h: Declare it.
gcc/cp/
	* constexpr.c (use_new_call): New macro.
	(build_data_member_initialization): Ignore non-mem-inits.
	(check_constexpr_bind_expr_vars): Remove C++14 checks.
	(constexpr_fn_retval): Likewise.
	(check_constexpr_ctor_body): Do nothing in C++14.
	(massage_constexpr_body): In C++14 only collect mem-inits.
	(get_function_named_in_call): Handle null CALL_EXPR_FN.
	(cxx_bind_parameters_in_call): Build bindings in same order as
	parameters.  Don't treat iniviref parms specially in new call mode.
	(cxx_eval_call_expression): If use_new_call, do constexpr expansion
	based on DECL_SAVED_TREE rather than the massaged constexpr body.
	Set up ctx->object from AGGR_INIT_EXPR_SLOT if we don't have one.
	(is_sub_constant_expr): Don't mess with ctx.ctor here.
	(cxx_eval_component_reference): A null element means we're mid-
	initialization.
	(cxx_eval_store_expression, cxx_eval_increment_expression): New.
	(cxx_eval_constant_expression): Handle RESULT_DECL, DECL_EXPR,
	MODIFY_EXPR, STATEMENT_LIST, BIND_EXPR, USING_STMT,
	PREINCREMENT_EXPR, POSTINCREMENT_EXPR, PREDECREMENT_EXPR,
	POSTDECREMENT_EXPR.  Don't look into DECL_INITIAL of variables in
	constexpr functions.  In new-call mode find parms in the values table.
	(potential_constant_expression_1): Handle null CALL_EXPR_FN.
	Handle STATEMENT_LIST, MODIFY_EXPR, MODOP_EXPR, IF_STMT,
	PREINCREMENT_EXPR, POSTINCREMENT_EXPR, PREDECREMENT_EXPR,
	POSTDECREMENT_EXPR, BIND_EXPR, WITH_CLEANUP_EXPR,
	CLEANUP_POINT_EXPR, MUST_NOT_THROW_EXPR, TRY_CATCH_EXPR,
	EH_SPEC_BLOCK, EXPR_STMT, DECL_EXPR, CASE_LABEL_EXPR, BREAK_STMT,
	CONTINUE_STMT, USING_STMT, IF_STMT, DO_STMT, FOR_STMT, WHILE_STMT,
	SWITCH_STMT, ASM_EXPR.
	(cxx_eval_vec_init_1): Call build_aggr_init_expr.
	(cxx_eval_indirect_ref): Don't return a CONSTRUCTOR when the
	caller wants an lvalue.
	(cxx_eval_outermost_constant_expr): Pull object out of AGGR_INIT_EXPR.
	(maybe_constant_init): Look through INIT_EXPR.
	(ensure_literal_type_for_constexpr_object): Set
	cp_function_chain->invalid_constexpr.
	* cp-tree.h (struct language_function): Add invalid_constexpr bitfield.
	* decl.c (start_decl): Set cp_function_chain->invalid_constexpr.
	(check_for_uninitialized_const_var): Likewise.
	(maybe_save_function_definition): Check it.
	* parser.c (cp_parser_jump_statement): Set
	cp_function_chain->invalid_constexpr.
	(cp_parser_asm_definition): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217663 138bc75d-0d04-0410-961f-82ee72b054a4
	* constexpr.c (use_new_call): Always use new call handling.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217664 138bc75d-0d04-0410-961f-82ee72b054a4
[AArch64] Extend aarch64_simd_vec_set pattern, replace asm for vld1_lane

gcc/:
 
	* config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Add
	variant reading from memory and assembling to ld1.

	* config/aarch64/arm_neon.h (vld1_lane_f32, vld1_lane_f64, vld1_lane_p8,
	vld1_lane_p16, vld1_lane_s8, vld1_lane_s16, vld1_lane_s32,
	vld1_lane_s64, vld1_lane_u8, vld1_lane_u16, vld1_lane_u32,
	vld1_lane_u64, vld1q_lane_f32, vld1q_lane_f64, vld1q_lane_p8,
	vld1q_lane_p16, vld1q_lane_s8, vld1q_lane_s16, vld1q_lane_s32,
	vld1q_lane_s64, vld1q_lane_u8, vld1q_lane_u16, vld1q_lane_u32,
	vld1q_lane_u64): Replace asm with vset_lane and pointer dereference.

gcc/testsuite/:
 
	* gcc.target/aarch64/vld1_lane.c: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217665 138bc75d-0d04-0410-961f-82ee72b054a4
	* predict.c (maybe_hot_frequency_p): Use opt_for_fn.
	(optimize_function_for_size_p): Likewise.
	(probably_never_executed): Likewise; replace cfun by fun.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217666 138bc75d-0d04-0410-961f-82ee72b054a4
	* cgraph.c (symbol_table::create_edge): Use opt_for_fn.
	(cgraph_node::cannot_return_p): Likewise.
	(cgraph_edge::cannot_lead_to_return_p): Likewise.
	(cgraph_edge::maybe_hot_p): Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217667 138bc75d-0d04-0410-961f-82ee72b054a4