Date: Thu, 21 Jun 2012 19:30:18 +0200 From: Niclas Zeising <zeising@daemonic.se> To: "Pedro F. Giffuni" <pfg@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r237406 - head/contrib/gcc Message-ID: <4FE35A2A.3030408@daemonic.se> In-Reply-To: <201206211649.q5LGnKrn024904@svn.freebsd.org> References: <201206211649.q5LGnKrn024904@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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@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@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@suse.de> > +2006-10-24 Richard Guenther<rguenther@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@suse.de> > +2006-10-21 Richard Guenther<rguenther@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@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4FE35A2A.3030408>