From patchwork Fri Apr 14 20:07:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 97451 Delivered-To: patch@linaro.org Received: by 10.140.109.52 with SMTP id k49csp430404qgf; Fri, 14 Apr 2017 13:08:09 -0700 (PDT) X-Received: by 10.84.128.67 with SMTP id 61mr11023338pla.184.1492200489543; Fri, 14 Apr 2017 13:08:09 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id b61si3303932plc.304.2017.04.14.13.08.09 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 14 Apr 2017 13:08:09 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-78639-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org; spf=pass (google.com: domain of libc-alpha-return-78639-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-78639-patch=linaro.org@sourceware.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id :mime-version:content-type; q=dns; s=default; b=DBmbBMM9Tm9z6SED YdA2qyIF7qkQpNYREMm56qC1BcvvMuamoQM8ejobjDNpxGmfq3w4pU2d2taPBrm6 m2BrrpqhyfTM1WxrpjpEkyD2WN/n52WWucZD9hwvwU/c96Qd7ROEPeesrw7r6ukM Nk6WjzOpMrQI397gj8lu9+Mgq2k= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id :mime-version:content-type; s=default; bh=S0bsBJxRqVfEODXQAVc/h0 zQ56M=; b=gDRdxEpYGUxgyXi9ZyJESpfoiuTqehDqbi4vbOVjefjhDBxyGrsJC/ PEjRl2eZpJ+8WBINopg56znWWzRSY6HKnzfjQ6Hn5agAAHVSNgWlKP2mwRoZQ8Ax hk/UfaxpjmtzPrZ41f1xCCZwt6jonI8I+qSrYsbuZQS2dkoL3YVUw= Received: (qmail 99692 invoked by alias); 14 Apr 2017 20:07:50 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 99674 invoked by uid 89); 14 Apr 2017 20:07:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=tricky, 7660, H*r:sk:NAM03-B, HX-Microsoft-Antispam-PRVS:sk:BN3PR07 X-HELO: NAM03-BY2-obe.outbound.protection.outlook.com Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=caviumnetworks.com; From: Yury Norov To: libc-alpha@sourceware.org Cc: Yury Norov , Adhemerval Zanella Subject: [PATCH] SYSCALL_CANCEL: reduce the size of generated code Date: Fri, 14 Apr 2017 23:07:32 +0300 Message-Id: <1492200452-4653-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: DB6P191CA0018.EURP191.PROD.OUTLOOK.COM (10.175.236.156) To BN3PR0701MB1267.namprd07.prod.outlook.com (10.160.118.141) X-MS-Office365-Filtering-Correlation-Id: 7a2b2fea-1018-4226-c099-08d48371ea4e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:BN3PR0701MB1267; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 3:tGDKAkVvG0JXPPMByRBKQAs45FTcU+PToK3RQYwRBrKe0hydpK49f8xA0IHaNeI34voDPk7XVrrLvIJrQzul6Aeep1YGrju294ZYIfZcQgVy1HWPUyEQHpZzwnSasFV+9yleiCqW6gra/WNf5nmOFKiuaYcjIGPahOFPdTcAn7bZ572yuhJXvK5wMD0mHg5hjB1k1fGD6hZDvbjjBdR427bOwYP1WkO0OaUySrjfrkV2le1OnnseLseACAgdtqKJkqLZzVnfd+vqdQmRM6zZQh6Ooiw5bXHtZ/iuAfCkFQzFLQAOa1kFnj7H1MPOZ8xIOAMNMlmsPGzi5og9+NCUag==; 25:fd95KOjzsKpf9Qneqd/zBvIaAZ5A2ohgnM6Ahhy8mgno3Z0dJfj1nfOxjYYKghPowdzXMNeDVW2tfzF8vviEJLXsudYCu/fVVluWQIb+5WTkMm3PJ+SuUVWBgvymD8zQ7VMWJsbH+4vnEjOaJ+aEuWzQdGTPku71k4qLEJcjA/1TUNvML4gwG4qPetP+ZY58Txq32gSBt0IZS97qY5oS4fZ4UvnvRmkmk4HB/5w/kpIc33BviRTL5BjbB6usIpinQC1f1J1Eyvnz4oRI+f1Z9uG+cynG7Ge5kapaZBvyTyJ8Pq/8W11HkIwB/dki73aDfaX4fCBG8YURYPIusAl7IdIgYhAhcqOVpqfQCG/yrz4ZhHfxinq5tytYVa1glauIdreWPuO7ezpAZMx97KgyR9Z9IIUElpsyxS+GipssSu2jEtnpjsO6uLri11gScg2OrlCQGSiBejkuFYCT05kHLQ== X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 31:KPhpQR8E4zotrjaTg8G6J+RErrZNeXjOgtzsDIebWSmAC6HnFoNGXupV2BZUR2mhLrENNWp0ICgmXx/5PTVuTLqJ7u85mbhqzsDBiYuJMBZk1ZB2+5ZwS3RcPysqAfQsA7NPRRArlo3QfLJrAjkyKOqOFUvOUcyEi/pJg9QvWMFeQq+MuqpvvxrorMD7nkdnNci7sgkwnKObM3ckZk1tTe9pq8eztp41BIpF1R6eORg=; 20:+zwa/TVcfF5pCTfRc40kb4hgTR79ReJDhe2IyXjnQ3Pd8+SPY2JzNPfBTRpk9HY8dsSBBFTmB55W1vDtvvaNv1/uGed7FZFyayDYUqeHN8FzZoueP5p7Y6jf0R7b30lDioeVeT+yuhlK0N6bQx00J1ErtZ0IR3PV2za+NhIsyvoKafJ8NWq0WYkJ2YTMVpJORLTKVPTPYz/ulS1HUKpLbx1QgdqK5daU7zj+G+BKJAIaz9f1QE3hQz+6zW1WpWalzks12gctycmlNH4jbs5qdei++rEyJRg3Sv/iKaCrPBnGKJdM9ySD6k+gwU2ertlj89RmhBjjHiFbXTN3M4ESt9j4GFHDper5a/scPxLcdtXF04jW8NRBNcUsBdVlc0IJL+pzZiYI8q9qLnuaIEXdWk5dxX/Djdk8GQX9CpjfMGVASnGLTN4XMPvgVoTtvNKFSnuwmel42POTp1mjuRIBKj0NwfI5jiyGODfaurtp77xMXh5shR4wBICWzbXFQg+DCyD+lIqy+Ii07XA4EigKyhhuuemkKJ2Y7j/Tk2AtGyC66iwUHKQE58gUOTL8T9TTNOpzUj39fvHsJDxjZd8Biw+jVqQYgivUz1RjmRolZw0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(20161123562025)(20161123555025)(20161123564025)(6072148); SRVR:BN3PR0701MB1267; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1267; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 4:Iyml3JubLCN4lqVDqyFiBc+/6qAAjSKiTy7T4gq4QYJjN9VlYj3IEjbOgiY6jjRhT1METWIn+4xoRO/8d1yxfH/cXMk/ijAUHdKv4k++WgrSRf0a99VFt0w5HlqAuNFQ+M/0zYMSgyhG4K5LGgyOz5pkZ7qFaqd8jbu34l7DCgwhar+UDzbc/CK5qbh0hf3mxSaXh2xWMwZxAJotX6dfBEViwbJNZXh+xN4qLcT+Y7KkHn56RNZRCgo8kPowLGBEd1Cy53WIE7tt+Oq32GlidPJI05ojQmgpEgz2lTi52LHUwjpDkEBU6cmIwIkYVK5HEUIKfi7kAJADc7km+Us0aGlgWAGLHAOkBT6RCLImDGcySh1vu2d2f99trUipbHAV2R4iLG4lIuACEBrK5k5/1SLRL6PPr8fA7N2hM8Dvg7iDidbqDF994PPWdOfsqyOsGx2qHHTR1uREkP87SfL8S+PIHECbNfjJ2hB2e2NbcMNc3y1v0dBR/u/lOiYAz6TMvXtXjkLRJG7kDa12sPX99BEhfexBhmso3p5Rpyif9uKNn5MaOqG50kNYFTyo2N1QnYsxZeMFEqxaLJ/u71RbIV9spiqHYf/Mh6Xm2FF2/ft+AyNlHMHraJI/7Klt4edtyZhj6D7FdyIWe+sLQdTBCF46+5QdzL5ldbGG+yUo9+JbopbLk/QxlDLkw/Q7fkpKS53opnZuU8WcEcY0wBEGIQ== X-Forefront-PRVS: 02778BF158 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(39840400002)(39410400002)(39400400002)(39450400003)(189998001)(50986999)(54906002)(305945005)(3846002)(6116002)(7736002)(8676002)(42186005)(53936002)(2906002)(6486002)(50226002)(50466002)(81166006)(48376002)(575784001)(66066001)(110136004)(38730400002)(36756003)(2361001)(2351001)(4326008)(25786009)(5003940100001)(6916009)(6666003)(33646002)(76506005)(6496005)(47776003)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1267; H:localhost; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 23:CDjSha1/8RvzKLXXs5pTwZszKY8oSecoZH8D3T+IINsrhtPj45JGtpWaTkMR5+FDBXpJkAPO9+qs3DsmuMhmdvtrOH0fTMf+3TwSf7LaZUww6qJLajT9NOWfJoKPFLapGeCu21sr/3xAyTVZZXAADm18Dbo7cqCswjAtPwrRS19b+LpUsRQru4lKra5wR+AOK3lRmz4JvDYczvDQRTkoeyh35el4FzzU650sMbi87SorNSEkp10w29YuQebuRB6g2ShOg3ZchmZMJPdOknQebWojP0ttn82HH3Z/foaN1BDNYLbaez2vg8wOhezviI+M3+mmF+aTbta4Bu3IHrhthTxa7Lov2u9LrtXg9QJhidqc8HhiIMutHvjNRt9NImz4IJWmAPI7EZBZE9006wgO+0yKzbKdhq5vRCq8ykDkqAHDed4Sh2K2jdl/7iOhVnXGTUBPRugfHgSPitzySHJeNHbi8PGi89rVqp9mcC6ljyOpUeaxqqcLawuZCLL7VfLzGwlwEXh7YluDZJHakwXW0dfoJ9TEUg29JoVNHoe/oX4CT8FJS4FLTQHdE74E0Eh9Vp47h3rx42uv0+Gqz4yNwCtZ3XDfSXzaKHayyD1dHMUkx7L3x+NM0MH844NRRW06pHg8TAg4lE9AjiGWLuD5MuE/VeuRWSZJOMkoB+3uhs1DLzKhRvejTp3ncvZc60B8X5Dh+ydxDYs0vzNTHRbJYeeKRxSj0s2kntXql/48OfYnOuYlM/4A6xJvOTeFO+jHPTzGmigExzhMPZTpNIzSmEe1zbItaXd3/HfG/IW/AjyI93YAkhfYBo0lzfkUaPdUCp0aF7LkVbOC/6E7xUeqG4vw/HVOcHOJSyaE1wMFCa+N6rrPsfguJ4FEY1JRKKDY8/XM2490X6OU6jOcFQ5wH/FLR1OQQ+hCSrQ9Mlf/0GawgtpAIYrfzZ49wkoLNeMvjk4udMwf74X6WDiMb3w8kx38BrxAjVDrjWIAfdvMOdplSiTWsKfqzbc3dVr2cJc+ X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 6:6gLFvXYLdbeGQcmatOL27B+1ZF7ITqPdOJajS6ITJHa1UBX6zXa5U73jcpWweK1Lp552lS5plGmCksHnX2ai93yjKVbL+DRqeo/lEEKlrbq7SjiSCgniuJr7MfqczObY70NvD8sDIjDUwZqs7AABnjpF0FyCT2zC1HAVO7DRmOhHDERbbls2O1wuQulg9OqfLA1CUBwuE+Yp8eUhPEUrdmLGzly3sQWdwu8Q+cZDvLuPQADJPI1iFrZRtIObhn08TOttT4QiZsuGkytsBiheni5iBhQTp60anT6zs2jgPpffWI5GK/wfm9vwEeLLdPfVWlV3k56b8zDVQRx/7tVxvtGHveLaJUR+K+CwT8MS9ZLux0q+zj7vzStsejsvQ+S+3nixBJT/ah9lHN9lCL/2/ESnHU8AeZhKG8K/WZWP46kZqjbLnGNx6R0MoeEfr801dYxZy7u8GnC9yW8hdfeluQ==; 5:V8gjhYXqy3Sns8UhAuPCjriVD5r1rJC0rEiisO0GxRbWtGwb555jBmkEBxX5yy5i5rUbPQfYsk3iabACOnR84RfQ9t4FkuX8EH6U7IsCnhjaNNfyYrNPnVUTQDsUzY5fMkgBzgIel6SHelw7xJL8iw==; 24:rwjce05qKiZYwlW09Tft8+E4BJBv/ZXFYi51/ihQnVrMcVVfF6klKShVkqeEnoABCoSJtVEW/qHT+dw2AiBUhI1OC1bGeDLiMdeZ+pI2mnM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1267; 7:P4Ipy05cIEKwqWP8veMYDUOEqLaif+4Li4+GiO+8SCi5ryzZSqQG7XwhPjxGwSOXudO2puj4l1oYa7woCEC6wPJeEKvRBNwTLpCywSlvKLUlfaLsZogELNOMWfOte0pfu1VuzXS00mJ42ugBrqbzi9fnb4/aphMHD5darPg9ukhVhS1ool5r4NZOYNWFsnyE/vfFhh+7I38Vwdr3WZBqCKBxUJnq5SEkG40vrkvrrNVnKXWc3xttTmZLSxXDPQs/cvLdl3Vy0iMLjyT8MSmOIX+3z+Cd9msUVFPm3PQdFYPMiTzrLqAi1jnwoySYNKHwBHj+1ZTlL/FhSKAcTKt5Dw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2017 20:07:44.8082 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0701MB1267 SYSCALL_CANCEL() currently calls INLINE_SYSCALL_CALL() both in true and false branches of the "if (SINGLE_THREAD_P)" condition. If arguments that passed in INLINE_SYSCALL_CALL() are wrapped with tricky macros or require other additional handling, the code that does it becomes duplicated, and it may increase the size of function that use it significantly. This patch reworks the SYSCALL_CANCEL() to call INLINE_SYSCALL_CALL() only once. On arm64/ilp32 it reduces the size of sync_file_range.o from 8736 to 7660 bytes. The sync_file_range() is a simple single-line function though: int sync_file_range (int fd, __off64_t offset, __off64_t len, unsigned int flags) { return SYSCALL_CANCEL (sync_file_range2, fd, flags, SYSCALL_LL64 (offset), SYSCALL_LL64 (len)); } * sysdeps/unix/sysdep.h: Reduce duplication in SYSCALL_CANCEL() macro. --- sysdeps/unix/sysdep.h | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) -- 2.7.4 diff --git a/sysdeps/unix/sysdep.h b/sysdeps/unix/sysdep.h index 38c2432..f0fa9da 100644 --- a/sysdeps/unix/sysdep.h +++ b/sysdeps/unix/sysdep.h @@ -91,14 +91,13 @@ #define SYSCALL_CANCEL(...) \ ({ \ long int sc_ret; \ - if (SINGLE_THREAD_P) \ - sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); \ - else \ - { \ - int sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); \ - sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); \ - LIBC_CANCEL_RESET (sc_cancel_oldtype); \ - } \ + int sc_cancel_oldtype; \ + bool multithread = !SINGLE_THREAD_P; \ + if (multithread) \ + sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); \ + sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); \ + if (multithread) \ + LIBC_CANCEL_RESET (sc_cancel_oldtype); \ sc_ret; \ })