[Bug middle-end/26001] [4.1/4.2 Regression] expand uses the wrong part of the string for array accesses

pinskia at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Jan 30 19:27:00 GMT 2006



------- Comment #12 from pinskia at gcc dot gnu dot org  2006-01-30 19:27 -------
(In reply to comment #11)
> 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.

That might be a good idea, I was just not thinking too well today for some
reason.

> > 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.

[1] here is correct, the arrary bounds is 1:1 and not the C array bounds
starting at 0.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26001



More information about the Gcc-bugs mailing list