This is the mail archive of the gcc-bugs@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]

c/6192: gcc array reference incorrect on multi-dimensional array



>Number:         6192
>Category:       c
>Synopsis:       gcc array reference incorrect on multi-dimensional array
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Apr 05 12:06:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Andrew Michael Dunn
>Release:        gcc-2.96, also others older
>Organization:
>Environment:
RedHat 7.0 2.2.16-22 kernel, also others (eg. Caldera 2.2.5)
>Description:
When accessing a two-dimensional array of ints, writing to
any row (first dimension) of the array then reading from
any row returns the value written (see example provided).

Accessing the array memory space as a linear single-dimension
array of ints proves that only the first row gets written,
regardless of the array index, and only the first row gets
read.

ie.  int array[3,2]

assignment   array[1,0] = 3

the 3 actually gets written into array[0,0]

inspecting    array[0,0], array[1,0] or array[2,0]

all of these return the value 3 (which was written
only into array[0,0] originally


Single-dimension int arrays do not have this problem

>How-To-Repeat:
See attached xtest.c - very reproducible on multiple
machines, kernel revs, gcc versions, etc.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="xtest.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="xtest.c"

I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgYXJyYXlbMywyXTsKCnZvaWQgb3V0cHV0X3NlcXVlbnRp
YWwoYXJyYXkpCmludCBhcnJheVs2XTsKewoJcHJpbnRmKCJhcnJheVswXSA9ICVkICAgYXJyYXlb
MV0gPSAlZCAgICAgIGFycmF5WzJdID0gJWRcbiIsYXJyYXlbMF0sCgkJCWFycmF5WzFdLGFycmF5
WzJdKTsKCXByaW50ZigiYXJyYXlbM10gPSAlZCAgIGFycmF5WzRdID0gJWQgICAgICBhcnJheVs1
XSA9ICVkXG4iLGFycmF5WzNdLAoJCQlhcnJheVs0XSxhcnJheVs1XSk7Cn0KCm1haW4oKQp7Cglp
bnQgemVybzsKCglhcnJheVswLDBdID0gMDsKCWFycmF5WzAsMV0gPSAwOwoJYXJyYXlbMSwwXSA9
IDA7CglhcnJheVsxLDFdID0gMDsKCWFycmF5WzIsMF0gPSAwOwoJYXJyYXlbMiwxXSA9IDA7CgoJ
cHJpbnRmKCJUV08gRElNRU5TSU9OIEFSUkFZLi4uXG5cbiIpOwoJcHJpbnRmKCJCRUZPUkU6IGFy
cmF5WzAsMF0gPSAlZCAgYXJyYXlbMSwwXSA9ICVkIGFycmF5WzIsMF0gPSAlZFxuIiwKCQlhcnJh
eVswLDBdLGFycmF5WzEsMF0sYXJyYXlbMiwwXSk7CglwcmludGYoIiAgICAgICAgYXJyYXlbMCwx
XSA9ICVkICBhcnJheVsxLDFdID0gJWQgYXJyYXlbMiwxXSA9ICVkXG4iLAoJCWFycmF5WzAsMV0s
YXJyYXlbMSwxXSxhcnJheVsyLDFdKTsKCglwcmludGYoIlxuZXhlY3V0aW5nIEFSUkFZWzEsMF0g
PSAzXG4iKTsKCWFycmF5WzEsMF0gPSAzOwoKCXByaW50ZigiXG5leGVjdXRpbmcgQVJSQVlbMiwx
XSA9IDVcbiIpOwoJYXJyYXlbMiwxXSA9IDU7CgoJcHJpbnRmKCJcbkFGVEVSOiBhcnJheVswLDBd
ID0gJWQgIGFycmF5WzEsMF0gPSAlZCBhcnJheVsyLDBdID0gJWRcbiIsCgkJYXJyYXlbMCwwXSxh
cnJheVsxLDBdLGFycmF5WzIsMF0pOwoJcHJpbnRmKCIgICAgICAgYXJyYXlbMCwxXSA9ICVkICBh
cnJheVsxLDFdID0gJWQgYXJyYXlbMiwxXSA9ICVkXG4iLAoJCWFycmF5WzAsMV0sYXJyYXlbMSwx
XSxhcnJheVsyLDFdKTsKCglvdXRwdXRfc2VxdWVudGlhbChhcnJheSk7Cn0K


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