get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2219212/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2219212,
    "url": "http://patchwork.ozlabs.org/api/patches/2219212/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260402153113.81939-1-cupertino.miranda@oracle.com/",
    "project": {
        "id": 17,
        "url": "http://patchwork.ozlabs.org/api/projects/17/?format=api",
        "name": "GNU Compiler Collection",
        "link_name": "gcc",
        "list_id": "gcc-patches.gcc.gnu.org",
        "list_email": "gcc-patches@gcc.gnu.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260402153113.81939-1-cupertino.miranda@oracle.com>",
    "list_archive_url": null,
    "date": "2026-04-02T15:31:13",
    "name": "bpf: Fix bit-field shifting in CO-RE expressions",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "d29d8d697b5cf438d86255d22394b6a58d9c392b",
    "submitter": {
        "id": 85366,
        "url": "http://patchwork.ozlabs.org/api/people/85366/?format=api",
        "name": "Cupertino Miranda",
        "email": "cupertino.miranda@oracle.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260402153113.81939-1-cupertino.miranda@oracle.com/mbox/",
    "series": [
        {
            "id": 498501,
            "url": "http://patchwork.ozlabs.org/api/series/498501/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=498501",
            "date": "2026-04-02T15:31:13",
            "name": "bpf: Fix bit-field shifting in CO-RE expressions",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/498501/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2219212/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2219212/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "gcc-patches@gcc.gnu.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@legolas.ozlabs.org",
            "gcc-patches@gcc.gnu.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256\n header.s=corp-2025-04-25 header.b=QtjyyuVA;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com\n header.b=t2yXnOAV;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)",
            "sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256\n header.s=corp-2025-04-25 header.b=QtjyyuVA;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com\n header.b=t2yXnOAV",
            "sourceware.org;\n dmarc=pass (p=reject dis=none) header.from=oracle.com",
            "sourceware.org; spf=pass smtp.mailfrom=oracle.com",
            "server2.sourceware.org;\n arc=pass smtp.remote-ip=205.220.165.32"
        ],
        "Received": [
            "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fmm7C0CBkz1yGH\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 03 Apr 2026 02:32:06 +1100 (AEDT)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id B0E2B4BA23C9\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  2 Apr 2026 15:32:04 +0000 (GMT)",
            "from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com\n [205.220.165.32])\n by sourceware.org (Postfix) with ESMTPS id 4F3CE4BA2E1B;\n Thu,  2 Apr 2026 15:31:33 +0000 (GMT)",
            "from pps.filterd (m0246629.ppops.net [127.0.0.1])\n by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 632FCaW42207721; Thu, 2 Apr 2026 15:31:32 GMT",
            "from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com\n (iadpaimrmta03.appoci.oracle.com [130.35.103.27])\n by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4d66v5rm4q-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n Thu, 02 Apr 2026 15:31:31 +0000 (GMT)",
            "from pps.filterd\n (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1])\n by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2)\n with ESMTP id 632EqOc3039582; Thu, 2 Apr 2026 15:31:30 GMT",
            "from cy3pr05cu001.outbound.protection.outlook.com\n (mail-westcentralusazon11013032.outbound.protection.outlook.com\n [40.93.201.32])\n by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id\n 4d65ekef7e-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n Thu, 02 Apr 2026 15:31:30 +0000",
            "from CH0PR10MB5129.namprd10.prod.outlook.com (2603:10b6:610:d8::12)\n by SA2PR10MB4409.namprd10.prod.outlook.com (2603:10b6:806:11a::15)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.21; Thu, 2 Apr\n 2026 15:31:25 +0000",
            "from CH0PR10MB5129.namprd10.prod.outlook.com\n ([fe80::b7b0:9485:8d1c:d791]) by CH0PR10MB5129.namprd10.prod.outlook.com\n ([fe80::b7b0:9485:8d1c:d791%3]) with mapi id 15.20.9769.018; Thu, 2 Apr 2026\n 15:31:25 +0000"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org B0E2B4BA23C9",
            "OpenDKIM Filter v2.11.0 sourceware.org 4F3CE4BA2E1B"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 4F3CE4BA2E1B",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 4F3CE4BA2E1B",
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1775143893; cv=pass;\n b=E9w0gD9+rBrP8jJu5hLHI+97OqP1Z0ynGexI4BM+Yj2r/1dt9/aQeC6vyhJnB1yIpfF2vg7bhyqMXiE6mUE6VTfnjootjOvTiraWXw4gn3dsKltzrQG0oVKj8H4/Z9fsfcNhz4zx6rPZ20CwrCv3Uerwy0vJFtOrMId7tGgtXyA=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=wjDbcvpfYkxSTn/IcfGe3kn5dB5tOoNEeuhjM7MAbgFcruoUfP+hF5knttRzaCZ+SSzWDLsIEsHUoWPGKomW4z53s1cNA3Jy8+W5/JcQgcdAtsw/XFxCeTPC5yFw4fvG9z5Bs6EQhjVu4cFUvPV1+zrj7n5/qYjHER0K8o/R4ArVZVSBrP6FGkznQ0BM4YqIhez2YdZjIMZRA/InK4nIN8MJocUrF9NXs2ih8WpT/epXWtidh0QqJ2/y1L8ENZ7GnTxmOZR8Mi40i815/1J9puOf9zhd6ZvyG3J8IQcKGP6Dp5tMyhejrxDTIS6XbcDc4cX1Kw8wPD+qzk+jYLm++A=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1775143893; c=relaxed/simple;\n bh=ob8ayPPiHjEGjdmjw6JUlPRphpaHMjWvNgZ0+DwP7pQ=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id:\n MIME-Version;\n b=u/WH8HHIHnf6xCUOLiwJAU/UTr9akC6T9Op8bi35IamuZ7HqImh18PBqSDNPTZsaI2tz1m6E3vmY8RJqxa4FiSX3vdz+rCFI2ud7qUx+zGvL3yxue10xd7oUC/l2Zc9Sft5qHrwxLN8NgkjBBRkGEkRiBTV5/7Bc5eO5dmnHs/U=",
            "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=kmrfifJNFe/Ta/wwnUpmFCapsc8v81E+I0WQYdPVjm8=;\n b=c2LFpD+KPxsI8CKdiDQ2Y19DcYvu4TNoj+rCw5dLVJidCKO4dVRqBNPHo4CtEt8I+s7Xajki/izdsDU2YbMCRJGipJQX4iVhMTSnhjjWzDonHwnBydtZ3P+mZCpBtmbGm4+lGjCHJ9IXgU8hOgtmB6mn8K7RLxvErU0vyd9tmDqAtbeEvw6ZSYW3SdG8nDZeN7VTK4AhKIEv9w5grPcHZ5a2pUH34YL1d4KphcqrE8iZH1D71jAFfuTmvLBNUu0+iRhWZbiHDLKxfTj1+sM0se1evqFRHyNZT4d/N7Pw4RqtXp/rAS25OVYDBeaz6O4sdDFaFodZ4rBVknJW4GNN2A=="
        ],
        "ARC-Authentication-Results": [
            "i=2; server2.sourceware.org",
            "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com;\n dkim=pass header.d=oracle.com; arc=none"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc\n :content-transfer-encoding:content-type:date:from:message-id\n :mime-version:subject:to; s=corp-2025-04-25; bh=kmrfifJNFe/Ta/ww\n nUpmFCapsc8v81E+I0WQYdPVjm8=; b=QtjyyuVAuC5AaEOaki8SF03qs8IoXcfC\n RsISpcs0lqRVBm0hRbk4H1FVq7rU5VKEhtidkI8+02uY9lq10l39ArH1LOxOJ7ft\n bcmpwbKRtp79a3is2ljgUV6R5ddnuJNGnfPHIPXP/O+RPYrDmaSlXb+rG3pSzK04\n T4wbj9P6zLfTRTbcZvLLTsEG6x4SYyxRNgT2TnzgT8rOpHg7/LqZpDU4G25ZI9PV\n NwI4PO78PGv+wdP1+GANizNHiLGEBm9Vjbui1VdH84JjTf0w5pXW4EQqTLOZBCXB\n hFCWGpP12KmAwrhMkvShQpAShNuSNw9IHzty3ZGsm/OVE6WXVd5kLg==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=kmrfifJNFe/Ta/wwnUpmFCapsc8v81E+I0WQYdPVjm8=;\n b=t2yXnOAVRhaDbM6PdbnOOQJn8ATTKnfcNKCFYE1BLk+6lx/iF44/v/x60J/LD7JMIlaK8qgCsQ/t7cxA/TI0tNutKimuDS2d0IYO2+yDLxGMpaPwtilpuOh+tLmPSQKfbn2LVXHiTJtbtYc7tppZS9ScYaqQypyobeNuhKwzB6c="
        ],
        "From": "Cupertino Miranda <cupertino.miranda@oracle.com>",
        "To": "gcc-patches@gcc.gnu.org",
        "Cc": "david.faust@oracle.com, jose.marchesi@oracle.com,\n elena.zannoni@oracle.com,\n bpf@gcc.gnu.org, Cupertino Miranda <cupertino.miranda@oracle.com>",
        "Subject": "[PATCH] bpf: Fix bit-field shifting in CO-RE expressions",
        "Date": "Thu,  2 Apr 2026 16:31:13 +0100",
        "Message-Id": "<20260402153113.81939-1-cupertino.miranda@oracle.com>",
        "X-Mailer": "git-send-email 2.30.2",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "DX0P273CA0069.AREP273.PROD.OUTLOOK.COM\n (2603:1086:300:59::9) To CH0PR10MB5129.namprd10.prod.outlook.com\n (2603:10b6:610:d8::12)",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "CH0PR10MB5129:EE_|SA2PR10MB4409:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "641a286d-1fc1-41cc-e785-08de90cce6be",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|366016|1800799024|376014|18002099003|56012099003;",
        "X-Microsoft-Antispam-Message-Info": "\n WY+gmG5+KxIsea4PcNt2UaeVjiKkwUHvbiBAVJTZSZFs0ZYBk8aPZJYRbWga/8duX1E9W/RsNGx3QPWOxY9r7+PvC+P8ebJrXZTxt9R/t/5c570XTkO1TEvCglRfdOQ+8pFrU83Agm+y15150sUQO9vjMtfLXlXqklZ7WMomt2Es+8vfhi+syDu3dFtGhkP0xSd0SgpRtDwJ/9wu4HBbvgjSf05i2iI0BuLSn5T1L9PXSXvW3VGHTAu0IH9n2WQis/6tQmZq72tx14qR/By30sKpywAzxSdID1/eJoheqkm8osapiHzPBQZTA1DXroKXyj2EG6ChAVt5PspURfWLZ73F/WYAUt0BTeznRVm3+/Xz+HADmsjWRAFoapnTwVdTAutiJYmcWx38uryzxroDO1rQoq+U4e83lRTAO/v9Q5qCBtee3kKwkH9GidpPiHAZ5Zb3rMZgVm70GI6GmkWPsIgzxUJTnPOgSiYOVJTcbKYe6V3hpkx+T6BoZX3i24j6iyP1Hpy5CXlX03zUdz9yphFt/9V2ZiHTGw6JoFbWAB70A9tdrKNG2edqYCDbvWg2aioVifMt/kMKvJuvM7NsvKT8l/xc2O8o0PEDBhcTFFAi69zTgu5uoFXx5xwGbKyX9AupQlKpOaAx20M8rGuZfQyBSeC1QORUYMw+VWWoleNnHu3mV19Pvs75aMNjpxVZ",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:CH0PR10MB5129.namprd10.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(56012099003);\n DIR:OUT;\n SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n sD3nSiVaP2jiMvn/LqWKP/7AHYgmZZLtuRKsu9e0L2cc4EYC+k70geHD7jH/a0R33gLIwrZZNc9hfYHBMS93D0+90poT196Bv83RH/GsapVYGxRlNuzEizKr1y/EqAWXtYQ8LYtHsQ2o+h77jp4oJc0CTKMPpbXdqZWu6oQO/LU7Y7LMNenI20Il67c9Yu6pAP6Q9aIgjjQ94tN3XEDHJnMISF1PAuqaN/iWwsnwu49eRoIKninJTAcezMoWGwsyK94QVQIFUQclLaphiDL0I7CELs7lvRqzOAV4ckZx2i5VBRneYh7S7sX/78FqG7GkFkKWksH5l2qnLf2m2TjOxP9UZnOsH48IzapDpS8K97ZlYwqeamDOlrmGDQveQsup/qM1o5+uZmjHsFWf3cSIB0AN3VVBh2XbEM8MlyFaV6ei0QpsKxjTrP8OfjJPxcQXWoiHNXK46BYD1QM+2okQLRB01gcWbOf4ciLgoEKB49IPnxv3gAdmspa82xd+pFyfzbi6hKZsK28g0fFUeMt0kalTIV/6pykDLcRvb8oji1Vdi9UeGqQ+Ew5PfKu3wm+tD6LP1CrSViLbHtM/eFh/Qklj+E+Nk3XLO7MJN7gYUyoimvGoK4ivIVOcgStKJvnItVfGB/cWUnP6417O8zW0vWe3M4iockVJZF8HlfQZ7nxPr812TriIGPDO23eac7+EyNDVjputS6HnmfESuUWZFZ7+y6rDFDaEsCnU5GYwYKa6c1XhJEpPGqsoYeIQoINBVIERbYkmtx8Mae0CCzCX59tfDGMxgze4Cetwum/XuYaFZOwMSE1WQ3JM7SrHgtLQCYYQE+0XkQrDyQ+u6sdfIbeuQIQEOP5p90PkqSMStzsfbC6JIHAQ5/wVt//WMvi/8+meR0BjG9nu0lpA1mFELDOYN82yowL6rTQX4Nd4gjTZ8zVTbOqcA/omyIlvnAJA5nEC0HbiNoE8gZxnA+qBJro6+Ge07KCR9GW3AG8cIzwm7/cjxzqLSs0T89pt+Us5tHz7+TjJPuaNGvdl3521bEAghsl2qDi1/87lZwFV4d24g/RhpOGzOADW7wCb186sfuuPaIufrR+si+l1m6mh1Syl9P+p9YuSCrPmDAbTccuzwzmPVhnr2KEf3usFUzPcfusYrOGBio01cyapgqISiD6jNdsyAAFR/xhaJ3HE2HCk/NiJE1Gw4mba6Cq/IrnlyRmP/fD/a4rGZTn3jrDXtiPOd3OGH1Zo0zewGEJCjpzuCxwzW04HYbbbWET3PsjhQXw+NdunEXwJDSemPa+vbMvdByAn4wPUS4GQJYvUbDsETY5igs95PLVYjxefiXcrQz5Xb6sdqMvtFXMWwTXcMUJ3WJQ54YeX+vehGwazL2YcbiES80P2NlxqBi8c5l2bjsAYFWtambzU9YAOD6Wk8pqitnQyYVpvEx9U7g7lUlpuq3BAJIoExqfqFMjsFQESypsQ0rU+4p8xrcYoexCRb7N3sZaxh4XE0GsbaOvcWxHcUWaGhIy+VYXx+bkWwANHVxoRD1+yPml0g+m2Gy4HQKQe//HZhQl8LC/+h6ZvNF9UKdTXdJjMrGlt2EJ21lE8udDTp43xcFWMOpYBzhbcG0Y9DqJaLdtc2fMtT1Gi6UKTY6A2taxozxIhds/J9SJms5YS6fe/PzhhM/HnDoKrbuIy1G/DPDiOYoC7I2xpecv38ly70JlOuY138MbWMEXsbodsh8W3d55FMqPvxPPgMHSbPsCtdjrtI8FMMl4PBpQ=",
        "X-Exchange-RoutingPolicyChecked": "\n rW2NrOS32FNH/bCzr0eXUopAnDOz+V0IgcNuePQH0kTk2SZz+3ErstIbvdBR6E+CJXyWuGcxKU6JQOUaw8iKs95aEFPY9g/aQRE2czPd/SP37l9+SfqWWQTVj/JQX2MArAG2voCuyDF1FWXD1UKhvk7/jTTNHxXcq4Dit9ZFiZH7WgSzJkeHFD+gbHpWDKQNC6ggj50T2FKcFer6BvOOlh01jtY04CvQRy64vSaWWYIcK+bLt/eaUq7VVQP9Ak46Cwv6hBUEncIcbqgTBkhVtGkGADLvIpmvFyz/jMXQ2Zkma4Bt94L8qQa/9Mivk33ijZoQnuwfyfeCy+hqEbkWGA==",
        "X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0": "\n Upm20GkBA3jCmdB99nT2e+I4EV7H4+ZwEURqwXLPM0Zlrfv5lhl0mQFOQa4kkxM0hi0vviAYM8k2SJ065G3UE70WtDa+KkDm3igsZ2d51xMA0aVmNz7KLFFGMV/Oy1DiU7hqAEH+7XVlMyw8l98cR0UUkPX0gDx8vd8/iV709T+0nEh/pEAxKgFGdjJNBSQtgaYk0R0WL8M2ZrJLg1sObxGIKh8x/Ah3ViUin8VhQ3b19Y52W1llqbFDKZeYCyASAVAmynZ21GdG66DCQeY6g9nn9jC3Bozw5EV/1Oc7G5vKsL2gc0gvKwMaCqKWIbpYqdeeNDqpzi1Hwxe7HG4IMOAxJcFgVaYm3lR3MgCEqbfl1rwDV30Krj8gNrsY7n+P9Qflop4uyAS3bU829ByoVud4ojcuUel3dYEy0JW+OcqY+pxiLrLDRXhCxGb7qE55ClLETlIh89AZUsSDBAVcufS0sC/LRhFAOGmSxDb5qTWFcPr8WO/mzYy+au9fp4WIv695jl4Jz2HNpkPUJgQIRZiAGo8zAYVf5auMl/oifZJg1CgX1/MkiJs1+n+rpBEFrlQ0q2qO1ZpF0tXs+kFDmRhyqzsV31nk3yNyiaiBnCs=",
        "X-OriginatorOrg": "oracle.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 641a286d-1fc1-41cc-e785-08de90cce6be",
        "X-MS-Exchange-CrossTenant-AuthSource": "CH0PR10MB5129.namprd10.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "02 Apr 2026 15:31:25.6661 (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "4e2c6054-71cb-48f1-bd6c-3a9705aca71b",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n M5ZXqG6JfBvRALPh3w/SOnsxzRzbeJHjCHz7t5DObwEnbsVZdQxOLvoN4H4/XKnxIvSPpD9M8fUmdwqZQrbf+eHVNC0ps1Ygil9MoHTMLIg=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SA2PR10MB4409",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-02_02,2026-04-02_03,2025-10-01_01",
        "X-Proofpoint-Spam-Details": "rule=notspam policy=default score=0 mlxlogscore=999\n mlxscore=0 adultscore=0\n bulkscore=0 phishscore=0 suspectscore=0 malwarescore=0 spamscore=0\n classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001\n definitions=main-2604020139",
        "X-Proofpoint-GUID": "Hv3jJvq1IkDerZtsH1omnReXumRo7r_g",
        "X-Authority-Analysis": "v=2.4 cv=G7cR0tk5 c=1 sm=1 tr=0 ts=69ce8bd3 b=1 cx=c_pps\n a=qoll8+KPOyaMroiJ2sR5sw==:117\n a=qoll8+KPOyaMroiJ2sR5sw==:17\n a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19\n a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=A5OVakUREuEA:10\n a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22\n a=EIcjfB9IiI4px24ztqRk:22 a=rRSh8p47dRZLf87SFqIA:9 a=O8hF6Hzn-FEA:10 cc=ntf\n awl=host:12292",
        "X-Proofpoint-ORIG-GUID": "Hv3jJvq1IkDerZtsH1omnReXumRo7r_g",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDAyMDEzOSBTYWx0ZWRfX2cdlyhq3ojw9\n ahLfssxbcpkrKm8EG50uhDZBKQK+YtX+SP2x6afdaeBJEXOddPLWr2SzJzfkYlgg2TxRU+tSwLL\n A6yv1U7cWwuoeNxkL1HjvPHjLby/ybJzL4daNE+ydC8XDnNq+y2G5ZYJDHkmKBaPZtiU0tn/pIQ\n vkLKYlr0D3d8iFdAORAqX3ZQWoa7mMigWoI8XCPMzr59km/MvyGI16KxUsHRhJZAsmdXazLAbtv\n bQaNJb7WqR30aU9gP9cU02Xdj5UiwEQT+nv20YHqhL1Oen9TVMRVm9G+PilRv+iTulEXsbT9krr\n U6xZtBVgaLhT482dRxQ9xsQ2pnFbPA4rlh6rcNQG8f/MQRyF7GFmUmoaZbZ01i95Ab2i2iYJpIZ\n lXQlM+fKGGeQg5aNXlaVux1FG5JLAboDMi0we/IQ+1uU/ulQniyePZbbhFadKODDqbVutKnFhDK\n ohoJm0RLY8xKYZAsSmtXXpIRkbhVhY11uWIAJQvM=",
        "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>,\n <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>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>",
        "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"
    },
    "content": "Hi everyone,\n\nThis patch fixes bit-field accesses in CO-RE code generation.\n\nNo regressions. The selftests improved with following diff:\n\n3993c3993\n< #463     tc_change_tail:FAIL\n---\n> #463     tc_change_tail:OK\n4013c4013\n< #473/4   tc_tunnel/sit_none:FAIL\n---\n> #473/4   tc_tunnel/sit_none:OK\n4028c4028\n< #473     tc_tunnel:FAIL\n---\n> #473     tc_tunnel:OK\n\nLooking forward to your review.\n\nCheers,\nCupertino\n\n------\n\nThis patch corrects GCC to do proper bit shifting for bit-field access\nexpressions that get patched for CO-RE access.\nSince we convert field accesses in an early pass, we needed to\nexplicitly generate shifting and masking to properly access the\nbit-fields.\n\ngcc/ChangeLog:\n\n\tPR target/123894\n        * config/bpf/core-builtins.cc\n\t  (core_expr_with_field_expr_plus_base): Add parameter to return\n\t  the tree node for the type associated with the access mode.\n\t  (gen_mask_for_size): New function\n\t  (gen_rhs_bitfield_adjust): Add function to adapt bitfield accesses\n\t  through shifting and masking.\n\t  (gen_lrhs_bitfield_adjust): Add function to adapt bitfields in rhs\n\t  when a core expression is used in a lhs assignment.\n\t  (requires_bitfield_adjust): Add function to verify if an\n\t  expression requires bitfield adaptation.\n\t  (replace_core_access_index_comp_expr): Add logic for bitfield\n\t  adaptation.\n          (core_make_builtins): Refactor gimplification. Do bitfield\n\t  adjusting.\n\ngcc/testsuite/\n\n\t* gcc.target/bpf/core-bitfields.c: Added new test.\n---\n gcc/config/bpf/core-builtins.cc               | 238 +++++++++++++++---\n gcc/testsuite/gcc.target/bpf/core-bitfields.c |  57 +++++\n 2 files changed, 261 insertions(+), 34 deletions(-)\n create mode 100644 gcc/testsuite/gcc.target/bpf/core-bitfields.c",
    "diff": "diff --git a/gcc/config/bpf/core-builtins.cc b/gcc/config/bpf/core-builtins.cc\nindex d0c6cfdaf1c0..7b994fd6f10b 100644\n--- a/gcc/config/bpf/core-builtins.cc\n+++ b/gcc/config/bpf/core-builtins.cc\n@@ -1328,11 +1328,23 @@ construct_builtin_core_reloc (location_t loc, tree fndecl, tree *args,\n      - base + __builtin_preserve_field_expr (expr, SIZEOF)  */\n \n static tree\n-core_expr_with_field_expr_plus_base (tree base, tree expr, bool leaf_node)\n+core_expr_with_field_expr_plus_base (tree base, tree expr, bool leaf_node,\n+\t\t\t\t     tree *access_type)\n {\n   tree type = TREE_TYPE (expr);\n   tree args[2];\n \n+  tree mem_access_type = lang_hooks.types.type_for_mode (TYPE_MODE (type),\n+\t\t\t\t\t\t\t TYPE_UNSIGNED (type));\n+\n+  /* Only use mode type for integer types, where the value can be a bitfield\n+     access.  */\n+  if (TREE_CODE (type) != INTEGER_TYPE)\n+    mem_access_type = type;\n+\n+  mem_access_type = build_pointer_type (mem_access_type);\n+  *access_type = mem_access_type;\n+\n   if (base == expr)\n     return expr;\n   else if (TREE_CODE (expr) == ARRAY_REF\n@@ -1366,12 +1378,13 @@ core_expr_with_field_expr_plus_base (tree base, tree expr, bool leaf_node)\n \t\t\t fold_build1 (NOP_EXPR, ptr_type_node, base),\n \t\t\t offset);\n \n-      tmp = fold_build1 (NOP_EXPR, build_pointer_type (type), tmp);\n+      tmp = fold_build1 (NOP_EXPR, mem_access_type, tmp);\n       return tmp;\n     }\n   else\n     {\n       tree fndecl = bpf_builtins[BPF_BUILTIN_PRESERVE_FIELD_INFO];\n+\n       args[0] = expr;\n       args[1] = build_int_cst (integer_type_node, BPF_FIELD_BYTE_OFFSET);\n       tree builtin_call = construct_builtin_core_reloc (UNKNOWN_LOCATION,\n@@ -1385,7 +1398,7 @@ core_expr_with_field_expr_plus_base (tree base, tree expr, bool leaf_node)\n       tree tmp = fold_build2 (POINTER_PLUS_EXPR, ptr_type_node,\n \t\t\t fold_build1 (NOP_EXPR, ptr_type_node, base),\n \t\t\t fold_build1 (NOP_EXPR, size_type_node, builtin_call));\n-      tmp = fold_build1 (NOP_EXPR, build_pointer_type (type), tmp);\n+      tmp = fold_build1 (NOP_EXPR, mem_access_type, tmp);\n       return tmp;\n     }\n }\n@@ -1460,8 +1473,10 @@ make_core_safe_access_index (tree expr, bool *changed, bool entry = true)\n   /* The remaining is to traverse the field part of the field expression.  */\n   if (mode != VOIDmode && var_off == NULL_TREE)\n     {\n+      tree access_type = NULL_TREE;\n       *changed = true;\n-      return core_expr_with_field_expr_plus_base (base, expr, true);\n+      return core_expr_with_field_expr_plus_base (base, expr, true,\n+\t\t\t\t\t\t  &access_type);\n     }\n   else\n     {\n@@ -1496,8 +1511,10 @@ make_core_safe_access_index (tree expr, bool *changed, bool entry = true)\n        && mode != VOIDmode && var_off != NULL_TREE)\n       || entry == true)\n     {\n+      tree access_type = NULL_TREE;\n       *changed = true;\n-      ret = core_expr_with_field_expr_plus_base (ret, expr, false);\n+      ret = core_expr_with_field_expr_plus_base (ret, expr, false,\n+\t\t\t\t\t\t &access_type);\n     }\n   return ret;\n }\n@@ -1507,12 +1524,129 @@ make_core_safe_access_index (tree expr, bool *changed, bool entry = true)\n    __builtin_preserve_access_index argument expression from within\n    bpf_resolve_overloaded_core_builtin.  */\n \n+static tree\n+gen_mask_for_size (tree type, poly_int64 bitsize)\n+{\n+  tree mask = build_int_cst (type, 1);\n+  mask = fold_build2 (LSHIFT_EXPR, type, mask,\n+\t\t      build_int_cst (type, bitsize));\n+  mask = fold_build2 (MINUS_EXPR, type, mask,\n+\t\t      build_int_cst (type, 1));\n+  return mask;\n+}\n+\n+static tree\n+gen_rhs_bitfield_adjust (tree bit_type, tree mem_access_type,\n+\t\t\t tree mem_ref, tree offset, tree sizemask)\n+{\n+  tree value = mem_ref;\n+\n+  /* Shift read value to position it in least significant bits.  */\n+  if (TREE_INT_CST_LOW (offset) != 0)\n+    value = fold_build2 (RSHIFT_EXPR, mem_access_type, value, offset);\n+\n+  value = fold_build2 (BIT_AND_EXPR, mem_access_type, value, sizemask);;\n+  /* The casting takes care of the sign extension.  */\n+  value = fold_build1 (NOP_EXPR, bit_type, value);\n+  return value;\n+}\n+\n+static tree\n+gen_lrhs_bitfied_adjust (tree mem_access_type, tree mem_ref, tree lhs,\n+\t\t\t tree offset, tree bitmask)\n+{\n+  /* Mask to clear bits in destination bitfield.  */\n+  tree clear_mask = fold_build2 (LSHIFT_EXPR, mem_access_type, bitmask, offset);\n+  clear_mask = fold_build1 (BIT_NOT_EXPR, mem_access_type, clear_mask);\n+\n+  /* Collect the value from the pointer reference.  */\n+  tree read_value = fold_build2 (BIT_AND_EXPR, mem_access_type, mem_ref,\n+\t\t\t\t clear_mask);\n+\n+\n+  tree new_value = lhs;\n+  if (TREE_CODE (lhs) == NOP_EXPR\n+      && TREE_TYPE (TREE_OPERAND (lhs, 0)) == mem_access_type)\n+    new_value = TREE_OPERAND (lhs, 0);\n+  new_value = fold_build1 (NOP_EXPR, mem_access_type, new_value);\n+  new_value = fold_build2 (BIT_AND_EXPR, mem_access_type, new_value, bitmask);\n+  new_value = fold_build2 (LSHIFT_EXPR, mem_access_type, new_value, offset);\n+\n+\n+  new_value = fold_build2 (BIT_IOR_EXPR, mem_access_type, read_value,\n+\t\t\t   new_value);\n+  return new_value;\n+}\n+\n+static bool\n+requires_bitfield_adjust (tree node, tree *p_mem_access_type,\n+\t\t\t  tree *offset, tree *bitmask)\n+{\n+  poly_int64 bitsize, bitpos;\n+  tree var_off;\n+  machine_mode mode;\n+  int sign, reverse, vol;\n+\n+  get_inner_reference (node, &bitsize, &bitpos, &var_off, &mode,\n+\t\t       &sign, &reverse, &vol);\n+\n+  tree type = TREE_TYPE (node);\n+  tree mem_access_type = lang_hooks.types.type_for_mode (TYPE_MODE (type),\n+\t\t\t\t\t\t\t TYPE_UNSIGNED (type));\n+  *p_mem_access_type = mem_access_type;\n+\n+  /* Only use mode type for integer types, where the value can be a bitfield\n+     access.  */\n+  if (TREE_CODE (type) != INTEGER_TYPE)\n+    return false;\n+\n+  if (TYPE_MAIN_VARIANT (type) != TYPE_MAIN_VARIANT (mem_access_type))\n+    {\n+      *offset = fold_build2 (TRUNC_MOD_EXPR, mem_access_type,\n+\t\t\t     build_int_cst (mem_access_type, bitpos),\n+\t\t\t     TYPE_SIZE (mem_access_type));\n+\n+      *bitmask = gen_mask_for_size (mem_access_type, bitsize);\n+\n+      return true;\n+    }\n+\n+  return false;\n+}\n+\n static tree\n replace_core_access_index_comp_expr (tree *node, int *walk_subtrees,\n-\t\t\t\t     void *data ATTRIBUTE_UNUSED)\n+\t\t\t\t     void *data)\n {\n   bool valid = true;\n   gcc_assert (*node != NULL_TREE);\n+  bool is_lhs = (bool) data;\n+  tree mem_access_type, offset, bitmask;\n+\n+  if (TREE_CODE (*node) == MODIFY_EXPR\n+      && requires_bitfield_adjust (TREE_OPERAND (*node, 0), &mem_access_type,\n+\t\t\t\t   &offset, &bitmask))\n+    {\n+      TREE_VISITED (*node) = 1;\n+      walk_tree (&TREE_OPERAND (*node, 0), replace_core_access_index_comp_expr,\n+\t\t (void *) true, NULL);\n+      walk_tree (&TREE_OPERAND (*node, 1), replace_core_access_index_comp_expr,\n+\t\t NULL, NULL);\n+\n+      TREE_TYPE (*node) = TREE_TYPE (TREE_OPERAND (*node, 0));\n+      TREE_OPERAND (*node, 1) = gen_lrhs_bitfied_adjust (mem_access_type,\n+\t\t\t\t\tTREE_OPERAND (*node, 0),\n+\t\t\t\t\tTREE_OPERAND (*node, 1),\n+\t\t\t\t\toffset, bitmask);\n+\n+      *node = fold_build2 (MODIFY_EXPR,\n+\t\t\t   TREE_TYPE (TREE_OPERAND (*node, 0)),\n+\t\t\t   TREE_OPERAND (*node, 0),\n+\t\t\t   TREE_OPERAND (*node, 1));\n+\n+      *walk_subtrees = false;\n+      return NULL_TREE;\n+    }\n \n   tree *expr = node;\n   bool should_indirect = false;\n@@ -1525,18 +1659,29 @@ replace_core_access_index_comp_expr (tree *node, int *walk_subtrees,\n   if (valid == true && n > 0)\n     {\n       bool changed = false;\n-      tree expr_test = make_core_safe_access_index (*expr, &changed);\n-      *walk_subtrees = 0;\n+      tree expr_test = make_core_safe_access_index (*expr, &changed, true);\n+      tree access_type = TREE_TYPE (expr_test);\n \n       if (changed == true)\n \t{\n \t  if (should_indirect == true)\n \t    expr_test = fold_build1 (INDIRECT_REF,\n-\t\t\t\t     TREE_TYPE (TREE_TYPE (expr_test)),\n+\t\t\t\t     TREE_TYPE (access_type),\n \t\t\t\t     expr_test);\n \n+\t  if (is_lhs == false\n+\t      && requires_bitfield_adjust (*node, &mem_access_type, &offset,\n+\t\t\t\t\t   &bitmask))\n+\t    {\n+\t      tree orig_type = TREE_TYPE (*node);\n+\t      expr_test = gen_rhs_bitfield_adjust (orig_type, mem_access_type,\n+\t\t\t\t\t\t   expr_test, offset, bitmask);\n+\t    }\n+\n+\n \t  *expr = expr_test;\n \t}\n+      *walk_subtrees = 0;\n     }\n   return NULL_TREE;\n }\n@@ -1896,49 +2041,74 @@ core_make_builtins (tree *tp, int *walk_subtrees, void *data)\n       expr = TREE_OPERAND (*tp, 0);\n     }\n \n+  poly_int64 bitsize, bitpos;\n+  tree var_off;\n+  machine_mode mode;\n+  int sign, reverse, vol;\n+\n+  tree base = get_inner_reference (expr, &bitsize, &bitpos, &var_off, &mode,\n+\t\t\t\t   &sign, &reverse, &vol);\n+\n   if (is_attr_preserve_access (expr)\n       && (n = compute_field_expr (expr, NULL, &valid, NULL)) > 0\n       && valid == true)\n     {\n-      poly_int64 bitsize, bitpos;\n-      tree var_off;\n-      machine_mode mode;\n-      int sign, reverse, vol;\n-\n-      tree base = get_inner_reference (expr, &bitsize, &bitpos, &var_off, &mode,\n-\t\t\t\t       &sign, &reverse, &vol);\n-\n-      tree new_expr = core_expr_with_field_expr_plus_base (base, expr, true);\n+      tree access_type = NULL_TREE;\n+      tree new_expr = core_expr_with_field_expr_plus_base (base, expr, true,\n+\t\t\t\t\t\t\t   &access_type);\n \n       /* Abort convertion if it is just a pointer or a reference to an\n \t attributed type.  */\n       if (new_expr != expr)\n \t{\n-\n \t  gimple_seq before = NULL;\n+\t  gimple_seq after = NULL;\n \t  push_gimplify_context ();\n-\n \t  gimplify_expr (&new_expr, &before, NULL, is_gimple_val, fb_rvalue);\n \n \t  tree new_expr_type = TREE_TYPE (new_expr);\n-\n-\t  /* Replace original expression by new_expr.  If the type is the same\n-\t     tree node, good!  If it is a pointer type, we need to dereference\n-\t     the type within the pointer to guarantee it is the same.  */\n-\t  if (TREE_TYPE (new_expr) == TREE_TYPE (*tp)\n-\t      || (is_addr_expr\n-\t\t  && TREE_TYPE (new_expr_type) == TREE_TYPE (expr)))\n-\t    *tp = fold (new_expr);\n-\t  else if (TREE_TYPE (new_expr) == build_pointer_type (TREE_TYPE (*tp)))\n-\t    *tp = fold_build2 (MEM_REF, TREE_TYPE (*tp),\n-\t\t\t       new_expr, build_int_cst (ptr_type_node, 0));\n+\t  tree mem_access_type, offset, bitmask;\n+\n+\t  if (requires_bitfield_adjust (*tp , &mem_access_type, &offset,\n+\t\t\t\t\t&bitmask))\n+\t    {\n+\t      tree value = build_simple_mem_ref (new_expr);\n+\t      if (wi->is_lhs)\n+\t\t{\n+\t\t  gcc_assert (is_gimple_assign (wi->stmt));\n+\t\t  tree *rhs = gimple_assign_rhs1_ptr (wi->stmt);\n+\n+\t\t  *rhs = gen_lrhs_bitfied_adjust (mem_access_type,\n+\t\t\t\t\t\t  value, *rhs, offset,\n+\t\t\t\t\t\t  bitmask);\n+\t\t  gimplify_expr (rhs, &before, &after, is_gimple_val,\n+\t\t\t\t fb_rvalue);\n+\t\t}\n+\t      else\n+\t\t{\n+\t\t  value = gen_rhs_bitfield_adjust (TREE_TYPE (*tp),\n+\t\t\t\t\t\t   mem_access_type,\n+\t\t\t\t\t\t   value, offset, bitmask);\n+\t\t  gimplify_expr (&value, &before, NULL, is_gimple_val,\n+\t\t\t\t fb_rvalue);\n+\t\t}\n+\t      *tp = value;\n+\t    }\n \t  else\n-\t    gcc_assert (0);\n+\t  {\n+\t    if (TYPE_MAIN_VARIANT (new_expr_type) != TYPE_MAIN_VARIANT (\n+\t\t\t\t\t\t       TREE_TYPE (*tp))\n+\t\t&& !is_addr_expr)\n+\t      new_expr = build_simple_mem_ref (new_expr);\n+\n+\t    new_expr = fold (new_expr);\n+\t    *tp = new_expr;\n+\t  }\n \n \t  gsi_insert_seq_before (&(wi->gsi), before, GSI_SAME_STMT);\n+\t  gsi_insert_seq_after (&(wi->gsi), after, GSI_SAME_STMT);\n \t  pop_gimplify_context (NULL);\n-\n-\t  *walk_subtrees = false;\n+\t  *walk_subtrees = 0;\n \t}\n     }\n   return NULL_TREE;\ndiff --git a/gcc/testsuite/gcc.target/bpf/core-bitfields.c b/gcc/testsuite/gcc.target/bpf/core-bitfields.c\nnew file mode 100644\nindex 000000000000..6cbaf1035fb4\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/bpf/core-bitfields.c\n@@ -0,0 +1,57 @@\n+/* Test for BPF CO-RE __attribute__((preserve_access_index)) with accesses on\n+   LHS and both LHS and RHS of assignment.  */\n+\n+/* { dg-do compile } */\n+/* { dg-options \"-O2 -dA -gbtf -mco-re -masm=normal\" } */\n+\n+struct S {\n+  unsigned char a: 2;\n+  unsigned char b: 2;\n+  unsigned char c: 2;\n+  unsigned char d: 2;\n+} __attribute__((preserve_access_index));\n+\n+struct S_no {\n+  unsigned char a: 2;\n+  unsigned char b: 2;\n+  unsigned char c: 2;\n+  unsigned char d: 2;\n+};\n+\n+char foo (struct S *s, struct S_no *s_no, unsigned char v)\n+{\n+  unsigned char z = s->c;\n+  s->b = v;\n+\n+  return z;\n+}\n+char bar (struct S_no *s_no)\n+{\n+  unsigned char y = __builtin_preserve_access_index (s_no->d);\n+  return y;\n+}\n+\n+/* { dg-final { scan-assembler-times \"ascii \\\"0:1.0\\\"\\[\\t \\]+\\[^\\n\\]*btf_aux_string\" 1 } } */\n+/* { dg-final { scan-assembler-times \"ascii \\\"0:2.0\\\"\\[\\t \\]+\\[^\\n\\]*btf_aux_string\" 1 } } */\n+/* { dg-final { scan-assembler-times \"ascii \\\"0:3.0\\\"\\[\\t \\]+\\[^\\n\\]*btf_aux_string\" 1 } } */\n+\n+/* { dg-final { scan-assembler-times \"bpfcr_astr_off \\\\(\\\"0:1\\\"\\\\)\" 1 } } */\n+/* { dg-final { scan-assembler-times \"bpfcr_astr_off \\\\(\\\"0:2\\\"\\\\)\" 1 } } */\n+/* { dg-final { scan-assembler-times \"bpfcr_astr_off \\\\(\\\"0:3\\\"\\\\)\" 1 } } */\n+/* { dg-final { scan-assembler-times \"bpfcr_type \\\\(struct S\\\\)\" 2 } } */\n+/* { dg-final { scan-assembler-times \"bpfcr_type \\\\(struct S_no\\\\)\" 1 } } */\n+\n+/* In foo */\n+\n+/* { dg-final { scan-assembler-times \"rsh32\\t%r0,4\" 1 } } */\n+/* { dg-final { scan-assembler-times \"lsh32\\t%r3,2\" 1 } } */\n+/* { dg-final { scan-assembler-times \"and32\\t%r3,12\" 1 } } */\n+/* { dg-final { scan-assembler-times \"and32\\t%r4,-13\" 1 } } */\n+/* { dg-final { scan-assembler-times \"and32\\t%r0,3\" 1 } } */\n+/* { dg-final { scan-assembler-times \"or32\\t%r4,%r3\" 1 } } */\n+\n+/* In bar */\n+\n+/* { dg-final { scan-assembler-times \"rsh32\\t%r0,6\" 1 } } */\n+\n+\n",
    "prefixes": []
}