svn commit: r237406 - head/contrib/gcc
Niclas Zeising
zeising at daemonic.se
Thu Jun 21 17:30:38 UTC 2012
On 06/21/12 18:49, Pedro F. Giffuni wrote:
> Author: pfg
> Date: Thu Jun 21 16:49:20 2012
> New Revision: 237406
> URL: http://svn.freebsd.org/changeset/base/237406
>
> Log:
> Bring a couple of fixes for gcc optimizations.
>
> The GCC4.3 branch contains some optimization fixes
> that were not considered regressions and therefore
> were never backported. We are bringing a couple of
> them that are under GPLv2 since they were made
> before the license switch upstream.
>
> While here, add the GCC revision numbers in the
> log.
>
> Discussed with: jkim
> MFC after: 1 week
>
> Modified:
> head/contrib/gcc/ChangeLog.gcc43
> head/contrib/gcc/fold-const.c
> head/contrib/gcc/gimplify.c
> head/contrib/gcc/tree-ssa-ccp.c
> head/contrib/gcc/tree-ssa-pre.c
>
> Modified: head/contrib/gcc/ChangeLog.gcc43
> ==============================================================================
> --- head/contrib/gcc/ChangeLog.gcc43 Thu Jun 21 16:48:56 2012 (r237405)
> +++ head/contrib/gcc/ChangeLog.gcc43 Thu Jun 21 16:49:20 2012 (r237406)
> @@ -5,6 +5,18 @@
> with SSE3 instruction set support.
> * doc/invoke.texi: Likewise.
>
> +2007-04-12 Richard Guenther<rguenther at suse.de> (r123736)
> +
> + PR tree-optimization/24689
> + PR tree-optimization/31307
> + * fold-const.c (operand_equal_p): Compare INTEGER_CST array
> + indices by value.
> + * gimplify.c (canonicalize_addr_expr): To be consistent with
> + gimplify_compound_lval only set operands two and three of
> + ARRAY_REFs if they are not gimple_min_invariant. This makes
> + it never at this place.
> + * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
> +
> 2007-04-07 H.J. Lu<hongjiu.lu at intel.com> (r123639)
>
> * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
> @@ -96,7 +108,7 @@
>
> * doc/invoke.texi: Add entry about geode processor.
>
> -2006-10-24 Richard Guenther<rguenther at suse.de>
> +2006-10-24 Richard Guenther<rguenther at suse.de> (r118001)
>
> PR middle-end/28796
> * builtins.c (fold_builtin_classify): Use HONOR_INFINITIES
> @@ -170,7 +182,13 @@
>
> * doc/invoke.texi: Document -mssse3/-mno-ssse3 switches.
>
> -2006-10-21 Richard Guenther<rguenther at suse.de>
> +2006-10-21 Richard Guenther<rguenther at suse.de> (r117932)
> +
> + PR tree-optimization/3511
> + * tree-ssa-pre.c (phi_translate): Fold CALL_EXPRs that
> + got new invariant arguments during PHI translation.
> +
> +2006-10-21 Richard Guenther<rguenther at suse.de> (r117929)
>
> * builtins.c (fold_builtin_classify): Fix typo.
>
>
> Modified: head/contrib/gcc/fold-const.c
> ==============================================================================
> --- head/contrib/gcc/fold-const.c Thu Jun 21 16:48:56 2012 (r237405)
> +++ head/contrib/gcc/fold-const.c Thu Jun 21 16:49:20 2012 (r237406)
> @@ -2802,9 +2802,13 @@ operand_equal_p (tree arg0, tree arg1, u
>
> case ARRAY_REF:
> case ARRAY_RANGE_REF:
> - /* Operands 2 and 3 may be null. */
> + /* Operands 2 and 3 may be null.
> + Compare the array index by value if it is constant first as we
> + may have different types but same value here. */
> return (OP_SAME (0)
> - && OP_SAME (1)
> + && (tree_int_cst_equal (TREE_OPERAND (arg0, 1),
> + TREE_OPERAND (arg1, 1))
> + || OP_SAME (1))
> && OP_SAME_WITH_NULL (2)
> && OP_SAME_WITH_NULL (3));
>
>
> Modified: head/contrib/gcc/gimplify.c
> ==============================================================================
> --- head/contrib/gcc/gimplify.c Thu Jun 21 16:48:56 2012 (r237405)
> +++ head/contrib/gcc/gimplify.c Thu Jun 21 16:49:20 2012 (r237406)
> @@ -1600,9 +1600,7 @@ canonicalize_addr_expr (tree *expr_p)
> /* All checks succeeded. Build a new node to merge the cast. */
> *expr_p = build4 (ARRAY_REF, dctype, obj_expr,
> TYPE_MIN_VALUE (TYPE_DOMAIN (datype)),
> - TYPE_MIN_VALUE (TYPE_DOMAIN (datype)),
> - size_binop (EXACT_DIV_EXPR, TYPE_SIZE_UNIT (dctype),
> - size_int (TYPE_ALIGN_UNIT (dctype))));
> + NULL_TREE, NULL_TREE);
> *expr_p = build1 (ADDR_EXPR, ctype, *expr_p);
> }
>
>
> Modified: head/contrib/gcc/tree-ssa-ccp.c
> ==============================================================================
> --- head/contrib/gcc/tree-ssa-ccp.c Thu Jun 21 16:48:56 2012 (r237405)
> +++ head/contrib/gcc/tree-ssa-ccp.c Thu Jun 21 16:49:20 2012 (r237406)
> @@ -1621,9 +1621,7 @@ maybe_fold_offset_to_array_ref (tree bas
> if (!integer_zerop (elt_offset))
> idx = int_const_binop (PLUS_EXPR, idx, elt_offset, 0);
>
> - return build4 (ARRAY_REF, orig_type, base, idx, min_idx,
> - size_int (tree_low_cst (elt_size, 1)
> - / (TYPE_ALIGN_UNIT (elt_type))));
> + return build4 (ARRAY_REF, orig_type, base, idx, NULL_TREE, NULL_TREE);
> }
>
>
>
> Modified: head/contrib/gcc/tree-ssa-pre.c
> ==============================================================================
> --- head/contrib/gcc/tree-ssa-pre.c Thu Jun 21 16:48:56 2012 (r237405)
> +++ head/contrib/gcc/tree-ssa-pre.c Thu Jun 21 16:49:20 2012 (r237406)
> @@ -1076,6 +1076,7 @@ phi_translate (tree expr, value_set_t se
> tree newexpr;
> tree vh = get_value_handle (expr);
> bool listchanged = false;
> + bool invariantarg = false;
> VEC (tree, gc) *vuses = VALUE_HANDLE_VUSES (vh);
> VEC (tree, gc) *tvuses;
>
> @@ -1134,10 +1135,26 @@ phi_translate (tree expr, value_set_t se
> if (newval != oldval)
> {
> listchanged = true;
> + invariantarg |= is_gimple_min_invariant (newval);
> TREE_VALUE (newwalker) = get_value_handle (newval);
> }
> }
> }
> +
> + /* In case of new invariant args we might try to fold the call
> + again. */
> + if (invariantarg)
> + {
> + tree tmp = fold_ternary (CALL_EXPR, TREE_TYPE (expr),
> + newop0, newarglist, newop2);
> + if (tmp)
> + {
> + STRIP_TYPE_NOPS (tmp);
> + if (is_gimple_min_invariant (tmp))
> + return tmp;
> + }
> + }
> +
> if (listchanged)
> vn_lookup_or_add (newarglist, NULL);
>
Could this fix the issues with mozilla ports not compiling on -O2?
I will test later, but I'm just checking if you have any insight...
Regards!
--
Niclas Zeising
More information about the svn-src-head
mailing list