1. 25 Nov, 2016 11 commits
    • [PR 70965] Schedule extra rebuild_cgraph_edges · 54e606f0
      2016-11-25  Martin Jambor  <mjambor@suse.cz>
      
      	PR tree-optimization/70965
      	* passes.def (pass_build_ssa_passes): Add pass_rebuild_cgraph_edges.
      
      gcc/testsuite/
      	* g++.dg/pr70965.C: New test.
      
      From-SVN: r242867
      Martin Jambor committed
    • [Patch i386] PR78509 - TARGET_C_EXCESS_PRECISION should not return · 2dbe91cf
       "unpredictable" for EXCESS_PRECISION_TYPE_STANDARD
      
      gcc/
      
      	PR target/78509
      	* config/i386/i386.c (i386_excess_precision): Do not return
      	FLT_EVAL_METHOD_UNPREDICTABLE when "type" is
      	EXCESS_PRECISION_TYPE_STANDARD.
      	* target.def (excess_precision): Document that targets should
      	not return FLT_EVAL_METHOD_UNPREDICTABLE when "type" is
      	EXCESS_PRECISION_TYPE_STANDARD or EXCESS_PRECISION_TYPE_FAST.
      	Fix typo in first sentence.
      	* doc/tm.texi: Regenerate.
      
      From-SVN: r242866
      James Greenhalgh committed
    • re PR tree-optimization/78396 (gcc.dg/vect/bb-slp-cond-1.c FAILs after fix for PR77848) · 5bcfb22c
      2016-11-25  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/78396
      	* tree-vectorizer.c (vectorize_loops): When the if-converted
      	body contains masked loads or stores do not attempt to
      	basic-block-vectorize it.
      
      From-SVN: r242865
      Richard Biener committed
    • re PR gcov-profile/78467 (gcc.dg/tree-prof/comp-goto-1.c FAILs) · 758dcf83
      	PR gcov-profile/78467
      	* gcc.dg/tree-prof/comp-goto-1.c (insn_t): Change offset to
      	signed int.
      
      Co-Authored-By: Andreas Schwab <schwab@linux-m68k.org>
      
      From-SVN: r242864
      Jakub Jelinek committed
    • Tweak LRA handling of shared spill slots · 83d0488b
      The previous code processed the users of a stack slot in order of
      decreasing size and allocated the slot based on the first user.
      This seems a bit dangerous, since the ordering is based on the
      mode of the biggest reference while the allocation is based also
      on the size of the register itself (which I think could be larger).
      
      That scheme doesn't scale well to polynomial sizes, since there's
      no guarantee that the order of the sizes is known at compile time.
      This patch instead records an upper bound on the size required
      by all users of a slot.  It also records the maximum alignment
      requirement.
      
      gcc/
      2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* function.h (spill_slot_alignment): Declare.
      	* function.c (spill_slot_alignment): New function.
      	* lra-spills.c (slot): Add align and size fields.
      	(assign_mem_slot): Use them in the call to assign_stack_local.
      	(add_pseudo_to_slot): Update the fields.
      	(assign_stack_slot_num_and_sort_pseudos): Initialise the fields.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242863
      Richard Sandiford committed
    • Set mode of decimal floats before calling layout_type · 664e6968
      Previously decimal floating-point types were created and laid
      out as binary floating-point types, then the caller changed
      the mode to a decimal mode later.  The problem with that
      approach is that not all targets support an equivalent binary
      floating-point mode.  When they didn't, we would give the
      type BLKmode and lay it out as a zero-sized type.
      
      This probably had no effect in practice.  If a target doesn't
      support a binary mode then it's unlikely to support the decimal
      equivalent either.  However, with the stricter mode checking
      added by later patches, we would assert if a scalar floating-
      point type didn't have a scalar floating-point mode.
      
      gcc/
      2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* stor-layout.c (layout_type): Allow the caller to set the mode of
      	a float type.  Only choose one here if the mode is still VOIDmode.
      	* tree.c (build_common_tree_nodes): Set the type mode of decimal
      	floats before calling layout_type.
      	* config/rs6000/rs6000.c (rs6000_init_builtins): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242862
      Richard Sandiford committed
    • Add run tests for recent sibcall patches · 84db1406
      gcc/testsuite/
      	* gcc.dg/tree-ssa/tailcall-7-run.c: New test.
      	* gcc.dg/tree-ssa/tailcall-8-run.c: Likewise.
      
      From-SVN: r242861
      Richard Sandiford committed
    • Tighten check for whether sibcall references local variables · 2c28c3e4
      This loop:
      
            /* Make sure the tail invocation of this function does not refer
               to local variables.  */
            FOR_EACH_LOCAL_DECL (cfun, idx, var)
              {
                if (TREE_CODE (var) != PARM_DECL
                    && auto_var_in_fn_p (var, cfun->decl)
                    && (ref_maybe_used_by_stmt_p (call, var)
                        || call_may_clobber_ref_p (call, var)))
                  return;
              }
      
      triggered even for local variables that are passed by value.
      This meant that we didn't allow local aggregates to be passed
      to a sibling call but did (for example) allow global aggregates
      to be passed.
      
      I think the loop is really checking for indirect references,
      so should be able to skip any variables that never have their
      address taken.
      
      gcc/
      	* tree-tailcall.c (find_tail_calls): Allow calls to reference
      	local variables if all references are known to be direct.
      
      gcc/testsuite/
      	* gcc.dg/tree-ssa/tailcall-8.c: New test.
      
      From-SVN: r242860
      Richard Sandiford committed
    • Fix bogus pr64277.c failure for avr · 4ae35e69
      The smaller int size for the avr target breaks the test's
      expectation on the number of iterations. The failure goes
      away if 32 bit ints are used in place of a plain int.
      
      Fix by conditionally typedef int32_t to __INT32_TYPE__ for targets
      with int size < 4,  and then use int32_t everywhere.
      
      gcc/testsuite
      016-11-25  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
      
      	* gcc.dg/pr64277.c: Use __INT32_TYPE__ for targets
      	with sizeof(int) < 4.
      
      From-SVN: r242859
      Senthil Kumar Selvaraj committed
    • re PR middle-end/78501 (SEGV in vrp_val_max) · 2131e489
      2016-11-25  Jakub Jelinek  <jakub@redhat.com>
      	    Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR middle-end/78501
      	* tree-vrp.c (extract_range_basic): Check for ptrdiff_type_node to be
      	non null and it's precision matches precision of lhs's type.
      
      Co-Authored-By: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
      
      From-SVN: r242858
      Jakub Jelinek committed
    • Daily bump. · 6d52e466
      From-SVN: r242857
      GCC Administrator committed
  2. 24 Nov, 2016 29 commits