This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR middle-end/20030, fold_indirect_ref and non zero lower bounds



On Feb 17, 2005, at 1:26 PM, Richard Henderson wrote:


On Thu, Feb 17, 2005 at 12:44:37PM -0500, Andrew Pinski wrote:
- return build4 (ARRAY_REF, type, op, size_zero_node, NULL_TREE, NULL_TREE);
+ {
+ tree min_val = TYPE_MIN_VALUE (TYPE_DOMAIN (optype));
+ return build4 (ARRAY_REF, type, op, min_val, NULL_TREE, NULL_TREE);
+ }

TYPE_DOMAIN isn't always set. Neither is TYPE_MIN_VALUE. You need to check for nulls and use zero.

Good point. I should have checked the documentation.


Bootstrapping and testing in process, ok if it passes?

Thanks,
Andrew Pinski

* fold-const.c (fold_indirect_ref_1): Use the correct index for zero access,
the lower bound of the array type if it exists.


Attachment: temp.diff.txt
Description: Text document



Testcase (modified from the pervious one to be able to commit the testsuite,
I was reminded that abort exists in gfortran):
program foo
character*1 a1, a2, b
a1='A'
a2='A'
b='B'
x = LSAME(a1,a2)
if ( x.ne.1 ) then
call abort ();
endif
end


logical function LSAME( CA, CB )
character CA, CB
integer INTA, INTB
INTA = ICHAR( CA )
INTB = ICHAR( CB )
LSAME = INTA.EQ.INTB
end

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]