From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19747 invoked by alias); 18 Jul 2009 12:26:44 -0000 Received: (qmail 19730 invoked by uid 22791); 18 Jul 2009 12:26:43 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-vw0-f198.google.com (HELO mail-vw0-f198.google.com) (209.85.212.198) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 18 Jul 2009 12:26:37 +0000 Received: by vwj36 with SMTP id 36so1419891vwj.0 for ; Sat, 18 Jul 2009 05:26:34 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.90.10 with SMTP id g10mr2126270vcm.65.1247919994710; Sat, 18 Jul 2009 05:26:34 -0700 (PDT) In-Reply-To: <6215dcff0907180518k3ddf4908ub29b36acc24f91f@mail.gmail.com> References: <6215dcff0907180232l1c7291eclbc006cabd02224a4@mail.gmail.com> <6215dcff0907180235g7b4e6b7bl18f151db959a989d@mail.gmail.com> <4A61A230.9000703@redhat.com> <6215dcff0907180518k3ddf4908ub29b36acc24f91f@mail.gmail.com> Date: Sat, 18 Jul 2009 12:26:00 -0000 Message-ID: <84fc9c000907180526y56891d2fo34bbbb25b1a37a34@mail.gmail.com> Subject: Re: array semantic query From: Richard Guenther To: dharmendra pandit Cc: Andrew Haley , gcc@gcc.gnu.org, gcc-help@gcc.gnu.org Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2009-07/txt/msg00341.txt.bz2 On Sat, Jul 18, 2009 at 2:18 PM, dharmendra pandit wrote: > According to 6.3.2.1 Para 3, the type conversion from "array of type" > to "pointer to type" should > happen irrespective of whether the operand is on right had side or the > left hand side of assignment > operator. But GCC is converting only the right side operator type to > "pointer of type" while retaining the > left hand side type to be "array of type". An array is never a valid lvalue in C. The error is slightly misleading. Richard. > -Dharmendra > > On Sat, Jul 18, 2009 at 3:51 PM, Andrew Haley wrote: >> On 07/18/2009 10:35 AM, dharmendra pandit wrote: >>> Hi, >>> >>> I tried the following simple code segment in gcc and it gave the >>> incompatible type error as mentioned below. >>> >>> int main() { >>> =A0 =A0 int arr[10]; >>> =A0 =A0 arr =3D arr; =A0 // error: incompatible types when assigning to= type >>> =91int[10]=92 from type =91int *=92 >>> } >>> >>> Here it seems GCC is retaining the left hand side type of arr to be >>> array of 10 ints whereas on the right hand side >>> it has changed its type from array to pointer to integer. I tried >>> searching the relevant sections in the standard ISO C >>> document number WG14/N1124 justifying the above behaviour of GCC but >>> failed to conclude it from the specifications. >>> It would be of great help if someone can point me out the relevant >>> sections from the specs. >> >> 6.3.2.1 Para 3. >> >> I'm surprised you ask, since this convention has been used since early >> K&R C. >> >> Andrew. >> >> >