From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2079 invoked by alias); 20 Dec 2011 23:33:23 -0000 Received: (qmail 2069 invoked by uid 22791); 20 Dec 2011 23:33:22 -0000 X-SWARE-Spam-Status: No, hits=-2.9 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, 20 Dec 2011 23:33:08 +0000 From: "sipych at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/51643] Incorrect code produced for tail-call of weak function with -O2/-O3 option Date: Tue, 20 Dec 2011 23:51:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: sipych at gmail 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: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 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-12/txt/msg02307.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51643 --- Comment #6 from Alexander Osipenko 2011-12-20 23:33:06 UTC --- It seems reasonable to expect minimal consistency, either generating invalid (zero for example) reference for any direct weak function call, better marking it with "warning" or even "error" message, or not depending on the optimization options. In any case, the semantics of weak referencies is beyond of the C standard scope, so even "if( wfunc ) wfunc();" may be treated only in terms of reasonable consistency. EABI specification follows a simple rule: "call to undefined weak function do nothing". Just the same do "if( wfunc ) wfunc();", a little bit longer, if we believe that undefined wfunc == 0 always, but not 0xDEADBEEF eventually when optimized.