1. 30 Jul, 2019 12 commits
    • Adjust literal pool offset in Thumb-2 movsi patterns · cefbac6e
      My previous change to the Thumb-2 movsi patterns caused a codesize regression
      with -Os in large functions.  Fix this by using the literal pool offset of the
      16-bit literal load so that the literal pool is dumped earlier, reducing the
      number of 32-bit literal loads.
      
      Bootstrap & regress OK on arm-none-linux-gnueabihf --with-cpu=cortex-a57
      
          gcc/
      	* config/arm/thumb2.md (thumb2_movsi_insn): Adjust literal offset.
      	* config/arm/vfp.md (thumb2_movsi_vfp): Likewise.
      
      From-SVN: r273911
      Wilco Dijkstra committed
    • Use edge->indirect_unknown_callee in cgraph_edge::make_direct (PR ipa/89330). · d9c425fb
      2019-07-30  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/89330
      	* cgraph.c (cgraph_edge::make_direct): Use
      	edge->indirect_unknown_callee as edge->resolve_speculation can
      	deallocate edge which is this pointer.
      
      From-SVN: r273910
      Martin Liska committed
    • re PR tree-optimization/91257 (Compile-time and memory-hog hog) · 0e5b369e
      2019-07-30  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91257
      	* bitmap.c (bitmap_ior_and_compl_into): Open-code.
      
      From-SVN: r273909
      Richard Biener committed
    • Deduce automatically number of cores for -flto option. · 200b0e7e
      2019-07-30  Martin Liska  <mliska@suse.cz>
      
      	* doc/invoke.texi: Document new behavior.
      	* lto-wrapper.c (cpuset_popcount): New function
      	is a copy of libgomp/config/linux/proc.c.
      	(init_num_threads): Likewise.
      	(run_gcc): Automatically detect core count for -flto.
      	(jobserver_active_p): New function.
      
      From-SVN: r273908
      Martin Liska committed
    • re PR tree-optimization/91257 (Compile-time and memory-hog hog) · 029ca388
      2019-07-30  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91257
      	* bitmap.h (bitmap_ior_into_and_free): Declare.
      	* bitmap.c (bitmap_list_unlink_element): Add defaulted param
      	whether to add the unliked element to the freelist.
      	(bitmap_list_insert_element_after): Add defaulted param for
      	an already allocated element.
      	(bitmap_ior_into_and_free): New function.
      	* tree-ssa-structalias.c (condense_visit): Reduce the
      	ponts-to and edge bitmaps of the SCC members in a
      	logarithmic fashion rather than all to one.
      
      From-SVN: r273907
      Richard Biener committed
    • Mark 2nd argument of delete operator as needed (PR tree-optimization/91270). · 1da8ab97
      2019-07-30  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/91270
      	* tree-ssa-dce.c (propagate_necessity): Mark 2nd argument
      	of delete operator as needed.
      2019-07-30  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/91270
      	* g++.dg/torture/pr91270.C: New test.
      
      From-SVN: r273906
      Martin Liska committed
    • Handle IFN_COND_MUL in tree-ssa-math-opts.c · c1b3d827
      This patch extends the FMA handling in tree-ssa-math-opts.c so
      that it can cope with conditional multiplications as well as
      unconditional multiplications.  The addition or subtraction must then
      have the same condition as the multiplication (at least for now).
      
      E.g. we can currently fold:
      
        (IFN_COND_ADD cond (mul x y) z fallback)
          -> (IFN_COND_FMA cond x y z fallback)
      
      This patch also allows:
      
        (IFN_COND_ADD cond (IFN_COND_MUL cond x y <whatever>) z fallback)
          -> (IFN_COND_FMA cond x y z fallback)
      
      2019-07-30  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-ssa-math-opts.c (convert_mult_to_fma): Add a mul_cond
      	parameter.  When nonnull, make sure that the addition or subtraction
      	has the same condition.
      	(math_opts_dom_walker::after_dom_children): Try convert_mult_to_fma
      	for CFN_COND_MUL too.
      
      gcc/testsuite/
      	* gcc.dg/vect/vect-cond-arith-7.c: New test.
      
      From-SVN: r273905
      Richard Sandiford committed
    • re PR tree-optimization/91291 (gcc.dg/20020312-2.c FAILs) · 8c955a4b
      2019-07-30  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91291
      	* tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Ignore
      	constant values.
      
      From-SVN: r273903
      Richard Biener committed
    • re PR middle-end/91282 (gcc.dg/type-convert-var.c FAILs) · 230e2efd
      	PR middle-end/91282
      	* gcc.dg/type-convert-var.c: Add -fexcess-precision=fast to
      	dg-additional-options.
      
      From-SVN: r273899
      Jakub Jelinek committed
    • re PR middle-end/91216 (OpenMP ICE starting with r265930) · 03be2d2b
      	PR middle-end/91216
      	* omp-low.c (global_nonaddressable_vars): New variable.
      	(use_pointer_for_field): For global decls, if they are non-addressable,
      	remember it in the global_nonaddressable_vars bitmap, if they are
      	addressable and in the global_nonaddressable_vars bitmap, ignore their
      	TREE_ADDRESSABLE bit.
      	(omp_copy_decl_2): Clear TREE_ADDRESSABLE also on private copies of
      	vars in global_nonaddressable_vars bitmap.
      	(execute_lower_omp): Free global_nonaddressable_vars bitmap.
      
      	* gcc.dg/gomp/pr91216.c: New test.
      
      From-SVN: r273898
      Jakub Jelinek committed
    • re PR target/91150 (wrong code with -O -mavx512vbmi due to wrong writemask) · fa2987ed
      	PR target/91150
      	* config/i386/i386-expand.c (expand_vec_perm_blend): Change mask type
      	from unsigned to unsigned HOST_WIDE_INT.  For E_V64QImode cast
      	comparison to unsigned HOST_WIDE_INT before shifting it left.
      
      	* gcc.target/i386/avx512bw-pr91150.c: New test.
      
      From-SVN: r273897
      Jakub Jelinek committed
    • Daily bump. · b8678209
      From-SVN: r273896
      GCC Administrator committed
  2. 29 Jul, 2019 20 commits
    • i386.md (movstrict<mode>): Use register_operand predicate for operand 0. · 82534f65
      	* config/i386/i386.md (movstrict<mode>): Use register_operand
      	predicate for operand 0.  Add expander condition.  Assert that
      	operand 0 is a SUBREG RTX.
      	(*movstrict<mode>_1): Use register_operand predicate for operand 0.
      	Update operand constraints and insn condition.
      	(zero_extend<mode>si2_and): Do not call gen_movstrict<mode>.
      	(zero_extendqihi2_and): Do not call gen_movstrictqi.
      	(*setcc_qi_slp): Use register_operand predicate for operand 0.
      	Update operand 0 constraints.
      	(setcc_qi_slp splitters): Use register_operand predicate for operand 0.
      
      From-SVN: r273891
      Uros Bizjak committed
    • MSP430: Disallow use of code/data regions in the small memory model · 49c432df
      gcc/ChangeLog:
      
      2019-07-29  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config/msp430/msp430.h (DRIVER_SELF_SPECS): Define and emit errors
      	when -m{code,data}-region are used without -mlarge.
      	* config/msp430/msp430.c (msp430_option_override): Error when a
      	non-default code or data region is used without -mlarge.
      	(msp430_section_attr): Emit a warning and do not add upper/lower/either
      	attributes when they are used without -mlarge.
      
      gcc/testsuite/ChangeLog:
      
      2019-07-29  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* gcc.target/msp430/pr78818-data-region.c: Add -mlarge to dg-options.
      	* gcc.target/msp430/region-misuse-code.c: New test.
      	* gcc.target/msp430/region-misuse-data.c: Likewise.
      	* gcc.target/msp430/region-misuse-code-data.c: Likewise.
      	* gcc.target/msp430/region-attribute-misuse.c: Likewise.
      
      From-SVN: r273884
      Jozef Lawrynowicz committed
    • Allow both upper and lower case 'r' in register names · 37816988
      2019-07-29  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	PR target/70320
      	* config/msp430/msp430.h: Define ADDITIONAL_REGISTER_NAMES.
      
      2019-07-29  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	PR target/70320
      	* gcc.target/msp430/asm-register-names-lower-case.c: New test.
      	* gcc.target/msp430/asm-register-names-upper-case.c: Likewise.
      
      From-SVN: r273883
      Jozef Lawrynowicz committed
    • Add PR number · 2c393dab
      From-SVN: r273882
      Richard Sandiford committed
    • Fix inchash handling of wide_ints (PR91242) · 5d5bb9bc
      inchash::hash::add_wide_int operated directly on the raw encoding
      of the wide_int, including any redundant upper bits.  The problem
      with that is that the upper bits are only defined for some wide-int
      storage types (including wide_int itself).  wi::to_wide(tree) instead
      returns a value that is extended according to the signedness of the
      type (so that wi::to_widest can use the same encoding) while rtxes
      have the awkward special case of BI, which can be zero-extended
      rather than sign-extended.
      
      In the PR, we computed a hash for a "normal" sign-extended wide_int
      while the existing entries hashed wi::to_wide(tree).  This gives
      different results for unsigned types that have the top bit set.
      
      The patch fixes that by hashing the canonical sign-extended form even
      if the raw encoding happens to be different.
      
      2019-07-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* wide-int.h (generic_wide_int::sext_elt): New function.
      	* inchash.h (hash::add_wide_int): Use it instead of elt.
      
      From-SVN: r273881
      Richard Sandiford committed
    • re PR fortran/90813 (gfortran.dg/proc_ptr_51.f90 fails (SIGSEGV) after 272084) · 5c6aa9a8
      2019-07-29  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/90813
      	* dump-parse-tree.c (show_global_symbol): New function.
      	(gfc_dump_global_symbols): New function.
      	* gfortran.h (gfc_traverse_gsymbol): Add prototype.
      	(gfc_dump_global_symbols): Likewise.
      	* invoke.texi: Document -fdump-fortran-global.
      	* lang.opt: Add -fdump-fortran-global.
      	* parse.c (gfc_parse_file): Handle flag_dump_fortran_global.
      	* symbol.c (gfc_traverse_gsymbol): New function.
      	* trans-decl.c (sym_identifier): New function.
      	(mangled_identifier): New function, doing most of the work
      	of gfc_sym_mangled_identifier.
      	(gfc_sym_mangled_identifier): Use mangled_identifier.  Add mangled
      	identifier to global symbol table.
      	(get_proc_pointer_decl): Use backend decl from global identifier
      	if present.
      
      From-SVN: r273880
      Thomas Koenig committed
    • [arm] Make ACLE builtins use arm_* namespace for expanders · 93733789
      The builtins from <arm_acle.h> use fairly general expander names such as
      "crc", "mcr" etc.
      These run the risk of being reserved by the midend in the future.
      Let's namespace them to arm_* as is convention.
      
      	* config/arm/arm-builtins.c (acle_builtin_data): Expand VAR1 to
      	CODE_FOR_arm_##.
      	* config/arm/arm.md (<crc_variant>): Rename to...
      	(arm_<crc_variant>): ... This.
      	(<cdp>): Rename to...
      	(arm_<cdp>): ... This.
      	(<ldc>): Rename to...
      	(arm_<ldc>): ... This.
      	(<stc>): Rename to...
      	(arm_<stc>): ... This.
      	(<mcr>): Rename to...
      	(arm_<mcr>): ... This.
      	(<mrc>): Rename to...
      	(arm_<mrc>): ... This.
      	(<mcrr>): Rename to...
      	(arm_<mcrr>): ... This.
      	(<mrrc>): Rename to...
      	(arm_<mrrc>): ... This.
      
      From-SVN: r273879
      Kyrylo Tkachov committed
    • PR libstdc++/51333 Define recursive_init_error constructor non-inline · 50c2df93
      The recursive_init_error class is defined in a header, with an inline
      constructor, but the definition of the vtable and destructor are not
      exported from the shared library. With -fkeep-inline-functions the
      constructor gets emitted in user code, and requires the (non-exported)
      vtable. This fails to link.
      
      As far as I can tell, the recursive_init_error class definition was
      moved into <cxxabi.h> so it could be documented with Doxygen, not for
      any technical reason. But now it's there (and documented), somebody
      could be relying on it, by catching that type and possibly performing
      derived-to-base conversions to the std::exception base class. So the
      conservative fix is to leave the class definition in the header but make
      the constructor non-inline. This still allows the type to be caught and
      still defines its base class. User code can no longer construct objects
      of that type, but that's not something we need to support.
      
      	PR libstdc++/51333
      	* libsupc++/cxxabi.h (__gnu_cxx::recursive_init_error): Do not define
      	constructor inline.
      	* libsupc++/guard_error.cc (__gnu_cxx::recursive_init_error): Define
      	constructor.
      	* testsuite/18_support/51333.cc: New test.
      
      From-SVN: r273878
      Jonathan Wakely committed
    • re PR tree-optimization/91257 (Compile-time and memory-hog hog) · 390c0dd6
      2019-07-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91257
      	* tree-ssa-sccvn.h (struct vn_avail): New.
      	(struct vn_ssa_aux): Add avail member.
      	* tree-ssa-sccvn.c (class rpo_elim): Remove m_rpo_avail
      	member, add m_avail_freelist one.
      	(rpo_elim::~rpo_elim): Remove.
      	(rpo_elim::eliminate_avail): Adjust to new avail tracking
      	data structure.
      	(rpo_elim::eliminate_push_avail): Likewise.
      	(do_unwind): Likewise.
      	(do_rpo_vn): Likewise.
      
      From-SVN: r273877
      Richard Biener committed
    • re PR tree-optimization/91257 (Compile-time and memory-hog hog) · a55d6091
      2019-07-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91257
      	* tree-vrp.c (operand_less_p): Avoid dispatching to fold for
      	most cases, instead call compare_values which handles the
      	symbolic ranges we handle specially.
      	(compare_values_warnv): Do not call operand_less_p but open-code
      	the effective fold calls.  Avoid converting so much.
      
      From-SVN: r273876
      Richard Biener committed
    • Fix ICE seen in tree-ssa-dce.c for new/delete pair. · fc5e7d2a
      2019-07-29  Martin Liska  <mliska@suse.cz>
      
      	* tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not
      	remove LHS of operator new call.  It's handled latter.
      2019-07-29  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/cpp1y/new1.C (test_unused): Add new case that causes
      	ICE.
      
      From-SVN: r273875
      Martin Liska committed
    • re PR middle-end/91267 (SEGV in value_range_base::equal_p) · 3c2f6fae
      2019-07-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91267
      	* vr-values.c (vr_values::update_value_range): Add early return
      	for effectively VARYING lattice entry.
      
      	* gcc.dg/torture/pr91267.c: New testcase.
      
      From-SVN: r273874
      Richard Biener committed
    • Prevent tree-ssa-dce.c from deleting stores at -Og · f33b9c40
      DCE tries to delete dead stores to local data and also tries to insert
      debug binds for simple cases:
      
        /* If this is a store into a variable that is being optimized away,
           add a debug bind stmt if possible.  */
        if (MAY_HAVE_DEBUG_BIND_STMTS
            && gimple_assign_single_p (stmt)
            && is_gimple_val (gimple_assign_rhs1 (stmt)))
          {
            tree lhs = gimple_assign_lhs (stmt);
            if ((VAR_P (lhs) || TREE_CODE (lhs) == PARM_DECL)
      	  && !DECL_IGNORED_P (lhs)
      	  && is_gimple_reg_type (TREE_TYPE (lhs))
      	  && !is_global_var (lhs)
      	  && !DECL_HAS_VALUE_EXPR_P (lhs))
      	{
      	  tree rhs = gimple_assign_rhs1 (stmt);
      	  gdebug *note
      	    = gimple_build_debug_bind (lhs, unshare_expr (rhs), stmt);
      	  gsi_insert_after (i, note, GSI_SAME_STMT);
      	}
          }
      
      But this doesn't help for things like "print *ptr" when ptr points
      to the local variable (tests Og-dce-1.c and Og-dce-2.c).  It can
      also introduce wrong debug info for earlier references (second test
      in Og-dce-3.c) or make earlier references unavailable (first test
      in Og-dce-3.c).
      
      So for -Og I think it'd be better not to delete any stmts with
      vdefs for now.  This also means that we can avoid the potentially
      expensive vop walks (which already have a cut-off, but still).
      
      The patch also fixes the Og failures in gcc.dg/guality/pr54970.c
      (PR 86638).
      
      2019-07-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR debug/86638
      	* tree-ssa-dce.c (keep_all_vdefs_p): New function.
      	(mark_stmt_if_obviously_necessary): Mark all stmts with vdefs as
      	necessary if keep_all_vdefs_p is true.
      	(mark_aliased_reaching_defs_necessary): Add a gcc_checking_assert
      	that keep_all_vdefs_p is false.
      	(mark_all_reaching_defs_necessary): Likewise.
      	(propagate_necessity): Skip the vuse scan if keep_all_vdefs_p is true.
      
      gcc/testsuite/
      	* c-c++-common/guality/Og-dce-1.c: New test.
      	* c-c++-common/guality/Og-dce-2.c: Likewise.
      	* c-c++-common/guality/Og-dce-3.c: Likewise.
      
      From-SVN: r273872
      Richard Sandiford committed
    • Don't run DSE at -Og · c0fe6bce
      This patch stops gimple and rtl DSE from running by default at -Og.
      The idea is both to improve compile time and to stop us from deleting
      stores that we can't track in debug info.
      
      We could rein this back in future for stores to local variables
      with is_gimple_reg_type, but at the moment we don't have any
      infrastructure for switching between binds to specific values
      and binds to evolving memory locations.  Even then, location
      tracking only works for direct references to the variables, and doesn't
      for example help with printing dereferenced pointers (see the next patch
      in the series for an example).
      
      I'm also not sure that DSE is important enough for -Og to justify the
      compile time cost --  especially in the case of RTL DSE, which is pretty
      expensive.
      
      2019-07-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* common.opt (Og): Change the initial value of flag_dse to 0.
      	* opts.c (default_options_table): Move OPT_ftree_dse from
      	OPT_LEVELS_1_PLUS to OPT_LEVELS_1_PLUS_NOT_DEBUG.  Also add
      	OPT_fdse to OPT_LEVELS_1_PLUS_NOT_DEBUG.  Put the OPT_ftree_pta
      	entry before the OPT_ftree_sra entry.
      	* doc/invoke.texi (Og): Add -fdse and -ftree-dse to the list
      	of flags disabled by Og.
      
      gcc/testsuite/
      	* c-c++-common/guality/Og-global-dse-1.c: New test.
      
      From-SVN: r273871
      Richard Sandiford committed
    • Prevent -Og from deleting stores to write-only variables · ec8ac265
      This patch prevents -Og from deleting stores to write-only variables,
      so that the values are still available when debugging.  This seems
      more convenient than forcing users to use __attribute__((used))
      (probably conditionally, if it's not something they want in release
      builds).
      
      2019-07-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-cfg.c (execute_fixup_cfg): Don't delete stores to write-only
      	variables for -Og.
      
      gcc/testsuite/
      	* c-c++-common/guality/Og-static-wo-1.c: New test.
      	* g++.dg/guality/guality.exp: Separate the c-c++-common tests into
      	"Og" and "general" tests.  Run the latter at -O0 and -Og only.
      	* gcc.dg/guality/guality.exp: Likewise.
      
      From-SVN: r273870
      Richard Sandiford committed
    • Add dg test for matching function bodies · 4d706ff8
      There isn't a 1:1 mapping from SVE intrinsics to SVE instructions,
      but the intrinsics are still close enough to the instructions for
      there to be a specific preferred sequence (or sometimes choice of
      preferred sequences) for a given combination of operands.  Sometimes
      these sequences will be one instruction, sometimes they'll be several.
      
      I therefore wanted a convenient way of matching the exact assembly
      implementation of a given function.  It's possible to do that using
      single scan-assembler lines, but:
      
      (a) they become hard to read for multiline matches
      (b) the PASS/FAIL lines tend to be overly long
      (c) it's useful to have a single place that skips over uninteresting
          lines, such as entry block labels and .cfi_* directives, without
          being overly broad
      
      This patch therefore adds a new check-function-bodies dg-final test
      that looks for specially-formatted comments.  As a demo, the patch
      converts the SVE vec_init tests to use the new harness instead of
      scan-assembler.
      
      The regexps in parse_function_bodies are fairly general, but might
      still need to be extended in future for targets like Darwin or AIX.
      
      2019-07-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* doc/sourcebuild.texi (check-function-bodies): Document.
      
      gcc/testsuite/
      	* lib/scanasm.exp (parse_function_bodies, check_function_body)
      	(check-function-bodies): New procedures.
      	* gcc.target/aarch64/sve/init_1.c: Use check-function-bodies
      	instead of scan-assembler.
      	* gcc.target/aarch64/sve/init_2.c: Likewise.
      	* gcc.target/aarch64/sve/init_3.c: Likewise.
      	* gcc.target/aarch64/sve/init_4.c: Likewise.
      	* gcc.target/aarch64/sve/init_5.c: Likewise.
      	* gcc.target/aarch64/sve/init_6.c: Likewise.
      	* gcc.target/aarch64/sve/init_7.c: Likewise.
      	* gcc.target/aarch64/sve/init_8.c: Likewise.
      	* gcc.target/aarch64/sve/init_9.c: Likewise.
      	* gcc.target/aarch64/sve/init_10.c: Likewise.
      	* gcc.target/aarch64/sve/init_11.c: Likewise.
      	* gcc.target/aarch64/sve/init_12.c: Likewise.
      
      From-SVN: r273869
      Richard Sandiford committed
    • Generalise VEC_DUPLICATE folding for variable-length vectors · 708cc613
      This patch uses the constant vector encoding scheme to handle
      more cases of a VEC_DUPLICATE of another vector.  Duplicating
      any fixed-length vector is fine, and duplicating a variable-length
      vector is OK as long as that vector is also a duplicate of a
      fixed-length sequence.
      
      Other cases fell through to:
      
        if (VECTOR_MODE_P (mode) && GET_CODE (op) == CONST_VECTOR)
      
      which was only expecting to deal with elementwise operations.
      
      2019-07-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* simplify-rtx.c (simplify_const_unary_operation): Fold a
      	VEC_DUPLICATE of a fixed-length vector even if the result
      	is variable-length.  Likewise fold a duplicate of a
      	variable-length vector if the variable-length vector is
      	itself a duplicate of a fixed-length sequence.
      	(test_vector_ops_duplicate): Test more cases.
      
      From-SVN: r273868
      Richard Sandiford committed
    • Implement more rtx vector folds on variable-length vectors · 4ce6ab68
      This patch extends the tree-level folding of variable-length vectors
      so that it can also be used on rtxes.  The first step is to move
      the tree_vector_builder new_unary/binary_operator routines to the
      parent vector_builder class (which in turn means adding a new
      template parameter).  The second step is to make simplify-rtx.c
      use a direct rtx analogue of the VECTOR_CST handling in fold-const.c.
      
      2019-07-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* vector-builder.h (vector_builder): Add a shape template parameter.
      	(vector_builder::new_unary_operation): New function, generalizing
      	the old tree_vector_builder function.
      	(vector_builder::new_binary_operation): Likewise.
      	(vector_builder::binary_encoded_nelts): Likewise.
      	* int-vector-builder.h (int_vector_builder): Update template
      	parameters to vector_builder.
      	(int_vector_builder::shape_nelts): New function.
      	* rtx-vector-builder.h (rtx_vector_builder): Update template
      	parameters to vector_builder.
      	(rtx_vector_builder::shape_nelts): New function.
      	(rtx_vector_builder::nelts_of): Likewise.
      	(rtx_vector_builder::npatterns_of): Likewise.
      	(rtx_vector_builder::nelts_per_pattern_of): Likewise.
      	* tree-vector-builder.h (tree_vector_builder): Update template
      	parameters to vector_builder.
      	(tree_vector_builder::shape_nelts): New function.
      	(tree_vector_builder::nelts_of): Likewise.
      	(tree_vector_builder::npatterns_of): Likewise.
      	(tree_vector_builder::nelts_per_pattern_of): Likewise.
      	* tree-vector-builder.c (tree_vector_builder::new_unary_operation)
      	(tree_vector_builder::new_binary_operation): Delete.
      	(tree_vector_builder::binary_encoded_nelts): Likewise.
      	* simplify-rtx.c: Include rtx-vector-builder.h.
      	(distributes_over_addition_p): New function.
      	(simplify_const_unary_operation)
      	(simplify_const_binary_operation): Generalize handling of vector
      	constants to include variable-length vectors.
      	(test_vector_ops_series): Add more tests.
      
      From-SVN: r273867
      Richard Sandiford committed
    • re PR c++/91222 (507.cactuBSSN_r build fails in warn_types_mismatch at… · 66fafc3b
      re PR c++/91222 (507.cactuBSSN_r build fails in warn_types_mismatch at ipa-devirt.c:1006 since r273571)
      
      
      	PR lto/91222
      	* ipa-devirt.c (warn_types_mismatch): Compare indentifiers
      	than INDENTIFIER_POINTER.
      
      From-SVN: r273866
      Jan Hubicka committed
    • Daily bump. · a8cc00bf
      From-SVN: r273864
      GCC Administrator committed
  3. 28 Jul, 2019 8 commits
    • Release cgraph_{node,edge} via ggc_free (PR ipa/89330). · fe248a88
      2019-07-28  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/89330
      	* cgraph.c (symbol_table::create_edge): Always allocate
      	a cgraph_edge.
      	(symbol_table::free_edge): Store summary_id to
      	edge_released_summary_ids if != -1;
      	* cgraph.h (NEXT_FREE_NODE): Remove.
      	(SET_NEXT_FREE_NODE): Likewise.
      	(NEXT_FREE_EDGE): Likewise.
      	(symbol_table::release_symbol): Store summary_id to
      	cgraph_released_summary_ids if != -1;
      	(symbol_table::allocate_cgraph_symbol): Always allocate
      	a cgraph_node.
      
      From-SVN: r273857
      Martin Liska committed
    • Fix g++.dg/lto/pr89330 on Solaris · 4f394a9e
      	* g++.dg/lto/pr89330_0.C (dg-lto-options): Add -fPIC.
      	Require fpic support.
      
      From-SVN: r273856
      Rainer Orth committed
    • [RS6000] rs6000_output_mi_thunk tidy · aef57966
      Since svn r123193 (git 327202e27a) the comment about scratch regs was
      no longer correct, and I think gen_sibcall could have been used even
      then.
      
      	* gcc/config/rs6000/rs6000-call.c (rs6000_output_mi_thunk): Use
      	gen_sibcall.
      
      From-SVN: r273855
      Alan Modra committed
    • [RS6000] PR91135, __linux__ not defined with -mcall-aixdesc on 9.x and ppc64 · 295ac7c7
      This patch makes the obvious fix for PR91135, and deletes extraneous
      copies of GNU_USER_TARGET_D_OS_VERSIONS that appear in rs6000/linux.h
      and rs6000/linux64.h.  Since all configurations using either of these
      files also include linux.h there is no need to duplicate the macro.
      
      	PR target/91135
      	* config/rs6000/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Don't
      	define.
      	* config/rs6000/linux64.h (TARGET_OS_CPP_BUILTINS): Invoke
      	GNU_USER_TARGET_OS_CPP_BUILTINS for aixdesc abi.
      	(GNU_USER_TARGET_D_OS_VERSIONS): Don't define.
      
      From-SVN: r273854
      Alan Modra committed
    • [RS6000] Make assembler command line cpu match default for gcc · 8d852645
      When gcc is configured using --with-cpu=<cpu>, the specified cpu
      effectively becomes a default -mcpu=<cpu> passed to gcc.  This then
      affects the cpu passed to gas via ASM_CPU_SPEC.  If gcc is not
      configured using --with-cpu then the cpu passed to gas is that given
      by ASM_DEFAULT_SPEC, which currently does not match the default flags
      selected in default64.h.  This patch makes ASM_DEFAULT_SPEC agree with
      TARGET_DEFAULT flags.
      
      rs6000/default64.h appears in three places in config.gcc, the first
      one immediately followed by rs6000/freebsd64.h in $tm_file, and the
      other two immediately followed by rs6000/linux64.h.  To be able to
      define ASM_DEFAULT_SPEC in rs6000/default64.h we don't want to
      redefine in the other two files.  rs6000/freebsd64.h is easy since
      that file is always preceded by rs6000/default64.h, but
      rs6000/linux64.h can appear without rs6000/default64.h (a
      powerpc*-linux config where the default is -m32).  In that case we
      will have TARGET_DEFAULT flags of 0 (from rs6000/sysv4.h) and want to
      use -mppc without -m64 and -mppc64 with -m64.  This can be done by
      using the rs6000/rtems.h ASM_DEFAULT_SPEC in rs6000/sysv4.h, a change
      that won't affect sysv4 configurations where -m64 is invalid.
      
      The patch also introduces ASM_DEFAULT_EXTRA for the altivec variant
      targets so as to enable -maltivec by default.
      
      	PR target/91050
      	* config/rs6000/sysv4.h (ASM_DEFAULT_SPEC): Modify if -m64.
      	* config/rs6000/default64.h (ASM_DEFAULT_SPEC): Define.
      	* config/rs6000/freebsd64.h (ASM_DEFAULT_SPEC): Don't define.
      	* config/rs6000/linux64.h (ASM_DEFAULT_SPEC): Likewise.
      	* config/rs6000/rtems.h (ASM_DEFAULT_SPEC): Likewise.
      	* config/rs6000/rs6000.h (ASM_DEFAULT_EXTRA): Define and use
      	in asm_default spec.
      	* config/rs6000/eabialtivec.h (ASM_DEFAULT_EXTRA): Redefine.
      	* config/rs6000/linuxaltivec.h (ASM_DEFAULT_EXTRA): Redefine.
      
      From-SVN: r273853
      Alan Modra committed
    • documentation_hacking.xml: Fix broken reference to the Doxygen manual. · c5993c9a
      	* doc/xml/manual/documentation_hacking.xml: Fix broken reference
      	to the Doxygen manual. Avoid a "here" link on the way.
      	Fix another broken link to Doxygen docblocks.
      
      From-SVN: r273852
      Gerald Pfeifer committed
    • Daily bump. · 93ca0712
      From-SVN: r273850
      GCC Administrator committed