From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 368A33858D3C for ; Tue, 23 Apr 2024 08:18:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 368A33858D3C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 368A33858D3C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713860338; cv=none; b=VgJ1WAuzmS+nMZl/ZqBkx8UtUMim+FPaXpKDdJ20tEVKmXceETUHbNE/F2J4aywR3MSJSHnAZLZaGhs1M+jeJm8+RAyRVyAtfqFCoN6t3dczKrTH7j/od3QMVTy62/RjbfZhWjJunvScAMgDEsI84Ab8s8rEMuE97sT0R3zHOdo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713860338; c=relaxed/simple; bh=wbvkeQm6/Kc87hvgzBOWb6Fm6t0m0jGS+ycy5jQ3ulg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=YgnGFH+ITnEEtHuF6aslKItEtIl/R4uzKqUI8tbHKFTek545LZwyRplDOigl6zhxGl71Y3UXUvArp+QmvksXWFr/jvU/Jc8YXnI0Voeq8FzFFgra4LuNViIKNEdo6+rgaUj5AuoYrhA0uGnu7kN4/KFskeMgNtlcKloalt7WNSY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0353723.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43N7gtkb006953 for ; Tue, 23 Apr 2024 08:18:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding; s=pp1; bh=GRjPS80mMC50IfNt8rmnvV1oli8fkEzOeJjqtHiyCVA=; b=O/XFVkFOAGrARgzsd3eHUi1nvjzjjHUiJEATre1METxxiJfL4+fzf1FjRi7nZ+iia529 xqExYDI5I7tE8EzIa4jGFtSzqY+aYC28mqbvw2Eds6Tu76ESXJbf4C+DeW0Y4qKulhFy 5bHLNcQ9AfGUrO+NdXZsFDJwLvGIKSiFMvrr2lWiNycPoMMmB7T4oaqnLSmePfCRnZ4R x9DbZuFXHrGcn4+tXWQ+Jt806qbVogATf+is2naCqcynqQia8ttVf3y9K7vpzR83cPiW 7BHy9Y5A9KTSZuh2GCNkciAfl1dZnm8N7NkTpGHaUP1j8DJno1ySv/JjIhlHRyv+h99M 1Q== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3xp8ucr2rb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 23 Apr 2024 08:18:53 +0000 Received: from m0353723.ppops.net (m0353723.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 43N8GtMt003368 for ; Tue, 23 Apr 2024 08:18:53 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3xp8ucr2r9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 23 Apr 2024 08:18:52 +0000 Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 43N7qUZ5015343; Tue, 23 Apr 2024 08:18:52 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3xmshm4bf5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 23 Apr 2024 08:18:52 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 43N8Im4n51446126 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 23 Apr 2024 08:18:50 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5263A20040; Tue, 23 Apr 2024 08:18:48 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 163E32004E; Tue, 23 Apr 2024 08:18:48 +0000 (GMT) Received: from li-ecc9ffcc-3485-11b2-a85c-e633c5126265.fritz.box (unknown [9.171.92.76]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 23 Apr 2024 08:18:48 +0000 (GMT) From: Andreas Krebbel To: gcc-patches@gcc.gnu.org Cc: Jakub Jelinek Subject: [Committed] s390x: Fix vec_xl/vec_xst type aliasing [PR114676] Date: Tue, 23 Apr 2024 10:18:47 +0200 Message-ID: <20240423081847.28312-1-krebbel@linux.ibm.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: OcIbDjn2oHZSKAJIWayukAvm7UazmK7I X-Proofpoint-GUID: ZHWWWmmZyM9BdbTOqSeR0jDJfs12lqQB X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-23_04,2024-04-22_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=874 clxscore=1015 priorityscore=1501 adultscore=0 lowpriorityscore=0 suspectscore=0 mlxscore=0 bulkscore=0 malwarescore=0 spamscore=0 phishscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404230022 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,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 List-Id: The requirements of the vec_xl/vec_xst intrinsincs wrt aliasing of the pointer argument are not really documented. As it turns out, users are likely to get it wrong. With this patch we let the pointer argument alias everything in order to make it more robust for users. Committed to mainline. Will be cherry-picked for stable branches as well. gcc/ChangeLog: PR target/114676 * config/s390/s390-c.cc (s390_expand_overloaded_builtin): Use a MEM_REF with an addend of type ptr_type_node. gcc/testsuite/ChangeLog: PR target/114676 * gcc.target/s390/zvector/pr114676.c: New test. Suggested-by: Jakub Jelinek --- gcc/config/s390/s390-c.cc | 16 +++++++++------- .../gcc.target/s390/zvector/pr114676.c | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 gcc/testsuite/gcc.target/s390/zvector/pr114676.c diff --git a/gcc/config/s390/s390-c.cc b/gcc/config/s390/s390-c.cc index 8d3d1a467a8..1bb6e810766 100644 --- a/gcc/config/s390/s390-c.cc +++ b/gcc/config/s390/s390-c.cc @@ -498,11 +498,11 @@ s390_expand_overloaded_builtin (location_t loc, /* Build a vector type with the alignment of the source location in order to enable correct alignment hints to be generated for vl. */ - tree mem_type = build_aligned_type (return_type, - TYPE_ALIGN (TREE_TYPE (TREE_TYPE ((*arglist)[1])))); + unsigned align = TYPE_ALIGN (TREE_TYPE (TREE_TYPE ((*arglist)[1]))); + tree mem_type = build_aligned_type (return_type, align); return build2 (MEM_REF, mem_type, fold_build_pointer_plus ((*arglist)[1], (*arglist)[0]), - build_int_cst (TREE_TYPE ((*arglist)[1]), 0)); + build_int_cst (ptr_type_node, 0)); } case S390_OVERLOADED_BUILTIN_s390_vec_xst: case S390_OVERLOADED_BUILTIN_s390_vec_xstd2: @@ -511,11 +511,13 @@ s390_expand_overloaded_builtin (location_t loc, /* Build a vector type with the alignment of the target location in order to enable correct alignment hints to be generated for vst. */ - tree mem_type = build_aligned_type (TREE_TYPE((*arglist)[0]), - TYPE_ALIGN (TREE_TYPE (TREE_TYPE ((*arglist)[2])))); + unsigned align = TYPE_ALIGN (TREE_TYPE (TREE_TYPE ((*arglist)[2]))); + tree mem_type = build_aligned_type (TREE_TYPE ((*arglist)[0]), align); return build2 (MODIFY_EXPR, mem_type, - build1 (INDIRECT_REF, mem_type, - fold_build_pointer_plus ((*arglist)[2], (*arglist)[1])), + build2 (MEM_REF, mem_type, + fold_build_pointer_plus ((*arglist)[2], + (*arglist)[1]), + build_int_cst (ptr_type_node, 0)), (*arglist)[0]); } case S390_OVERLOADED_BUILTIN_s390_vec_load_pair: diff --git a/gcc/testsuite/gcc.target/s390/zvector/pr114676.c b/gcc/testsuite/gcc.target/s390/zvector/pr114676.c new file mode 100644 index 00000000000..bdc66b2920a --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/zvector/pr114676.c @@ -0,0 +1,19 @@ +/* { dg-do run { target { s390*-*-* } } } */ +/* { dg-options "-O3 -mzarch -march=z14 -mzvector" } */ + +#include + +void __attribute__((noinline)) foo (int *mem) +{ + vec_xst ((vector float){ 1.0f, 2.0f, 3.0f, 4.0f }, 0, (float*)mem); +} + +int +main () +{ + int m[4] = { 0 }; + foo (m); + if (m[3] == 0) + __builtin_abort (); + return 0; +} -- 2.44.0