From patchwork Wed Dec 7 10:31:14 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Greenhalgh X-Patchwork-Id: 87006 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp241622qgi; Wed, 7 Dec 2016 02:32:27 -0800 (PST) X-Received: by 10.84.169.36 with SMTP id g33mr147934758plb.174.1481106747401; Wed, 07 Dec 2016 02:32:27 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id z6si23524764plh.238.2016.12.07.02.32.27 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Dec 2016 02:32:27 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-return-443663-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org; spf=pass (google.com: domain of gcc-patches-return-443663-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-443663-patch=linaro.org@gcc.gnu.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:mime-version:content-type; q=dns; s=default; b=dUA8KaB0hQef87IHPg2fA4VlEvHydGXuWCqDXAQy7FFLxS1BPJ ybtIwc/SiWV6J9Vh0Ui1Q7GchrqLrMs9+KY+BBGS2eSB/BX6u76wt2tFrfcEcO2Q USaNH4zSKNSTncxsGIzgS8y6zK5ONLPZj2Syci1KwN0ekXd2q1nARAtf0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:mime-version:content-type; s= default; bh=fx3GBsbViVeO8uLmQqK2uVDmB+s=; b=CE7lL+lKIO0ewt1POIPO o2E7LHCTIAUd5OcigfCnYnPsH/MtD4gLR/DhZt+sTe3phDhO3z5Q99c0T53v6zjz fqXaHCTmoJujTjU3w6C8R6Igt8fZKpoathBIjf2Z2Hk69CCetgpLWduuan69o4zl XaJuGkFX764Zgr6MciUh8rQ= Received: (qmail 40792 invoked by alias); 7 Dec 2016 10:31:58 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 40781 invoked by uid 89); 7 Dec 2016 10:31:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=no version=3.3.2 spammy=jamesgreenhalgharmcom, james.greenhalgh@arm.com, dark, sk:SYMBOL_ X-HELO: EUR03-VE1-obe.outbound.protection.outlook.com Received: from mail-eopbgr50072.outbound.protection.outlook.com (HELO EUR03-VE1-obe.outbound.protection.outlook.com) (40.107.5.72) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 07 Dec 2016 10:31:47 +0000 Received: from DB3PR08CA0038.eurprd08.prod.outlook.com (10.161.51.176) by DB5PR08MB1109.eurprd08.prod.outlook.com (10.166.174.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9; Wed, 7 Dec 2016 10:31:40 +0000 Received: from DB3FFO11FD021.protection.gbl (2a01:111:f400:7e04::179) by DB3PR08CA0038.outlook.office365.com (2a01:111:e400:503c::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9 via Frontend Transport; Wed, 7 Dec 2016 10:31:41 +0000 Authentication-Results: spf=pass (sender IP is 217.140.96.140) smtp.mailfrom=arm.com; kernel.crashing.org; dkim=none (message not signed) header.d=none; kernel.crashing.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 217.140.96.140 as permitted sender) receiver=protection.outlook.com; client-ip=217.140.96.140; helo=nebula.arm.com; Received: from nebula.arm.com (217.140.96.140) by DB3FFO11FD021.mail.protection.outlook.com (10.47.217.52) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.734.4 via Frontend Transport; Wed, 7 Dec 2016 10:31:40 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:685; Count:11 Received: from e107456-lin.cambridge.arm.com (10.1.2.79) by mail.arm.com (10.1.106.66) with Microsoft SMTP Server id 14.3.294.0; Wed, 7 Dec 2016 10:31:19 +0000 From: James Greenhalgh To: CC: , , Subject: [Patch PR78561 PowerPC] Revert to old behaviour for counting constant pools Date: Wed, 7 Dec 2016 10:31:14 +0000 Message-ID: <1481106674-9787-1-git-send-email-james.greenhalgh@arm.com> MIME-Version: 1.0 X-IncomingHeaderCount: 11 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:217.140.96.140; IPV:CAL; SCL:-1; CTRY:GB; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(189002)(199003)(377424004)(6916009)(512874002)(110136003)(39450400002)(626004)(77096006)(5660300001)(50986999)(6666003)(104016004)(39410400001)(38730400001)(2476003)(568964002)(26826002)(8676002)(8936002)(84326002)(50226002)(189998001)(246002)(305945005)(39850400001)(39840400001)(356003)(39860400001)(4610100001)(36756003)(5890100001)(92566002)(7846002)(2906002)(106466001)(4326007)(2351001)(86362001)(33646002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR08MB1109; H:nebula.arm.com; FPR:; SPF:Pass; PTR:fw-tnat.cambridge.arm.com; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; DB3FFO11FD021; 1:HB4OtwG569kJqZ30TJJfpgQy2xGeslDb5WZJb7MUxaogJcE7qJcwls94sLFxk3ggLrL4624KN5LIhE75NZ60bQOxIyvEmxZfgNz9TbMi43jl3yAEKO8pzGC/Y/HBWq3MxlMRv3MI/Ed1HbPQBXe3k8p0mZ8fRVbee1fdEGXeRCdqR2ZUIbiU9tgy2FfQzOErait73s/6Q65HEINO/hskm2s0kyVYwMwTZKuKNHwVlBH1KCAyy6ALAYShLdgrJwFMdE2TayUNZAA/Z16zRJbdxc0aE6JLnqzapgTfMfGgyd/RatbyxiR5NOPikJR/ENkSOk7RGr1/MLK54ydnoc+XvvmDi1h9bydeJe3BNLHvwhorynTW+03+9sfgrxDtZKIgazpsfewyhoI/NHcPYxZw6Fy6k1fO7MrdfI01MZbe3+cXHkiibxAUTdH1hT+AZLA/h6jW04aejmNtOPx+u51xASxVxGow5+4zYZs4NOHBQrajnx5dNf3aIqBen17cj1TQBo5HbOVj6cV5ynvfw1Z6E7H0uCJwYA7lanYreuAT7/oEvb/pJCrWUKqg6qjxl5/WcNM2XYpwVeVvGt1ZarnAiiqpis1VF8LVQvfnEDSuyGM= X-MS-Office365-Filtering-Correlation-Id: 0ab0ec94-a4dd-47b4-af53-08d41e8c3b9e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002); SRVR:DB5PR08MB1109; X-Microsoft-Exchange-Diagnostics: 1; DB5PR08MB1109; 3:oayzhclO9H6p2EvsKm9Ur1V4cKAR9JLVa1DQjH02AFEUiZjX9KDyR2jQYQGxsHBlxlhlGtB9u/ju8/0r7khh6LVXpZQ2OIDitBdwVatv7Yg3LIHjeDChs+BzGqMbVxYHLC2trCyNDAdG3nJxP+HyX5asBpyB7dKoyljxrSdkRKQIetcgIc0UqVJPFClICLhzru6+LKbkhFqBIG4IEfKWRmLYfUIiAq7q+U15rfIywFcGcaVz7euHRq9QyC6MV0jYOQRm7DeIF5FgHAOQdhvhPj1suURSpHzZEVxT9AISU2QjfuTYN/O0qpXjgW9LyUFhGDpPRUg07AOBi/zF9qkF0a8CqNu7mOW7ky8tbY97BsyYri9Rg1QuoKAiB9qBXqJxRNzZlz4Jjg17uXQ78CLIQw== X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR08MB1109; 25:mnPVJ5mQRYmwSlpC8ozlJe83X0wp/BwV2fILY+QFF?= =?us-ascii?Q?DC5K49gQHdeS+u+/Cl8Ga5++UfBahP9Lg/AEEkQZXmroHAABt2aDSbWhFUCR?= =?us-ascii?Q?8lRAh12EZIqmo5hNUFuc8RTYDCoNIfyM92uAMb5BZCZiWHclXI5406rMyGZ+?= =?us-ascii?Q?w4ve0n6gs2VgrafIzSwgQw9MimBPwav4JFRay4LhaHTLq6Tm31VlxAG387H6?= =?us-ascii?Q?FaqmZRV06VG0BZEGNfT998jCluonMilBwAwZZlnPEPPmqqxT6/r4zt+MNW/T?= =?us-ascii?Q?i6jm/KXRvX4bJ2zeXST/4NtZVxXsjbgKM33jZFLeopennimcn93P0OgpSbZj?= =?us-ascii?Q?qgHWt7tUUJmHtLEtr2d+6rinmzodNVZVCJw9DxjXnnnFoFgJTkAWEVsUNL1A?= =?us-ascii?Q?1ix/OrS/6JUfQ2ZjvWpJxwgiOF3yf2+uN3XJVZbFDQqgYsTeE/2QoSodnU0Y?= =?us-ascii?Q?O9pFkNq8cuFd8VAtYBVWq8Np8AP7xdYuXB6/293CuTsIhq94lLSfmZZSUH+L?= =?us-ascii?Q?yiQta3XubiDn/qfNoSXYt38PAXBK7kB6mPfhVsasnI5Yi0fcqY62uvTU6Xra?= =?us-ascii?Q?r5OF8/L3Z3od3O33wh1Oxkius+hAqwgMr5Cg7VdwTvW+KPEDdAa0/tybx1bN?= =?us-ascii?Q?PS4pgxlLYNhBmKfobmLWrN85FoaE64UUULFXeZG691bbhqvZE1/rv8ZTjD/R?= =?us-ascii?Q?T+RwjHd0dPVCAt/lx1ftkuJdOwKEjbkYprlj27D38agHuhtJdmVNw2LIlucO?= =?us-ascii?Q?4h5jbNb7E6F3V4BHa6f9GbFo2HX7ZHV5qG8T+GwLOpxE810maTSFvjgUzEm8?= =?us-ascii?Q?8pjoC5Ly41LlD9IRPExEFjRLidwMoFWutnizYnqp3+DGokEJQPDK2ucCDc+5?= =?us-ascii?Q?rjL5hjPfRmqjREs12sN6e4jbxwkzyQpFDFoYZ4ORpOZFVF9C5aYA04Snb63T?= =?us-ascii?Q?jLaD8ug9/j9kd8MEm03dXxnJplvyDUMwqPGfGgJdg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB5PR08MB1109; 31:ymnF8EkW4OkoFZd07O7UHsHbCkX8PDxDe4pLEm008dn2UeH2VxgVhP/XyzsD8JqLITm2PNaoxq37eB5prCkNoE+MeVDWsgIOU3185gWvHBDYqZocRUPzywFzG03/+6L8E+QRvECbyzKb0nLJpvQdxhrYNrxAe9hwPuVOH+N53wK8a+WnwAG5VXLlG0rVi9B605nuRH6DKRBQm1h2fTW+c2PkTsBrbNbfOtPF7Tizqqg8sOjVX8ugTl0mY/5cTYnvAXWXI73Gvv4jloK8Ba25TZm+mMTBNqo3nPMZl4uw6/R+vjdstgmdUuicrInD0xlyRoBJRNXoKRJvJb+AdLcOuw==; 20:WJ1g/JgU5zIYYk3GTa5DGyhBu1jfW0dimfB48/L2DqU/zAozOzcg5C7IQ6UC5ncv9ODjpZM6iI22gXOv/lJcm8FK3COcj2ziZK1yKIgzG3XjbNZ1T8iHcvBfiR1a2TorzCN2fmRht/iy5IVLYr4ijtH+zDuicTJS7h14t1UiQcJqRSWODagDZ5BTMOp3rhtaM6viEAwkadIoKv+dM44r1BmUJiuNx/CmUQ0eJ/joZjcqRXDteoppH2U8jEfoVwgZ NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(102415395)(6040375)(601004)(2401047)(13013025)(13024025)(13023025)(13020025)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123562025)(20161123564025)(20161123555025)(6072148); SRVR:DB5PR08MB1109; BCL:0; PCL:0; RULEID:; SRVR:DB5PR08MB1109; X-Microsoft-Exchange-Diagnostics: 1; DB5PR08MB1109; 4:qqp0y71tsQzmIyKtPpP9hJLpsX7AQbJQIesuJQ4RZ2fF5l2b6qQnccH9CJ5s7v6TKhcn9w6WJgpDaFQ7MHvnjSEQTReBFldAr3hT7U8mtMk/Es552cZ0eOhk9/LzFQfzvGKIws5RktMNz2pnafij+l88DH/eTs9lEp/kRio6IqiGFio0vbbGWrPcXg22Jfz/MbfYqbjSP0rE3U/uu0ItJYkcCrJKSh8RXmVbjlv8QYSynxe4F1ihYEc/Zv3ykL3nogc2g0Vx5/ZLO3C6ByN8+yAzSb86dQ1cmJLJ0odqR6+Ei/15b4V8mEKZUObYWJOtx0RX5mBsWWA0lFq6uyPXkWO9Sxz1LlyZjp7XIy2p9nb9og9w2lTnnzezkQD9RhizLfJUtRoHO1rLG7rMUEbAN2QHqFTAdBevcRi07srX+bFNYDGjSQGW+Hk8ywWoIiI2bHzvdQtqB2TpIzIf4QLVTlkqw9J3BfOlHX/GDqjijT8SkX4AT8nN+kLtK8ve7zHN46dLWC02ql68QerD/nige7DgqaDjiS4uQmyN7SS5fABjXOZJgVrXJQFj/LGOWP1OukzwI9sju0Y0xVeIl1eaWFWxQ+uv4S53R3Zq1wMWDsurpVaFTv/uSQwTcoFGfBlMGS//ya5ctD0vVpvzWYRFadRYPZXvYVeolmf85cVIh4DgfQJ5OF0sRrUkBC7+AxyuCp1fn2JR5a1CDyoVgG9iKtAXelKzaEcCbkG/zqdjlMk= X-Forefront-PRVS: 01494FA7F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR08MB1109; 23:/A22j/aPvWL0u6S9QLl16P5ScnSTgys67ZG9e6/GL?= =?us-ascii?Q?ehywpyd9pHAoq6z2GpLYPEJf/3yyU9a5BuOyXfP9qnDtgRYgkOIrsv7q3tqo?= =?us-ascii?Q?VqsvAY+N14/VxnSPscyNQTanaULBgImlK0FYB/IdHv0fnGuZr4AJdLxsIkqM?= =?us-ascii?Q?JoeMtDkgOZRbGJQntoXF6P86mnMGyksPojp4F//qks2sAYaXSgj7WbpSQ9kT?= =?us-ascii?Q?+VM0KXEbQrcACDuGE+P+/S/SmlSHsT9XGtvGYZJYQmmoIsG7kbB+reb0+SLQ?= =?us-ascii?Q?1ab/CcqxZs7mC9TsBSXhHTsxjsLJGUr1PIQ6GHKbgCcZjlxbp3asoawvpl9Z?= =?us-ascii?Q?9QOSFnzB4kZLnmzpDQ5KiL/aN1OIgd4ZpFdzyXHMnwBhm9uNgsk2rDPKFHJK?= =?us-ascii?Q?XnaL82tXOXAvwHKb3MipKIhBLy4gA2VTjs4dyTZ3UH8aWaEXkdTuVBJ4XCfy?= =?us-ascii?Q?CYganQsq77aXL1BYbUox/lk3padZJxuO9WsAnhgPWkmZ+EDCDP0nP35Pquzf?= =?us-ascii?Q?aOObvRasCsudmkoT00xqdOvxisf6JQqfgw3iWXqMHyKmno9Na8vhwuKiFVbq?= =?us-ascii?Q?uF/oG3m0aGO/Qmg7+p3PLENw6+mHc3L/sqhecoz0//cbPOG9rQqgdHP7GnXV?= =?us-ascii?Q?BQ8IDrLHjpkfEdZk/t6PdwL+wo2UPBpc4pL81KqnYiO6EPxj8qcJVscCRxJj?= =?us-ascii?Q?sjnFQd9VyHRc2kppG5+60JPhVK3ZY4aWamf8cblaMXLpoZe326agMStOvhHT?= =?us-ascii?Q?GwiG3XLtPGMQkwMHuoNb+TST8Ypm+BROKRhHPnB6JMdQfeY2C+ayCfoPs4xy?= =?us-ascii?Q?e+/CiBW43vuUMi6gNy/qYM7j4HgpTKj3GRvadjE0Chwom9fWHjDl+rpjObi7?= =?us-ascii?Q?+G4vHLLqINo7w/27yJBpVB8x6t4pmm43HZwZTap3AwYqPOBxlnmfGqzTeF5T?= =?us-ascii?Q?MKMadrLPnGlXnE5fCCmuyU7U62eto4CVikHa4VLoOMVDzJ/BhsumpcEi78uh?= =?us-ascii?Q?m5IXo2RrFJs6+6dJRHdQqHt3p7eRLUSRBTv1TOla7BxrbzBrgYB9fQ2M6UbM?= =?us-ascii?Q?80zsF6ixkLnjk2TmlcX8Huvq+P3?= X-Microsoft-Exchange-Diagnostics: 1; DB5PR08MB1109; 6:dtsN0oKUBXyOZWGrt6+91YJ+ilY2Gt/T/YuvLxpA6ofXK5HXJ/I7Ke5t36xz8qMsza+eXUsQt8Ff4D2A5wiADRaSqXUwG35OFfIzaggKKgR8aXgcu3KUVLpnz+9SWiL7bmcS21RuyEQVS7GRFm7y3qaf4XxDQudN5LWhEpuqrMZuW9SQK2J/KhOUg/cW9tqkxK41nSH/ioXk4B9nXKeQufDEE8NzqiaStDFYXufQwrznlda04ypyBn73F8tYq1N9LVGDP7bVNVeX361tlCTMlmJxQkjAaPZj9kBRone/DDWfyIu1pC4kicyY4MExyQSC1jdgwJkV+Y4gwGvYNcFGJ5kTBGWHwgTerWigbaoeFwWvurGyADUddcAX93awl1MZ+XTk7sJNa4K+3DwJpnhzJQDb8WS57FBBkTA+PSDCfvzaOimd3VmqKs+/di2v4HnApbZ4QdRddLuAhF+rM+/IOQ==; 5:yLpOsR6dI0wwQgGFF5KCsaNO1E7w/EO85g9xX7j03rvuY6dnVKqhvUGeerLWpYKM98+z1BfzWDYTTNpFvyMR3+e/jZiDPKqwfH4OziFfiijmS99rn+da+gUcb/C1/PdODobVPEO4W6n3YwKCSj3/4w==; 24:g9tJREvi09GNHb//XcvJHTD9IPfSvImVUPl6QiTZ5qbsPGJQSDQ1m8gHY8oQoH3ZZODs12KOaJhVE6Ye1AurZVWUHgxTUA4VdetAPZvZNJ8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB5PR08MB1109; 7:eKg/yhXNiczNgth3DbvBvP0SeKKw+bDXbDz1rnc7q8vtgV2WqDuz+xU5m7kLiHg+jyhbgEp1URwcPIlqJ6p8ih+b8d0TCEmOXlEEFu8UwBr9bzrXnjV+R8bmAJTAOUVkYhE2nuUQwQf9tGVuhjsNPNW1zA+tZKBSQydER79NBu1EnxeWJ+MivrCMwDlntn/xiaj6ZkoomXoFrmjCuanSNJ8QlOrLjiFi48pwnKC326pfCGdTkXasyNAgZkuSRLrHyyyoG0aulxLbzNqhhIpnYfDH3B423FHraJwg7zHyxNJwJK102l5vmpokmE+gOL5oG1rApB4Wz/gc0Jp15CzRGPGD5cQTU+O0erq4IcmqhfhL7o0+8kQ4PRYTBHEm+FI4wkzdvTCZCeijxCGse2OYCT7z7T0TEvaS/2PVTaOZigVOmTFh5sPRNADQOAsopy3uOkYAgbfzQvn1fF9Iz+MPVA== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2016 10:31:40.8252 (UTC) X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[217.140.96.140]; Helo=[nebula.arm.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB1109 X-IsSubscribed: yes Hi, This patch is a bit of a shot in the dark, as I've been unable to reproduce Segher's failures reported in the PR. But, he has confirmed on the PR that this patch fixes the issue he was seeing. Before my patch set, rs6000 was reading the size of the constant pool at several points in compilation, and expecting that if it read non-zero at one point in compilation, it would always read non-zero. That doesn't hold if we recompute the size of the constant pool just before emitting it and decide that actually the size is zero. That can mean some of the preparation statements emitted early in the PowerPC back end can think a constant pool is needed, while later passes know there won't be one as all the references are unused. That then causes issues for PIC register set up. We always keep the entries in the constant pool after we first see them, and we figure out what gets used in the constant pool by sweeping through looking for referenced entries. That means we can always answer the question "has the constant pool ever had entries?" by checking if there is anything at all in there. So that's what this patch does. Bootstrapped on gcc110 (powerpc64-none-linux-gnu) configured with --enable-languages=all,ada,go,obj-c++ with no issues, Segher has also tested it with no issues, and I've tested an aarch64-none-elf cross compiler to ensure that the original fix still works on AArch64. OK? Thanks, James --- 2016-12-07 James Greenhalgh PR rtl-optimization/78561 * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p) Use constant_pool_empty_p in place of get_pool_size_upper_bound. (rs6000_stack_info): Likewise. (rs6000_emit_prologue): Likewise. (rs6000_elf_declare_function_name): Likewise. (rs6000_set_up_by_prologue): Likewise. (rs6000_can_eliminate): Likewise. * output.h (get_pool_size_upper_bound): Delete. (constant_pool_empty_p): New. * varasm.c (get_pool_size_upper_bound): Delete (constant_pool_empty_p): New. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 59bd3fe..b75a290 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -25460,7 +25460,7 @@ rs6000_reg_live_or_pic_offset_p (int reg) if (TARGET_TOC && TARGET_MINIMAL_TOC && (crtl->calls_eh_return || df_regs_ever_live_p (reg) - || get_pool_size_upper_bound ())) + || !constant_pool_empty_p ())) return true; if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) @@ -26266,7 +26266,7 @@ rs6000_stack_info (void) #ifdef TARGET_RELOCATABLE || (DEFAULT_ABI == ABI_V4 && (TARGET_RELOCATABLE || flag_pic > 1) - && get_pool_size_upper_bound () != 0) + && !constant_pool_empty_p ()) #endif || rs6000_ra_ever_killed ()) info->lr_save_p = 1; @@ -28044,7 +28044,7 @@ rs6000_emit_prologue (void) /* With -mminimal-toc we may generate an extra use of r2 below. */ if (TARGET_TOC && TARGET_MINIMAL_TOC - && get_pool_size_upper_bound () != 0) + && !constant_pool_empty_p ()) cfun->machine->r2_setup_needed = true; } @@ -28900,7 +28900,7 @@ rs6000_emit_prologue (void) /* If we are using RS6000_PIC_OFFSET_TABLE_REGNUM, we need to set it up. */ if (!TARGET_SINGLE_PIC_BASE && ((TARGET_TOC && TARGET_MINIMAL_TOC - && get_pool_size_upper_bound () != 0) + && !constant_pool_empty_p ()) || (DEFAULT_ABI == ABI_V4 && (flag_pic == 1 || (flag_pic && TARGET_SECURE_PLT)) && df_regs_ever_live_p (RS6000_PIC_OFFSET_TABLE_REGNUM)))) @@ -34967,7 +34967,7 @@ rs6000_elf_declare_function_name (FILE *file, const char *name, tree decl) if (DEFAULT_ABI == ABI_V4 && (TARGET_RELOCATABLE || flag_pic > 1) && !TARGET_SECURE_PLT - && (get_pool_size_upper_bound () != 0 || crtl->profile) + && (!constant_pool_empty_p () || crtl->profile) && uses_TOC ()) { char buf[256]; @@ -37453,7 +37453,7 @@ rs6000_can_eliminate (const int from, const int to) ? ! frame_pointer_needed : from == RS6000_PIC_OFFSET_TABLE_REGNUM ? ! TARGET_MINIMAL_TOC || TARGET_NO_TOC - || get_pool_size_upper_bound () == 0 + || constant_pool_empty_p () : true); } @@ -38990,7 +38990,7 @@ rs6000_set_up_by_prologue (struct hard_reg_set_container *set) if (!TARGET_SINGLE_PIC_BASE && TARGET_TOC && TARGET_MINIMAL_TOC - && get_pool_size_upper_bound () != 0) + && !constant_pool_empty_p ()) add_to_hard_reg_set (&set->set, Pmode, RS6000_PIC_OFFSET_TABLE_REGNUM); if (cfun->machine->split_stack_argp_used) add_to_hard_reg_set (&set->set, Pmode, 12); diff --git a/gcc/output.h b/gcc/output.h index 7186dc1..6c99381 100644 --- a/gcc/output.h +++ b/gcc/output.h @@ -287,11 +287,10 @@ extern void assemble_real (REAL_VALUE_TYPE, machine_mode, unsigned, /* Write the address of the entity given by SYMBOL to SEC. */ extern void assemble_addr_to_section (rtx, section *); -/* Return the maximum size of the constant pool. This may be larger - than the final size of the constant pool, as entries may be added to - the constant pool which become unreferenced, or otherwise not need - output by the time we actually emit the pool. */ -extern int get_pool_size_upper_bound (void); +/* Return TRUE if and only if the constant pool has no entries. Note + that even entries we might end up choosing not to emit are counted + here, so there is the potential for missed optimizations. */ +extern bool constant_pool_empty_p (void); extern rtx_insn *peephole (rtx_insn *); diff --git a/gcc/varasm.c b/gcc/varasm.c index f3cd70a..5b15847 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -3808,12 +3808,14 @@ get_pool_mode (const_rtx addr) return SYMBOL_REF_CONSTANT (addr)->mode; } -/* Return the size of the constant pool. */ +/* Return TRUE if and only if the constant pool has no entries. Note + that even entries we might end up choosing not to emit are counted + here, so there is the potential for missed optimizations. */ -int -get_pool_size_upper_bound (void) +bool +constant_pool_empty_p (void) { - return crtl->varasm.pool->offset; + return crtl->varasm.pool->first == NULL; } /* Worker function for output_constant_pool_1. Emit assembly for X