1. 04 Oct, 2018 13 commits
    • Fix -fopt-info for plugin passes · 5d98e5a6
      Attempts to dump via -fopt-info from a plugin pass fail, due
      to the dfi->alt_state for such passes never being set.
      
      This is because the -fopt-info options were being set up per-pass
      during option-parsing (via gcc::dump_manager::opt_info_enable_passes),
      but this data was not retained or used it for passes created later
      (for plugins and target-specific passes).
      
      This patch fixes the issue by storing the -fopt-info options into
      gcc::dump_manager, refactoring the dfi-setup code out of
      opt_info_enable_passes, and reusing it for such passes, fixing the
      issue.  The patch adds a demo plugin to test that dumping from a
      plugin works.
      
      gcc/ChangeLog:
      	* dumpfile.c (gcc::dump_manager::dump_manager): Initialize new
      	fields.
      	(gcc::dump_manager::~dump_manager): Free m_optinfo_filename.
      	(gcc::dump_manager::register_pass): New member function, adapted
      	from loop body in gcc::pass_manager::register_pass, adding a
      	call to update_dfi_for_opt_info.
      	(gcc::dump_manager::opt_info_enable_passes): Store the
      	-fopt-info options into the new fields.  Move the loop
      	bodies into...
      	(gcc::dump_manager::update_dfi_for_opt_info): ...this new member
      	function.
      	* dumpfile.h (struct opt_pass): New forward decl.
      	(gcc::dump_manager::register_pass): New decl.
      	(gcc::dump_manager::update_dfi_for_opt_info): New decl.
      	(class gcc::dump_manager): Add fields "m_optgroup_flags",
      	"m_optinfo_flags", and "m_optinfo_filename".
      	* passes.c (gcc::pass_manager::register_pass): Move all of the
      	dump-handling code to gcc::dump_manager::register_pass.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/dump-1.c: New test.
      	* gcc.dg/plugin/dump_plugin.c: New test plugin.
      	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above.
      
      From-SVN: r264844
      David Malcolm committed
    • Add missing ChangeLog entry for previous commit · c19bc1a0
      From-SVN: r264843
      Peter Bergner committed
    • re PR rtl-optimization/87466 (IRA and LRA spill all pseudos that are live across setjmp calls) · 82957a73
      gcc/
      	PR rtl-optimization/87466
      	* target.def (setjmp_preserves_nonvolatile_regs_p): New target hook.
      	* doc/tm.texi.in (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P): New hook.
      	* doc/tm.texi: Regenerate.
      	* ira-lives.c (process_bb_node_lives): Use the new target hook.
      	* lra-lives.c (process_bb_lives): Likewise.
      	* config/rs6000/rs6000.c (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P):
      	Define.
      
      gcc/testsuite/
      	PR rtl-optimization/87466
      	* gcc.target/powerpc/pr87466.c: New test.
      
      From-SVN: r264842
      Peter Bergner committed
    • Remove superfluous assignment in add_params. · ac712e4e
      This fixes the superfluous assignment that Coverity reported in add_params,
      and changes the starting index from 0 to num_params - n in order for it to
      work properly if add_params is called multiple times.
      
      validate_params calls error so it doesn't matter that we don't check the
      results here.  The results is checked in individual parameter updates after
      front-end initialization.
      
      2018-10-04  Tamar Christina  <tamar.christina@arm.com>
      
      	* params.c (add_params): Fix initialization.
      
      From-SVN: r264841
      Tamar Christina committed
    • Fix divergence in indirect profiling (PR gcov-profile/84107). · 3edbcdbe
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/84107
      	* tree-profile.c (init_ic_make_global_vars):
      	Remove ic_void_ptr_var and ic_gcov_type_ptr_var.
      	Come up with new ic_tuple* variables.  Emit
      	__gcov_indirect_call{,_topn} variables.
      	(gimple_gen_ic_profiler): Access the variable
      	and emit gimple.
      	(gimple_gen_ic_func_profiler): Access
      	__gcov_indirect_call.callee field.
      	(gimple_init_gcov_profiler): Use ptr_type_node.
      	* value-prof.c (gimple_ic): Use ptr_type_node.
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/84107
      	* libgcov-profiler.c (__gcov_indirect_call):
      	Change type to indirect_call_tuple.
      	(struct indirect_call_tuple): New struct.
      	(__gcov_indirect_call_topn_profiler): Change type.
      	(__gcov_indirect_call_profiler_v2): Use the new
      	variables.
      	* libgcov.h (struct indirect_call_tuple): New struct
      	definition.
      
      From-SVN: r264840
      Martin Liska committed
    • [C++ PATCH] String concatenation is a thing · 668f8d45
      https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00248.html
      	* lang-specs.h: Use string contatenation, not line splicing.
      
      From-SVN: r264839
      Nathan Sidwell committed
    • re PR tree-optimization/85787 (malloc_candidate_p fails to detect malloc attribute on nested phis) · 9a471714
      2018-10-04  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR tree-optimization/85787
      	* ipa-pure-const.c (malloc_candidate_p_1): Move most of malloc_candidate_p
      	into this function and add support for detecting multiple phis.
      	(DUMP_AND_RETURN): Move from malloc_candidate_p into top-level macro.
      
      testsuite/
      	* gcc.dg/ipa/propmalloc-4.c: New test.
      
      From-SVN: r264838
      Prathamesh Kulkarni committed
    • contrib: Add unused_functions.py script · 75fcc3eb
      For a set of object-files, determine symbols that are
       - public but should be static
      
      2018-10-04  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
      
      	* unused_functions.py: New file.
      
      From-SVN: r264837
      Bernhard Reutner-Fischer committed
    • cunroll-15.c: Add XFAILs for arm and powerpc. · 289380f1
      2018-10-04  Richard Biener  <rguenther@suse.de>
      
      	* gcc.dg/tree-ssa/cunroll-15.c: Add XFAILs for arm and powerpc.
      
      From-SVN: r264836
      Richard Biener committed
    • Call ultimate_alias_target for node being inlined (PR ipa/87491). · 5e626cd9
      2018-10-04  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/87491
      	* ipa-inline.c (inline_to_all_callers_1):
      	Call ultimate_alias_target for node being inlined.
      
      From-SVN: r264835
      Martin Liska committed
    • Never reload fixed form constraints memory operand · b4ee6509
      The unconditional reload of address operand for recognized instruction
      in process_address_1 prevent the patch fixing PR85434 from working as
      expected. The code in that patch attempts to control which registers are
      used to make PIC access but the reload performed by process_address_1
      will use generic PIC access. This patch removes the test for the
      instruction to be unrecognized to do the reload, thus always avoiding to
      reload address operand for fixed constraints (such as "X" used in the
      patch).
      
      2018-10-04  Thomas Preud'homme  <thomas.preudhomme@linaro.org>
      
          gcc/
          * lra-constraints.c (process_address_1): Bail out for all
          satisfied fixed constraints.
      
      From-SVN: r264834
      Thomas Preud'homme committed
    • gimple-ssa-sprintf.c (format_string): Do not hardcode size of target's wchar_t. · 0863decd
              * gimple-ssa-sprintf.c (format_string): Do not hardcode size of
              target's wchar_t.
              * tree.c (get_typenode_from_name): Moved from fortran/trans-types.c.
              * tree.h (get_typenode_from_name): Prototype.
      
              * trans-types.c (get_typenode_from_name): Moved into gcc/tree.c.
      
      From-SVN: r264833
      Jeff Law committed
    • Daily bump. · 74ac6074
      From-SVN: r264831
      GCC Administrator committed
  2. 03 Oct, 2018 17 commits
    • i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387): Change operand 2 predicate to… · c7d53a7c
      i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387): Change operand 2 predicate to nonimmediate_operand.
      
      	* config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
      	Change operand 2 predicate to nonimmediate_operand.
      	(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
      
      From-SVN: r264827
      Uros Bizjak committed
    • libgcc2.c (isnan): Use __builtin_isnan. · af8096fc
      	* libgcc2.c (isnan): Use __builtin_isnan.
      	(isfinite): Use __builtin_isfinite.
      	(isinf): Use __builtin_isinf.
      
      From-SVN: r264823
      Uros Bizjak committed
    • gimple-ssa-sprintf.c (struct fmtresult): Add new member and initialize it. · a41cc59d
      	* gimple-ssa-sprintf.c (struct fmtresult): Add new member and
      	initialize it.
      	(get_string_length): Detect unterminated arrays.
      	(format_string): Same.
      	(format_directive): Warn about unterminated arrays.
      	(handle_gimple_call): Mark statements with no_warning as needed.
      
      	* gcc.dg/warn-sprintf-no-nul.c: New test.
      
      Co-Authored-By: Jeff Law <law@redhat.com>
      
      From-SVN: r264822
      Martin Sebor committed
    • RISC-V: Add macro for ilp32e ABI. Cleanup white space. · 119b4963
      	gcc/
      	* config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): For ABI_ILP32E,
      	also define __riscv_abi_rve.  Delete trailing white space.
      
      From-SVN: r264821
      Jim Wilson committed
    • Enable LRA register allocator for PDP11. · 5079ff15
          Enable LRA register allocator for PDP11. -- missed checking in
          ChangeLog.
      
      From-SVN: r264820
      Paul Koning committed
    • Enable LRA register allocator for PDP11. · 0a7eb8df
          * config/pdp11/constraints.md (Q): Use define_memory_constraints.
          (R): Likewise.
          (D): Likewise.
          * config/pdp11/pdp11.c (pdp11_lra_p): New function.
          * config/pdp11/pdp11.opt (-mlra): New option.
          * doc/invoke.texi (PDP-11 Options): Document -mlra.
      
      From-SVN: r264819
      Paul Koning committed
    • i386.md (*<absneg:code>extendsfdf2): Remove. · f707a037
      	* config/i386/i386.md (*<absneg:code>extendsfdf2): Remove.
      	(*<absneg:code>extend<mode>xf2): Ditto.
      
      From-SVN: r264818
      Uros Bizjak committed
    • re PR tree-optimization/87415 (wrong code at -O1 and above on x86_64-linux-gnu) · 9b918e82
      	PR tree-optimization/87415
      	* tree-vrp.c (set_value_range_with_overflow): Special case one bit
      	precision fields.
      
      From-SVN: r264817
      Aldy Hernandez committed
    • gimple-fold.c (get_range_strlen): Only set *nonstr when an unterminated string is discovered. · 78125561
      	* gimple-fold.c (get_range_strlen): Only set *nonstr when
      	an unterminated string is discovered.  Bubble up range
      	even for unterminated strings.
      	(gimple_fold_builtin_strlen): Do not fold if get_range_strlen
      	indicates the string was not terminated via NONSTR.
      
      From-SVN: r264816
      Jeff Law committed
    • tree-vrp.c (extract_range_from_unary_expr): Special case all pointer conversions. · 2e103ae2
      	* tree-vrp.c (extract_range_from_unary_expr): Special case all
      	pointer conversions.
      	Do not do anything special for anti-ranges.
      
      From-SVN: r264815
      Aldy Hernandez committed
    • Implement P0840, language support for empty objects. · bedf03a2
      	The [[no_unique_address]] attribute on a non-static data member
      	enables the equivalent of the empty base optimization.
      
      gcc/cp/
      	* tree.c (handle_no_unique_addr_attribute): New.
      	(cxx_attribute_table): Add [[no_unique_address]].
      	* class.c (field_poverlapping_p): New.
      	(layout_class_type): Check it.  Adjust DECL_SIZE of potentially
      	overlapping fields.
      	(layout_empty_base_or_field): Rename from layout_empty_base, handle
      	FIELD_DECL as well.
      	(build_base_field, record_subobject_offsets): Adjust.
      c-family/
      	* c-lex.c (c_common_has_attribute): Add no_unique_address.
      
      From-SVN: r264813
      Jason Merrill committed
    • PR libstdc++/59439 optimize uses of classic ("C") std::locale · 749c0e1d
      The global locale::_Impl that represents the "C" locale is never
      destroyed, so there is no need to keep track of reference count updates
      for that object. This greatly reduce contention between threads that
      refer to the classic locale. Since the global std::locale initially uses
      the classic locale, this benefits the common case for any code using the
      global locale, such as construction/destruction of iostream objects.
      
      All these updates are done inside libstdc++.so so there's no need to
      worry about users' objects having inlined old versions of the code which
      still update the reference count for the classic locale.
      
      	PR libstdc++/59439
      	* src/c++98/locale.cc (locale::locale(const locale&)): Bypass
      	reference count updates for the classic locale.
      	(locale::~locale()): Likewise.
      	(locale::operator=(const locale&)): Likewise.
      	* src/c++98/locale_init.cc (locale::locale()): Likewise.
      	(locale::global(const locale&)): Likewise.
      
      From-SVN: r264811
      Jonathan Wakely committed
    • Fix ARM_TARGET2_DWARF_FORMAT for vxworks · e7df9e44
      2018-10-03  Jérôme Lambourg  <lambourg@adacore.com>
      
      	* config/arm/vxworks.h (ARM_TARGET2_DWARF_FORMAT): Adjust to
      	DW_EH_PE_pcrel | DW_EH_PE_indirect for RTPs.
      
      From-SVN: r264808
      Jerome Lambourg committed
    • Properly mark lambdas in GCOV (PR gcov-profile/86109). · f2db4602
      2018-10-03  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/86109
      	* coverage.c (coverage_begin_function): Do not
      	mark lambdas as artificial.
      	* tree-core.h (struct GTY): Remove tm_clone_flag
      	and introduce new lambda_function.
      	* tree.h (DECL_LAMBDA_FUNCTION): New macro.
      2018-10-03  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/86109
      	* parser.c (cp_parser_lambda_declarator_opt):
      	Set DECL_LAMBDA_FUNCTION for lambdas.
      2018-10-03  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/86109
      	* g++.dg/gcov/pr86109.C: New test.
      
      From-SVN: r264806
      Martin Liska committed
    • 2018-10-03 François Dumont <fdumont@gcc.gnu.org> · 784779d4
      	* include/debug/map.h
      	(map<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
      	(map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
      	(map<>::insert(value_type&&)): Likewise.
      	(map<>::insert<>(_Pair&&)): Likewise.
      	(map<>::insert<>(const_iterator, _Pair&&)): Likewise.
      	(map<>::try_emplace): Likewise.
      	(map<>::insert_or_assign): Likewise.
      	(map<>::insert(node_type&&)): Likewise.
      	(map<>::insert(const_iterator, node_type&&)): Likewise.
      	(map<>::erase(const_iterator)): Likewise.
      	(map<>::erase(const_iterator, const_iterator)): Likewise.
      	* include/debug/multimap.h
      	(multimap<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
      	(multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
      	(multimap<>::insert<>(_Pair&&)): Likewise.
      	(multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
      	(multimap<>::insert(node_type&&)): Likewise.
      	(multimap<>::insert(const_iterator, node_type&&)): Likewise.
      	(multimap<>::erase(const_iterator)): Likewise.
      	(multimap<>::erase(const_iterator, const_iterator)): Likewise.
      	* include/debug/set.h
      	(set<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
      	(set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
      	(set<>::insert(value_type&&)): Likewise.
      	(set<>::insert<>(const_iterator, value_type&&)): Likewise.
      	(set<>::insert(const_iterator, node_type&&)): Likewise.
      	(set<>::erase(const_iterator)): Likewise.
      	(set<>::erase(const_iterator, const_iterator)): Likewise.
      	* include/debug/multiset.h
      	(multiset<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
      	(multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
      	(multiset<>::insert<>(value_type&&)): Likewise.
      	(multiset<>::insert<>(const_iterator, value_type&&)): Likewise.
      	(multiset<>::insert(node_type&&)): Likewise.
      	(multiset<>::insert(const_iterator, node_type&&)): Likewise.
      	(multiset<>::erase(const_iterator)): Likewise.
      	(multiset<>::erase(const_iterator, const_iterator)): Likewise.
      
      From-SVN: r264805
      François Dumont committed
    • Daily bump. · da76e70f
      From-SVN: r264804
      GCC Administrator committed
  3. 02 Oct, 2018 10 commits