From patchwork Wed Apr 3 20:17:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Edwin Lu X-Patchwork-Id: 1919423 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=YD1FePmH; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4V8wzs4Khhz1yYP for ; Thu, 4 Apr 2024 07:18:17 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6A18C384645B for ; Wed, 3 Apr 2024 20:18:15 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pl1-x62d.google.com (mail-pl1-x62d.google.com [IPv6:2607:f8b0:4864:20::62d]) by sourceware.org (Postfix) with ESMTPS id 25953384772F for ; Wed, 3 Apr 2024 20:17:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 25953384772F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivosinc.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 25953384772F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::62d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712175477; cv=none; b=ZYpb9AhbUkefS/GzlIBpmr8LKlAQN+TaFg9FOpJrFnX7ztN09FFcp0Ckn/IJxlz0jXxOaju1nZkgN6cQs+cFmIOVOmhadSLM1+3kHOVxv+vF7/AWiF9Da3hwFDa9X0FFWwWxb1HFO4jectMtIVtyQVg8qJbpBsQorUi1dh2g0KE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712175477; c=relaxed/simple; bh=j51Echj7XrAfVZLgilCd3QbsY2txJo6WPcMJ3p1ZFQ0=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=l2m1dSe3VjWnQd39HEFztlt2mDQFnRofOj8u5PWSeSPAl5qGSnjs01tsyr8+JSqSOrM8xiJ63/uroX/RERBqq20C7Dp4cKORH0uXOIdS0y00wPxYBxelIjWYQ3Ag3KF12iCcAQeCj8ZcKv8JwaSCHdbUKUjYOkooJYLBqwjR7E4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-1e24c889618so1915505ad.2 for ; Wed, 03 Apr 2024 13:17:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1712175470; x=1712780270; 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=hpbl3blOGqkrvEfnYATd9Pdjiw+8RIVtCtRgrjyjSII=; b=YD1FePmHJY2hhj3MMS2O0DMcTAIVIEmSwdrbgt399cRB2486lFsoAPmHJYqj0yeOMK 6XUtlOgmvQ0WPh1DoNT/TgdUWlCOomGatqzXB4OB7OVhfHLTVuyK+K52Ul9pUxR59CJX ZLTXD3p1xvn9+r+eYFZaRnK7X2Qc7iRMct5Hv231cm3ZRmRse+4zHjqmdtrpda7cCEL0 rW+27epRmOmo7AAamrK+GmLZpWksFxOSQwnZWgtKi5eazU5QuebO4pmqtdxXlKL4wtI+ 03152FsmYhwV2dkiAyCplBorZCfkQTMfsiHph4w1tZsPbupU5sX5syo6sjf5y78rPKtm 0ygw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712175470; x=1712780270; 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=hpbl3blOGqkrvEfnYATd9Pdjiw+8RIVtCtRgrjyjSII=; b=phoYXOp/7FM4oiZCdhcvpF3Ldnkt3w7jVpQc4yjQ/mvtdqjZSpbxevf4W6WT9Xao+Y fjjd+k2YT0J9PpmecX9/G2pkDASbezsDVOm8+VxMqrm83HsAEmV7cgBO5E6x6egSAr7g 1lpBbFogcq2oC1Gux7W2WiV1viOBLce8BoDqgxnsRCj6y1wYBJkETlOmI+VH3Jj+RJrL YR0JshK0lBmbdbTvtmF4ev8SLK2O0mUSTT+OUFcMqCIjZ7c3sQipdPFy1rE+fZ85MjWf ygU+bMRltdkuEsiN1CODZH9I8oNWH8W2G8Dm3DyeIa04zIdiKRvyAwU0wJxmMsT85FD+ c3DQ== X-Gm-Message-State: AOJu0YylMlolfqyHrn/Wn55ijMlEfWaCZ0FONsqJH8uUJNcixHFGZ87b +sVY9T/NObdLqEicb09Fug+8ZMx/IC2PI4ACBPVhqWoemGrFkawVnMRRVCYs6AZlsvfFIkkDAmg 3 X-Google-Smtp-Source: AGHT+IEqLwvO2Cz8smzzdB00bmNhLxiV0SB9QeNY+ECDJyw2pirwlmBivERX8/EsDde8XIHjiOGqGw== X-Received: by 2002:a17:902:8203:b0:1e2:93a0:6f32 with SMTP id x3-20020a170902820300b001e293a06f32mr232883pln.68.1712175469782; Wed, 03 Apr 2024 13:17:49 -0700 (PDT) Received: from ewlu.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id n4-20020a170903110400b001dcc7795524sm13729496plh.24.2024.04.03.13.17.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Apr 2024 13:17:49 -0700 (PDT) From: Edwin Lu To: gcc-patches@gcc.gnu.org Cc: gnu-toolchain@rivosinc.com, jakub@redhat.com, Edwin Lu Subject: [gcc-13 backport PATCH] RISC-V: Fix C23 (...) functions returning large aggregates [PR114175] Date: Wed, 3 Apr 2024 13:17:36 -0700 Message-Id: <20240403201736.3021296-1-ewlu@rivosinc.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, 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+incoming=patchwork.ozlabs.org@gcc.gnu.org We assume that TYPE_NO_NAMED_ARGS_STDARG_P don't have any named arguments and there is nothing to advance, but that is not the case for (...) functions returning by hidden reference which have one such artificial argument. This causes gcc.dg/c23-stdarg-[68].c to fail Fix the issue by checking if arg.type is NULL as r14-9503-g218d1749612 explains Tested on linux rv64gcv. gcc/ChangeLog: PR target/114175 * config/riscv/riscv.cc (riscv_setup_incoming_varargs): Only skip riscv_funciton_arg_advance for TYPE_NO_NAMED_ARGS_STDARG_P functions if arg.type is NULL (cherry picked from commit 60586710b0646efdbbd77a7f53b93fb5edb87a61) Acked-by: Palmer Dabbelt --- gcc/config/riscv/riscv.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 01eebc83cc5..cefd3b7b2b2 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -3961,7 +3961,8 @@ riscv_setup_incoming_varargs (cumulative_args_t cum, argument. Advance a local copy of CUM past the last "real" named argument, to find out how many registers are left over. */ local_cum = *get_cumulative_args (cum); - if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))) + if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)) + || arg.type != NULL_TREE) riscv_function_arg_advance (pack_cumulative_args (&local_cum), arg); /* Found out how many registers we need to save. */