From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) by sourceware.org (Postfix) with ESMTPS id 04A283858D38 for ; Tue, 16 Jan 2024 16:56:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 04A283858D38 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 04A283858D38 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::133 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705424181; cv=none; b=vaUaoFCa5KgQyJ5XHjpx1NrMX5pyeGwNTD1U3ggOWni3NKJnSaIpmjFjtLnG1Y/r5l2xfgg0ADKUiJ1WZw5mVzb2+4SoucoAs4R6zduMstr4txuXUK3rokt5+enXT8yjx4K69rRs5aR2vz1isY8RUmWNLHjFTmCXVIiTIh3/Ebw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705424181; c=relaxed/simple; bh=DfpZWtrVUexqYo5TzsigPJ/VJk7/siINQ1uf8ODhexE=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=wqe0tY8FRPWdngob2S+hXI9SU/fGUUYb4to+FXiy9VlQG44x4hEW0kEzOVZLuRlyYjr5okKtyiEc+ILIFxlt3+cY+Xm0JUQx5nDcn04C+m5TEz9jNhgjS7q+O6rCOVnRN9j8XUHwnYXyTm94Ey60m5s/SzNk+73BQJzGW+VvMIg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-50e80d40a41so12871198e87.1 for ; Tue, 16 Jan 2024 08:56:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705424178; x=1706028978; 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=hbmq7e9cfiOPq+uTW2WoimLKNazxXDGRtP1g0J3ZxTY=; b=Ek5eE+BK6TtYxXgbE1U4bIqfESXSz4mh6YN+wSEoJU8W0oHxA2DBjjsGYGXaetxJCK fUSzjq33KvZDRqf7b4RkE0ChCK0ZerB0C/v1uvGUs3V0GAgy4KGKq+qYJkgVVfXvgcPw onxG8IaOr8UPDdBfOzyg8fONfnoh5+KPnNqBgIYbG/QpW14dCUATwjc0caY+IDUKyt0B M9pLM6eJ0/Fa8Zxx9lXPDbA7BUQ2+VE/TJ/9MgAvhcqgfAvL4m0V+XqZuUqpkhX2qSmT CaR3my1EnAqQl4ra/0ktXm3KvipqG46jChpECEt6p6CSC68YD0gwcOOPJAq902n7yhae rKeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705424178; x=1706028978; 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=hbmq7e9cfiOPq+uTW2WoimLKNazxXDGRtP1g0J3ZxTY=; b=VRVYzgNuH5Wa5FrL1SxZvYuHRkLoOKUOW+IoVXdL3XzweoxiCjOKSjnj620RE7pIUo u3amic2gdkbc/KrpH+TDN041B8PVYvbxBha1t3kuKsB3A+lDmUpd2fZLkrIKOrSxbg3d cYACsKge8hB50bcRrzjRkl+8Neo+VkmCR503XCVvStieVlVLeFVw48cmoWh31MlM2bnX 5df3pm4NqD7fmWpzxOLfevJFV97Y93OuGnX0ztF7nPjhtWNTXBVAuAjbNDD92Zxn+g5/ HjrB5FKudRT3m8ZAzVC76s947UxFcwcfx0sftgkkjPUH+NG+LuAWp9vdg5KIgIxm2DuS xx3w== X-Gm-Message-State: AOJu0Yyvw9jZg+YnScIk5IsKRiiR15BSyro2FmZJx+NePB+RSmVcPw2h EvSy3QTulDpqc5i7F1gLZX8= X-Google-Smtp-Source: AGHT+IH1x0kKv5iybMedGQ6c/sbVSpMq+WV2Af8zaVh2araYICiM8O7y9oZJL90RciIXjOQSx8LGVw== X-Received: by 2002:a05:6512:1294:b0:50e:5082:a868 with SMTP id u20-20020a056512129400b0050e5082a868mr4519335lfs.104.1705424178001; Tue, 16 Jan 2024 08:56:18 -0800 (PST) Received: from hallertau.. (ip006.net-192-176-117.koping.net. [192.176.117.6]) by smtp.gmail.com with ESMTPSA id t24-20020ac24c18000000b0050e78aa4b30sm1824958lfq.42.2024.01.16.08.56.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jan 2024 08:56:17 -0800 (PST) From: Mikael Pettersson To: Jeff Law , gcc-patches@gcc.gnu.org Cc: Mikael Pettersson Subject: Re: [PATCH] Avoid ICE with m68k-elf -malign-int and libcalls Date: Tue, 16 Jan 2024 17:55:20 +0100 Message-ID: <20240116165608.8599-1-mikpelinux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <7de190a0-5562-402d-9958-242c41129ad9@gmail.com> References: <7de190a0-5562-402d-9958-242c41129ad9@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-10.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,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Thu, 4 Jan 2024 14:39:23 -0700, Jeff Law wrote: > On 1/4/24 02:23, Mikael Pettersson wrote: > > emit_library_call_value_1 calls emit_push_insn with NULL_TREE > > for TYPE. Sometimes emit_push_insn needs to assign a temp with > > that TYPE, which causes a segfault. > > > > Fixed by computing the TYPE from MODE when needed. > > > > Original patch by Thorsten Otto. > > > > gcc/ > > > > 2024-01-03 Thorsten Otto > > Mikael Pettersson > > > > PR target/82420 > > PR target/111279 > > * expr.cc (emit_push_insn): If TYPE is NULL compute it > > from MODE before calling assign_temp. > > > > gcc/teststuite/ > > > > 2024-01-03 Mikael Pettersson > > > > PR target/82420 > > * gcc.target/m68k/pr82420.c: New test. > This really needs to happen in the two call paths which pass in > NULL_TREE for the type. Note how the type is used to determine padding > earlier in emit_push_insn. That would also make the code more > consistent with the comment before emit_push_insn which implies that > both MODE and TYPE are valid. > > > Additionally you should bootstrap and regression test this patch on at > least one target. Updated as requested, and bootstrapped and tested on {x86_64,aarch64,m68k}-linux-gnu without regressions. gcc/ 2024-01-16 Thorsten Otto Mikael Pettersson PR target/82420 PR target/111279 * calls.cc (emit_library_call_value_1): Pass valid TYPE to emit_push_insn. * expr.cc (emit_push_insn): Likewise. gcc/teststuite/ 2024-01-16 Mikael Pettersson PR target/82420 * gcc.target/m68k/pr82420.c: New test. --- gcc/calls.cc | 4 ++-- gcc/expr.cc | 5 +++-- gcc/testsuite/gcc.target/m68k/pr82420.c | 9 +++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/m68k/pr82420.c diff --git a/gcc/calls.cc b/gcc/calls.cc index 7c35b1ad204..01f44734743 100644 --- a/gcc/calls.cc +++ b/gcc/calls.cc @@ -4580,8 +4580,8 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value, } } - emit_push_insn (val, mode, NULL_TREE, NULL_RTX, parm_align, - partial, reg, 0, argblock, + emit_push_insn (val, mode, lang_hooks.types.type_for_mode (mode, 0), + NULL_RTX, parm_align, partial, reg, 0, argblock, (gen_int_mode (argvec[argnum].locate.offset.constant, Pmode)), reg_parm_stack_space, diff --git a/gcc/expr.cc b/gcc/expr.cc index 34f5ff90a9f..3015f9e51d8 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -5532,11 +5532,12 @@ emit_push_insn (rtx x, machine_mode mode, tree type, rtx size, /* Loop over all the words allocated on the stack for this arg. */ /* We can do it by words, because any scalar bigger than a word has a size a multiple of a word. */ + tree word_mode_type = lang_hooks.types.type_for_mode (word_mode, 1); for (i = num_words - 1; i >= not_stack; i--) if (i >= not_stack + offset) if (!emit_push_insn (operand_subword_force (x, i, mode), - word_mode, NULL_TREE, NULL_RTX, align, 0, NULL_RTX, - 0, args_addr, + word_mode, word_mode_type, NULL_RTX, align, 0, + NULL_RTX, 0, args_addr, GEN_INT (args_offset + ((i - not_stack + skip) * UNITS_PER_WORD)), reg_parm_stack_space, alignment_pad, sibcall_p)) diff --git a/gcc/testsuite/gcc.target/m68k/pr82420.c b/gcc/testsuite/gcc.target/m68k/pr82420.c new file mode 100644 index 00000000000..5c84f292103 --- /dev/null +++ b/gcc/testsuite/gcc.target/m68k/pr82420.c @@ -0,0 +1,9 @@ +/* { do-do compile } */ +/* { dg-options "-march=68000 -malign-int" } */ + +int a; + +void f(void) +{ + a /= 3; +} -- 2.43.0