This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/26001] [4.1/4.2 Regression] expand uses the wrong part of the string for array accesses
- From: "tobi at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Jan 2006 19:23:13 -0000
- Subject: [Bug middle-end/26001] [4.1/4.2 Regression] expand uses the wrong part of the string for array accesses
- References: <bug-26001-10743@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #11 from tobi at gcc dot gnu dot org 2006-01-30 19:23 -------
(In reply to comment #10)
> (In reply to comment #8)
> > Did the regression also happen on 4.1? We should probably revert Feng Wang's
> > patch there.
>
> But there is a latent bug. I don't know a way to reproduce this without Feng's
> patch in C or C++, maybe Ada. But the bug is still there.
I'm not sure what you're trying to say, so let me rephrase: given the advanced
state of 4.1 in the relase cycle, it may make sense to revert Feng Wang's patch
in 4.1, and to fix the underlying bug only in the trunk.
> Here is the reduced testcase that passes at -O0 but fails at -O1.
> CHARACTER*10 INTSTR
> CHARACTER C1
> DATA INTSTR / '0123456789' /
>
> C1 = INTSTR(1:1)
> print *, C1
> if(C1 .ne. '0') call abort()
>
> end
Thanks, do you still get '1' in the RTL dump if you change INSTR? IOW, does it
address the elements of the string incorrectly,
if (c1[1]{lb: 1 sz: 1} != "0"[1]{lb: 1 sz: 1})
^^^
this (t02.original) looks like a possible off-by-one error.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26001