From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 105943 invoked by alias); 2 Jun 2015 19:32:20 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 105932 invoked by uid 89); 2 Jun 2015 19:32:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.6 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wg0-f45.google.com Received: from mail-wg0-f45.google.com (HELO mail-wg0-f45.google.com) (74.125.82.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 02 Jun 2015 19:32:18 +0000 Received: by wgez8 with SMTP id z8so148466052wge.0 for ; Tue, 02 Jun 2015 12:32:16 -0700 (PDT) X-Received: by 10.180.13.40 with SMTP id e8mr33398265wic.50.1433273535936; Tue, 02 Jun 2015 12:32:15 -0700 (PDT) Received: from [10.41.147.71] (089144219071.atnat0028.highway.a1.net. [89.144.219.71]) by mx.google.com with ESMTPSA id mv11sm23068952wic.23.2015.06.02.12.32.14 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Jun 2015 12:32:14 -0700 (PDT) User-Agent: K-9 Mail for Android In-Reply-To: References: <20150529193552.GA52215@kam.mff.cuni.cz> <556C16B1.5080606@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Subject: Re: [RFC][PATCH][X86_64] Eliminate PLT stubs for specified external functions via -fno-plt= From: Bernhard Reutner-Fischer Date: Tue, 02 Jun 2015 19:59:00 -0000 To: Sriraman Tallam ,ramrad01@arm.com CC: Ramana Radhakrishnan ,Jan Hubicka ,"H.J. Lu" ,Pedro Alves ,Michael Matz ,David Li ,GCC Patches Message-ID: X-IsSubscribed: yes X-SW-Source: 2015-06/txt/msg00245.txt.bz2 On June 2, 2015 8:15:42 PM GMT+02:00, Sriraman Tallam wrote: [] >I have now modified this patch. > >This patch does two things: > >1) Adds new generic function attribute "no_plt" that is similar in >functionality to -fno-plt except that it applies only to calls to >functions that are marked with this attribute. >2) For x86_64, it makes -fno-plt(and the attribute) also work for >non-PIC code by directly generating an indirect call via a GOT entry. > >For PIC code, no_plt merely shadows the implementation of -fno-plt, no >surprises here. > >* c-family/c-common.c (no_plt): New attribute. >(handle_no_plt_attribute): New handler. >* calls.c (prepare_call_address): Check for no_plt >attribute. >* config/i386/i386.c (ix86_function_ok_for_sibcall): Check >for no_plt attribute. >(ix86_expand_call): Ditto. >(nopic_no_plt_attribute): New function. >(ix86_output_call_insn): Output indirect call for non-pic >no plt calls. >* doc/extend.texi (no_plt): Document new attribute. >* testsuite/gcc.target/i386/noplt-1.c: New test. >* testsuite/gcc.target/i386/noplt-2.c: New test. >* testsuite/gcc.target/i386/noplt-3.c: New test. >* testsuite/gcc.target/i386/noplt-4.c: New test. > > >Please review. --- config/i386/i386.c (revision 223720) +++ config/i386/i386.c (working copy) @@ -5479,6 +5479,8 @@ ix86_function_ok_for_sibcall (tree decl, tree exp) && !TARGET_64BIT && flag_pic && flag_plt + && (TREE_CODE (decl) != FUNCTION_DECL + || !lookup_attribute ("no_plt", DECL_ATTRIBUTES (decl))) && decl && !targetm.binds_local_p (decl)) return false; Wrong order or && decl is redundant. Stopped reading here. Thanks,