This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug optimization/11198] [3.3 regression] -O2 -frename-registers generates wrong code
- From: "ebotcazou at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 4 Jul 2003 13:12:05 -0000
- Subject: [Bug optimization/11198] [3.3 regression] -O2 -frename-registers generates wrong code
- References: <20030615174957.11198.jhr.walter@t-online.de>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11198
------- Additional Comments From ebotcazou at gcc dot gnu dot org 2003-07-04 13:12 -------
If bug 11320 is indeed a reload bug, no.
The problem pertains to aliasing here: the slot assigned to the temporary
matrix<>::iterator1(bam1.m)
is reused for
adaptor<>::a_iterator1 it2
because the types conflict according to objects_must_conflict_p. The reasoning
is probably that, since the types conflicts, operations on objects of these
types cannot be reordered by the scheduling passes later.
The problem is that at least one member of the first type (dead1) doesn't
conflict with at least one member of the second type (a), so the scheduling pass
swaps insn 27 and insn 83.