From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6647 invoked by alias); 26 Apr 2011 19:14:30 -0000 Received: (qmail 6622 invoked by uid 22791); 26 Apr 2011 19:14:28 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 26 Apr 2011 19:14:15 +0000 From: "mjh at edg dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug c/48777] New: duplicate pointers to empty structs passed as arguments to function X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: mjh at edg dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Tue, 26 Apr 2011 19:14:00 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2011-04/txt/msg02668.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48777 Summary: duplicate pointers to empty structs passed as arguments to function Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned@gcc.gnu.org ReportedBy: mjh@edg.com #if OKAY typedef int TYPE; #elif ALSO_OKAY struct A { int i; }; typedef struct A TYPE; #else struct A {}; typedef struct A TYPE; #endif int f(TYPE *a1, TYPE *a2) { return a1 == a2; } int main(void) { TYPE a1, a2; return f(&a1, &a2); } When OKAY or ALSO_OKAY are defined, unique addresses are passed for the arguments to "f", but when an empty struct is used, the same address is passed for both arguments (causing the function "f" to return 1). This regression appears to have been introduced in 4.0.0 and exists through 4.5.2 (the latest version I have). Thanks, Mike.