1. 24 Jul, 2018 3 commits
  2. 23 Jul, 2018 10 commits
    • inclhack.def (aix_unistd): New. · 5b3d96f2
      * inclhack.def (aix_unistd): New.
      * fixincl.x: Regenerate.
      * tests/base/unistd.h [AIX_UNISTD_CHECK]: New test.
      
      From-SVN: r262936
      David Edelsohn committed
    • PR libstdc++/70940 optimize pmr::resource_adaptor for allocators using malloc · 2d6c8eea
      pmr::resource_adaptor can avoid allocating an oversized buffer and doing
      manual alignment within that buffer when the wrapped allocator is known
      to always meet the requested alignment. Specifically, if the allocator
      is known to use malloc or new directly, then we can call the allocator
      directly for any fundamental alignment.
      
      	PR libstdc++/70940
      	* include/experimental/memory_resource
      	(__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion.
      	(__resource_adaptor_common::__guaranteed_alignment): New helper to
      	give maximum alignment an allocator guarantees. Specialize for known
      	allocators using new and malloc.
      	(__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment.
      	(__resource_adaptor_imp::do_deallocate): Likewise.
      	* testsuite/experimental/memory_resource/new_delete_resource.cc:
      	Check that new and delete are called with expected sizes.
      
      From-SVN: r262935
      Jonathan Wakely committed
    • re PR target/86591 (gcc.target/powerpc/builtins-1.c fails starting with r261904) · 651a7953
      gcc/testsuite/ChangeLog:
      
      2018-07-23  Carl Love  <cel@us.ibm.com>
      
      	PR 86591
      	* gcc.target/powerpc/altivec-1-runnable.c: Move vector double tests to
      	file altivec-2-runnable.c.
      	* gcc.target/powerpc/altivec-2-runnable.c: Add vector double tests.
      	* gcc.target/powerpc/buitlins-1.c: Remove dg-final check for xxlor.
      	Update dg-final test for __divdi3 and __udivdi3 instructions. Update
      	comments for instruction generated by vec_mergeh, vec_perm, vec_round,
      	vec_cts, vec_ctu, vec_cpsgn tests.
      
      From-SVN: r262934
      Carl Love committed
    • re PR c/86617 (Volatile qualifier is ignored sometimes for unsigned char) · 1544db9a
      gcc:
      2018-07-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR c/86617
              * genmatch.c (dt_operand::gen_match_op): Avoid folding volatile values.
      
      testsuite:
      2018-07-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR c/86617
              * gcc.dg/pr86617.c: New test.
      
      From-SVN: r262933
      Bernd Edlinger committed
    • gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL terminated STRING_CST object. · a353fec4
      2018-07-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL
              terminated STRING_CST object.
      
      From-SVN: r262932
      Bernd Edlinger committed
    • 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de> · 723f415e
              hsa-dump.c (dump_hsa_symbol): Avoid out of scope access to buf.
      
      From-SVN: r262931
      Bernd Edlinger committed
    • rs6000: Improve vsx_init_v4si · 9fede15c
      This changes vsx_init_v4si to be an expander.  That way, no special
      cases are needed anymore for special arguments: the normal RTL passes
      can deal with it.
      
      
      	* config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Adjust.
      	* config/rs6000/rs6000-protos.h (rs6000_split_v4si_init): Delete.
      	* config/rs6000/rs6000.c (rs6000_expand_vector_init): Always force
      	the elements into a register.
      	(rs6000_split_v4si_init_di_reg): Delete.
      	(rs6000_split_v4si_init): Delete.
      	* config/rs6000/vsx.md (unspec): Delete UNSPEC_VSX_VEC_INIT.
      	(vsx_init_v4si): Rewrite as a define_expand.
      
      From-SVN: r262930
      Segher Boessenkool committed
    • rs6000: Generate rl*imi for memory some more · 268e16e8
      An rl<wd>imi instruction is often written like "(a << 8) | (b & 255)".
      If "b" now is a byte in memory, combine will combine the load with the
      masking (with 255 in the example), since that is a single instruction;
      and then the rl*imi isn't combined from the remaining pieces.
      
      This patch adds a splitter to make combine handle this case.
      
      
      	* config/rs6000/rs6000.md (splitters for rldimi and rlwimi with the
      	zero_extend argument from memory): New.
      
      From-SVN: r262929
      Segher Boessenkool committed
    • re PR c++/86569 (-Wnonnull-compare affects code generation since r233684) · 315aa691
      	PR c++/86569
      	* cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
      	of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
      	or warn_nonnull_compare.
      
      	* g++.dg/warn/Wnonnull-compare-9.C: New test.
      
      From-SVN: r262928
      Jakub Jelinek committed
    • Daily bump. · d9690d23
      From-SVN: r262927
      GCC Administrator committed
  3. 22 Jul, 2018 3 commits
  4. 21 Jul, 2018 1 commit
  5. 20 Jul, 2018 17 commits
    • libcpp: remove redundant parameter from rich_location::set_range · 181463c2
      gcc/c-family/ChangeLog:
      	* c-common.c (c_cpp_error): Remove redundant "line_table"
      	parameter from call to rich_location::set_range.
      	(maybe_suggest_missing_token_insertion): Likewise.
      
      gcc/ChangeLog:
      	* pretty-print.c (text_info::set_location): Remove redundant
      	"line_table" parameter from call to rich_location::set_range.
      
      libcpp/ChangeLog:
      	* include/line-map.h (rich_location::set_range): Remove redundant
      	line_maps * parameter.
      	* line-map.c (rich_location::set_range): Likewise.
      
      From-SVN: r262913
      David Malcolm committed
    • PR middle-end/82063 - issues with arguments enabled by -Wall · 0d7f9065
      gcc/c-family/ChangeLog:
      	* gcc/c-family/c.opt (-Warray-bounds): Remove redundant -Wall.
      
      From-SVN: r262912
      Martin Sebor committed
    • re PR middle-end/82063 (issues with arguments enabled by -Wall) · cb4df8ef
      PR middle-end/82063
      
      gcc/testsuite/ChangeLog:
      
      	* gcc/testsuite/c-c++-common/pr68833-1.c: Adjust.
      
      From-SVN: r262911
      Martin Sebor committed
    • PR middle-end/82063 - issues with arguments enabled by -Wall · 00abf86c
      gcc/ada/ChangeLog:
      
      	PR middle-end/82063
      	* gcc-interface/misc.c (gnat_handle_option): Change function argument
      	to HOST_WIDE_INT.
      
      gcc/brig/ChangeLog:
      
      	PR middle-end/82063
      	* brig/brig-lang.c (brig_langhook_handle_option): Change function
      	argument to HOST_WIDE_INT.
      
      gcc/c-family/ChangeLog:
      
      	PR middle-end/82063
      	* c-common.h (c_common_handle_option): Change function argument
      	to HOST_WIDE_INT.
      	* c-opts.c (c_common_init_options): Same.
      	(c_common_handle_option): Same.  Remove special handling of
      	OPT_Walloca_larger_than_ and OPT_Wvla_larger_than_.
      	* c.opt (-Walloc-size-larger-than, -Walloca-larger-than): Change
      	options to take a HOST_WIDE_INT argument and accept a byte-size
      	suffix.  Initialize.
      	(-Wvla-larger-than): Same.
      	(-Wno-alloc-size-larger-than, -Wno-alloca-larger-than): New.
      	(-Wno-vla-larger-than): Same.
      
      gcc/fortran/ChangeLog:
      
      	PR middle-end/82063
      	* gfortran.h (gfc_handle_option): Change function argument
      	to HOST_WIDE_INT.
      	* options.c (gfc_handle_option): Same.
      
      gcc/go/ChangeLog:
      
      	PR middle-end/82063
      	* go-lang.c (go_langhook_handle_option): Change function argument
      	to HOST_WIDE_INT.
      
      gcc/lto/ChangeLog:
      
      	PR middle-end/82063
      	* lto-lang.c (lto_handle_option): Change function argument
      	to HOST_WIDE_INT.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/82063
      	* gcc/testsuite/c-c++-common/pr68657-1.c: Adjust.
      	* gcc/testsuite/c-c++-common/pr68657-2.c: Same.
      	* gcc/testsuite/c-c++-common/pr68657-3.c: Same.
      	* gcc.dg/Walloc-size-larger-than-16.c: Same.
      	* gcc.dg/Walloca-larger-than.c: New test.
      	* gcc.dg/Walloca-larger-than-2.c: New test.
      	* gcc.dg/Wframe-larger-than-2.c: New test.
      	* gcc.dg/Wlarger-than3.c: New test.
      	* gcc.dg/Wvla-larger-than-3.c: New test.
      	* gcc.dg/pr42611.c: Adjust.
      	* gnat.dg/frame_overflow.adb: Same.
      
      gcc/ChangeLog:
      
      	PR middle-end/82063
      	* builtins.c (expand_builtin_alloca): Adjust.
      	* calls.c (alloc_max_size): Simplify.
      	* cgraphunit.c (cgraph_node::expand): Adjust.
      	* common.opt (larger_than_size, warn_frame_larger_than): Remove
      	variables.
      	(frame_larger_than_size): Same.
      	(-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Change options
      	to take a HOST_WIDE_INT argument and accept a byte-size suffix.
      	Initialize.
      	* doc/invoke.texi (GCC Command Options): Document option arguments.
      	Explain byte-size arguments and suffixes.
      	(-Wvla-larger-than, -Wno-alloc-size-larger-than): Update.
      	(-Wno-alloca-larger-than, -Wno-vla-larger-than): Same.
      	(-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Same.
      	* doc/options.texi (UInteger): Expand.
      	(Host_Wide_Int, ByteSize): Document new properties.
      	* final.c (final_start_function_1): Include sizes in an error message.
      	* function.c (frame_offset_overflow): Same.
      	* gimple-ssa-warn-alloca.c (pass_walloca::gate): Adjust.
      	(alloca_call_type_by_arg): Change function argument to HOST_WIDE_INT.
      	Diagnose unbounded alloca calls only for limits of less than
      	PTRDIFF_MAX.
      	(alloca_call_type): Adjust.  Diagnose possibly out-of-bounds alloca
      	calls and VLA size only for limits of less than	PTRDIFF_MAX.  Same
      	for alloca(0).
      	(pass_walloca::execute): Adjust.  Diagnose alloca calls in loops
      	only for limits of less than PTRDIFF_MAX.
      	* langhooks-def.h (lhd_handle_option): Change function argument
      	to HOST_WIDE_INT.
      	* langhooks.c (lhd_handle_option): Same.
      	* langhooks.h (handle_option): Same.
      	* opt-functions.awk (switch_bit_fields): Handle Host_Wide_Int and
      	ByteSize flags.
      	(var_type, var_type_struct): Same.
      	(var_set): Handle ByteSize flag.
      	* optc-gen.awk: Add comments to output to ease debugging.  Make
      	use of HOST_WIDE_INT where appropriate.
      	* opts-gen-save.awk:  Use %lx to format unsigned long.
      	* opth-gen.awk: Change function argument to HOST_WIDE_INT.
      	* opts-common.c (integral_argument): Return HOST_WIDE_INT and add
      	arguments.  Parse bytes-size suffixes.
      	(enum_arg_to_value): Change function argument to HOST_WIDE_INT.
      	(enum_value_to_arg): Same.
      	(decode_cmdline_option): Handle cl_host_wide_int.  Adjust.
      	(handle_option): Adjust.
      	(generate_option): Change function argument to HOST_WIDE_INT.
      	(cmdline_handle_error): Adjust.
      	(read_cmdline_option): Change function argument to HOST_WIDE_INT.
      	(set_option): Change function argument to HOST_WIDE_INT.
      	(option_enabled): Handle cl_host_wide_int.
      	(get_option_state): Handle CLVC_SIZE.
      	(control_warning_option): Same.
      	* opts.c (common_handle_option): Change function argument to
      	HOST_WIDE_INT.  Remove handling of OPT_Walloca_larger_than_ and
      	OPT_Wvla_larger_than_.
      	* opts.h (enum cl_var_type): Add an enumerator.
      	* stor-layout.c (layout_decl): Print a more meaningful warning.
      	* toplev.c (output_stack_usage): Adjust.
      
      From-SVN: r262910
      Martin Sebor committed
    • gfortran.h (gfc_symbol): Add pointer to next derived type. · 20e8ceae
      2018-07-20  Andrew Benson  <abenson@carnegiescience.edu>
      
      	* gfortran.h (gfc_symbol): Add pointer to next derived type.
      	(gfc_dt_list, gfc_get_dt_list): Remove.
      	(gfc_namespace): Replace gfc_dt_list with gfc_symbol.
      	* parse.c (resolve_all_program_units): Replace gfc_free_dt_list() with
      	simple nullification of gfc_derived_types.
      	* resolve.c (resolve_global_procedure): Replace gfc_dt_list with
      	gfc_symbol.
      	(add_dt_to_dt_list): Change derived type linked list insertion to
      	utilize dt_next pointers in gfc_symbol.
      	* symbol.c (gfc_new_symbol, gfc_free_dt_list, gfc_symbol_done2)
      	(get_iso_c_binding_dt, generate_isocbinding_symbol): Remove
      	gfc_free_dt_list as gfc_dt_list is obsoleted. Change derived type
      	linked list search/insertion to utilize dt_next pointers in gfc_symbol.
      	* trans-types.c (gfc_get_derived_type): Change derived type linked
      	list search to utilize dt_next pointers in gfc_symbol.
      
      From-SVN: r262909
      Andrew Benson committed
    • compiler: do order_evaluations before remove_shortcuts · d9a81cdb
          
          In remove_shortcuts, the shortcut expressions (&&, ||) are
          rewritten to if statements, which are lifted out before the
          statement containing the shortcut expression. If the containing
          statement has other (sub)expressions that should be evaluated
          before the shortcut expression, which has not been lifted out,
          this will result in wrong evaluation order.
          
          For example, F() + G(A() && B()), the evaluation order per spec
          is F, A, B (if A returns true), G. If we lift A() and B() out
          first, they will be called before F, which is wrong.
          
          To fix this, we split order_evaluations to two phases. The first
          phase, which runs before remove_shortcuts, skips shortcut
          expressions' components. So it won't lift out subexpressions that
          are evaluated conditionally. The shortcut expression itself is
          ordered, since it may have side effects. Then we run
          remove_shortcuts. At this point the subexpressions that should be
          evaluated before the shortcut expression are already lifted out.
          remove_shortcuts also runs the second phase of order_evaluations
          to order the components of shortcut expressions, which were
          skipped during the first phase.
          
          Reorder the code blocks of remove_shortcuts and order_evaluations,
          since remove_shortcuts now calls Order_eval.
          
          Fixes golang/go#26495.
          
          Reviewed-on: https://go-review.googlesource.com/125299
      
      From-SVN: r262908
      Ian Lance Taylor committed
    • Give up the inlining expansion for strcmp/strncmp/memcmp on a target where the... · 523a59ff
      
      Give up the inlining expansion for strcmp/strncmp/memcmp on a target 
      where the type of the call has same or narrower presicion than unsigned
      char.
      Change char to unsigned char for strcmp/strncmp when expand them to
      a sequence of byte comparisons.
       
      Due to C standard section 7.24.4:
      
      The sign of a nonzero value returned by the comparison functions memcmp,
      strcmp, and strncmp is determined by the sign of the difference between 
      the values of the first pair of characters (both interpreted as unsigned 
      char) that differ in the objects being compared.
      
      bootstraped and tested on both X86 and Aarch64. no regression.
      
      From-SVN: r262907
      Qing Zhao committed
    • PR tree-optimization/86613 - missing -Warray-bounds on a wide string access due to ccp folding · cba563f7
      PR tree-optimization/86613 - missing -Warray-bounds on a wide string access due to ccp folding
      PR tree-optimization/86611 - missing -Warray-bounds on a large negative index into a string in lp64
      
      gcc/testsuite/ChangeLog:
      	* gcc/testsuite/c-c++-common/Warray-bounds-2.c: Undefine macros and
      	prune duplicate warnings.
      	* gcc/testsuite/gcc.dg/Warray-bounds-31.c: Xfail test cases with
      	data-model-dependencies.
      	* gcc/testsuite/gcc.dg/Warray-bounds-32.c: Ditto.
      
      From-SVN: r262906
      Martin Sebor committed
    • Add "-fsave-optimization-record" · 4a4412b9
      This patch implements a -fsave-optimization-record option, which
      leads to a JSON file being written out, recording the dump_* calls
      made (via the optinfo infrastructure).
      
      The patch includes a minimal version of the JSON patch I posted last
      year, with just enough support needed for optimization records (I
      removed all of the parser code, leaving just the code for building
      in-memory JSON trees and writing them to a pretty_printer).
      
      gcc/ChangeLog:
      	* Makefile.in (OBJS): Add json.o and optinfo-emit-json.o.
      	(CFLAGS-optinfo-emit-json.o): Define TARGET_NAME.
      	* common.opt (fsave-optimization-record): New option.
      	* coretypes.h (struct kv_pair): Move here from dumpfile.c.
      	* doc/invoke.texi (-fsave-optimization-record): New option.
      	* dumpfile.c: Include "optinfo-emit-json.h".
      	(struct kv_pair): Move to coretypes.h.
      	(optgroup_options): Make non-static.
      	(dump_context::end_scope): Call
      	optimization_records_maybe_pop_dump_scope.
      	* dumpfile.h (optgroup_options): New decl.
      	* json.cc: New file.
      	* json.h: New file.
      	* optinfo-emit-json.cc: New file.
      	* optinfo-emit-json.h: New file.
      	* optinfo.cc: Include "optinfo-emit-json.h".
      	(optinfo::emit): Call optimization_records_maybe_record_optinfo.
      	(optinfo_enabled_p): Check optimization_records_enabled_p.
      	(optinfo_wants_inlining_info_p): Likewise.
      	* optinfo.h: Update comment.
      	* profile-count.c (profile_quality_as_string): New function.
      	* profile-count.h (profile_quality_as_string): New decl.
      	(profile_count::quality): New accessor.
      	* selftest-run-tests.c (selftest::run_tests): Call json_cc_tests
      	and optinfo_emit_json_cc_tests.
      	* selftest.h (selftest::json_cc_tests): New decl.
      	(selftest::optinfo_emit_json_cc_tests): New decl.
      	* toplev.c: Include "optinfo-emit-json.h".
      	(compile_file): Call optimization_records_finish.
      	(do_compile): Call optimization_records_start.
      	* tree-ssa-live.c: Include optinfo.h.
      	(remove_unused_scope_block_p): Retain inlining information if
      	optinfo_wants_inlining_info_p returns true.
      
      From-SVN: r262905
      David Malcolm committed
    • PR libstdc++/86595 add missing noexcept · bf0086f1
      	PR libstdc++/86595
      	* include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
      	noexcept.
      
      From-SVN: r262904
      Jonathan Wakely committed
    • Use default visibility to work around clang -fvisibility-inlines-hidden bug · 2143168e
      Clang (including trunk and many older versions) incorrectly marks static
      local variables (__tag) hidden when -fvisibility-inlines-hidden is used.
      This can lead to multiple instances of __tag when shares objects are used.
      
      2018-07-20  Fangrui Song  <maskray@google.com>
      
      	* include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
      	_GLIBCXX_VISIBILITY(default).
      
      From-SVN: r262903
      Fangrui Song committed
    • PR libstdc++/86603 Move __cpp_lib_list_remove_return_type macro · afa07bdd
      This should only be defined for C++2a not C++17.
      
      	PR libstdc++/86603
      	* include/std/version: Move __cpp_lib_list_remove_return_type macro.
      
      From-SVN: r262902
      Jonathan Wakely committed
    • re PR debug/86585 (ICE in gen_member_die, at dwarf2out.c:24935) · efe0e6cd
      2018-07-20  Richard Biener  <rguenther@suse.de>
      
      	PR debug/86585
      	* dwarf2out.c (dwarf2out_die_ref_for_decl): Test in_lto_p
      	to cover -flto-partition=none.
      	
      	lto/
      	* lto.c (unify_scc): Before we throw away an SCC see if we
      	can amend prevailing single-entry SCC with debug refs.
      
      	* g++.dg/lto/pr86585_0.C: New testcase.
      	* g++.dg/lto/pr86585_1.C: Likewise.
      
      From-SVN: r262901
      Richard Biener committed
    • Remove unused code. · 4e51aacb
      2018-07-20  Martin Liska  <mliska@suse.cz>
      
      	* tree.h (DECL_LOCATION_RANGE): Remove unused macro.
      	(get_decl_source_range): Remove unused function.
      
      From-SVN: r262900
      Martin Liska committed
    • tree-ssa-sccvn.h (struct vn_nary_op_s): Add next member. · b89ffb98
      2018-07-20  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.h (struct vn_nary_op_s): Add next member.
      	(struct vn_phi_s): Likewise.
      	(struct vn_reference_s): Likewise.
      	* tree-ssa-sccvn.c (vn_nary_op_hasher::equal): Add shortcut
      	for searching the slot of an entry known to be in the hash itself.
      	(vn_phi_hasher::equal): Likewise.
      	(vn_reference_hasher::equal): Likewise.
      	(last_inserted_ref, last_inserted_phi, last_inserted_nary): New
      	globals.
      	(optimistic_info, current_info): Remove, keeping only valid_info.
      	(vn_reference_lookup_1): Remove fallback lookup.
      	(vn_reference_lookup_2): Likewise.
      	(vn_nary_op_lookup_1): Likewise.
      	(vn_phi_lookup): Likewise.
      	(vn_nary_build_or_lookup_1): Make sure to not chain the built
      	hash element.
      	(vn_reference_insert): Adjust, chain the inserted hash element
      	at last_inserted_ref.
      	(vn_reference_insert_pieces): Likewise.
      	(visit_reference_op_call): Likewise.
      	(vn_nary_op_insert_into): Chain the inserted hash element at
      	last_inserted_nary.
      	(vn_nary_op_insert_pieces): Adjust.
      	(vn_nary_op_insert): Likewise.
      	(vn_nary_op_insert_stmt): Likewise.
      	(vn_phi_insert): Adjust, chain the inserted hash element at
      	last_inserted_phi.
      	(process_scc): Remove clearing and copying the optimistic
      	table.  Instead remove elements inserted during an optimistic
      	iteration from the single table we maintain.
      	(init_scc_vn): Adjust.
      	(free_scc_vn): Likewise.
      	(sccvn_dom_walker::record_cond): Likewise.
      	(sccvn_dom_walker::after_dom_children): Likewise.
      
      From-SVN: r262899
      Richard Biener committed
    • MAINTAINERS (m32c, [...]): Remove myself as maintainer. · 3b0df776
      * MAINTAINERS (m32c, msp43, rl78, libiberty, build): Remove myself
      as maintainer.
      
      From-SVN: r262898
      DJ Delorie committed
    • Daily bump. · f5aa5955
      From-SVN: r262897
      GCC Administrator committed
  6. 19 Jul, 2018 6 commits
    • PR tree-optimization/84047 - missing -Warray-bounds on an out-of-bounds index into an array · d893b683
      PR tree-optimization/84047 - missing -Warray-bounds on an out-of-bounds index into an array
      PR tree-optimization/83776 - missing -Warray-bounds indexing past the end of a string literal
      
      gcc/ChangeLog:
      
      	PR tree-optimization/84047
      	PR tree-optimization/83776
      	* tree-vrp.c (vrp_prop::check_mem_ref): New function.
      	(check_array_bounds): Call it.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/83776
      	PR tree-optimization/84047
      	* gcc.dg/Warray-bounds-29.c: New test.
      	* gcc.dg/Warray-bounds-30.c: New test.
      	* gcc.dg/Warray-bounds-31.c: New test.
      	* gcc.dg/Warray-bounds-32.c: New test.
      
      From-SVN: r262893
      Martin Sebor committed
    • align.h (align_flags): Use member initialization. · a34ab135
      gcc/ChangeLog:
      
      	* align.h (align_flags): Use member initialization.
      
      From-SVN: r262892
      Martin Sebor committed
    • Add "optinfo" framework · 4df3629e
      This patch implements a way to consolidate dump_* calls into
      optinfo objects, as enabling work towards being able to write out
      optimization records to a file.
      
      The patch adds the support for building optinfo instances from dump_*
      calls, but leaves implementing any *users* of them to followup patches.
      
      gcc/ChangeLog:
      	* Makefile.in (OBJS): Add optinfo.o.
      	* coretypes.h (class symtab_node): New forward decl.
      	(struct cgraph_node): New forward decl.
      	(class varpool_node): New forward decl.
      	* dump-context.h: New file.
      	* dumpfile.c: Include "optinfo.h", "dump-context.h", "cgraph.h",
      	"tree-pass.h".
      	(refresh_dumps_are_enabled): Use optinfo_enabled_p.
      	(set_dump_file): Call dumpfile_ensure_any_optinfo_are_flushed.
      	(set_alt_dump_file): Likewise.
      	(dump_context::~dump_context): New dtor.
      	(dump_gimple_stmt): Move implementation to...
      	(dump_context::dump_gimple_stmt): ...this new member function.
      	Add the stmt to any pending optinfo, creating one if need be.
      	(dump_gimple_stmt_loc): Move implementation to...
      	(dump_context::dump_gimple_stmt_loc): ...this new member function.
      	Start a new optinfo and add the stmt to it.
      	(dump_gimple_expr): Move implementation to...
      	(dump_context::dump_gimple_expr): ...this new member function.
      	Add the stmt to any pending optinfo, creating one if need be.
      	(dump_gimple_expr_loc): Move implementation to...
      	(dump_context::dump_gimple_expr_loc): ...this new member function.
      	Start a new optinfo and add the stmt to it.
      	(dump_generic_expr): Move implementation to...
      	(dump_context::dump_generic_expr): ...this new member function.
      	Add the tree to any pending optinfo, creating one if need be.
      	(dump_generic_expr_loc): Move implementation to...
      	(dump_context::dump_generic_expr_loc): ...this new member
      	function.  Add the tree to any pending optinfo, creating one if
      	need be.
      	(dump_printf): Move implementation to...
      	(dump_context::dump_printf_va): ...this new member function.  Add
      	the text to any pending optinfo, creating one if need be.
      	(dump_printf_loc): Move implementation to...
      	(dump_context::dump_printf_loc_va): ...this new member function.
      	Start a new optinfo and add the stmt to it.
      	(dump_dec): Move implementation to...
      	(dump_context::dump_dec): ...this new member function.  Add the
      	value to any pending optinfo, creating one if need be.
      	(dump_context::dump_symtab_node): New member function.
      	(dump_context::get_scope_depth): New member function.
      	(dump_context::begin_scope): New member function.
      	(dump_context::end_scope): New member function.
      	(dump_context::ensure_pending_optinfo): New member function.
      	(dump_context::begin_next_optinfo): New member function.
      	(dump_context::end_any_optinfo): New member function.
      	(dump_context::s_current): New global.
      	(dump_context::s_default): New global.
      	(dump_scope_depth): Delete global.
      	(dumpfile_ensure_any_optinfo_are_flushed): New function.
      	(dump_symtab_node): New function.
      	(get_dump_scope_depth): Reimplement in terms of dump_context.
      	(dump_begin_scope): Likewise.
      	(dump_end_scope): Likewise.
      	(selftest::temp_dump_context::temp_dump_context): New ctor.
      	(selftest::temp_dump_context::~temp_dump_context): New dtor.
      	(selftest::verify_item): New function.
      	(ASSERT_IS_TEXT): New macro.
      	(ASSERT_IS_TREE): New macro.
      	(ASSERT_IS_GIMPLE): New macro.
      	(selftest::test_capture_of_dump_calls): New test.
      	(selftest::dumpfile_c_tests): Call it.
      	* dumpfile.h (dump_printf, dump_printf_loc, dump_basic_block)
      	(dump_generic_expr_loc, dump_generic_expr, dump_gimple_stmt_loc)
      	(dump_gimple_stmt, dump_dec): Gather these related decls and add a
      	descriptive comment.
      	(dump_function, print_combine_total_stats, enable_rtl_dump_file)
      	(dump_node, dump_bb): Move these unrelated decls.
      	(class dump_manager): Add leading comment.
      	* optinfo.cc: New file.
      	* optinfo.h: New file.
      
      From-SVN: r262891
      David Malcolm committed
    • aarch64.md (subv<GPI>4, [...]): New patterns. · 30c46053
      2018-07-19  Michael Collison  <michael.collison@arm.com>
      	    Richard Henderson <rth@redhat.com>
      
      	* config/aarch64/aarch64.md (subv<GPI>4, usubv<GPI>4): New patterns.
      	(subti): Handle op1 zero.
      	(subvti4, usub4ti4): New.
      	(*sub<GPI>3_compare1_imm): New.
      	(sub<GPI>3_carryinCV): New.
      	(*sub<GPI>3_carryinCV_z1_z2, *sub<GPI>3_carryinCV_z1): New.
      	(*sub<GPI>3_carryinCV_z2, *sub<GPI>3_carryinCV): New.
      
      2018-07-19  Michael Collison  <michael.collison@arm.com>
      	    Richard Henderson <rth@redhat.com>
      
      	* config/aarch64/aarch64.md: (addv<GPI>4, uaddv<GPI>4): New.
      	(addti3): Create simpler code if low part is already known to be 0.
      	(addvti4, uaddvti4): New.
      	(*add<GPI>3_compareC_cconly_imm): New.
      	(*add<GPI>3_compareC_cconly): New.
      	(*add<GPI>3_compareC_imm): New.
      	(*add<GPI>3_compareC): Rename from add<GPI>3_compare1; do not
      	handle constants within this pattern..
      	(*add<GPI>3_compareV_cconly_imm): New.
      	(*add<GPI>3_compareV_cconly): New.
      	(*add<GPI>3_compareV_imm): New.
      	(add<GPI>3_compareV): New.
      	(add<GPI>3_carryinC, add<GPI>3_carryinV): New.
      	(*add<GPI>3_carryinC_zero, *add<GPI>3_carryinV_zero): New.
      	(*add<GPI>3_carryinC, *add<GPI>3_carryinV): New.
      	((*add<GPI>3_compareC_cconly_imm): Replace 'ne' operator
      	with 'comparison' operator.
      	(*add<GPI>3_compareV_cconly_imm): Ditto.
      	(*add<GPI>3_compareV_cconly): Ditto.
      	(*add<GPI>3_compareV_imm): Ditto.
      	(add<GPI>3_compareV): Ditto.
      	(add<mode>3_carryinC): Ditto.
      	(*add<mode>3_carryinC_zero): Ditto.
      	(*add<mode>3_carryinC): Ditto.
      	(add<mode>3_carryinV): Ditto.
      	(*add<mode>3_carryinV_zero): Ditto.
      	(*add<mode>3_carryinV): Ditto.
      
      2018-07-19  Michael Collison  <michael.collison@arm.com>
      	    Richard Henderson <rth@redhat.com>
      
      	* config/aarch64/aarch64-modes.def (CC_V): New.
      	* config/aarch64/aarch64-protos.h
      	(aarch64_addti_scratch_regs): Declare
      	(aarch64_subvti_scratch_regs): Declare.
      	(aarch64_expand_subvti): Declare.
      	(aarch64_gen_unlikely_cbranch): Declare
      	* config/aarch64/aarch64.c (aarch64_select_cc_mode): Test
      	for signed overflow using CC_Vmode.
      	(aarch64_get_condition_code_1): Handle CC_Vmode.
      	(aarch64_gen_unlikely_cbranch): New function.
      	(aarch64_addti_scratch_regs): New function.
      	(aarch64_subvti_scratch_regs): New function.
      	(aarch64_expand_subvti): New function.
      
      2018-07-19  Michael Collison  <michael.collison@arm.com>
      	    Richard Henderson <rth@redhat.com>
      
      	* gcc.target/aarch64/builtin_sadd_128.c: New testcase.
      	* gcc.target/aarch64/builtin_saddl.c: New testcase.
      	* gcc.target/aarch64/builtin_saddll.c: New testcase.
      	* gcc.target/aarch64/builtin_uadd_128.c: New testcase.
      	* gcc.target/aarch64/builtin_uaddl.c: New testcase.
      	* gcc.target/aarch64/builtin_uaddll.c: New testcase.
      	* gcc.target/aarch64/builtin_ssub_128.c: New testcase.
      	* gcc.target/aarch64/builtin_ssubl.c: New testcase.
      	* gcc.target/aarch64/builtin_ssubll.c: New testcase.
      	* gcc.target/aarch64/builtin_usub_128.c: New testcase.
      	* gcc.target/aarch64/builtin_usubl.c: New testcase.
      	* gcc.target/aarch64/builtin_usubll.c: New testcase.
      
      
      Co-Authored-By: Richard Henderson <rth@redhat.com>
      
      From-SVN: r262890
      Michael Collison committed
    • Simplify the base characteristics for some type traits · c01f9216
      	* include/std/type_traits (__is_member_object_pointer_helper): Use
      	__not_<is_function<_Tp>>::type instead of integral_constant.
      	(__is_member_function_pointer_helper): Likewise for
      	is_function<_Tp>::type.
      	(is_compund): Likewise for __not_<is_fundamental<_Tp>>::type.
      	(__do_is_nt_destructible_impl): Use __bool_constant and reindent.
      	(is_trivially_constructible): Remove redundant use of
      	is_constructible.
      	(__is_trivially_copy_assignable_impl): Remove redundant use of
      	is_copy_assignable.
      	(__is_trivially_move_assignable_impl): Remove redundant use of
      	is_move_assignable.
      	(is_trivially_destructible): Use __bool_constant.
      	* testsuite/20_util/is_trivially_assignable/value.cc: Add some more
      	tests for scalar types.
      
      From-SVN: r262889
      Jonathan Wakely committed
    • Use __builtin_memmove for trivially copyable types · 20a0c4e3
      2018-07-19  Glen Joseph Fernandes  <glenjofe@gmail.com>
      
      	* include/bits/stl_algobase.h (__copy_move_a): Used
      	__is_trivially_copyable.
      	(__copy_move_backward_a): Likewise.
      	* testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
      	New test.
      
      From-SVN: r262884
      Glen Joseph Fernandes committed