From patchwork Wed Mar 16 14:54:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Siddhesh Poyarekar X-Patchwork-Id: 52004 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 45EC4383F862 for ; Wed, 16 Mar 2022 14:55:07 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from eggs.gnu.org (eggs.gnu.org [209.51.188.92]) by sourceware.org (Postfix) with ESMTPS id 6EF033858D1E for ; Wed, 16 Mar 2022 14:54:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6EF033858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gotplt.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gotplt.org Received: from bat.birch.relay.mailchannels.net ([23.83.209.13]:52238) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nUV31-0003KK-94 for gcc-patches@gcc.gnu.org; Wed, 16 Mar 2022 10:54:48 -0400 X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 919BF28126B; Wed, 16 Mar 2022 14:54:42 +0000 (UTC) Received: from pdx1-sub0-mail-a307.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 0699A28114D; Wed, 16 Mar 2022 14:54:40 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1647442482; a=rsa-sha256; cv=none; b=MJb0sJUUMhUC1wlannfrwBaJDkngzOxJWkueXfT5ch4homN/xKA1DB8Umn5BDLKS4ob5D/ hcGD9TFSZ6Ef3h75x3B+ZiBOeDxkrISLgfIWYNZc07xck4ynUdqKod1FA5mw7ITbQdbUpm c1M2evjHaatPsHewDbHwfO2oJXc2lWGDmSF1O1TQehbQ2Q6YEPthyMv64mLUR+FGJodPJL WZRe4jP1s9iN/AVnYmZ4GgYUgTCl4niFEl+lRWKuODJCJFd4eWF3O7sNMVJFgfb6hbZRzQ dQEifY0pykD2sf+HtGJp1fkGsXZfuq8XLl0vIn34CJ5A9rjmtBklO8J/JKleKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1647442482; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:dkim-signature; bh=jMK0oPRJ451OSEiw51MyYCEXt3dsMFynt2LG+l4cFeM=; b=r6xp4G5E5c7Wybz30kSoECUPN7B1/UujRBV7pNlWwJotLPOMYh1aqsMguwudN+5fWahtt1 DDmCLiFx2X8Ve2pYmW8u+Y05OD2SBOO6qulKrQ5h8SZvFwlV7lCC35oaTtbqY0INPXptHO hAHUWwHjPjdanc6revf/RFUpA+DxJ/aTb6cOO9J9jktiZG55yvXvd0zayjSFVeMYda4oLp z1jkxxBOwpyKIRNqql8OkU414zOHM6sDMV6n3UdUE56R4sQdHnk7feVftXv352n9OIuJYr IZG34USdUty/oNH8GEnHCzDE73WbhCdaeaD2u4wEWqUeIX+LPdeFUNEmA5eVuQ== ARC-Authentication-Results: i=1; rspamd-c9cb649d9-6ptxh; auth=pass smtp.auth=dreamhost smtp.mailfrom=siddhesh@gotplt.org X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from pdx1-sub0-mail-a307.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.119.141.221 (trex/6.5.3); Wed, 16 Mar 2022 14:54:42 +0000 X-MC-Relay: Junk X-MailChannels-SenderId: dreamhost|x-authsender|siddhesh@gotplt.org X-MailChannels-Auth-Id: dreamhost X-Inform-Bottle: 28866ff669319b84_1647442482449_1211271761 X-MC-Loop-Signature: 1647442482448:2651772640 X-MC-Ingress-Time: 1647442482448 Received: from rhbox.redhat.com (unknown [1.186.123.88]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: siddhesh@gotplt.org) by pdx1-sub0-mail-a307.dreamhost.com (Postfix) with ESMTPSA id 4KJYG16c3Jz1PD; Wed, 16 Mar 2022 07:54:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gotplt.org; s=dreamhost; t=1647442475; bh=jMK0oPRJ451OSEiw51MyYCEXt3dsMFynt2LG+l4cFeM=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=kWqtNR4yYcfIp1pYS3SKtQZ0htClWqz7xonBSYtWlxTMt/Xz+cBWUQR3bAWUZVbAD BFE7U6+QfarWUzcbRjLNpXadPkdyQKyNhcWnYMhxJGhjHiJcz2/WXIOX/D5+oug3jx Yd1h542oSu6ji4gfUMGsL78aGT1YTtOxxXpU6MqeuktXB37+cpmnRku7LFbulywIwd QJJ2gfQXDUNm7dVj3wgkrHJyX/+MLa0oA6bUR51A4+Jkg7fgbvmKbBkvW8pGfSznyt gfI+7MIrWI1PftijRVwA/h97crm+Np2f75gA+oKaDe9NaCWh7veN1jl+SHLJ6toDQ/ Qkk0AMkKYqiaw== From: Siddhesh Poyarekar To: gcc-patches@gcc.gnu.org Subject: [PATCH] tree-optimization/104941: Actually assign the conversion result Date: Wed, 16 Mar 2022 20:24:24 +0530 Message-Id: <20220316145424.1807869-1-siddhesh@gotplt.org> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Received-SPF: pass client-ip=23.83.209.13; envelope-from=siddhesh@gotplt.org; helo=bat.birch.relay.mailchannels.net X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_SBL=0.141, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Status: No, score=-3039.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_SBL, SPF_FAIL, SPF_HELO_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jakub@redhat.com Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Assign the result of fold_convert to offset. gcc/ChangeLog: PR tree-optimization/104941 * tree-object-size.cc (size_for_offset): Assign result of fold_convert to OFFSET. gcc/testsuite/ChangeLog: PR tree-optimization/104941 * gcc.dg/builtin-dynamic-object-size-0.c (S1, S2): New structs. (test_alloc_nested_structs, g): New functions. (main): Call test_alloc_nested_structs. Signed-off-by: Siddhesh Poyarekar --- Testing: - x86_64 bootstrap build and check - i686 build and check .../gcc.dg/builtin-dynamic-object-size-0.c | 34 +++++++++++++++++++ gcc/tree-object-size.cc | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c b/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c index 2fca0a9c5b4..e5dc23a908d 100644 --- a/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c +++ b/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c @@ -323,6 +323,34 @@ test_substring (size_t sz, size_t off) return __builtin_dynamic_object_size (&str[off], 0); } +struct S2 +{ + char arr[7]; +}; + +struct S1 +{ + int pad; + struct S2 s2; +}; + +static long +g (struct S1 *s1) +{ + struct S2 *s2 = &s1->s2; + return __builtin_dynamic_object_size (s2->arr, 0); +} + +long +__attribute__ ((noinline)) +test_alloc_nested_structs (int x) +{ + struct S1 *s1 = __builtin_malloc (x); + return g (s1); +} + +/* POINTER_PLUS expressions. */ + size_t __attribute__ ((noinline)) test_substring_ptrplus (size_t sz, size_t off) @@ -342,6 +370,8 @@ test_substring_ptrplus2 (size_t sz, size_t off, size_t off2) return __builtin_dynamic_object_size (ptr + off2, 0); } +/* Function parameters. */ + size_t __attribute__ ((access (__read_write__, 1, 2))) __attribute__ ((noinline)) @@ -382,6 +412,8 @@ test_parmsz_unknown (void *obj, void *unknown, size_t sz, int cond) return __builtin_dynamic_object_size (cond ? obj : unknown, 0); } +/* Loops. */ + size_t __attribute__ ((noinline)) __attribute__ ((access (__read_write__, 1, 2))) @@ -491,6 +523,8 @@ main (int argc, char **argv) FAIL (); if (test_dynarray_cond (1) != 8) FAIL (); + if (test_alloc_nested_structs (42) != 42 - sizeof (int)) + FAIL (); if (test_deploop (128, 4) != 128) FAIL (); if (test_deploop (128, 129) != 32) diff --git a/gcc/tree-object-size.cc b/gcc/tree-object-size.cc index 9728f79da75..e23e80cb726 100644 --- a/gcc/tree-object-size.cc +++ b/gcc/tree-object-size.cc @@ -372,7 +372,7 @@ size_for_offset (tree sz, tree offset, tree wholesize = NULL_TREE) /* Safe to convert now, since a valid net offset should be non-negative. */ if (!types_compatible_p (TREE_TYPE (offset), sizetype)) - fold_convert (sizetype, offset); + offset = fold_convert (sizetype, offset); if (TREE_CODE (offset) == INTEGER_CST) {