From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4762 invoked by alias); 1 Mar 2011 06:45:31 -0000 Received: (qmail 4752 invoked by uid 22791); 1 Mar 2011 06:45:31 -0000 X-SWARE-Spam-Status: No, hits=-2.8 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, 01 Mar 2011 06:45:27 +0000 From: "d.g.gorbachev at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug lto/47934] New: LTO: function with attribute "used" is not emitted X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: lto X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: d.g.gorbachev 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: 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, 01 Mar 2011 06:45: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-03/txt/msg00013.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47934 Summary: LTO: function with attribute "used" is not emitted Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto AssignedTo: unassigned@gcc.gnu.org ReportedBy: d.g.gorbachev@gmail.com ============= bug.c ============= static void __attribute__((used)) foo(void) { } int main(void) { __asm__("call foo"); return 0; } ================================= $ gcc -flto bug.c /tmp/ccCtTmmT.ltrans0.ltrans.o: In function `main': ccCtTmmT.ltrans0.o:(.text+0x4): undefined reference to `foo' collect2: ld returned 1 exit status >>From GCC documentation: `used' This attribute, attached to a function, means that code must be emitted for the function even if it appears that the function is not referenced. This is useful, for example, when the function is referenced only in inline assembly.