| Message ID | 20241204044951.509713-1-hjl.tools@gmail.com |
|---|---|
| Headers |
Return-Path: <gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org> 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 51B753858401 for <patchwork@sourceware.org>; Wed, 4 Dec 2024 05:10:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 51B753858401 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=BpjhVntK X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-qt1-x835.google.com (mail-qt1-x835.google.com [IPv6:2607:f8b0:4864:20::835]) by sourceware.org (Postfix) with ESMTPS id 81F433858D26 for <gcc-patches@gcc.gnu.org>; Wed, 4 Dec 2024 05:08:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 81F433858D26 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 81F433858D26 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::835 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288890; cv=none; b=Vi5TfMRr4GWEgfpacyh1DXXRGhc+wJpgr8O5TvTX5HCs9ylzGcZO5Q4QL5dGxg6o9Kn5YfKMQhccopADfBVlBpxiaf9a5LKtJCv8fl6ik6NEUqlYk/OoYMORe+Eb+RElRxw1vTFrcRowAuY9Xg6qF7yYCmuN8ZvKoexk+ENN9Ys= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733288890; c=relaxed/simple; bh=AQnQH4x3pC+X/qPHkjkOeUceG39ItM/53Y2zJntCwhU=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=IgB6Wv9XTN5CyjU2Vvcaysoq4bhKrLTJL3QkE06p3guIbdOcRNFVWu2cKX3N+JyUa7703FtYiaFu2JZ6cLkinm91Jyf6ehDlP2FNIw4ChmeFTW6+7kV/A1XJAN/6xtqrbB4g3tbqF6n0J3ZSZTjGaYATXn71rmT1rKPNunn0ApE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 81F433858D26 Received: by mail-qt1-x835.google.com with SMTP id d75a77b69052e-4668d12b629so49656221cf.2 for <gcc-patches@gcc.gnu.org>; 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:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=oqamX19P0MgVT9vCOdoqOuiXvdgCuBSIxSnlsWvCgQ8=; b=BpjhVntKgFhdvhDTqwT2ilUje9JK2+pmPkvT+/gO3mxx5aRZuCAVANViXDFVW0eO2l 2ujaeYNxSkjrrq3UWN4ytDm0yOr/F5uvp3rTS5qKgQ2GS344MgObz5UfJk4ANFTtTpBk B/dCnbODlt53K8Jt/EXTNN4C7fq0t64rKZFlgjf7lAY7JO8o4eLExDiw/flZ+MeKnm3g Z5X7MgsA60J8319y00TB+GKAovU+5lqh2HGBNJH0kBcgoN9jw+Jr2yCLsGuWr06aPKLl WZx/IOK9cS4BCtD5eUpo2KiSew2U1f6+d6fm5HYQk05DqMpSbCHuV4N7EHkZKlbVTH3Y ZdUQ== 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:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=oqamX19P0MgVT9vCOdoqOuiXvdgCuBSIxSnlsWvCgQ8=; b=qYCoe60FFrHp3ZiT98inu2tLAg+8h3YOtncpviXXGA9GuuZNY1CfTsrTPc9zoFueJx r2LVg373sAGtyfNauasp4lJa1Qxc4m8s3Z5vvEQekxsAxOGajNIppBtzIKO7Cj+F4Rjw 43wV4y73IARWGsHFHPKfFCnZm25I7CyH0j7yytvIttGYMmXAjFHc2S3td8pZaan1E6qe SETlciZowDBSU7Cts761djbvLcBkEwrjUi3aCvSZEgbagy3gGzB5xMxj64+Pm1ciSqRt ju+AXIClynMpFrfU8Fpg9zDaeGnUEofbb5Yg6cIfzAl6SjSoWxT0olTPYSORQs4PGfHm uqCw== X-Gm-Message-State: AOJu0YzTCoG4f3Vt7L1HAkKMsETmb7GsREOtGhXzCneic4Kop+662Slf yNnCCy7p0zEiov5DmYgpw3wZK08KaDvJ++hsF0F1wTEyhxsFzSJv X-Gm-Gg: ASbGnct7+4OL6Vo/JsfxBa4zJhp/IoP1yghI25wPZVz7pE/AjD277kz4PLx9MH1VITq CVcetXdwFgSLcrifdUqn/6SNfhPrTYZXzRQiIp1p/uLhHPRG4cLc4ynuPMtK4iYZbCIlJbGWzip liaw3cU81EOHvMGGO+HNDtqHMEZzUuTueNTKGifn7f+dqWWY21FKP6u+TnSERvDLVB+EzGpW9DN +r36aEDiD9Gza8gUfIilJWwo6wH8mAjzrS8bF8PuVJwBIkbMERfD25HbtjtulBHGE26eOsRSGY+ DvHm7FYM/n8MrqlftU78i/M1mXLVs+YfqsjDbw== X-Google-Smtp-Source: AGHT+IFxBnbGqs3Ob7BuuvjmkTNI9CMphGMriBNqMC8XnuytTkgBpHaFomNobLGs7BxZUraftTbfvg== X-Received: by 2002:a05:622a:1986:b0:466:9d0e:1920 with SMTP id d75a77b69052e-4670c0be0f7mr77513551cf.24.1733288889540; 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 d75a77b69052e-466c407dab3sm69678931cf.49.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 937FEC014D; Wed, 04 Dec 2024 12:49:51 +0800 (CST) From: "H.J. Lu" <hjl.tools@gmail.com> 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 0/7] Correct outgoing integer argument promotion Date: Wed, 4 Dec 2024 12:49:44 +0800 Message-ID: <20241204044951.509713-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.47.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3012.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, 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 <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org |
| Series |
Correct outgoing integer argument promotion
|
|
Message
H.J. Lu
Dec. 4, 2024, 4:49 a.m. UTC
Changes from v4:
1. Rename gcc/testsuite/gfortran.dg/pr14907-1.f90 to
gcc/testsuite/gfortran.dg/pr112877-1.f90
2. Mention
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48274
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112877
Changes from v3:
1. Split improvement of outgoing integer argument promotion into 3
patches.
2. Drop the expand_promote_outgoing_argument change. The bug
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117547
should be fixed differently in the x86 backend.
3. Update testcase adjustments.
--
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 when the incoming argument can be copied to the outgoing
argument without any changes.
1. Honor TARGET_PROMOTE_PROTOTYPES during RTL expand.
2. Drop targetm.promote_prototypes from C, C++ and Ada frontends.
3. Use incoming small integer argument type if possible.
4. Adjust tests for the C frontend promotion removal.
5. gcc.dg/tree-ssa/pr108357.c fails with the C frontend promotion removal.
This is a known issue:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108357
H.J. Lu (7):
Honor TARGET_PROMOTE_PROTOTYPES during RTL expand
Drop targetm.promote_prototypes from C, C++ and Ada frontends
Use incoming small integer argument type if possible
i386: Adjust apx-ndd.c for frontend promotion removal
vect-simd-clone-1[6-8][cd].c: Expect in-branch clones for x86
scev-cast.c: Enable for all targets and adjust scan matches
ssa-fre-4.c: Enable for all targets and adjust scan match
gcc/ada/gcc-interface/utils.cc | 24 -----------
gcc/c/c-decl.cc | 40 -------------------
gcc/c/c-typeck.cc | 19 ++-------
gcc/calls.cc | 36 +++++++++++++++++
gcc/cp/call.cc | 10 -----
gcc/cp/typeck.cc | 13 ++----
gcc/gimple.cc | 10 +----
gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c | 5 +--
gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c | 6 +--
.../gcc.dg/vect/vect-simd-clone-16c.c | 5 +--
.../gcc.dg/vect/vect-simd-clone-16d.c | 4 +-
.../gcc.dg/vect/vect-simd-clone-17c.c | 5 +--
.../gcc.dg/vect/vect-simd-clone-17d.c | 5 +--
.../gcc.dg/vect/vect-simd-clone-18c.c | 5 +--
.../gcc.dg/vect/vect-simd-clone-18d.c | 5 +--
gcc/testsuite/gcc.target/i386/apx-ndd.c | 9 ++---
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 ++++++++++
gcc/testsuite/gfortran.dg/pr112877-1.f90 | 17 ++++++++
gcc/tree.cc | 14 -------
34 files changed, 399 insertions(+), 157 deletions(-)
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
create mode 100644 gcc/testsuite/gfortran.dg/pr112877-1.f90