From patchwork Wed Dec 4 04:49:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 102348 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 85D9D3858C2B for ; Wed, 4 Dec 2024 05:10:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 85D9D3858C2B Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=bjfeKcHw X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-qk1-x734.google.com (mail-qk1-x734.google.com [IPv6:2607:f8b0:4864:20::734]) by sourceware.org (Postfix) with ESMTPS id B685F3858D3C for ; Wed, 4 Dec 2024 05:08:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B685F3858D3C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B685F3858D3C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::734 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288892; cv=none; b=hZ4IjVcxyljmeqZOaATK8qYOUD3rBCYdGR9e740Guo8JvZwLe1VoVtFsJW3th85E+hhEOiWKLxdLRgb/o3LKbEzJ7yRLngrjLoLH8BaKaxM2ep6OlOcDlRsBG59sW/EU6Hoau+BHTb46RItiHr7nzsCiT5wZcLCkhjrNB1jnTsM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288892; c=relaxed/simple; bh=EyaUu2gA5HhlWmFLshOrwgJmH86/LIQIA8ZskUu9LME=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Krza6et62QS5UTnZ05jJjco1WqEPWMZ+NSnI+Nf0yGr8dhcwAWYcC52sYTCzKey2WWYkOrHzNoft9bzXIySCNBxYnSwjdaHy0sp6Dk5IxBci+VHMlQ6SmLCX/w7ROvZ/hNfEIN+T0uO4tZGbdQCe546LELqO+hDNb+G2K4wNSz0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B685F3858D3C Received: by mail-qk1-x734.google.com with SMTP id af79cd13be357-7b673aacf13so44894485a.0 for ; Tue, 03 Dec 2024 21:08:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733288891; x=1733893691; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=U5dS8uhQxrmMI5x1sSfkkPv3T4/CDE/AsPzvPt1eH88=; b=bjfeKcHwfgTAOlNO5mm3RI5OwtjsENcanNnIMVYVO8yt1q3zF20Jo5wNwzs0BJfpVD jwRksHxtjid752g2rVXqfd/qxWZoFQycgF0zV9V+T0N4fgzbf8Ea2SvdBQdLnoapoejK utcooMP5xbGLnfMt7ECbfCEc455fiBOuu7bNscKlkivBU+yX0oPU/J7F4BPstV1NMNlg Zg98BS7MFXCOMYDAHLDKS/Nl7B0HrKqophdzHCTO61MQtUwUmySbfyOXNMi9ZKKv13eV 9Jn9KAGUxq8Lr+6RIuhOMGvLwyoCZ/ppL9pjTAbl583GxLzHoO4EDqYX7t1Z9ifdSnrB 472Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733288891; x=1733893691; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=U5dS8uhQxrmMI5x1sSfkkPv3T4/CDE/AsPzvPt1eH88=; b=GTDNHhZ7emPGnynfldkpisoPI4qqgJ3bxaVI2Wbcf6aZR31G8sNU7jgmB6nJhau8UE 2CykizeK1JVnc0+A0MdmFMGzO26PyrTFCPG+cGF2OdEd0DzzPZrg6+UXafZxEN/pe1yR xXy1A7Ngn4xPRiQoELrCfQJ9yZ2A2HygcU7IC4V+iCx7F4xIgRi5K4EwyjkF3s2LUxKr rOdZL6DhAM2R529Dw85gc98g/ssJZgohkEO1WuNVku4wg7UrRgxA2OZwViXurC5MS3+P aJYwrdm7jE3nQBmBTgIVQ7qLi+yqGjDgU6qxrN+8xYmL+4RpPWymiiEzgbT5XHlkoDDo FDWg== X-Gm-Message-State: AOJu0YwmL1s/P13bcPwteOuhd7jGFmphsefGY91inOTyb7pO9ynF5hXR jtMAYaxwh/BMdXwj4NfrHEGF3M6I/Io9QtWJtLHpAIkpLISPBHTR X-Gm-Gg: ASbGncuQbfsKLuu9EMiGaNqBHgzAg6NAb8+R7EVTY/JUVUm7sz9NJaFSjAdBo8JfcIf fVPByWNVJo5hAgG5QqIAaoaXliLSLgWNHrobqaqZWmCTfSyd+iKFDqaK6h5ajZ1ju4JbP7IgmBL QAlZ3BfEMlNYEcFdr+OTs8YG019mdiQtQ5w8ORF6COW4N8AYcOS2rw5V2Ubc8+4h6GVPYvwnXl3 BDmdxl2VqjcNqMdMm5IyURs+5Nsg+lMLo/asjnXR9uty7+DQ0NS3CQAhRLDYuWU+w5wDl8wUM9E Jg0rRDBTvM2jGbug2FL4x9qY6PeC7oGNSFmg9g== X-Google-Smtp-Source: AGHT+IFSYMzj0uG14Ui9PzTfhfvuReOxYl2Ms26nazmasp4fLkRrzrb53z72cE8lunrX0yFamL73yQ== X-Received: by 2002:a05:620a:1d07:b0:7b6:7357:a538 with SMTP id af79cd13be357-7b6a66f1828mr844766285a.17.1733288890543; Tue, 03 Dec 2024 21:08:10 -0800 (PST) Received: from gnu-tgl-3.localdomain ([172.58.160.52]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7b684922110sm579874685a.18.2024.12.03.21.08.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Dec 2024 21:08:09 -0800 (PST) Received: from gnu-tgl-3.. (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id 9E6A1C0323; Wed, 04 Dec 2024 12:49:51 +0800 (CST) From: "H.J. Lu" To: gcc-patches@gcc.gnu.org Cc: richard.guenther@gmail.com, jeffreyalaw@gmail.com, jakub@redhat.com, richard.sandiford@arm.com, matz@suse.de Subject: [PATCH v5 1/7] Honor TARGET_PROMOTE_PROTOTYPES during RTL expand Date: Wed, 4 Dec 2024 12:49:45 +0800 Message-ID: <20241204044951.509713-2-hjl.tools@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241204044951.509713-1-hjl.tools@gmail.com> References: <20241204044951.509713-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3019.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org Promote integer arguments smaller than int if TARGET_PROMOTE_PROTOTYPES returns true. PR middle-end/112877 * calls.c (initialize_argument_information): Promote small integer arguments if TARGET_PROMOTE_PROTOTYPES returns true. gcc/testsuite/ PR middle-end/112877 * gfortran.dg/pr112877-1.f90: New test. Signed-off-by: H.J. Lu --- gcc/calls.cc | 9 +++++++++ gcc/testsuite/gfortran.dg/pr112877-1.f90 | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/pr112877-1.f90 diff --git a/gcc/calls.cc b/gcc/calls.cc index 8cf0f29b42c..78ead6fd4ed 100644 --- a/gcc/calls.cc +++ b/gcc/calls.cc @@ -1374,6 +1374,11 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED, } } + bool promote_p + = targetm.calls.promote_prototypes (fndecl + ? TREE_TYPE (fndecl) + : fntype); + /* I counts args in order (to be) pushed; ARGPOS counts in order written. */ for (argpos = 0; argpos < num_actuals; i--, argpos++) { @@ -1383,6 +1388,10 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED, /* Replace erroneous argument with constant zero. */ if (type == error_mark_node || !COMPLETE_TYPE_P (type)) args[i].tree_value = integer_zero_node, type = integer_type_node; + else if (promote_p + && INTEGRAL_TYPE_P (type) + && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)) + type = integer_type_node; /* If TYPE is a transparent union or record, pass things the way we would pass the first field of the union or record. We have diff --git a/gcc/testsuite/gfortran.dg/pr112877-1.f90 b/gcc/testsuite/gfortran.dg/pr112877-1.f90 new file mode 100644 index 00000000000..5e41cd6f54f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr112877-1.f90 @@ -0,0 +1,17 @@ +! { dg-do compile } +! { dg-options "-Os" } + +program test + use iso_c_binding, only: c_short + interface + subroutine foo(a) bind(c) + import c_short + integer(kind=c_short), intent(in), value :: a + end subroutine foo + end interface + integer(kind=c_short) a(5); + call foo (a(3)) +end + +! { dg-final { scan-assembler "movswl\t10\\(%rsp\\), %edi" { target { { *-*-linux* *-*-gnu* } && { ! ia32 } } } } } +! { dg-final { scan-assembler "movswl\t-14\\(%ebp\\), %eax" { target { { *-*-linux* *-*-gnu* } && { ia32 } } } } } From patchwork Wed Dec 4 04:49:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 102349 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 686883858C53 for ; Wed, 4 Dec 2024 05:14:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 686883858C53 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=VkSC7uEL X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-qt1-x82d.google.com (mail-qt1-x82d.google.com [IPv6:2607:f8b0:4864:20::82d]) by sourceware.org (Postfix) with ESMTPS id 9794E3858D38 for ; Wed, 4 Dec 2024 05:08:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9794E3858D38 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9794E3858D38 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::82d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288891; cv=none; b=k3Ij0O2LqkICGcUo6IXBuf3LrrkXhDWOvkkDH023COeCzeYKenf2Z67T8aWqxNmj/SWdzzYu4HaMnNAwd3IOOWLRuT1TNRoHm8bMkwv66Dtl6xVRASXhSVa1TSgnUvBknvqGFoX8uiIlqOplHJPg3pENskbxSeiXLNxCJOdqyyo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288891; c=relaxed/simple; bh=UtgTvLgmGbwhjXgzMHc+TX5da1AxhkJa4IAHQaLexFI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=BdsfGQHMeSvtuQ3x4NJBGMyHSq8Xr8K3jUGxd8nslutw3MFD/SkrpejSvP9e/3nhhZDHMyqtZvqG1+VsZXb7N3JG28wzWxjuEVnOo9ZYAUDaXOAuM0sINcus12+lAHGqAkJMtnckJZh6CyLgKTz1Wi2XvW8tJjp0Y+I4E+1lJRU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9794E3858D38 Received: by mail-qt1-x82d.google.com with SMTP id d75a77b69052e-46101120e70so53483411cf.1 for ; Tue, 03 Dec 2024 21:08:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733288890; x=1733893690; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PSzMbwKM+AfcwVND8wAq3BotYmCjKGu2z5mJxfnC7eU=; b=VkSC7uEL20hnEEEkuU3yWYEW5yAZ87OWYI8VvYRDhd4//ehcC/a7M3NiRO1xSiVR79 Xd4LNeCPDNvUE6Lad8+gwhyfpKsiBPBbmmkh4ol4ZpgpMwLuSrhVSrxJ9JRudMldBoXM h+FS7wecwIqF99vRLNYDBxHzagJjU5u1LXqDMfB4u9MPVts0MhNKNlS/OeIuRDfLbQeb tOYMGGsr30I7fp4KCRB0krv7IMiM7MNu3qKydjp43NU/rimBBWZ/y7o1EJJl2o9HRtaP qpVKHG34RYba+QlCH1h1C3dCzusYY9V2+A75X/q8w84DPfYpwvtCjdo2t92sgOAPPbIl lmhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733288890; x=1733893690; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PSzMbwKM+AfcwVND8wAq3BotYmCjKGu2z5mJxfnC7eU=; b=Po5xJ6ujUJJOfhmw3qlA/geWos4jxOG098KJ59TIP+xn9u+526u8LFcSYqj+i7Wq/t EYcBngq2Va3ivZie6wf+XfIfRcR5g4WIbdE5GYDFQDwNb+w8ej1AMljhLjlxG7DWPEiN BsZXyotHhatQWl4JqYN8b/9oMpoAA/Fk3xpkmJPvcAELmAb889Oi3SUxHFtNo3alZXFp kuOTiF+YuQpw8EDgP+TyAHmXEIEigtyUUfL6fx/DSCe2aD2wnOX7hxsdtlo/a36pBHQq Kst21tz8m/oEcvAP5xG2QYeP153efKDv5hY2MUZhWkVdUPPPjeF4O/0xUuDXuznaX51s iG9w== X-Gm-Message-State: AOJu0YzJaxJoPpaDOzsSMSUrJZ6n/b4O26+njkSbSKAJ32xuHR647XWM C7J70aIU6aTfAABcAL4MGiMhfO0D6hOQ7KG+NG7g59U6aZaa9D4a X-Gm-Gg: ASbGncvecbQLArTU6Us+wBP6G/lDwdCeJPPATWc+5c2Vz3n2zn7tMZ5J7C2gU37CWtA 5m6SRoTgdnOU7yks/XfW5H1jYU5Ix1hD5IXh1a7e7Qgy0Ie6P3mLCsgLU2+56SNvof966w5Zow7 jB3M4nUSzF5fxOIQEjlBxoU+qcN1rWQpHbYHxQXgsWib7r8k8u4Q9yoXoRZtLlvUBIPX4BvTNxJ wD88CX1V8YjyRrZ4tzjQeCYWlZ11PPYShQMqvm9RsTCssm84Lp/UyR1XioH9NtPg3edvgb/OIGf 5Dpg8rYM9aaZ+zwruj2VRNt/dkNYuhp3CcxrMA== X-Google-Smtp-Source: AGHT+IFc2RSrTCdmeAIYLT5r0uR80VaJFYb3fMa8Y5Jir4tsSGgiGI7lzv3apZ/YIuX6lsA2nLg4aw== X-Received: by 2002:a05:622a:548:b0:466:ab8f:8978 with SMTP id d75a77b69052e-46717c97ed7mr56788431cf.37.1733288890126; Tue, 03 Dec 2024 21:08:10 -0800 (PST) Received: from gnu-tgl-3.localdomain ([172.58.160.52]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-466c421f825sm69777531cf.64.2024.12.03.21.08.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Dec 2024 21:08:09 -0800 (PST) Received: from gnu-tgl-3.. (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id A9518C058F; Wed, 04 Dec 2024 12:49:51 +0800 (CST) From: "H.J. Lu" To: gcc-patches@gcc.gnu.org Cc: richard.guenther@gmail.com, jeffreyalaw@gmail.com, jakub@redhat.com, richard.sandiford@arm.com, matz@suse.de Subject: [PATCH v5 2/7] Drop targetm.promote_prototypes from C, C++ and Ada frontends Date: Wed, 4 Dec 2024 12:49:46 +0800 Message-ID: <20241204044951.509713-3-hjl.tools@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241204044951.509713-1-hjl.tools@gmail.com> References: <20241204044951.509713-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3019.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org Remove the targetm.calls.promote_prototypes call from C, C++ and Ada frontends. gcc/ PR c/48274 PR middle-end/14907 PR middle-end/112877 * gimple.cc (gimple_builtin_call_types_compatible_p): Remove the targetm.calls.promote_prototypes call. * tree.cc (tree_builtin_call_types_compatible_p): Likewise. gcc/ada/ PR middle-end/14907 PR middle-end/112877 * gcc-interface/utils.cc (create_param_decl): Remove the targetm.calls.promote_prototypes call. gcc/c/ PR c/48274 PR middle-end/14907 PR middle-end/112877 * c-decl.cc (start_decl): Remove the targetm.calls.promote_prototypes call. (store_parm_decls_oldstyle): Likewise. (finish_function): Likewise. * c-typeck.cc (convert_argument): Likewise. (c_safe_arg_type_equiv_p): Likewise. gcc/cp/ PR middle-end/14907 PR middle-end/112877 * call.cc (type_passed_as): Remove the targetm.calls.promote_prototypes call. (convert_for_arg_passing): Likewise. * typeck.cc (cxx_safe_arg_type_equiv_p): Likewise. Signed-off-by: H.J. Lu --- gcc/ada/gcc-interface/utils.cc | 24 -------------------- gcc/c/c-decl.cc | 40 ---------------------------------- gcc/c/c-typeck.cc | 19 ++++------------ gcc/cp/call.cc | 10 --------- gcc/cp/typeck.cc | 13 ++++------- gcc/gimple.cc | 10 +-------- gcc/tree.cc | 14 ------------ 7 files changed, 9 insertions(+), 121 deletions(-) diff --git a/gcc/ada/gcc-interface/utils.cc b/gcc/ada/gcc-interface/utils.cc index 8e8cf55ae12..cbbac5160d2 100644 --- a/gcc/ada/gcc-interface/utils.cc +++ b/gcc/ada/gcc-interface/utils.cc @@ -3282,30 +3282,6 @@ tree create_param_decl (tree name, tree type) { tree param_decl = build_decl (input_location, PARM_DECL, name, type); - - /* Honor TARGET_PROMOTE_PROTOTYPES like the C compiler, as not doing so - can lead to various ABI violations. */ - if (targetm.calls.promote_prototypes (NULL_TREE) - && INTEGRAL_TYPE_P (type) - && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)) - { - /* We have to be careful about biased types here. Make a subtype - of integer_type_node with the proper biasing. */ - if (TREE_CODE (type) == INTEGER_TYPE - && TYPE_BIASED_REPRESENTATION_P (type)) - { - tree subtype - = make_unsigned_type (TYPE_PRECISION (integer_type_node)); - TREE_TYPE (subtype) = integer_type_node; - TYPE_BIASED_REPRESENTATION_P (subtype) = 1; - SET_TYPE_RM_MIN_VALUE (subtype, TYPE_MIN_VALUE (type)); - SET_TYPE_RM_MAX_VALUE (subtype, TYPE_MAX_VALUE (type)); - type = subtype; - } - else - type = integer_type_node; - } - DECL_ARG_TYPE (param_decl) = type; return param_decl; } diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc index 1c11c216bd6..9642257c961 100644 --- a/gcc/c/c-decl.cc +++ b/gcc/c/c-decl.cc @@ -5719,26 +5719,6 @@ start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs, DECL_EXTERNAL (decl) = !DECL_EXTERNAL (decl); } - if (TREE_CODE (decl) == FUNCTION_DECL - && targetm.calls.promote_prototypes (TREE_TYPE (decl))) - { - struct c_declarator *ce = declarator; - - if (ce->kind == cdk_pointer) - ce = declarator->declarator; - if (ce->kind == cdk_function) - { - tree args = ce->u.arg_info->parms; - for (; args; args = DECL_CHAIN (args)) - { - tree type = TREE_TYPE (args); - if (type && INTEGRAL_TYPE_P (type) - && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)) - DECL_ARG_TYPE (args) = c_type_promotes_to (type); - } - } - } - if (TREE_CODE (decl) == FUNCTION_DECL && DECL_DECLARED_INLINE_P (decl) && DECL_UNINLINABLE (decl) @@ -11172,13 +11152,6 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info) useful for argument types like uid_t. */ DECL_ARG_TYPE (parm) = TREE_TYPE (parm); - if (targetm.calls.promote_prototypes (TREE_TYPE (current_function_decl)) - && INTEGRAL_TYPE_P (TREE_TYPE (parm)) - && (TYPE_PRECISION (TREE_TYPE (parm)) - < TYPE_PRECISION (integer_type_node))) - DECL_ARG_TYPE (parm) - = c_type_promotes_to (TREE_TYPE (parm)); - /* ??? Is it possible to get here with a built-in prototype or will it always have been diagnosed as conflicting with an @@ -11406,19 +11379,6 @@ finish_function (location_t end_loc) if (c_dialect_objc ()) objc_finish_function (); - if (TREE_CODE (fndecl) == FUNCTION_DECL - && targetm.calls.promote_prototypes (TREE_TYPE (fndecl))) - { - tree args = DECL_ARGUMENTS (fndecl); - for (; args; args = DECL_CHAIN (args)) - { - tree type = TREE_TYPE (args); - if (INTEGRAL_TYPE_P (type) - && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)) - DECL_ARG_TYPE (args) = c_type_promotes_to (type); - } - } - if (DECL_INITIAL (fndecl) && DECL_INITIAL (fndecl) != error_mark_node) BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl; diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc index e60f89a21d9..d5f947132ad 100644 --- a/gcc/c/c-typeck.cc +++ b/gcc/c/c-typeck.cc @@ -4124,12 +4124,6 @@ convert_argument (location_t ploc, tree function, tree fundecl, val, origtype, ic_argpass, npc, fundecl, function, parmnum + 1, warnopt); - - if (targetm.calls.promote_prototypes (fundecl ? TREE_TYPE (fundecl) : 0) - && INTEGRAL_TYPE_P (type) - && (TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node))) - parmval = default_conversion (parmval); - return parmval; } @@ -6665,17 +6659,12 @@ c_safe_arg_type_equiv_p (tree t1, tree t2) && TREE_CODE (t2) == POINTER_TYPE) return true; - /* The signedness of the parameter matters only when an integral - type smaller than int is promoted to int, otherwise only the - precision of the parameter matters. - This check should make sure that the callee does not see - undefined values in argument registers. */ + /* Only the precision of the parameter matters. This check should + make sure that the callee does not see undefined values in argument + registers. */ if (INTEGRAL_TYPE_P (t1) && INTEGRAL_TYPE_P (t2) - && TYPE_PRECISION (t1) == TYPE_PRECISION (t2) - && (TYPE_UNSIGNED (t1) == TYPE_UNSIGNED (t2) - || !targetm.calls.promote_prototypes (NULL_TREE) - || TYPE_PRECISION (t1) >= TYPE_PRECISION (integer_type_node))) + && TYPE_PRECISION (t1) == TYPE_PRECISION (t2)) return true; return comptypes (t1, t2); diff --git a/gcc/cp/call.cc b/gcc/cp/call.cc index 9fbc1602b0d..02946b80434 100644 --- a/gcc/cp/call.cc +++ b/gcc/cp/call.cc @@ -9437,11 +9437,6 @@ type_passed_as (tree type) /* Pass classes with copy ctors by invisible reference. */ if (TREE_ADDRESSABLE (type)) type = build_reference_type (type); - else if (targetm.calls.promote_prototypes (NULL_TREE) - && INTEGRAL_TYPE_P (type) - && COMPLETE_TYPE_P (type) - && tree_int_cst_lt (TYPE_SIZE (type), TYPE_SIZE (integer_type_node))) - type = integer_type_node; return type; } @@ -9477,11 +9472,6 @@ convert_for_arg_passing (tree type, tree val, tsubst_flags_t complain) /* Pass classes with copy ctors by invisible reference. */ else if (TREE_ADDRESSABLE (type)) val = build1 (ADDR_EXPR, build_reference_type (type), val); - else if (targetm.calls.promote_prototypes (NULL_TREE) - && INTEGRAL_TYPE_P (type) - && COMPLETE_TYPE_P (type) - && tree_int_cst_lt (TYPE_SIZE (type), TYPE_SIZE (integer_type_node))) - val = cp_perform_integral_promotions (val, complain); if (complain & tf_warning) { if (warn_suggest_attribute_format) diff --git a/gcc/cp/typeck.cc b/gcc/cp/typeck.cc index adc71132721..dc3c817374d 100644 --- a/gcc/cp/typeck.cc +++ b/gcc/cp/typeck.cc @@ -1372,17 +1372,12 @@ cxx_safe_arg_type_equiv_p (tree t1, tree t2) && TYPE_PTR_P (t2)) return true; - /* The signedness of the parameter matters only when an integral - type smaller than int is promoted to int, otherwise only the - precision of the parameter matters. - This check should make sure that the callee does not see - undefined values in argument registers. */ + /* Only the precision of the parameter matters. This check should + make sure that the callee does not see undefined values in argument + registers. */ if (INTEGRAL_TYPE_P (t1) && INTEGRAL_TYPE_P (t2) - && TYPE_PRECISION (t1) == TYPE_PRECISION (t2) - && (TYPE_UNSIGNED (t1) == TYPE_UNSIGNED (t2) - || !targetm.calls.promote_prototypes (NULL_TREE) - || TYPE_PRECISION (t1) >= TYPE_PRECISION (integer_type_node))) + && TYPE_PRECISION (t1) == TYPE_PRECISION (t2)) return true; return same_type_p (t1, t2); diff --git a/gcc/gimple.cc b/gcc/gimple.cc index 477315cb1b8..2ddbe1dfc34 100644 --- a/gcc/gimple.cc +++ b/gcc/gimple.cc @@ -2896,15 +2896,7 @@ gimple_builtin_call_types_compatible_p (const gimple *stmt, tree fndecl) return true; tree arg = gimple_call_arg (stmt, i); tree type = TREE_VALUE (targs); - if (!useless_type_conversion_p (type, TREE_TYPE (arg)) - /* char/short integral arguments are promoted to int - by several frontends if targetm.calls.promote_prototypes - is true. Allow such promotion too. */ - && !(INTEGRAL_TYPE_P (type) - && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node) - && targetm.calls.promote_prototypes (TREE_TYPE (fndecl)) - && useless_type_conversion_p (integer_type_node, - TREE_TYPE (arg)))) + if (!useless_type_conversion_p (type, TREE_TYPE (arg))) return false; targs = TREE_CHAIN (targs); } diff --git a/gcc/tree.cc b/gcc/tree.cc index 83a03374a32..c510bcc65dd 100644 --- a/gcc/tree.cc +++ b/gcc/tree.cc @@ -8694,20 +8694,6 @@ tree_builtin_call_types_compatible_p (const_tree call, tree fndecl) && POINTER_TYPE_P (TREE_TYPE (arg)) && tree_nop_conversion_p (type, TREE_TYPE (arg))) continue; - /* char/short integral arguments are promoted to int - by several frontends if targetm.calls.promote_prototypes - is true. Allow such promotion too. */ - if (INTEGRAL_TYPE_P (type) - && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node) - && INTEGRAL_TYPE_P (TREE_TYPE (arg)) - && !TYPE_UNSIGNED (TREE_TYPE (arg)) - && targetm.calls.promote_prototypes (TREE_TYPE (fndecl)) - && (gimple_form - ? useless_type_conversion_p (integer_type_node, - TREE_TYPE (arg)) - : tree_nop_conversion_p (integer_type_node, - TREE_TYPE (arg)))) - continue; return false; } } From patchwork Wed Dec 4 04:49:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 102346 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 575EA3858D3C for ; Wed, 4 Dec 2024 05:10:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 575EA3858D3C Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=iXPc/1Ly X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-qt1-x836.google.com (mail-qt1-x836.google.com [IPv6:2607:f8b0:4864:20::836]) by sourceware.org (Postfix) with ESMTPS id 6D7063858CDB for ; Wed, 4 Dec 2024 05:08:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6D7063858CDB Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6D7063858CDB Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::836 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288895; cv=none; b=uudeB5ZUZvUWZAeLQ7GDmCpvsyD6S1CZ+TQoeWmpZU3TeZasG3AWJj7xWTYDIY2a+IOz/r/W6Hc3D7ZwVEA02Kt6VW8cf0N1O0dsmazgZAJruqwXJI3cms+yoA+E2fU1x2xDsVR2gnlwa3oB4Y/a3QnEUW9SuHMsfUJ0q2C8qow= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288895; c=relaxed/simple; bh=b6jc/qeCC0S/T/JpyUpI009LQTLKUR9ZJ/sWerH1d4I=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=bPJgdfgHBt4PS1thF3dN53swz9ul3mhN0iN2fMLbOtwhPqFNEtMOtvW7W4gQU5QJyVuVeWCSiYgWKCB5vDh6kQv8BbekU3ixuYISmy9RyqjnWkUyOEUFYgSlDO8HDyZAxCVIteEyoW4kHvIaUe9w3WcAAXvHBpyE6axEND6miik= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6D7063858CDB Received: by mail-qt1-x836.google.com with SMTP id d75a77b69052e-46679337c08so31846661cf.3 for ; Tue, 03 Dec 2024 21:08:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733288894; x=1733893694; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ApfjwB2s759Pr+SY0RhRtb30IZxdMx67Pk+jl4WWaO4=; b=iXPc/1LymPGcj1ZWVvhXKWu6L4ZItVAPg11KqivD4/WC9XrkAD3JMRf0tnXMZCZ/tN MM2JrNvKMhtiyBBEkpAxqdUamd54ma6rVLMK7srM0cCiZFBZvSIbA19yIJCAg358N3Da PTLhxUu0/AvKANDjesVEO/7bEljeo18o20RJyZck5Ywan9BMcfIpwrB7hcOPHFrZ2MGl tsWuERzLjBjiPQEmplOP2DKRAa5VA/oFfZjsRYfsVRAiOEhvxZjVEjak5Mq2tBrTTDJe UnTSVemPw1/SixXBKv8TmmPnKxCMjFA+ncg3jcMPd5wlo5hPBHu+W9GEtVMje5pPF+gQ bBOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733288894; x=1733893694; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ApfjwB2s759Pr+SY0RhRtb30IZxdMx67Pk+jl4WWaO4=; b=HoXXuFGQrCOvfoz2JRy87Fp7ZzrHDhUzaAxK8uWu3ZvOVuv7qlK8TVuOjczExeKM/X ELmldDfP0UP2COqwZg8UBBcjEQLmh2/+kXwCebdeu8UrCK1S0cFeZ8NzwnmRozLZ0KKS VLXnjSMzgcqxXt/xDnQu+4t5moRr48jFxkK7X0BHMVJ3gopflmVMJt6d4DCiOdTDYPJ5 2wMzi0xP+AokIRWuCKTRyVIebMi/D3gC5HF31PREkuAXHGomHSIiTuxiAaHU+yjFP4dJ 3rCATyfivyB8zf8tKkJyH2ZrIjgqb/EBtrWLR/e0Insgb1dNrD0Uo8svl3OuKotBVYc8 eYew== X-Gm-Message-State: AOJu0YyAP8jrxpbE4G2MmwjMhY90uCPPEE1U0A5KdbdgfZGmu0doK/DQ sn/cia1BFH6suERJosxNyR45zb7DRHU6PYqDlVynDCKB8RiJKJLf X-Gm-Gg: ASbGncsqIwqi8SRuHxx4V1HZpGl2SgbMxHDRCUpOxIqe0cHA5WrYPed4tMEOVEa2izT fiu8iTeZ7YecaZJbN1b0aCMiWXRjxXHzuCzirfjGygpmMI8e5Z4RPZtu+DvLtHbD9GzfCOTQzsD /5HQ6YkHVYSIMTVdCmVVS+eD94Tqg5SKTN/HWElY2kbzNSgFXsXlrUwytKweFts78NgiB6xdzFE mXSv9EmWfGDv6RZ+RHT3oex7XTCVJy4+ImCmnD3EXF1ZbwuP7SvghGZLl3yV8u//QhjLdishYUT Y6JnzLsz7mcdNa6xEsOV3YCsptDag7Qu1+Z2/Q== X-Google-Smtp-Source: AGHT+IEKfZQ7z9vOsehOHfxdI/ynJcsJBtM9ZPfdTKjZVS7iSmf2nmlbz4w69fS5/Y9tuzczG0SF2A== X-Received: by 2002:a05:622a:1984:b0:466:948e:beec with SMTP id d75a77b69052e-4670c38fb9emr90173041cf.39.1733288894090; Tue, 03 Dec 2024 21:08:14 -0800 (PST) Received: from gnu-tgl-3.localdomain ([172.58.160.52]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-466c3fa58fesm69788441cf.0.2024.12.03.21.08.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Dec 2024 21:08:13 -0800 (PST) Received: from gnu-tgl-3.. (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id B45F0C05A5; Wed, 04 Dec 2024 12:49:51 +0800 (CST) From: "H.J. Lu" To: gcc-patches@gcc.gnu.org Cc: richard.guenther@gmail.com, jeffreyalaw@gmail.com, jakub@redhat.com, richard.sandiford@arm.com, matz@suse.de Subject: [PATCH v5 3/7] Use incoming small integer argument type if possible Date: Wed, 4 Dec 2024 12:49:47 +0800 Message-ID: <20241204044951.509713-4-hjl.tools@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241204044951.509713-1-hjl.tools@gmail.com> References: <20241204044951.509713-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3019.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org For targets, like x86, which define TARGET_PROMOTE_PROTOTYPES to return true, all integer arguments smaller than int are passed as int: [hjl@gnu-tgl-3 pr14907]$ cat x.c extern int baz (char c1); int foo (char c1) { return baz (c1); } [hjl@gnu-tgl-3 pr14907]$ gcc -S -O2 -m32 x.c [hjl@gnu-tgl-3 pr14907]$ cat x.s .file "x.c" .text .p2align 4 .globl foo .type foo, @function foo: .LFB0: .cfi_startproc movsbl 4(%esp), %eax movl %eax, 4(%esp) jmp baz .cfi_endproc .LFE0: .size foo, .-foo .ident "GCC: (GNU) 14.2.1 20240912 (Red Hat 14.2.1-3)" .section .note.GNU-stack,"",@progbits [hjl@gnu-tgl-3 pr14907]$ But integer promotion: movsbl 4(%esp), %eax movl %eax, 4(%esp) isn't necessary if incoming arguments and outgoing arguments are the same. Use the incoming small integer argument type for the incoming argument if the incoming small integer argument is copied to the outgoing argument without any modification. gcc/ PR middle-end/14907 * calls.cc: (get_small_int_arg_type): New function. (initialize_argument_information): Call get_small_int_arg_type to get the small integer argument type. gcc/testsuite/ PR middle-end/14907 * gcc.target/i386/pr14907-1.c: New test. * gcc.target/i386/pr14907-2.c: Likewise. * gcc.target/i386/pr14907-3.c: Likewise. * gcc.target/i386/pr14907-4.c: Likewise. * gcc.target/i386/pr14907-5.c: Likewise. * gcc.target/i386/pr14907-6.c: Likewise. * gcc.target/i386/pr14907-7.c: Likewise. * gcc.target/i386/pr14907-8.c: Likewise. * gcc.target/i386/pr14907-9.c: Likewise. * gcc.target/i386/pr14907-10.c: Likewise. * gcc.target/i386/pr14907-11.c: Likewise. * gcc.target/i386/pr14907-12.c: Likewise. * gcc.target/i386/pr14907-13.c: Likewise. * gcc.target/i386/pr14907-14.c: Likewise. * gcc.target/i386/pr14907-15.c: Likewise. * gcc.target/i386/pr14907-16.c: Likewise. Signed-off-by: H.J. Lu --- gcc/calls.cc | 29 +++++++++++++++++++++- gcc/testsuite/gcc.target/i386/pr14907-1.c | 21 ++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-10.c | 23 +++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-11.c | 12 +++++++++ gcc/testsuite/gcc.target/i386/pr14907-12.c | 17 +++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-13.c | 12 +++++++++ gcc/testsuite/gcc.target/i386/pr14907-14.c | 17 +++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-15.c | 26 +++++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-16.c | 24 ++++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-2.c | 21 ++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-3.c | 21 ++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-4.c | 21 ++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-5.c | 21 ++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-6.c | 21 ++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-7.c | 22 ++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-8.c | 23 +++++++++++++++++ gcc/testsuite/gcc.target/i386/pr14907-9.c | 22 ++++++++++++++++ 17 files changed, 352 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-1.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-10.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-11.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-12.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-13.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-14.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-15.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-16.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-2.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-3.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-4.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-5.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-6.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-7.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-8.c create mode 100644 gcc/testsuite/gcc.target/i386/pr14907-9.c diff --git a/gcc/calls.cc b/gcc/calls.cc index 78ead6fd4ed..d0f6f2bdfd6 100644 --- a/gcc/calls.cc +++ b/gcc/calls.cc @@ -1280,6 +1280,33 @@ maybe_complain_about_tail_call (tree call_expr, const char *reason) CALL_EXPR_MUST_TAIL_CALL (call_expr) = 0; } +/* Return the original integer type if ARG is copied from the incoming + argument. Otherwise return integer_type_node. */ + +static tree +get_small_int_arg_type (tree arg) +{ + if (TREE_CODE (arg) != SSA_NAME) + return integer_type_node; + + if (!SSA_NAME_IS_DEFAULT_DEF (arg)) + return integer_type_node; + + tree var = SSA_NAME_VAR (arg); + if (TREE_CODE (var) != PARM_DECL) + return integer_type_node; + if (TYPE_MODE (TREE_TYPE (arg)) != TYPE_MODE (DECL_ARG_TYPE (var))) + return integer_type_node; + + /* Use the incoming small integer argument type for the outgoing + argument. If callee is a global function, we always properly + extend the incoming small integer arguments in callee. If + callee is a local function, since DECL_ARG_TYPE has the original + small integer type, we will extend the incoming small integer + arguments in callee if needed. */ + return TREE_TYPE (arg); +} + /* Fill in ARGS_SIZE and ARGS array based on the parameters found in CALL_EXPR EXP. @@ -1391,7 +1418,7 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED, else if (promote_p && INTEGRAL_TYPE_P (type) && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)) - type = integer_type_node; + type = get_small_int_arg_type (args[i].tree_value); /* If TYPE is a transparent union or record, pass things the way we would pass the first field of the union or record. We have diff --git a/gcc/testsuite/gcc.target/i386/pr14907-1.c b/gcc/testsuite/gcc.target/i386/pr14907-1.c new file mode 100644 index 00000000000..231819ed675 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-1.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "x86*" "" "" { target *-*-linux* *-*-gnu* } {^\t?\.} } } */ + +/* +x86*foo: +x86*.LFB0: +x86* .cfi_startproc +x86* jmp baz +x86* .cfi_endproc +x86*... +*/ + +extern int baz (char); + +int +foo (char c1) +{ + return baz (c1); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-10.c b/gcc/testsuite/gcc.target/i386/pr14907-10.c new file mode 100644 index 00000000000..099c4dc81d1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-10.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "ia32*" "" "" { target { { *-*-linux* *-*-gnu* } && ia32 } } {^\t?\.} } } */ + +/* +ia32*foo: +ia32*.LFB0: +ia32* .cfi_startproc +ia32* movsbl 4\(%esp\), %eax +ia32* movl %eax, 4\(%esp\) +ia32* jmp baz +ia32* .cfi_endproc +ia32*... +*/ + +extern int baz (short); + +int +foo (char c1) +{ + return baz (c1); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-11.c b/gcc/testsuite/gcc.target/i386/pr14907-11.c new file mode 100644 index 00000000000..12ac165c298 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-11.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +extern int baz (char, char); + +int +foo (char c1, char c2) +{ + return baz (c1, c2) + 1; +} + +/* { dg-final { scan-assembler-not "movsbl" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr14907-12.c b/gcc/testsuite/gcc.target/i386/pr14907-12.c new file mode 100644 index 00000000000..6cda72ef3a2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-12.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +struct s +{ + char c[20]; +}; + +extern struct s baz (char, char); + +struct s +foo (char c1, char c2) +{ + return baz (c1, c2); +} + +/* { dg-final { scan-assembler-not "movsbl" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr14907-13.c b/gcc/testsuite/gcc.target/i386/pr14907-13.c new file mode 100644 index 00000000000..b4130fdcb57 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-13.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +extern int baz (char, char, ...); + +int +foo (char c1, char c2) +{ + return baz (c1, c2, 0, 0, 0, 1); +} + +/* { dg-final { scan-assembler-not "movsbl" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr14907-14.c b/gcc/testsuite/gcc.target/i386/pr14907-14.c new file mode 100644 index 00000000000..9b8d7a7607d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-14.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +struct s +{ + char c[20]; +}; + +extern struct s baz (char, char, ...); + +struct s +foo (char c1, char c2) +{ + return baz (c1, c2, 0, 1); +} + +/* { dg-final { scan-assembler-not "movsbl" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr14907-15.c b/gcc/testsuite/gcc.target/i386/pr14907-15.c new file mode 100644 index 00000000000..08bc4ea9ac8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-15.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "x64*" "" "" { target { { *-*-linux* *-*-gnu* } && { ! ia32 } } } {^\t?\.} } } */ + +/* +x64*foo: +x64*.LFB1: +x64* .cfi_startproc +x64* jmp baz +x64* .cfi_endproc +x64*... +*/ + + __attribute__ ((noinline)) +static int +baz (char c1) +{ + return c1; +} + +int +foo (char c1) +{ + return baz (c1); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-16.c b/gcc/testsuite/gcc.target/i386/pr14907-16.c new file mode 100644 index 00000000000..48c255ffb20 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-16.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "x64*" "" "" { target { { *-*-linux* *-*-gnu* } && { ! ia32 } } } {^\t?\.} } } */ + +/* +x64*foo: +x64*.LFB0: +x64* .cfi_startproc +x64* andl \$1, %edi +x64* jmp baz +x64* .cfi_endproc +x64*... +*/ + +#include + +extern int baz (bool); + +int +foo (int c1) +{ + return baz (c1 & 0x1); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-2.c b/gcc/testsuite/gcc.target/i386/pr14907-2.c new file mode 100644 index 00000000000..5da7b029279 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-2.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "x86*" "" "" { target *-*-linux* *-*-gnu* } {^\t?\.} } } */ + +/* +x86*foo: +x86*.LFB0: +x86* .cfi_startproc +x86* jmp baz +x86* .cfi_endproc +x86*... +*/ + +extern int baz (int, int, int, int, int, int, char, char); + +int +foo (int a1, int a2, int a3, int a4, int a5, int a6, char c1, char c2) +{ + return baz (a1, a2, a3, a4, a5, a6, c1, c2); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-3.c b/gcc/testsuite/gcc.target/i386/pr14907-3.c new file mode 100644 index 00000000000..a8fb13f28f8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-3.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "x86*" "" "" { target *-*-linux* *-*-gnu* } {^\t?\.} } } */ + +/* +x86*c1: +x86*.LFB0: +x86* .cfi_startproc +x86* jmp c2 +x86* .cfi_endproc +x86*... +*/ + +extern char c2 (char); + +char +c1 (char c) +{ + return c2 (c); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-4.c b/gcc/testsuite/gcc.target/i386/pr14907-4.c new file mode 100644 index 00000000000..b5fb92fefcc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-4.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "x86*" "" "" { target *-*-linux* *-*-gnu* } {^\t?\.} } } */ + +/* +x86*foo: +x86*.LFB0: +x86* .cfi_startproc +x86* jmp baz +x86* .cfi_endproc +x86*... +*/ + +extern int baz (short); + +int +foo (short c1) +{ + return baz (c1); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-5.c b/gcc/testsuite/gcc.target/i386/pr14907-5.c new file mode 100644 index 00000000000..d9abb5c8cfb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-5.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "x86*" "" "" { target *-*-linux* *-*-gnu* } {^\t?\.} } } */ + +/* +x86*foo: +x86*.LFB0: +x86* .cfi_startproc +x86* jmp baz +x86* .cfi_endproc +x86*... +*/ + +extern int baz (int, int, int, int, int, int, short, short); + +int +foo (int a1, int a2, int a3, int a4, int a5, int a6, short c1, short c2) +{ + return baz (a1, a2, a3, a4, a5, a6, c1, c2); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-6.c b/gcc/testsuite/gcc.target/i386/pr14907-6.c new file mode 100644 index 00000000000..b6d0183656a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-6.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "x86*" "" "" { target *-*-linux* *-*-gnu* } {^\t?\.} } } */ + +/* +x86*c1: +x86*.LFB0: +x86* .cfi_startproc +x86* jmp c2 +x86* .cfi_endproc +x86*... +*/ + +extern short c2 (short); + +short +c1 (short c) +{ + return c2 (c); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-7.c b/gcc/testsuite/gcc.target/i386/pr14907-7.c new file mode 100644 index 00000000000..fbf511f691e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-7.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "x64*" "" "" { target { { *-*-linux* *-*-gnu* } && { ! ia32 } } } {^\t?\.} } } */ + +/* +x64*foo: +x64*.LFB0: +x64* .cfi_startproc +x64* movsbl %dil, %edi +x64* jmp baz +x64* .cfi_endproc +x64*... +*/ + +extern int baz (int); + +int +foo (char c1) +{ + return baz (c1); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-8.c b/gcc/testsuite/gcc.target/i386/pr14907-8.c new file mode 100644 index 00000000000..7d2611398c0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-8.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "ia32*" "" "" { target { { *-*-linux* *-*-gnu* } && ia32 } } {^\t?\.} } } */ + +/* +ia32*foo: +ia32*.LFB0: +ia32* .cfi_startproc +ia32* movsbl 4\(%esp\), %eax +ia32* movl %eax, 4\(%esp\) +ia32* jmp baz +ia32* .cfi_endproc +ia32*... +*/ + +extern int baz (int); + +int +foo (char c1) +{ + return baz (c1); +} diff --git a/gcc/testsuite/gcc.target/i386/pr14907-9.c b/gcc/testsuite/gcc.target/i386/pr14907-9.c new file mode 100644 index 00000000000..a22383694bf --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr14907-9.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g0" } */ +/* Keep labels and directives ('.cfi_startproc', '.cfi_endproc'). */ +/* { dg-final { check-function-bodies "x64*" "" "" { target { { *-*-linux* *-*-gnu* } && { ! ia32 } } } {^\t?\.} } } */ + +/* +x64*foo: +x64*.LFB0: +x64* .cfi_startproc +x64* movsbl %dil, %edi +x64* jmp baz +x64* .cfi_endproc +x64*... +*/ + +extern int baz (short); + +int +foo (char c1) +{ + return baz (c1); +} From patchwork Wed Dec 4 04:49:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 102350 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 145053858C60 for ; Wed, 4 Dec 2024 05:16:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 145053858C60 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=EEGz4thq X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-qt1-x833.google.com (mail-qt1-x833.google.com [IPv6:2607:f8b0:4864:20::833]) by sourceware.org (Postfix) with ESMTPS id E25463858CDA for ; Wed, 4 Dec 2024 05:08:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E25463858CDA Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E25463858CDA Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::833 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288895; cv=none; b=XZlKEJfbcmvOhS+3lTveZ6QDxO9Q4UJ6pXM1zNRTOgohTlaQYI0JGAORVHTt6kTMhYt2v/tci7fkPOlQzHdhhUCNvyB70cnyk3SEJ/yQK4MBv4pjzvA9LIyEPJeg2lvSicmChcNwlEcKOWKr819iIsTYpvKU8Ap3hduK6/j8+oU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288895; c=relaxed/simple; bh=BtI0jYeAv3glVaFlZUFBbSQlaXXJC+gCvxTjLJ/lO7Y=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=DLV0DHdtWIu/VBACzJ/fGqI8CxUbE4qbCH0NB2gLNHpYrZ/LVnpD9RzOOZnEEd3SyEpA136hKSz+zbQ4hjlyyCh/VP/9W7BatmomTA8mD1kP1JVjYPPYMw0SPFg9Z3W9PWeZ5M8EKE4WD+VbqcJLyPE9jAveTGA8sfEC2Hf+dNc= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E25463858CDA Received: by mail-qt1-x833.google.com with SMTP id d75a77b69052e-4668486dec2so46625191cf.3 for ; Tue, 03 Dec 2024 21:08:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733288894; x=1733893694; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OVXxM3iHd4CA8fTo5B5TQsY0LjDBzx5cBkcXRsR2wd8=; b=EEGz4thqpeJZLR6iew8pdjlbOC5gS7izUVBCIt0gATwZEqdMiEbs1yHUfZSJmDBBiw riivO+u3mEzkn70p5oGqZiGItV36rii8mwEJmAw8cHEk2iL42IEknn5pvcO9Qg/vi5lH gO48uwrSG+eC/q5kqCyI3nGX1JqKQJq0h83k308r2jpJnJTPFrlcHHyqSnxwlgjowYPg qdU4RA32yGJjK4J9/Frw5c7nzSWgvSR4NAE1EVqzJZ36bfU+gjq6vjPmYhwdbO1Qk+MN d4i4Im1wAjd59d+huXf3y3HiblqLSWUvQiSNHVJSW4cRuNeMLt+9IchibbOp/juFlxSE 1dkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733288894; x=1733893694; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OVXxM3iHd4CA8fTo5B5TQsY0LjDBzx5cBkcXRsR2wd8=; b=iIyy+9+HABFfhgzpQ9E6VoF8T0V6Y4MO2UZ0iNzmUL+K/qYBKtXGL+TaUfQuf0iPYD 1ElX+oWTQZYz4dInvJb4D99E5s4MwFRflcqOQWkSZpETt+320Ry441++3iP1spiqUEPM Q5wwUX5ges83KAsy7G1gEr0I005L6UNTzKqEUj+llWagHARSVy9/gPXF5F5n+ksGqmrD Tnu0IF9zZVL0t83hjCD66PeGpn9sBij71oUYeNBMm5/2vxmk6Ij2wip7ArZmDQv+zVkB GVWjbOFX2gSojnw+KB/SDPCLcNLAFw/2r7uHz1QRTqw4o2PWqoGxCEAg6Q+G+sBhNYaR d4Pg== X-Gm-Message-State: AOJu0YyMmOnwqo7BIrH8exlMN3V5lYMZRfPIcsKLDOsBRe4n3Hgci5dQ J2Pbnm0SbNCKDK9scCc5QNQ7KhlnVv+Q5n9k1iOatbXVIepvrzEF X-Gm-Gg: ASbGncvmXY/Fi2FSZbb8y2x1EG5YaUfKdGJRjX0P2SvQO0+Su5b4WjY5WDUASVdD0br 8zopXOwdC349TsYP786C1Hv7Wd2h+rRbUd5YntYHhuyrIlw/FHpmzahcO6qEALIqS6weW2ugeY0 dvme8vrA8GxMKm8edjfCnpqVxeJdRoEbVRKmZ7+uS5KQBxgtniHLQ1A/7W+ffMH5HthrfB6jcdJ M8lpBb8UUZPlIMUZW5TlfSWIo9PXxXSDP80DThrhBu5SyjSX5T44zbP4Eq54DxrnsomZ6T99T9k sT+DnMynmkOHkLCDcKasNgIiPqt4aP4DLCTiQw== X-Google-Smtp-Source: AGHT+IHiowvNOCCA+dgA81fbt4AKrN8/KtRvOF/z5kvPqGJrawdDsKHXN5XAtsHOgWA12VTTwmuwFw== X-Received: by 2002:ac8:7f0f:0:b0:466:ac58:df71 with SMTP id d75a77b69052e-4670c072e5dmr70418161cf.7.1733288893870; Tue, 03 Dec 2024 21:08:13 -0800 (PST) Received: from gnu-tgl-3.localdomain ([172.58.160.52]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-466c42319aasm69692751cf.72.2024.12.03.21.08.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Dec 2024 21:08:13 -0800 (PST) Received: from gnu-tgl-3.. (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id BF0BBC06D9; Wed, 04 Dec 2024 12:49:51 +0800 (CST) From: "H.J. Lu" To: gcc-patches@gcc.gnu.org Cc: richard.guenther@gmail.com, jeffreyalaw@gmail.com, jakub@redhat.com, richard.sandiford@arm.com, matz@suse.de Subject: [PATCH v5 4/7] i386: Adjust apx-ndd.c for frontend promotion removal Date: Wed, 4 Dec 2024 12:49:48 +0800 Message-ID: <20241204044951.509713-5-hjl.tools@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241204044951.509713-1-hjl.tools@gmail.com> References: <20241204044951.509713-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3019.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org Since the C frontend no longer promotes integer argument smaller than int, the apx-ndd.c codgen is slightly different: apx-ndd.s (original) 2024-11-10 06:07:09.894876973 +0800 apx-ndd.s (updated) 2024-11-10 06:06:59.371860565 +0800 @@ -17,7 +17,7 @@ foo_add_char: foo1_add_char: .LFB1: .cfi_startproc - leal (%rsi,%rdi), %eax + leal (%rdi,%rsi), %eax ret .cfi_endproc .LFE1: @@ -50,7 +50,7 @@ foo_add_short: foo1_add_short: .LFB4: .cfi_startproc - leal (%rsi,%rdi), %eax + leal (%rdi,%rsi), %eax ret .cfi_endproc .LFE4: @@ -413,7 +413,7 @@ foo_and_char: foo1_and_char: .LFB37: .cfi_startproc - andl %edi, %esi, %eax + andl %esi, %edi, %eax ret .cfi_endproc .LFE37: @@ -435,7 +435,7 @@ foo_and_short: foo1_and_short: .LFB39: .cfi_startproc - andl %edi, %esi, %eax + andl %esi, %edi, %eax ret .cfi_endproc .LFE39: @@ -501,7 +501,7 @@ foo_or_char: foo1_or_char: .LFB45: .cfi_startproc - orl %edi, %esi, %eax + orl %esi, %edi, %eax ret .cfi_endproc .LFE45: @@ -523,7 +523,7 @@ foo_or_short: foo1_or_short: .LFB47: .cfi_startproc - orl %edi, %esi, %eax + orl %esi, %edi, %eax ret .cfi_endproc .LFE47: @@ -589,7 +589,7 @@ foo_xor_char: foo1_xor_char: .LFB53: .cfi_startproc - xorl %edi, %esi, %eax + xorl %esi, %edi, %eax ret .cfi_endproc .LFE53: @@ -611,7 +611,7 @@ foo_xor_short: foo1_xor_short: .LFB55: .cfi_startproc - xorl %edi, %esi, %eax + xorl %esi, %edi, %eax ret .cfi_endproc .LFE55: @@ -1018,7 +1018,7 @@ foo4_rol_uint64_t: foo1_imul_short: .LFB92: .cfi_startproc - imull %edi, %esi, %eax + imull %esi, %edi, %eax ret .cfi_endproc .LFE92: Adjust the assembler scans. PR middle-end/14907 * gcc.target/i386/apx-ndd.c: Adjusted. Signed-off-by: H.J. Lu --- gcc/testsuite/gcc.target/i386/apx-ndd.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/gcc/testsuite/gcc.target/i386/apx-ndd.c b/gcc/testsuite/gcc.target/i386/apx-ndd.c index ce77630a47c..2b2f4fc4b0f 100644 --- a/gcc/testsuite/gcc.target/i386/apx-ndd.c +++ b/gcc/testsuite/gcc.target/i386/apx-ndd.c @@ -188,16 +188,13 @@ FOO2 (int64_t, imul, *) /* { dg-final { scan-assembler-times "not(?:l|w|q)\[^\n\r]%(?:|r|e)di, %(?:|r|e)ax" 4 } } */ /* { dg-final { scan-assembler-times "andb\[^\n\r]*1, \\(%(?:r|e)di\\), %al" 1 } } */ /* { dg-final { scan-assembler-times "and(?:l|w|q)\[^\n\r]*1, \\(%(?:r|e)di\\), %(?:|r|e)ax" 3 } } */ -/* { dg-final { scan-assembler-times "and(?:l|w|q)\[^\n\r]%(?:|r|e)di, %(?:|r|e)si, %(?:|r|e)ax" 2 } } */ -/* { dg-final { scan-assembler-times "and(?:l|w|q)\[^\n\r]%(?:|r|e)si, %(?:|r|e)di, %(?:|r|e)ax" 2 } } */ +/* { dg-final { scan-assembler-times "and(?:l|w|q)\[^\n\r]%(?:|r|e)si, %(?:|r|e)di, %(?:|r|e)ax" 4 } } */ /* { dg-final { scan-assembler-times "orb\[^\n\r]*1, \\(%(?:r|e)di\\), %al" 2} } */ /* { dg-final { scan-assembler-times "or(?:l|w|q)\[^\n\r]*1, \\(%(?:r|e)di\\), %(?:|r|e)ax" 6 } } */ -/* { dg-final { scan-assembler-times "or(?:l|w|q)\[^\n\r]%(?:|r|e)di, %(?:|r|e)si, %(?:|r|e)ax" 4 } } */ -/* { dg-final { scan-assembler-times "or(?:l|w|q)\[^\n\r]%(?:|r|e)si, %(?:|r|e)di, %(?:|r|e)ax" 4 } } */ +/* { dg-final { scan-assembler-times "or(?:l|w|q)\[^\n\r]%(?:|r|e)si, %(?:|r|e)di, %(?:|r|e)ax" 8 } } */ /* { dg-final { scan-assembler-times "xorb\[^\n\r]*1, \\(%(?:r|e)di\\), %al" 1 } } */ /* { dg-final { scan-assembler-times "xor(?:l|w|q)\[^\n\r]*1, \\(%(?:r|e)di\\), %(?:|r|e)ax" 3 } } */ -/* { dg-final { scan-assembler-times "xor(?:l|w|q)\[^\n\r]%(?:|r|e)di, %(?:|r|e)si, %(?:|r|e)ax" 2 } } */ -/* { dg-final { scan-assembler-times "xor(?:l|w|q)\[^\n\r]%(?:|r|e)si, %(?:|r|e)di, %(?:|r|e)ax" 2 } } */ +/* { dg-final { scan-assembler-times "xor(?:l|w|q)\[^\n\r]%(?:|r|e)si, %(?:|r|e)di, %(?:|r|e)ax" 4 } } */ /* { dg-final { scan-assembler-times "sal(?:b|l|w|q)\[^\n\r]*1, \\(%(?:r|e)di\\), %(?:|r|e)a(?:x|l)" 4 } } */ /* { dg-final { scan-assembler-times "sal(?:l|w|q)\[^\n\r]*7, %(?:|r|e)di, %(?:|r|e)ax" 4 } } */ /* { dg-final { scan-assembler-times "sar(?:b|l|w|q)\[^\n\r]*1, \\(%(?:r|e)di\\), %(?:|r|e)a(?:x|l)" 4 } } */ From patchwork Wed Dec 4 04:49:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 102352 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 1245B3858D26 for ; Wed, 4 Dec 2024 05:18:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1245B3858D26 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=Ft0DJ8O6 X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-qv1-xf34.google.com (mail-qv1-xf34.google.com [IPv6:2607:f8b0:4864:20::f34]) by sourceware.org (Postfix) with ESMTPS id E24AD3858D21 for ; Wed, 4 Dec 2024 05:08:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E24AD3858D21 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E24AD3858D21 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::f34 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288895; cv=none; b=ASGVWh0mYT/dNJ35ggF1VLCESbwwtDCOulb1+WKqLGdx1jDqAgyQOZAbfly7iNyEFK4Wy0822hjhQHYdH0LQEZLfRwFefRRuHeUAEwddi8+PRsHpSJotJxJT5pDF5NRGWEz3uT1bPG2x13Y43PTaIYyqy0xSRWiKxyTSjC7qCxk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288895; c=relaxed/simple; bh=9FEQnFep+B+RcQMFJAzteHnEV7FFyOaYmheLUYIdAw8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ZuvijdnAao2jEUUmZgA6+P7PJtoBrBSpY3a6JEK/fwIk9QXPMsUlU6r5R+TlDLMPRwBKcxp2YZhNQl3nzkoIMC3XYMqni1wOr02EpIoEMlYZVS43TBq2tl2L+osqOV+4Sb+/JdwiUg9F1vOufT0V0aLG4Q/x2jQE5QiCkwd71KY= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E24AD3858D21 Received: by mail-qv1-xf34.google.com with SMTP id 6a1803df08f44-6d885705595so38842056d6.0 for ; Tue, 03 Dec 2024 21:08:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733288894; x=1733893694; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NuBjiAPHEeqQ/yMCh5ulB6RGBCZsAD5Jo+djukrmO30=; b=Ft0DJ8O66xS5ps0taPWpPeGpIHGGDjTNl5JIgW/WnwHcFD89gH0Fdu6dJIPjfivvOK /I1OBL05CFZPRyo8xeeQmXMSqaacN+OkDBQ4FTw3M7ofaoFMvINJ/JzT5PcYMXrwAlIl 5Z6HEh8tT95qOV57lKgYU+asYInMbZyQZL5YcKF5XYwRuR/8RMgJdt4HBU7XeTeWnmp8 98Zvd10eaLFJEQin/P421GGt9FEZ0wFhIokGq71R6svhX3dlpT9vodyh0HT+ir1MtXf2 +dIbmzyIH41HPl31mqG2vFP3a8/zSndwExHbE/jdGbdlG/Y7TbthIyey8DlHclEwLDLK Gw/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733288894; x=1733893694; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NuBjiAPHEeqQ/yMCh5ulB6RGBCZsAD5Jo+djukrmO30=; b=Vnd+YY58+N3p4TeAMWY8MbhSPQMIM9W0OfsdIzRDgfCeikWsYkd05GLyk0t3IpB87J jP2YUYJjerzc3as7aVFH6riuK15Xx0PquOwYflaPFdvvjApamFEsSgFO9gJlIINWO6xi TcQoAYG+8rcftbtFb45tjqzPpEJIT3E66UccMt1Xj+qxDp8uzaXEiyVM3xK3UAcui3eO KytXIqPQhva/+CEmNlghfKe2stWdTNtJg1fmF+Gvs60vNEVdMQZVZLGyboYCWRGX5MZT xWo9c7wNry07IrcSHmB2FbGrwFAzOc4iXwVJTAVfC9aEJk6oEZj/qhN+qLRcbq9w3FNb xhAQ== X-Gm-Message-State: AOJu0YyELr8CUqbY6W8mnavJgPubwLVF9sJ4oePlav7XqDv4Rl8cN9uj tYJpP1d7TTp9XzUy/2kzGs3gix6F2VQ7LN2Cqx/1me7rX5areZ5E X-Gm-Gg: ASbGncuNOn3cdq8OcKcEaJ8Gi4X/c9ywXz3JAIbnVlg+jrGUmlkJg7iq2rO/esIwYEH mPyTGkq/kmWv3MLZVZck+F0vdGqKLUN9Zp2SPGE+tjuLvqSX8yknG5th18GBS+hu/SKas1ig+VT zUTBl+9a8aA2nLqmEgj1NUTdeTRCrU6yy9ST+BJO2FXcV98plotJGAVb3AocwXozMRl9DKvpbun IGkVTtBlllSqsc9vHhqatxTblPS1fKeoIdsv5krknTUB4ErPA7XyjqCKqsTVMINID5bRRfBYga7 pH99jLS0FjAnFyTNv95ElEQJRkokSFcjxDMG+Q== X-Google-Smtp-Source: AGHT+IHSnstqPItYp2ygGwUSeFq1kwj3RgqLJR3FqI8hqAdPfV59/vbjME/LkWBWm7Wh3mZy0SPxpQ== X-Received: by 2002:ad4:5f85:0:b0:6d8:a0c8:e467 with SMTP id 6a1803df08f44-6d8b733043dmr67677486d6.13.1733288893694; Tue, 03 Dec 2024 21:08:13 -0800 (PST) Received: from gnu-tgl-3.localdomain ([172.58.160.52]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6d8b2209244sm22395036d6.69.2024.12.03.21.08.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Dec 2024 21:08:13 -0800 (PST) Received: from gnu-tgl-3.. (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id C9DFAC0725; Wed, 04 Dec 2024 12:49:51 +0800 (CST) From: "H.J. Lu" To: gcc-patches@gcc.gnu.org Cc: richard.guenther@gmail.com, jeffreyalaw@gmail.com, jakub@redhat.com, richard.sandiford@arm.com, matz@suse.de Subject: [PATCH v5 5/7] vect-simd-clone-1[6-8][cd].c: Expect in-branch clones for x86 Date: Wed, 4 Dec 2024 12:49:49 +0800 Message-ID: <20241204044951.509713-6-hjl.tools@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241204044951.509713-1-hjl.tools@gmail.com> References: <20241204044951.509713-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3019.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org Since the C frontend no longer promotes char and short arguments, expect in-branch clones for x86. PR middle-end/14907 * gcc.dg/vect/vect-simd-clone-16c.c: Expect in-branch clones for x86. * gcc.dg/vect/vect-simd-clone-16d.c: Likewise. * gcc.dg/vect/vect-simd-clone-17c.c: Likewise. * gcc.dg/vect/vect-simd-clone-17d.c: Likewise. * gcc.dg/vect/vect-simd-clone-18c.c: Likewise. * gcc.dg/vect/vect-simd-clone-18d.c: Likewise. Signed-off-by: H.J. Lu --- gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c | 5 +---- gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c | 4 +--- gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c | 5 +---- gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c | 5 +---- gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c | 5 +---- gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c | 5 +---- 6 files changed, 6 insertions(+), 23 deletions(-) diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c index 4fdf25d06c6..628d4575673 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c +++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c @@ -7,11 +7,8 @@ /* Ensure the the in-branch simd clones are used on targets that support them. Some targets use another call for the epilogue loops. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */ +/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { !aarch64*-*-* } } } } */ /* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */ -/* x86_64 fails to use in-branch clones for TYPE=short. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */ - /* The LTO test produces two dump files and we scan the wrong one. */ /* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c index 55d3c0afae5..d1f85b0703e 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c +++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c @@ -7,11 +7,9 @@ /* Ensure the the in-branch simd clones are used on targets that support them. Some targets use another call for the epilogue loops. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */ +/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { !aarch64*-*-* } } } } */ /* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */ -/* x86_64 fails to use in-branch clones for TYPE=char. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */ /* The LTO test produces two dump files and we scan the wrong one. */ /* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c index 6afa2fd595e..6148abee806 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c +++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c @@ -7,11 +7,8 @@ /* Ensure the the in-branch simd clones are used on targets that support them. Some targets use another call for the epilogue loops. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */ +/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { !aarch64*-*-* } } } } */ /* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */ -/* x86_64 fails to use in-branch clones for TYPE=short. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */ - /* The LTO test produces two dump files and we scan the wrong one. */ /* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c index 56177880b6b..63687984598 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c +++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c @@ -7,11 +7,8 @@ /* Ensure the the in-branch simd clones are used on targets that support them. Some targets use another call for the epilogue loops. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */ +/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { !aarch64*-*-* } } } } */ /* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */ -/* x86_64 fails to use in-branch clones for TYPE=char. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */ - /* The LTO test produces two dump files and we scan the wrong one. */ /* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c index e56e6bca4a0..ee049e7d003 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c +++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c @@ -7,11 +7,8 @@ /* Ensure the the in-branch simd clones are used on targets that support them. Some targets use another call for the epilogue loops. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */ +/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { !aarch64*-*-* } } } } */ /* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */ -/* x86_64 fails to use in-branch clones for TYPE=short. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */ - /* The LTO test produces two dump files and we scan the wrong one. */ /* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c index 87e7379733e..bad9bcb731f 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c +++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c @@ -7,11 +7,8 @@ /* Ensure the the in-branch simd clones are used on targets that support them. Some targets use another call for the epilogue loops. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { ! { x86_64-*-* || { i?86-*-* || aarch64*-*-* } } } } } } */ +/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 2 "vect" { target { !aarch64*-*-* } } } } */ /* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 3 "vect" { target { aarch64*-*-* } } } } */ -/* x86_64 fails to use in-branch clones for TYPE=char. */ -/* { dg-final { scan-tree-dump-times {[\n\r] [^\n]* = foo\.simdclone} 0 "vect" { target x86_64-*-* i?86-*-* } } } */ - /* The LTO test produces two dump files and we scan the wrong one. */ /* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */ From patchwork Wed Dec 4 04:49:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 102347 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 441743858C42 for ; Wed, 4 Dec 2024 05:10:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 441743858C42 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=BvYIQj8J X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-qv1-xf30.google.com (mail-qv1-xf30.google.com [IPv6:2607:f8b0:4864:20::f30]) by sourceware.org (Postfix) with ESMTPS id C1F2F3858D33 for ; Wed, 4 Dec 2024 05:08:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C1F2F3858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C1F2F3858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::f30 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288891; cv=none; b=hE0ZulJU95i0s9yV55hiCF+vsmJlaeSxfpFmIpSOGK4RJ0VcIuAbO/+5iq6P25sZiBZAHNAnFHNUsad/sVlDjCYfBpNrd4xwWHNzK8CHdHT4AzbNw5CK44YEkf1Cl3fm+eWsJ/LdgdJ1kHTzFqOU/6Mpe+xfjbGCf3mier/F+14= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288891; c=relaxed/simple; bh=nlKT52XRVH4MGNPU7DWpLOuTDzZ450s6AF3NhiKU8W0=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=PMmb+ZMAOwKcCptOV3kqDYwYCT48+7LMtJfIgHo3uop8mNdqxNIOPnzDXl1eQLU4bx12FRnFOjTFLO1i2dPLAzaHMYI4wHhiWBg7RRV/r405FfaW+SddDAmXyRsUgRDlbn+UbzGdFx6I2RpEGpDr6oJNSsutVRAoARKbrItJ6RM= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C1F2F3858D33 Received: by mail-qv1-xf30.google.com with SMTP id 6a1803df08f44-6d87fea84cdso43218046d6.2 for ; Tue, 03 Dec 2024 21:08:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733288890; x=1733893690; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/zqDy8hJs5sntNDM6IlgM3sqjiFFHXBWErekLn6DYoo=; b=BvYIQj8JjaUL0ulDX2VCVlfLnY3d/sto2+m2pfdU6+k8pZbSQ5OpUntEQ8DAZt0OV0 y0HiyjF+sfDicY6GkEJdoj+5xZjaCz7qFfNcbwPViZUhmpaUxBJKzAICDIt+wXIdV9M1 BdMF2QYYsFR26JwW5R131OOW7N4E98To0dsJ71GJm8F7XvoSg1lk7HVvt3wY8nhDY8aO 1vTe+zfm2B6B+1+ll+PfxgMcEsJRl+tpR2lTUQnImEoJfLyeyZCNAPs9Lzhe6phL54mX ALxDbjkqGFeey8L/C+Pzhk3uUifWeYnyme4PmofRYuN6c8RWCxleZlBKvsXpoGL3ktUE UZBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733288890; x=1733893690; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/zqDy8hJs5sntNDM6IlgM3sqjiFFHXBWErekLn6DYoo=; b=pxCy+K3YHyKSAK3DXgh9Ha22SLhr96onvwKj1VNWbvRgDc5pilL7d4p0Xm2/94z/Cx vklL2ZNu5QUux+OmjisLnNFwqAG4wJBFhgg1SJ5aVQHBVoXQXR1ILqFblLPENLqlanfG /w30ZlynvGbj6aaCaEw26D9amJwtfeAwvInP1lhIOJA/P1YmIuK/j7YhWyNOCKoLFrTf cFi5E7l7QpqUqKukPo2b4SHidmY6tNBtyBVpJPIkj4144QLWc34hiWR6tR+R7K0OCkFi lufISU5TpEQGCWRxwqX+a9DkpcNoqrJPzVv3IwkB/hlvSaC64YXqNSdVnBe5/12b/54z 320w== X-Gm-Message-State: AOJu0Yy7CegvzXV1hVPoUe4yoJLnpIMhmfkTUOxI+zyq9tb6VTYG6jAc sjAE9FNRaENXBDP1mDKC59Cwbk/Ve+bS1UaPnX3slOeKVJW7nWhU5+zJvgHE8s4wkh9w X-Gm-Gg: ASbGncsJB2z8No0TbmlGxKSVH/oby9cfqF2fc80Jb1mISuOw4v8M+VVm8ovO5//yhiV f8sPyzFu2jK130X5t54u4b7dewHFAuOdEvyFGlJmfO2oACyzymYJ1qKaDwXUVNwow54THbov60Z 5pZDEXlt6tDhkBbagjS71OrbxR/qHNoxjfGgxgT24hNZkaS6wsk90IKubtBeDIXacT0eUQjKu4x 34j8fO09A+1J0AP6+Yg3Hm6dtl3FqIVTh7XgGCtR14ubAowAfsRQC7gH0Mf3gpADasb1btfQCOt TVIXaEdSq2jOqTS4acrKzNqXXfpkiKHD6qTr5g== X-Google-Smtp-Source: AGHT+IGFNztdxlTdVObgnKEhJFdkWaqOS93NV2p8if1PdgM8s2SaXdLyjYXQIH3JS3ueoQu/7RRQ/g== X-Received: by 2002:ad4:5c6f:0:b0:6d8:959b:c307 with SMTP id 6a1803df08f44-6d8b72cef46mr74869246d6.10.1733288889933; Tue, 03 Dec 2024 21:08:09 -0800 (PST) Received: from gnu-tgl-3.localdomain ([172.58.160.52]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6d8cfc25928sm368036d6.122.2024.12.03.21.08.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Dec 2024 21:08:09 -0800 (PST) Received: from gnu-tgl-3.. (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id D480CC079B; Wed, 04 Dec 2024 12:49:51 +0800 (CST) From: "H.J. Lu" To: gcc-patches@gcc.gnu.org Cc: richard.guenther@gmail.com, jeffreyalaw@gmail.com, jakub@redhat.com, richard.sandiford@arm.com, matz@suse.de Subject: [PATCH v5 6/7] scev-cast.c: Enable for all targets and adjust scan matches Date: Wed, 4 Dec 2024 12:49:50 +0800 Message-ID: <20241204044951.509713-7-hjl.tools@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241204044951.509713-1-hjl.tools@gmail.com> References: <20241204044951.509713-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3019.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org Since the C frontend no longer promotes char argument, enable scev-cast.c for all targets and adjust scan matches. PR middle-end/14907 * gcc.dg/tree-ssa/scev-cast.c: Enable for all targets and adjust scan match. Signed-off-by: H.J. Lu --- gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c b/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c index c569523ffa7..469e4936329 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c @@ -1,6 +1,5 @@ /* A test for various conversions of chrecs. */ -/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ void blas (signed char xxx); @@ -22,6 +21,6 @@ void tst(void) blau ((unsigned char) i); } -/* { dg-final { scan-tree-dump-times "& 255" 1 "optimized" } } */ -/* { dg-final { scan-tree-dump-times "= \\(signed char\\)" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "= \\(unsigned char\\)" 2 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "= \\(signed char\\)" 3 "optimized" } } */ From patchwork Wed Dec 4 04:49:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 102351 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 9C8583858C53 for ; Wed, 4 Dec 2024 05:16:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9C8583858C53 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=c+bjlXjM X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-qk1-x72c.google.com (mail-qk1-x72c.google.com [IPv6:2607:f8b0:4864:20::72c]) by sourceware.org (Postfix) with ESMTPS id 4C4FC3858CD9 for ; Wed, 4 Dec 2024 05:08:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4C4FC3858CD9 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4C4FC3858CD9 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::72c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288892; cv=none; b=djjV6oGg9uLp8XEh3izZza94ewnmJYJ6hECxdy2aMFKcWLLH+i4R9s8xPSyvFlsaM+ORkHWKv4gddh8L9mpyY8dvoyXqCvCnCBaugXmyd4eRPA1oCrz2SUur/+J1tcke2+YwBngqexTjrqiqfH9/z0tAOB07ld3cLIpKyHSZxxk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288892; c=relaxed/simple; bh=H88aR5GJ2Y8MPcurijMvyQGZhBMYBZLWFLoUIpw1lU0=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ZtnQUm9m73V/M35AUoVD5X4W0ZTHtW/7rClgFLXQYDHO8/hlDSJKoG/7otgilxmw685GJbEdRdhjQJqBvJU0ik0Fl97uWoPyKQ97amVDMOwpS7TrtcD/an5xxZ4XaQg8+UsYGaT0xovt85gKYMPG+IL3LzieMTSBmB4thFLirpQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4C4FC3858CD9 Received: by mail-qk1-x72c.google.com with SMTP id af79cd13be357-7b666215645so276258885a.0 for ; Tue, 03 Dec 2024 21:08:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733288890; x=1733893690; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=V80toD3kYA+XTXlAzeUnKqJt7Vz5RDQuIHq9HHoTvb4=; b=c+bjlXjMfM1lA4diGZp8OPuOaJFf0u6PU+m2fJXVUMtLjA4BJOQwww2x0M2ts/8let gAXjzxsj5G0qUl+Hkhw14MadaxCYaK4nzFOpq+yAlOOnIUa+FbCIhyP5/E9V5f6jCOiI QMdq2a+LJM6hErfKJE2UjWd08nvpdtWvRsiZEN/wzXNtc/Zl3yKTS4u4a/DVk3iHinF9 JQhjVGwo3injxxK8bnRIvURanHdW4LASteOVHgKIxwO+3R9JuahSq7Bes2X7hMAHtBz3 0P96KeY6kMFCWtB2EMmM1jPVS6UyOVqElOiOrHGXl2R3zzylRbZvmmCH8xpE8JwIJebr gtUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733288890; x=1733893690; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=V80toD3kYA+XTXlAzeUnKqJt7Vz5RDQuIHq9HHoTvb4=; b=OOI2BfRBE7ePcoNKhkL2geh77IgbdSJMUYmz3kFaf9G7BcdyiLk21oexEdqDQI5dd8 zSIEaXP/FpLhi7sMu66LJLVxs1G+BMSEApRpS5pNM/gdhaY2otZ7ucikgKwNhRNadGry 9R0O4B035fgCbbcofPc16ngT6S4AL1Uy3vnYLtMSv9aP9ZPopPeU8QgwEHjEUAT0iYQU xeOqAq3byRhv1tWD6UBk9fcrOl7piVnkxbDadA7e+Ct988dhSqhqcoI9FkjEFMVForrF +1CQpxKX1qPs67UZgB4rmQmeHOBCiRvfrQIP0OuH9gSA/EgzxCbDwp2puYPFS/wKfRHn 1PKg== X-Gm-Message-State: AOJu0Yy3EdLnnYHQwboxrpjHxyOBdd0OX4VpvYrMOQfyLaG5GIgUNmcK 1h0z3VbJzc7+p31D0czH/O6BUjbeGKjKbFe9HMeyA4aSqg6NeSe8 X-Gm-Gg: ASbGncvlpD5KfraWbZATT0YdEXLUQNG5MWJwDiKtb7E+0O5pAj0BJz/9ztj2pxVVYW9 JoHSqI+r5z5EGnt2rzA6gnd1+9TlfukUHh00AXnzltascN3idbtdwqAOHFuARz9MLry+QoC5QfA M//02oosnZkgeFiZOmzancMIEhFcVBlOCt8l4rnd2INFXQLw9j0CkYC3QzWDspEDSvXrBJ6PpQN rNKrI9EWd48AqFlu4tE5oSZRvgg2aAc5UL1pUsdIqEcxbvtZE5f9jxlcgw4tVnpTz5tSoa7fp8x c4doj1uCo10taXTRW2TlI50DLMbQZNOp2tNKvw== X-Google-Smtp-Source: AGHT+IFz7BV1waYUwCIqT7G6HaejJQ3nD/H9HYqLR1Yrlqrd+9DrPP2Zy5CHkgRRHdD4szTBk+3h0Q== X-Received: by 2002:a05:6214:d84:b0:6d4:1b2b:c82b with SMTP id 6a1803df08f44-6d8b73ec502mr85999616d6.38.1733288889726; Tue, 03 Dec 2024 21:08:09 -0800 (PST) Received: from gnu-tgl-3.localdomain ([172.58.160.52]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6d88465b52asm59670696d6.77.2024.12.03.21.08.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Dec 2024 21:08:09 -0800 (PST) Received: from gnu-tgl-3.. (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id DF50EC07CC; Wed, 04 Dec 2024 12:49:51 +0800 (CST) From: "H.J. Lu" To: gcc-patches@gcc.gnu.org Cc: richard.guenther@gmail.com, jeffreyalaw@gmail.com, jakub@redhat.com, richard.sandiford@arm.com, matz@suse.de Subject: [PATCH v5 7/7] ssa-fre-4.c: Enable for all targets and adjust scan match Date: Wed, 4 Dec 2024 12:49:51 +0800 Message-ID: <20241204044951.509713-8-hjl.tools@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241204044951.509713-1-hjl.tools@gmail.com> References: <20241204044951.509713-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3019.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org Since the C frontend no longer promotes char argument, enable ssa-fre-4.c for all targets and adjust scan match. PR middle-end/14907 * gcc.dg/tree-ssa/ssa-fre-4.c: Enable for all targets and adjust scan match. Signed-off-by: H.J. Lu --- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c index 5a7588febaa..246fea3a4b9 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c @@ -1,6 +1,4 @@ -/* If the target returns false for TARGET_PROMOTE_PROTOTYPES, then there - will be no casts for FRE to eliminate and the test will fail. */ -/* { dg-do compile { target i?86-*-* x86_64-*-* hppa*-*-* m68k*-*-* } } */ +/* { dg-do compile } */ /* { dg-options "-O -fno-tree-ccp -fno-tree-forwprop -fdump-tree-fre1-details" } */ /* From PR21608. */ @@ -11,4 +9,4 @@ char bar(char f) return wrap(f); } -/* { dg-final { scan-tree-dump "Replaced \\\(char\\\) .*with " "fre1" } } */ +/* { dg-final { scan-tree-dump-not " = \\\(\[^)\]*\\\)" "fre1" } } */