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