1. 20 Oct, 2017 15 commits
    • Add generic part for Intel CET enabling. The spec is available at · 5c5f0b65
      https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf
      
      A proposal is to introduce a target independent flag
      -fcf-protection=[none|branch|return|full] with a semantic to
      instrument a code to control validness or integrity of control-flow
      transfers using jump and call instructions. The main goal is to detect
      and block a possible malware execution through transfer the execution
      to unknown target address. Implementation could be either software or
      target based. Any target platforms can provide their implementation
      for instrumentation under this option.
      
      The compiler should instrument any control-flow transfer points in a
      program (ex. call/jmp/ret) as well as any landing pads, which are
      targets of control-flow transfers.
      
      A new 'nocf_check' attribute is introduced to provide hand tuning
      support. The attribute directs the compiler to skip a call to a
      function and a function's landing pad from instrumentation. The
      attribute can be used for function and pointer to function types,
      otherwise it will be ignored.
      
      Currently all platforms except i386 will report the error and do no
      instrumentation. i386 will provide the implementation based on a
      specification published by Intel for a new technology called
      Control-flow Enforcement Technology (CET).
      
      gcc/c-family/
      	* c-attribs.c (handle_nocf_check_attribute): New function.
      	(c_common_attribute_table): Add 'nocf_check' handling.
      
      gcc/c/
      	* gimple-parser.c: Add second argument NULL to
      	gimple_build_call_from_tree.
      
      gcc/
      	* attrib.c (comp_type_attributes): Check nocf_check attribute.
      	* cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for
      	call insn.
      	* combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling.
      	* common.opt: Add fcf-protection flag.
      	* emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling.
      	* flag-types.h: Add enum cf_protection_level.
      	* gimple.c (gimple_build_call_from_tree): Add second parameter.
      	Add 'nocf_check' attribute propagation to gimple call.
      	* gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK.
      	(gimple_build_call_from_tree): Update prototype.
      	(gimple_call_nocf_check_p): New function.
      	(gimple_call_set_nocf_check): Likewise.
      	* gimplify.c: Add second argument to gimple_build_call_from_tree.
      	* ipa-icf.c: Add nocf_check attribute in statement hash.
      	* recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling.
      	* reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK).
      	* toplev.c (process_options): Add flag_cf_protection handling.
      
      From-SVN: r253936
      Igor Tsimbalist committed
    • [arm] Fix architecture selection when building libatomic with automatic FPU selection · e64944ac
      Libatomic builds a few functions for Arm with an explicit -march
      option.  This option does not specify an FPU, which can lead to
      problems when targeting a hard-float or softfp environment since the
      architecture appears to be incompatible with the selected ABI.
      
      The fix is simple enough, just add +fp (the minimum floating point
      option) to the architecture.  We don't use anything from the FP
      architecture, so it shouldn't really change anything; and if we are
      building for -mfloat-abi=soft the canonicalization process will remove
      the unnecessary fp attributes anyway.
      
      	* Makefile.am: (IFUNC_OPTIONS): Set the architecture to
      	-march=armv7-a+fp on Linux/Arm.
      	* Makefile.in: Regenerated.
      
      From-SVN: r253935
      Richard Earnshaw committed
    • re PR tree-optimization/82603 (ICE in ifcvt_local_dce w/ -O2 -ftree-loop-vectorize) · 1031b577
      2017-10-20  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82603
      	* tree-if-conv.c (predicate_mem_writes): Make sure to only
      	remove false predicated stores.
      
      	* gcc.dg/torture/pr82603.c: New testcase.
      
      From-SVN: r253933
      Richard Biener committed
    • 2017-10-20 Richard Biener <rguenther@suse.de> · c46bd472
      	* graphite-isl-ast-to-gimple.c
      	(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block):
      	Remove return value and simplify, dump copied stmt after lhs
      	adjustment.
      	(translate_isl_ast_to_gimple::translate_isl_ast_node_user):
      	Reduce dump verbosity.
      	(gsi_insert_earliest): Likewise.
      	(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust.
      	* graphite.c (print_global_statistics): Adjust dumping.
      	(print_graphite_scop_statistics): Likewise.
      	(print_graphite_statistics): Do not dump loops here.
      	(graphite_transform_loops): But here.
      
      From-SVN: r253930
      Richard Biener committed
    • Reduce stack size in gcc.dg/tree-ssa/ldist-27.c · 424101dd
      2017-10-20  Tom de Vries  <tom@codesourcery.com>
      
      	* gcc.dg/tree-ssa/ldist-27.c: Remove dg-require-stack-size.
      	(main): Move s ...
      	(s): ... here.
      
      From-SVN: r253929
      Tom de Vries committed
    • configure.ac (ACX_PROG_GNAT): Append "libgnat" to the include dir. · e8679fd5
      	* configure.ac (ACX_PROG_GNAT): Append "libgnat" to the include dir.
      	* configure: Regenerate.
      
      From-SVN: r253928
      Nicolas Roche committed
    • re PR target/82158 (_Noreturn functions that do return clobber caller's… · 356fcc67
      re PR target/82158 (_Noreturn functions that do return clobber caller's registers on ARM32 (but not other arches))
      
      	PR target/82158
      	* tree-cfg.c (pass_warn_function_return::execute): In noreturn
      	functions when optimizing replace GIMPLE_RETURN stmts with
      	calls to __builtin_unreachable ().
      
      	* gcc.dg/tree-ssa/noreturn-1.c: New test.
      
      From-SVN: r253926
      Jakub Jelinek committed
    • re PR sanitizer/82595 (bootstrap fails in libsanitizer on powerpc64-unknown-linux-gnu) · 9a45ffbd
      	PR sanitizer/82595
      	* config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o
      	for -fsanitize=thread link of executables.
      	(LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak
      	link of executables.
      
      	* lsan/lsan.h (__lsan_init): Add SANITIZER_INTERFACE_ATTRIBUTE.
      	* lsan/Makefile.am (nodist_toolexeclib_HEADERS): Add
      	liblsan_preinit.o.
      	(lsan_files): Remove lsan_preinit.cc.
      	(liblsan_preinit.o): New rule.
      	* lsan/Makefile.in: Regenerated.
      
      From-SVN: r253925
      Jakub Jelinek committed
    • re PR target/82370 (AVX512 can use a memory operand for immediate-count vpsrlw, but gcc doesn't.) · 42a764f7
      	PR target/82370
      	* config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2):
      	New mode iterators.
      	(<shift_insn><mode>3<mask_name>): Change the last of the 3
      	define_insns for logical vector shifts to use VI248_AVX512BW
      	iterator instead of VI48_AVX512, remove <mask_mode512bit_condition>
      	condition, useless isa and prefix attributes.  Change the first
      	2 of these define_insns to ...
      	(<mask_codefor><shift_insn><mode>3<mask_name>): ... this, new
      	define_insn for avx512vl.
      	(<shift_insn><mode>3): ... and this, new define_insn without
      	masking for non-avx512vl.
      
      	* gcc.target/i386/avx-pr82370.c: New test.
      	* gcc.target/i386/avx2-pr82370.c: New test.
      	* gcc.target/i386/avx512f-pr82370.c: New test.
      	* gcc.target/i386/avx512bw-pr82370.c: New test.
      	* gcc.target/i386/avx512vl-pr82370.c: New test.
      	* gcc.target/i386/avx512vlbw-pr82370.c: New test.
      
      From-SVN: r253924
      Jakub Jelinek committed
    • re PR target/82370 (AVX512 can use a memory operand for immediate-count vpsrlw, but gcc doesn't.) · c274eebe
      	PR target/82370
      	* config/i386/sse.md (*andnot<mode>3,
      	<mask_codefor><code><mode>3<mask_name>, *<code><mode>3): Split
      	(=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit
      	and 256-bit vectors, the (=x,x,xm) alternative and when mask is
      	not applied use empty suffix even for TARGET_AVX512VL.
      	* config/i386/subst.md (mask_prefix3, mask_prefix4): When mask
      	is applied, supply evex,evex or evex,evex,evex instead of just
      	evex.
      
      From-SVN: r253923
      Jakub Jelinek committed
    • Add GFNI command line options and macros · b8cca31c
      gcc/
      	* common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET,
      	(OPTION_MASK_ISA_GFNI_UNSET): New.
      	(ix86_handle_option): Handle OPT_mgfni.
      	* config/i386/cpuid.h (bit_GFNI): New.
      	* config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni.
      	* config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__.
      	* config/i386/i386.c (ix86_target_string): Add -mgfni.
      	(ix86_valid_target_attribute_inner_p): Add OPT_mgfni.
      	* config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New.
      	* config/i386/i386.opt: Add mgfni.
      
      From-SVN: r253922
      Julia Koval committed
    • msp430.c (msp430_option_override): Disable -fdelete-null-pointer-checks. · 793c096d
      * config/msp430/msp430.c (msp430_option_override): Disable
      -fdelete-null-pointer-checks.
      * doc/invoke.text (-fdelete-null-pointer-checks): Document that.
      
      * lib/target-supports.exp (check_effective_target_keeps_null_pointer_checks):
      Add msp430 to the list.
      
      From-SVN: r253921
      Orlando Arias committed
    • re PR c++/82308 ([C++17] deduction of template arguments results in internal compiler error) · b6b240ed
      2017-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/82308
      	* g++.dg/cpp1z/class-deduction45.C: New.
      
      From-SVN: r253920
      Paolo Carlini committed
    • Daily bump. · 6d2bd9ff
      From-SVN: r253919
      GCC Administrator committed
  2. 19 Oct, 2017 25 commits
    • exp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ" should be "T". · 7d92172c
      2017-10-19  Bob Duff  <duff@adacore.com>
      
      	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Fix silly bug -- "Typ"
      	should be "T".  Handle case of a subtype of a class-wide type.
      
      From-SVN: r253916
      Bob Duff committed
    • [multiple changes] · fb9dd1c7
      2017-10-19  Bob Duff  <duff@adacore.com>
      
      	* exp_util.adb: (Process_Statements_For_Controlled_Objects): Clarify
      	which node kinds can legitimately be ignored, and raise Program_Error
      	for others.
      
      2017-10-19  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_elab.adb (Compilation_Unit): Handle the case of a subprogram
      	instantiation that acts as a compilation unit.
      	(Find_Code_Unit): Reimplemented.
      	(Find_Top_Unit): Reimplemented.
      	(Find_Unit_Entity): New routine.
      	(Process_Instantiation_SPARK): Correct the elaboration requirement a
      	package instantiation imposes on a unit.
      
      2017-10-19  Bob Duff  <duff@adacore.com>
      
      	* exp_ch6.adb (Is_Build_In_Place_Result_Type): Enable build-in-place
      	for a narrow set of controlled types.
      
      2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
      
      	* sinput.ads (Line_Start): Add pragma Inline.
      	* widechar.ads (Is_Start_Of_Wide_Char): Likewise.
      
      2017-10-19  Bob Duff  <duff@adacore.com>
      
      	* exp_attr.adb (Expand_N_Attribute_Reference): Disable
      	Make_Build_In_Place_Call_... for F(...)'Old, where F(...) is a
      	build-in-place function call so that the temp is declared in the right
      	place.
      
      From-SVN: r253915
      Pierre-Marie de Rodat committed
    • PR82575, lto debugobj references __gnu_lto_slim, ld test liblto-17 fails · ebd208bf
      If __gnu_lto_slim is global, undefined, default visibility in the
      early debug object, then it finds its way into .dynsym when creating
      shared libraries.  __gnu_lto_slim in a symbol table (.dynsym or
      .symtab) signals nm and other binutils that the object is an LTO
      object needing a plugin, but that isn't the case for the ld liblti-17
      tests.  So, make __gnu_lto_slim hidden to prevent it becoming
      dynamic.  Further, make it weak because some linkers may warn on
      finding an undefined global non-default visibility symbol.
      
      	PR lto/82575
      	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
      	Make discarded non-local symbols weak and hidden.
      
      From-SVN: r253914
      Alan Modra committed
    • x86-tune-costs.h (generic_cost, core_cost): Correct costs of x87 and SSE instructions. · ef9eec0b
      
      	* x86-tune-costs.h (generic_cost, core_cost): Correct costs
      	of x87 and SSE instructions.
      
      From-SVN: r253911
      Jan Hubicka committed
    • asan.c (create_cond_insert_point): Do not update edge count. · ef30ab83
      
      	* asan.c (create_cond_insert_point): Do not update edge count.
      	* auto-profile.c (afdo_propagate_edge): Update for edge count removal.
      	(afdo_propagate_circuit): Likewise.
      	(afdo_calculate_branch_prob): Likewise.
      	(afdo_annotate_cfg): Likewise.
      	* basic-block.h (struct edge_def): Remove count.
      	(edge_def::count): New accessor.
      	* bb-reorder.c (rotate_loop): Update.
      	(find_traces_1_round): Update.
      	(connect_traces): Update.
      	(sanitize_hot_paths): Update.
      	* cfg.c (unchecked_make_edge): Update.
      	(make_single_succ_edge): Update.
      	(check_bb_profile): Update.
      	(dump_edge_info): Update.
      	(update_bb_profile_for_threading): Update.
      	(scale_bbs_frequencies_int): Update.
      	(scale_bbs_frequencies_gcov_type): Update.
      	(scale_bbs_frequencies_profile_count): Update.
      	(scale_bbs_frequencies): Update.
      	* cfganal.c (connect_infinite_loops_to_exit): Update.
      	* cfgbuild.c (compute_outgoing_frequencies): Update.
      	(find_many_sub_basic_blocks): Update.
      	* cfgcleanup.c (try_forward_edges): Update.
      	(try_crossjump_to_edge): Update
      	* cfgexpand.c (expand_gimple_cond): Update
      	(expand_gimple_tailcall): Update
      	(construct_exit_block): Update
      	* cfghooks.c (verify_flow_info): Update
      	(redirect_edge_succ_nodup): Update
      	(split_edge): Update
      	(make_forwarder_block): Update
      	(duplicate_block): Update
      	(account_profile_record): Update
      	* cfgloop.c (find_subloop_latch_edge_by_profile): Update.
      	* cfgloopanal.c (expected_loop_iterations_unbounded): Update.
      	* cfgloopmanip.c (scale_loop_profile): Update.
      	(loopify): Update.
      	(lv_adjust_loop_entry_edge): Update.
      	* cfgrtl.c (try_redirect_by_replacing_jump): Update.
      	(force_nonfallthru_and_redirect): Update.
      	(purge_dead_edges): Update.
      	(rtl_flow_call_edges_add): Update.
      	* cgraphunit.c (init_lowered_empty_function): Update.
      	(cgraph_node::expand_thunk): Update.
      	* gimple-pretty-print.c (dump_probability): Update.
      	(dump_edge_probability): Update.
      	* gimple-ssa-isolate-paths.c (isolate_path): Update.
      	* haifa-sched.c (sched_create_recovery_edges): Update.
      	* hsa-gen.c (convert_switch_statements): Update.
      	* ifcvt.c (dead_or_predicable): Update.
      	* ipa-inline-transform.c (inline_transform): Update.
      	* ipa-split.c (split_function): Update.
      	* ipa-utils.c (ipa_merge_profiles): Update.
      	* loop-doloop.c (add_test): Update.
      	* loop-unroll.c (unroll_loop_runtime_iterations): Update.
      	* lto-streamer-in.c (input_cfg): Update.
      	(input_function): Update.
      	* lto-streamer-out.c (output_cfg): Update.
      	* modulo-sched.c (sms_schedule): Update.
      	* postreload-gcse.c (eliminate_partially_redundant_load): Update.
      	* predict.c (maybe_hot_edge_p): Update.
      	(unlikely_executed_edge_p): Update.
      	(probably_never_executed_edge_p): Update.
      	(dump_prediction): Update.
      	(drop_profile): Update.
      	(propagate_unlikely_bbs_forward): Update.
      	(determine_unlikely_bbs): Update.
      	(force_edge_cold): Update.
      	* profile.c (compute_branch_probabilities): Update.
      	* reg-stack.c (better_edge): Update.
      	* shrink-wrap.c (handle_simple_exit): Update.
      	* tracer.c (better_p): Update.
      	* trans-mem.c (expand_transaction): Update.
      	(split_bb_make_tm_edge): Update.
      	* tree-call-cdce.c: Update.
      	* tree-cfg.c (gimple_find_sub_bbs): Update.
      	(gimple_split_edge): Update.
      	(gimple_duplicate_sese_region): Update.
      	(gimple_duplicate_sese_tail): Update.
      	(gimple_flow_call_edges_add): Update.
      	(insert_cond_bb): Update.
      	(execute_fixup_cfg): Update.
      	* tree-cfgcleanup.c (cleanup_control_expr_graph): Update.
      	* tree-complex.c (expand_complex_div_wide): Update.
      	* tree-eh.c (lower_resx): Update.
      	(unsplit_eh): Update.
      	(cleanup_empty_eh_move_lp): Update.
      	* tree-inline.c (copy_edges_for_bb): Update.
      	(freqs_to_counts): Update.
      	(copy_cfg_body): Update.
      	* tree-ssa-dce.c (remove_dead_stmt): Update.
      	* tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
      	* tree-ssa-loop-im.c (execute_sm_if_changed): Update.
      	* tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
      	(unloop_loops): Update.
      	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
      	* tree-ssa-loop-split.c (connect_loops): Update.
      	(split_loop): Update.
      	* tree-ssa-loop-unswitch.c (hoist_guard): Update.
      	* tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
      	* tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
      	* tree-ssa-reassoc.c (branch_fixup): Update.
      	* tree-ssa-tail-merge.c (replace_block_by): Update.
      	* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
      	(compute_path_counts): Update.
      	(update_profile): Update.
      	(recompute_probabilities): Update.
      	(update_joiner_offpath_counts): Update.
      	(estimated_freqs_path): Update.
      	(freqs_to_counts_path): Update.
      	(clear_counts_path): Update.
      	(ssa_fix_duplicate_block_edges): Update.
      	(duplicate_thread_path): Update.
      	* tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
      	(case_bit_test_cmp): Update.
      	(collect_switch_conv_info): Update.
      	(gen_inbound_check): Update.
      	(do_jump_if_equal): Update.
      	(emit_cmp_and_jump_insns): Update.
      	* tree-tailcall.c (decrease_profile): Update.
      	(eliminate_tail_call): Update.
      	* tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
      	(vect_do_peeling): Update.
      	* tree-vect-loop.c (scale_profile_for_vect_loop): Update.
      	* ubsan.c (ubsan_expand_null_ifn): Update.
      	(ubsan_expand_ptr_ifn): Update.
      	* value-prof.c (gimple_divmod_fixed_value): Update.
      	(gimple_mod_pow2): Update.
      	(gimple_mod_subtract): Update.
      	(gimple_ic): Update.
      	(gimple_stringop_fixed_value): Update.
      
      From-SVN: r253910
      Jan Hubicka committed
    • Fix oversights · 68581ee1
      From-SVN: r253909
      Eric Botcazou committed
    • re PR target/82618 (Inefficient double-word subtraction on x86_64) · d4e7de58
      	PR target/82618
      	* config/i386/i386.md (sub to cmp): New peephole2 pattern.
      
      testsuite/ChangeLog:
      
      	PR target/82618
      	* gcc.target/i386/pr82618.c: New test.
      
      
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r253905
      Uros Bizjak committed
    • ira-color: fix allocno_priority_compare_func for qsort (PR 82395) · 158ec018
      	PR rtl-optimization/82395
      	* ira-color.c (allocno_priority_compare_func): Fix comparison step
      	based on non_spilled_static_chain_regno_p.
      
      From-SVN: r253904
      Alexander Monakov committed
    • i386.c (output_387_binary_op): Rewrite SSE part. · 8fb0214b
      	* config/i386/i386.c (output_387_binary_op): Rewrite SSE part.
      	(ix86_emit_mode_set): Rewrite insn mnemonic construction.
      	(ix86_prepare_fp_compare_args): Redefine is_sse as bool.
      
      From-SVN: r253903
      Uros Bizjak committed
    • PR tree-optimization/82596 - missing -Warray-bounds on an out-of-bounds · f5ba8fd1
      PR tree-optimization/82596 - missing -Warray-bounds on an out-of-bounds
        index into string literal
      
      gcc/ChangeLog:
      	* tree.c (array_at_struct_end_p): Handle STRING_CST.
      
      gcc/testsuite/ChangeLog:
      	* gcc/testsuite/gcc.dg/pr82596.c: New test.
      
      From-SVN: r253902
      Martin Sebor committed
    • asan.c (handle_builtin_alloca): Deal with all alloca variants. · 9e878cf1
      	* asan.c (handle_builtin_alloca): Deal with all alloca variants.
      	(get_mem_refs_of_builtin_call): Likewise.
      	* builtins.c (expand_builtin_apply): Adjust call to
      	allocate_dynamic_stack_space.
      	(expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass
      	the third argument to allocate_dynamic_stack_space, otherwise -1.
      	(expand_builtin): Deal with all alloca variants.
      	(is_inexpensive_builtin): Likewise.
      	* builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New.
      	* calls.c (special_function_p): Deal with all alloca variants.
      	(initialize_argument_information): Adjust call to
      	allocate_dynamic_stack_space.
      	(expand_call): Likewise.
      	* cfgexpand.c (expand_call_stmt): Deal with all alloca variants.
      	* doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max
      	* explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and
      	use it for the stack usage computation.
      	* explow.h (allocate_dynamic_stack_space): Adjust prototype.
      	* function.c (gimplify_parameters): Turn BUILT_IN_ALLOCA_WITH_ALIGN
      	into BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX and pass maximum size.
      	* gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow.
      	Take into account 3rd argument of __builtin_alloca_with_align_and_max.
      	(in_loop_p): Remove first argument and useless check.
      	(pass_walloca::execute): Remove useless test and adjust call to above.
      	* gimple.c (gimple_build_call_from_tree): Deal with all alloc variants
      	* gimplify.c (gimplify_vla_decl): Turn BUILT_IN_ALLOCA_WITH_ALIGN into
      	BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX and pass maximum size.
      	(gimplify_call_expr): Deal with all alloca variants.
      	* hsa-gen.c (gen_hsa_alloca): Likewise.
      	(gen_hsa_insns_for_call): Likewise.
      	* ipa-pure-const.c (special_builtin_state): Likewise.
      	* tree-chkp.c (chkp_build_returned_bound): Likewise.
      	* tree-object-size.c (alloc_object_size): Likewise.
      	* tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise.
      	(call_may_clobber_ref_p_1): Likewise.
      	* tree-ssa-ccp.c (evaluate_stmt): Likewise.
      	(ccp_fold_stmt): Likewise.
      	(optimize_stack_restore): Likewise.
      	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
      	(mark_all_reaching_defs_necessary_1): Likewise.
      	(propagate_necessity): Likewise.
      	(eliminate_unnecessary_stmts): Likewise.
      	* tree.c (build_common_builtin_nodes): Build
      	BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX.
      	* tree.h (ALLOCA_FUNCTION_CODE_P): New macro.
      	(CASE_BUILT_IN_ALLOCA): Likewise.
      	* varasm.c (incorporeal_function_p): Deal with all alloca variants.
      c-family/
      	* c-common.c (check_builtin_function_arguments): Also check arguments
      	of __builtin_alloca_with_align_and_max.
      
      From-SVN: r253901
      Eric Botcazou committed
    • re PR c++/82600 (Address of local variable returned [-Werror=return-local-addr]… · d9697837
      re PR c++/82600 (Address of local variable returned [-Werror=return-local-addr] when building mozilla-central)
      
      	PR c++/82600
      	* typeck.c (check_return_expr): Don't call
      	maybe_warn_about_returning_address_of_local in templates.
      
      	* g++.dg/warn/Wreturn-local-addr-4.C: New test.
      
      From-SVN: r253899
      Jakub Jelinek committed
    • Improve tests for error reporting in Filesystem TS · db62ad7c
      	* testsuite/experimental/filesystem/iterators/
      	recursive_directory_iterator.cc: Ensure that error_code arguments are
      	cleared when required.
      	* testsuite/experimental/filesystem/operations/create_directory.cc:
      	Remove redundant check.
      	* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
      	Ensure that error_code argument is cleared when required.
      
      From-SVN: r253897
      Jonathan Wakely committed
    • Fix path::iterator post-increment and post-decrement · 551124d5
      	* include/experimental/bits/fs_path.h (path::iterator++(int))
      	(path::iterator--(int)): Fix for paths with only one component.
      	* testsuite/experimental/filesystem/path/itr/traversal.cc: Test
      	post-increment and post-decrement.
      
      From-SVN: r253896
      Jonathan Wakely committed
    • Update references to C++17 in libstdc++ manual · 89b1e161
      	* doc/xml/manual/status_cxx2017.xml: Update references to C++17
      	section numbers.
      
      From-SVN: r253895
      Jonathan Wakely committed
    • Use __LONG_LONG_MAX__ instead of LONG_LONG_MAX in test · af23b26a
      	* testsuite/decimal/conversion-to-integral.cc: Use predefined macro
      	instead of non-standard glibc one.
      
      From-SVN: r253894
      Jonathan Wakely committed
    • re PR debug/82509 (DW_AT_endianity issues with attribute scalar_storage_order) · 426776f1
      	PR debug/82509
      	* dwarf2out.c (new_die_raw): New static inline function.
      	(new_die): Use it to create the DIE.
      	(add_AT_external_die_ref): Likewise.
      	(clone_die): Likewise.
      	(clone_as_declaration): Likewise.
      	(dwarf2out_vms_debug_main_pointer): Likewise.
      	(base_type_die): Likewise.  Remove early return for corner cases.
      	Do not call add_pubtype on the DIE here.
      	(is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE.
      	(modified_type_die): Adjust the lookup for reverse order DIEs.  Skip
      	typedefs for base types with DW_AT_endianity.  Make sure a DIE with
      	native order exists for base types, attach the DIE manually and call
      	add_pubtype on it.  Do not equate a reverse order DIE to the type.
      
      From-SVN: r253893
      Eric Botcazou committed
    • [ARM] PR 82445 - suppress 32-bit aligned ldrd/strd peepholing with -mno-unaligned-access · 3bb3d60b
      Peephole patterns exist in the arm backend to spot load/store
      operations to adjacent memory operations in order to convert them into
      ldrd/strd instructions.  However, when we have strict alignment
      enforced, then we can only do this if the accesses are known to be
      64-bit aligned; this is unlikely to be the case for most loads.  The
      patch adds some alignment checking to the code that validates the
      addresses for use in the peephole patterns.  This should also fix
      incorrect generation of ldrd/strd with unaligned accesses that could
      previously have occurred on ARMv5e where all such operations must be
      64-bit aligned.
      
      I've added some new tests as well.  In doing so I discovered that the
      ldrd/strd peephole tests could never fail since they would match the
      source file name in the scanned assembly as well as any instructions
      of the intended type.  I've fixed those by tightening the scan results
      slightly.
      
      gcc:
      
      * config/arm/arm.c (align_ok_ldrd_strd): New function.
      (mem_ok_for_ldrd_strd): New parameter align.  Extract the alignment of the
      mem into it.
      (gen_operands_ldrd_strd): Validate the alignment of the accesses.
      
      testsuite:
      
      * gcc.target/arm/peep-ldrd-1.c: Tighten test scan pattern.
      * gcc.target/arm/peep-strd-1.c: Likewise.
      * gcc.target/arm/peep-ldrd-2.c: New test.
      * gcc.target/arm/peep-strd-2.c: New test.
      
      From-SVN: r253890
      Richard Earnshaw committed
    • flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN. · 07d7c611
      	* flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.  Or
      	SANITIZE_BUILTIN into SANITIZE_UNDEFINED.
      	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN,
      	BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins.
      	* opts.c (sanitizer_opts): Add builtin.
      	* ubsan.c (instrument_builtin): New function.
      	(pass_ubsan::execute): Call it.
      	(pass_ubsan::gate): Enable even for SANITIZE_BUILTIN.
      	* doc/invoke.texi: Document -fsanitize=builtin.
      
      	* c-c++-common/ubsan/builtin-1.c: New test.
      
      From-SVN: r253888
      Jakub Jelinek committed
    • ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch builtins... · 5d3805fc
      	* ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch
      	builtins, store max (log2 (align), 0) into uchar field instead of
      	align into uptr field.
      	(ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins,
      	store uchar 0 field instead of uptr 0 field.
      	(instrument_nonnull_return): Use _v1 suffixed nonnull return builtin,
      	instead of passing one address of struct with 2 locations pass
      	two addresses of structs with 1 location each.
      	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH,
      	BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
      	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
      	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed.
      	(BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
      	BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT,
      	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1,
      	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins.
      
      	* c-c++-common/ubsan/float-cast-overflow-1.c: Drop value keyword
      	from expected output regexps.
      	* c-c++-common/ubsan/float-cast-overflow-2.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-3.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-4.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-5.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-6.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-8.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-9.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-10.c: Likewise.
      	* g++.dg/ubsan/float-cast-overflow-bf.C: Likewise.
      	* gcc.dg/ubsan/float-cast-overflow-bf.c: Likewise.
      	* g++.dg/asan/default-options-1.C (__asan_default_options): Add
      	used attribute.
      	* g++.dg/asan/asan_test.C: Run with ASAN_OPTIONS=handle_segv=2
      	in the environment.
      
      	* All source files: Merge from upstream 315899.
              * asan/Makefile.am (nodist_saninclude_HEADERS): Add
      	include/sanitizer/tsan_interface.h.
              * asan/libtool-version: Bump the libasan SONAME.
      	* lsan/Makefile.am (sanitizer_lsan_files): Add lsan_common_mac.cc.
      	(lsan_files): Add lsan_linux.cc, lsan_mac.cc and lsan_malloc_mac.cc.
              * sanitizer_common/Makefile.am (sanitizer_common_files): Add
      	sancov_flags.cc, sanitizer_allocator_checks.cc,
      	sanitizer_coverage_libcdep_new.cc, sanitizer_errno.cc,
      	sanitizer_file.cc, sanitizer_mac_libcdep.cc and
      	sanitizer_stoptheworld_mac.cc.  Remove sanitizer_coverage_libcdep.cc
      	and sanitizer_coverage_mapping_libcdep.cc.
              * tsan/Makefile.am (tsan_files): Add tsan_external.cc.
      	* ubsan/Makefile.am (DEFS): Add -DUBSAN_CAN_USE_CXXABI=1.
      	(ubsan_files): Add ubsan_init_standalone.cc and
      	ubsan_signals_standalone.cc.
      	* ubsan/libtool-version: Bump the libubsan SONAME.
              * asan/Makefile.in: Regenerate.
              * lsan/Makefile.in: Regenerate.
              * sanitizer_common/Makefile.in: Regenerate.
              * tsan/Makefile.in: Regenerate.
      	* ubsan/Makefile.in: Regenerate.
      
      From-SVN: r253887
      Jakub Jelinek committed
    • Revert r238089 (PR driver/81829). · 93659712
      2017-10-19  Martin Liska  <mliska@suse.cz>
      
      	PR driver/81829
      	* file-find.c (remove_prefix): Remove.
      	* file-find.h (remove_prefix): Likewise.
      	* gcc-ar.c: Remove smartness of lookup.
      
      From-SVN: r253886
      Martin Liska committed
    • rs6000: Fix "missing mode" on UNSPEC_TOCSLOT · d8198d1c
      Currently gen* warn about a missing mode on an UNSPEC_TOCSLOT unspec in
      some call patterns.  Those unspecs are created from rs6000.c, with Pmode
      always.  This patch fixes the patterns to say :P as well.
      
      
      	* config/rs6000/rs6000.md (*call_indirect_aix<mode>,
      	*call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
      	*call_value_indirect_elfv2<mode>): Add correct mode to the unspec.
      
      From-SVN: r253885
      Segher Boessenkool committed
    • re PR target/82580 (Optimize comparisons for __int128 on x86-64) · 1855f812
      	PR target/82580
      	* config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2.
      	(setcc + and to xor + setcc): New peephole2.
      
      	* gcc.target/i386/pr82580.c: Use {\msbb} instead of "sbb" in
      	scan-assembler-times.  Check that there are no movzb* instructions
      	if lp64.
      
      From-SVN: r253884
      Jakub Jelinek committed
    • Specify required stack size for gcc.dg/tree-ssa/ldist-27.c · 8a78f1a1
      2017-10-19  Tom de Vries  <tom@codesourcery.com>
      
      	* gcc.dg/tree-ssa/ldist-27.c: Use dg-require-stack-size.
      
      From-SVN: r253883
      Tom de Vries committed
    • Add dg-require-stack-size · 7ff6bdb7
      2017-10-19  Tom de Vries  <tom@codesourcery.com>
      
      	* lib/target-supports-dg.exp (dg-require-stack-size): New proc.
      	* gcc.c-torture/execute/20030209-1.c: Use dg-require-stack-size.
      	* gcc.c-torture/execute/20040805-1.c: Same.
      	* gcc.c-torture/execute/920410-1.c: Same.
      	* gcc.c-torture/execute/921113-1.c: Same.
      	* gcc.c-torture/execute/921208-2.c: Same.
      	* gcc.c-torture/execute/comp-goto-1.c: Same.
      	* gcc.c-torture/execute/pr20621-1.c: Same.
      	* gcc.c-torture/execute/pr28982b.c: Same.
      	* gcc.dg/tree-prof/comp-goto-1.c: Same.
      
      	* doc/sourcebuild.texi (Test Directives, Variants of
      	dg-require-support): Add dg-require-stack-size.
      
      From-SVN: r253882
      Tom de Vries committed