From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27096 invoked by alias); 5 Apr 2002 20:06:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 27077 invoked by uid 71); 5 Apr 2002 20:06:01 -0000 Resent-Date: 5 Apr 2002 20:06:01 -0000 Resent-Message-ID: <20020405200601.27076.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, me@andydunn.ca Received:(qmail 22546 invoked by uid 61); 5 Apr 2002 19:57:59 -0000 Message-Id:<20020405195759.22545.qmail@sources.redhat.com> Date: Fri, 05 Apr 2002 12:06:00 -0000 From: me@andydunn.ca Reply-To: me@andydunn.ca To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c/6192: gcc array reference incorrect on multi-dimensional array X-SW-Source: 2002-04/txt/msg00385.txt.bz2 List-Id: >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