This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/32949] suboptimal address generation for int indices on 64-bit targets
- From: "rakdver at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 21 Aug 2007 21:29:28 -0000
- Subject: [Bug tree-optimization/32949] suboptimal address generation for int indices on 64-bit targets
- References: <bug-32949-12467@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from rakdver at gcc dot gnu dot org 2007-08-21 21:29 -------
This patch fixes the problem:
Index: tree-ssa-loop-niter.c
===================================================================
*** tree-ssa-loop-niter.c (revision 127674)
--- tree-ssa-loop-niter.c (working copy)
*************** scev_probably_wraps_p (tree base, tree s
*** 2969,2977 ****
2032, 2040, 0, 8, ..., but the code is still legal. */
if (chrec_contains_undetermined (base)
! || chrec_contains_undetermined (step)
! || TREE_CODE (step) != INTEGER_CST)
! return true;
if (integer_zerop (step))
return false;
--- 2969,2975 ----
2032, 2040, 0, 8, ..., but the code is still legal. */
if (chrec_contains_undetermined (base)
! || chrec_contains_undetermined (step))
if (integer_zerop (step))
return false;
*************** scev_probably_wraps_p (tree base, tree s
*** 2981,2986 ****
--- 2979,2989 ----
if (use_overflow_semantics && nowrap_type_p (type))
return false;
+ /* To be able to use estimates on number of iterations of the loop,
+ we must have an upper bound on the absolute value of the step. */
+ if (TREE_CODE (step) != INTEGER_CST)
+ return true;
+
/* Don't issue signed overflow warnings. */
fold_defer_overflow_warnings ();
--
rakdver at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |rakdver at gcc dot gnu dot
|dot org |org
Status|UNCONFIRMED |ASSIGNED
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2007-08-21 21:29:28
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32949