This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/29738] Missed constant propagation into loops
- 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: 6 Nov 2006 11:51:39 -0000
- Subject: [Bug tree-optimization/29738] Missed constant propagation into loops
- References: <bug-29738-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from rakdver at gcc dot gnu dot org 2006-11-06 11:51 -------
> Have you tried
>
> void foo (void);
> void bar (void)
> {
> int i, j;
> i = 0;
> for (j = 0; j < 10000; j++)
> if (i)
> foo ();
> }
This would work, obviously.
> For the original problem, why don't we propagate constants in
>
> # i_3 = V_MUST_DEF <i_2>;
> i = 0;
>
> # NONLOCAL.6_19 = PHI <NONLOCAL.6_9(5), NONLOCAL.6_11(2)>;
> # i_18 = PHI <i_7(5), i_3(2)>;
>
> i.e. replacing the use of i_3 with just the constant 0?
Because i is a virtual operand, not real one.
CCP could probably be taught to handle this case, I will check how difficult
that would be.
--
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 |2006-11-06 11:51:38
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29738