From patchwork Wed Jul 19 04:14:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: YunQiang Su X-Patchwork-Id: 122369 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2182380vqt; Tue, 18 Jul 2023 21:15:45 -0700 (PDT) X-Google-Smtp-Source: APBJJlE6qQkcs02yAz8l1LIEEY3HBvNtOjl4uEeRqM/LmA0Kt8/ILnk5MhMnxuqEX9EMeyBV7v1P X-Received: by 2002:a17:906:cc93:b0:993:d75b:63ea with SMTP id oq19-20020a170906cc9300b00993d75b63eamr1303638ejb.16.1689740144926; Tue, 18 Jul 2023 21:15:44 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1689740144; cv=pass; d=google.com; s=arc-20160816; b=Vi1yJhZznsApYvhepZI5hewAVw+yKQSANJtfICV+Nz6IH/URrueNp2q3+6v19IyIf8 adJ6e6kOcW8pwXSUvEow0Fr7wBnO9U2xP4/Fr+oveJYwZnI5+0SPdneJQdheUgIqu/GN 2Rmo9BPPzYUc55kq1bb64DIhx6XwEazDPrNIlaSs60Z9AvEj+KfrC2RdWUt+Hxq7enn8 6zK0BosOUHPCw171oLUE43nNnEdG2FyB/Ai2y6y95rZ9AfpXUXbIqzu5fdsPjnEpN5MT 3oP38mS+0970iv4mCZEhGRvAiDG4pJ5cWqv1vlUd6qh7AqOoXERAbr3hvfyl15Of3xif 7gjw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version :content-transfer-encoding:message-id:date:subject:cc:to:from :dkim-signature:dmarc-filter:delivered-to; bh=NGtHua9eoeA2mkgiLlWrO7vXSioNY6I0t11za2mbAiQ=; fh=n72JKpQ+aQRLhz0mu3MlbIajjt8hg0paZo4VZJVq3pQ=; b=WaaUVdrjB9ug34xYLkyzFadBkPPv1fXgtp9yMKj9FvQmInTpTBVVDz7YlQ3VtqyPXc MEKzK7yCznDAmyM7Lv0ZiJBx9FPtGZ8Qz5FQvManpcOriZyHtrtteKYBT4s19tgyRCGm iZo3zcEd9gwo2B9sb3z25jJet4+GfHp/sregpCuQQ4Srt4Z3rAUJieaFlgZHD8soJ2bc x+BLZX7m6DqIrA/z+dcxVpqaa3sQ2yKsS/Sgh0CnwYngXV/UgkCIQ7xS8BH7xXewZzon b+YiBMUx9iYo7TfmBix9RJukm0OCtnNi9mtpSqjt3f6ULYDnSpj8KyfprvJE0x8Y9jZb X7OQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@cipunited.onmicrosoft.com header.s=selector1-cipunited-onmicrosoft-com header.b=tycs5vbx; arc=pass (i=1 spf=pass spfdomain=cipunited.com dkim=pass dkdomain=cipunited.com dmarc=pass fromdomain=cipunited.com); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id l2-20020a170906414200b0098959daa36esi2028530ejk.1022.2023.07.18.21.15.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Jul 2023 21:15:44 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@cipunited.onmicrosoft.com header.s=selector1-cipunited-onmicrosoft-com header.b=tycs5vbx; arc=pass (i=1 spf=pass spfdomain=cipunited.com dkim=pass dkdomain=cipunited.com dmarc=pass fromdomain=cipunited.com); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AFF803856DF8 for ; Wed, 19 Jul 2023 04:15:38 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2090.outbound.protection.outlook.com [40.107.255.90]) by sourceware.org (Postfix) with ESMTPS id 4A0343858416 for ; Wed, 19 Jul 2023 04:15:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4A0343858416 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=cipunited.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cipunited.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C0qpzpm7e1p2uBtNmdroqdJxNKqh2Kb6XTTKArpgJHam2ex71Lm7D1mVMDvggTA8BdEf5/ssXr25wowxompxP1BCll69a+lk+nvh7hA0IeMra0CKMht1zPtr29+06pPU8++hc7brUhVMIF6xeVulc043qTaM1T2kLna7qm7+IT3gHLQySqcEVLEXqdEpTN37tYAui77hcuYXY7FHsc9CQTsag9d9T32ZbUvicHLKTkeYU41//fRCIEAwEvo7+wP2zsTihcff8zyDh0GRnbjsvHuTdXdlXeCQ34/C3KWHgjIGbPXU1HxBRHw/9pxWKDKoFCxB9f07uCi6HLululxjmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=NGtHua9eoeA2mkgiLlWrO7vXSioNY6I0t11za2mbAiQ=; b=i5rAlICmyYdqhxnw/bnDYGRa5o5Rw3i2VDSTXVEWBArhxZr3f14DvmwGjyB1C8da4zSyMfp2aGQUWbu9zxcPMldLINhjb1FbuLsLwxYmjELlmcp2cz7LwX2/fSlnvAdYQyMJE/fXcVs171MlKsv2oXqsTUpA7LH2UcsQo76IVSOap9iIUaa4T0Eo6pqnDE3ySmgO103agEG4wCD/0hGOs9kb0m6riPPeV/wVM8Tw/WcY//QoOo2hSSbPXLjfqZ3AF0EpT+rpJ/TLkl4Yibie3hod6nXfAdlNxsd+CqbF5U9KekCnM0k6E8Ci6ijH3r9Tv0soAbLdH2AyPiyncLmRdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cipunited.com; dmarc=pass action=none header.from=cipunited.com; dkim=pass header.d=cipunited.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cipunited.onmicrosoft.com; s=selector1-cipunited-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NGtHua9eoeA2mkgiLlWrO7vXSioNY6I0t11za2mbAiQ=; b=tycs5vbxdEVPUNKA/6o87fRy/QpNc65v2JSD/BVJpWv2uCtqSO2CokQn3Xf5s817DZOGmAcYMDfJxy9S7Ue082Q5DUtjFQYrlnThwuv9CVIn7d1/cO2OQTI+KV9Ert/kmIldyT0Flr8qnHU54FX8ZLaxNWSvyV947izEZpEFd9E= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cipunited.com; Received: from TYZPR04MB6117.apcprd04.prod.outlook.com (2603:1096:400:25a::9) by SI2PR04MB5870.apcprd04.prod.outlook.com (2603:1096:4:1e9::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.31; Wed, 19 Jul 2023 04:14:58 +0000 Received: from TYZPR04MB6117.apcprd04.prod.outlook.com ([fe80::f1d0:38df:fe26:663c]) by TYZPR04MB6117.apcprd04.prod.outlook.com ([fe80::f1d0:38df:fe26:663c%7]) with mapi id 15.20.6588.031; Wed, 19 Jul 2023 04:14:57 +0000 From: YunQiang Su To: gcc-patches@gcc.gnu.org Cc: pinskia@gmail.com, jeffreyalaw@gmail.com, ian@airs.com, rguenther@suse.de, YunQiang Su Subject: [PATCH] Store_bit_field_1: Use SUBREG instead of REG if possible Date: Wed, 19 Jul 2023 12:14:32 +0800 Message-Id: <20230719041432.2967226-1-yunqiang.su@cipunited.com> X-Mailer: git-send-email 2.30.2 X-ClientProxiedBy: SG2PR01CA0195.apcprd01.prod.exchangelabs.com (2603:1096:4:189::17) To TYZPR04MB6117.apcprd04.prod.outlook.com (2603:1096:400:25a::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR04MB6117:EE_|SI2PR04MB5870:EE_ X-MS-Office365-Filtering-Correlation-Id: 1fe3ce91-bf2b-4317-e6fd-08db880eb682 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Nql38nT8dAPYpqQlEyvF9S3lK0OppHk9Ho++Aii2uz1Q3bGF8aBAjKWrYH7dDYJmrwr2UCryLDtivBrRTRFJUzI89CWX63xnBhcd1IYUwrG41xpzIeQ3T6xyrc5tC3cQ4CI/k7gjjYpyNaWNyopUJYWn4jAPxPGDsyJjhrqXRCOnvBFg7NIoscMR0vL34u8jB3JQhT5SGlDNFQgceaOBO63vNDRPNyq6lIr3F3pydwGnT7NwIfFC/VHTJDmPwLkjXu9awWF7pRAYdnXXR7UjVC0dD91/gBpA06hxhz74GDJ5bD1Lq3B6JL6xwi2RY+cIAPVgdgHVOUDSyTQPegTmclru4JVJLt4we+/Ty4dgP4c9lpEQVL6kQzjIMYIheRvEVFTzMmleja8pczCP/lFStOb69nGYQWk95FQMk6bsnj7oCuo2FKhy4SX2iSfdcjX9jwnud29jUHHE84ut0BFMz6lW+k4t+BmdXeGMAUrLCwj9Ov2mOiKlq9qvy5jhlKgtBQhGuNYj2vSSWG8oRznY9BnekxLi2cVPKbqwa+jX8bZgeD3Q9VQ2FzuHKGAmK1aeRmJ1rME0dwil1qTKmWHRg5B1Vz9rmeSHDV8WS15V2AA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TYZPR04MB6117.apcprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(376002)(396003)(39830400003)(136003)(366004)(346002)(451199021)(84970400001)(66899021)(52116002)(6486002)(6666004)(478600001)(2616005)(83380400001)(86362001)(30864003)(2906002)(6506007)(1076003)(186003)(6512007)(107886003)(26005)(4326008)(38100700002)(38350700002)(66476007)(41300700001)(66556008)(66946007)(316002)(6916009)(8676002)(5660300002)(36756003)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LR+iDqOpWU4UGUGeI49t2AiCGPupB6bh033EtiO/Ev57AgCRbeNQom4/83kiPQ2EoxAVZRq9JvD1v6VREufMNd3VbEWqA8W8jvr+UxTZRBZsCHvNAitiDgRcIrIZVtePgVMC2moyV6Tepsn8WXuUCAUIs0qV07O/a+GrNU+lGt1qPoJqJ8VJAJd9REeTpyG3zEwak4Nvl8WtNmj5/kSgviO0BHzgXyejKDLcwosyoFNtgTTHjGHoaeQe2rLGzLGIe0nqVUOVsStp7v3MTTwVIR4S9SWjiP+Z/pQPpNHcRcam3PhKyc67PQZANs4/a0R01TUKzXwljzL8P4mUtAjNhq1ZsNpwIw8KAUMBdRxx0Gs0vQvS76RunNJoQJPTBKfiA/NRyAQMR84gaXm6LNd0y8zyAtVbJSgOM016yKERFRNXPCf/rZYu2+vOKfWyYzaq52XwHexyT5hL+FJT0KvNlakqQdMqRC4R3cycKaU7/SGRZIexUOeV5sdlXGL/0QxOn5+C17SG5Jn+q1V7N/Ck5+BQg1GwhN3ydyNm0CxySc58zyrWFAC9n0RVklx8i1XBqh6CXeIZEWquQsRQl9NmMIySGp7sbI8QapyRDlRs/pVc/cGt5yCa66MefLNlHcwifMOuofEcF6rtnzCHs48DT5/lQBQolX2zSVutYdw2wG3aQVifLOAnyp43PHTOP2YhOCGcTR0T8TQCc2d/9YjqppgMp6IdQqKAKdi/XCDOvA9PL+H9b6PESdonZUYPrym5ZQgDm8IHAcktoUc6Uvcr9MvH5lHFqY1m0zuRhymRL7MhnMiTt9kmZFEtjyr1zWGomuIAbOzJ6a7xcdM8K95HExIhq5Lm3VHSvdsY2YRFh1lvO7AvBKgPKsSFYuKJaZzjxqy3PDq48AOBsFIyghWceJka6AgxH8cNUYS53LBfOm2q5Hs4PZm2oLP7HmjBmnXDRTJpOiqeDhSQyurOJ0PiDj85pDtO/SGzdjTV/l+vO4MBEeH2vMddx6vrXAN490TN9QevVzI8I8wea/nw/cDW6gRIB7ukWZtSsfrQHVrAJLuT/p0XYRAz7Aw/U/4b7tzcyDHWJUdWCe+3B/WRdsf3vewpPPLkeMgVfVqie/1rEF/FDVT7lvhBMZXCGznlfy/5x/FTIm6mXYU/9qQGdYwDoSUjjSgI/dxQdDeXIVz6BGWDWdSGNC44UCkLqAZ/q7J98OMiD/yvjF4IiYWuqHr8Vp1KAovbwWY6lE9OW7u9nlrlYHs9G1IBkVeurDdZpazgcXvulxVz7UEy0oRNKc7H4qtzyftnL4mqbX7tcUZ8ZKzZ+SRbc9zopZ1UlKboP0KAvsuTQk4NPbuOlUkJlGYQPeFNCsrMZhsDursSLnPl6mdvNwcV0sZuaBcThLdfpTVHQRZXspPnjGL+HrM4uKn1q9nlyHeSGZ4t/2iZYFBD4cl4m+geXpbztvMNHY6D3K/cztmkeypqwfuk9OLisnH/Go0Rsz6xYawJ0zVQnJoGgNxrLTDhMDR11WFNofmr72xir8K8FkznNwcbC/Qdm5qzQ725XBrc2/AevISn9Wea2LxNNkxTbcb7y5wqM8/H6lyhREFo2aFNbasIYaKvZuqAbQ== X-OriginatorOrg: cipunited.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1fe3ce91-bf2b-4317-e6fd-08db880eb682 X-MS-Exchange-CrossTenant-AuthSource: TYZPR04MB6117.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jul 2023 04:14:57.8399 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e31cf5b5-ee69-4d5f-9c69-edeeda2458c0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lXBQPTRikcpHX0mnjgZ/enT/0aoBRkVxuOHPwEpoCJwIg6vSmhHtR2gumWVc+L8Vcnj9arGS0hM29os6jNko5JIzVZviMVJFnbtXbzA8C1U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR04MB5870 X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771820962076772607 X-GMAIL-MSGID: 1771820962076772607 PR #104914 When work with int val; ((unsigned char*)&val)[3] = *buf; if (val > 0) ... The RTX mode is obtained from REG instead of SUBREG, which make D is used instead of . Thus something wrong happens on sign-extend default architectures, like MIPS64. Let's use str_rtx and mode of str_rtx as the parameters for store_integral_bit_field if: modes of op0 and str_rtx are INT; length of op0 is greater than str_rtx. This patch has been tested on aarch64-linux-gnu, x86_64-linux-gnu, mips64el-linux-gnuabi64 without regression. gcc/ChangeLog: PR: 104914. * expmed.cc(store_bit_field_1): Pass str_rtx and its mode to store_integral_bit_field if the length of op0 is greater than str_rtx. gcc/testsuite/ChangeLog: PR: 104914. * gcc.target/mips/pr104914.c: New testcase. --- gcc/expmed.cc | 20 +- gcc/testsuite/gcc.target/mips/pr104914.c | 17 ++ gcc/xx | 233 +++++++++++++++++++++++ gcc/xx.log | 1 + 4 files changed, 268 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.target/mips/pr104914.c create mode 100644 gcc/xx create mode 100644 gcc/xx.log diff --git a/gcc/expmed.cc b/gcc/expmed.cc index fbd4ce2d42f..5531c19e891 100644 --- a/gcc/expmed.cc +++ b/gcc/expmed.cc @@ -850,6 +850,7 @@ store_bit_field_1 (rtx str_rtx, poly_uint64 bitsize, poly_uint64 bitnum, since that case is valid for any mode. The following cases are only valid for integral modes. */ opt_scalar_int_mode op0_mode = int_mode_for_mode (GET_MODE (op0)); + opt_scalar_int_mode str_mode = int_mode_for_mode (GET_MODE (str_rtx)); scalar_int_mode imode; if (!op0_mode.exists (&imode) || imode != GET_MODE (op0)) { @@ -881,9 +882,22 @@ store_bit_field_1 (rtx str_rtx, poly_uint64 bitsize, poly_uint64 bitnum, op0 = gen_lowpart (op0_mode.require (), op0); } - return store_integral_bit_field (op0, op0_mode, ibitsize, ibitnum, - bitregion_start, bitregion_end, - fieldmode, value, reverse, fallback_p); + /* If MODEs of str_rtx and op0 are INT, and the length of op0 is greater than + str_rtx, it means that str_rtx has a shorter SUBREG: int32 on 64 mach/ABI + is an example. For this case, we should use the mode of SUBREG, otherwise + bad code will generate for sign-extension ports, like MIPS. */ + bool use_str_mode = false; + if (GET_MODE_CLASS (GET_MODE (str_rtx)) == MODE_INT + && GET_MODE_CLASS (GET_MODE (op0)) == MODE_INT + && known_gt (GET_MODE_SIZE (GET_MODE (op0)), + GET_MODE_SIZE (GET_MODE (str_rtx)))) + use_str_mode = true; + + return store_integral_bit_field (use_str_mode ? str_rtx : op0, + use_str_mode ? str_mode : op0_mode, + ibitsize, ibitnum, bitregion_start, + bitregion_end, fieldmode, value, + reverse, fallback_p); } /* Subroutine of store_bit_field_1, with the same arguments, except diff --git a/gcc/testsuite/gcc.target/mips/pr104914.c b/gcc/testsuite/gcc.target/mips/pr104914.c new file mode 100644 index 00000000000..fd6ef6af446 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/pr104914.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-march=mips64r2 -mabi=64" } */ + +/* { dg-final { scan-assembler-not "\tdins\t" } } */ + +NOMIPS16 int test (const unsigned char *buf) +{ + int val; + ((unsigned char*)&val)[0] = *buf++; + ((unsigned char*)&val)[1] = *buf++; + ((unsigned char*)&val)[2] = *buf++; + ((unsigned char*)&val)[3] = *buf++; + if(val > 0) + return 1; + else + return 0; +} diff --git a/gcc/xx b/gcc/xx new file mode 100644 index 00000000000..664e8ba8b25 --- /dev/null +++ b/gcc/xx @@ -0,0 +1,233 @@ +DEFTREECODE (ERROR_MARK, "error_mark", tcc_exceptional, 0) +DEFTREECODE (IDENTIFIER_NODE, "identifier_node", tcc_exceptional, 0) +DEFTREECODE (TREE_LIST, "tree_list", tcc_exceptional, 0) +DEFTREECODE (TREE_VEC, "tree_vec", tcc_exceptional, 0) +DEFTREECODE (BLOCK, "block", tcc_exceptional, 0) +DEFTREECODE (OFFSET_TYPE, "offset_type", tcc_type, 0) +DEFTREECODE (ENUMERAL_TYPE, "enumeral_type", tcc_type, 0) +DEFTREECODE (BOOLEAN_TYPE, "boolean_type", tcc_type, 0) +DEFTREECODE (INTEGER_TYPE, "integer_type", tcc_type, 0) +DEFTREECODE (REAL_TYPE, "real_type", tcc_type, 0) +DEFTREECODE (POINTER_TYPE, "pointer_type", tcc_type, 0) +DEFTREECODE (REFERENCE_TYPE, "reference_type", tcc_type, 0) +DEFTREECODE (NULLPTR_TYPE, "nullptr_type", tcc_type, 0) +DEFTREECODE (FIXED_POINT_TYPE, "fixed_point_type", tcc_type, 0) +DEFTREECODE (COMPLEX_TYPE, "complex_type", tcc_type, 0) +DEFTREECODE (VECTOR_TYPE, "vector_type", tcc_type, 0) +DEFTREECODE (ARRAY_TYPE, "array_type", tcc_type, 0) +DEFTREECODE (RECORD_TYPE, "record_type", tcc_type, 0) +DEFTREECODE (UNION_TYPE, "union_type", tcc_type, 0) /* C union type */ +DEFTREECODE (QUAL_UNION_TYPE, "qual_union_type", tcc_type, 0) +DEFTREECODE (VOID_TYPE, "void_type", tcc_type, 0) +DEFTREECODE (FUNCTION_TYPE, "function_type", tcc_type, 0) +DEFTREECODE (METHOD_TYPE, "method_type", tcc_type, 0) +DEFTREECODE (LANG_TYPE, "lang_type", tcc_type, 0) +DEFTREECODE (OPAQUE_TYPE, "opaque_type", tcc_type, 0) +DEFTREECODE (VOID_CST, "void_cst", tcc_constant, 0) +DEFTREECODE (INTEGER_CST, "integer_cst", tcc_constant, 0) +DEFTREECODE (POLY_INT_CST, "poly_int_cst", tcc_constant, 0) +DEFTREECODE (REAL_CST, "real_cst", tcc_constant, 0) +DEFTREECODE (FIXED_CST, "fixed_cst", tcc_constant, 0) +DEFTREECODE (COMPLEX_CST, "complex_cst", tcc_constant, 0) +DEFTREECODE (VECTOR_CST, "vector_cst", tcc_constant, 0) +DEFTREECODE (STRING_CST, "string_cst", tcc_constant, 0) +DEFTREECODE (FUNCTION_DECL, "function_decl", tcc_declaration, 0) +DEFTREECODE (LABEL_DECL, "label_decl", tcc_declaration, 0) +DEFTREECODE (FIELD_DECL, "field_decl", tcc_declaration, 0) +DEFTREECODE (VAR_DECL, "var_decl", tcc_declaration, 0) +DEFTREECODE (CONST_DECL, "const_decl", tcc_declaration, 0) +DEFTREECODE (PARM_DECL, "parm_decl", tcc_declaration, 0) +DEFTREECODE (TYPE_DECL, "type_decl", tcc_declaration, 0) +DEFTREECODE (RESULT_DECL, "result_decl", tcc_declaration, 0) +DEFTREECODE (DEBUG_EXPR_DECL, "debug_expr_decl", tcc_declaration, 0) +DEFTREECODE (DEBUG_BEGIN_STMT, "debug_begin_stmt", tcc_statement, 0) +DEFTREECODE (NAMESPACE_DECL, "namespace_decl", tcc_declaration, 0) +DEFTREECODE (IMPORTED_DECL, "imported_decl", tcc_declaration, 0) +DEFTREECODE (NAMELIST_DECL, "namelist_decl", tcc_declaration, 0) +DEFTREECODE (TRANSLATION_UNIT_DECL, "translation_unit_decl",\ +DEFTREECODE (COMPONENT_REF, "component_ref", tcc_reference, 3) +DEFTREECODE (BIT_FIELD_REF, "bit_field_ref", tcc_reference, 3) +DEFTREECODE (ARRAY_REF, "array_ref", tcc_reference, 4) +DEFTREECODE (ARRAY_RANGE_REF, "array_range_ref", tcc_reference, 4) +DEFTREECODE (REALPART_EXPR, "realpart_expr", tcc_reference, 1) +DEFTREECODE (IMAGPART_EXPR, "imagpart_expr", tcc_reference, 1) +DEFTREECODE (VIEW_CONVERT_EXPR, "view_convert_expr", tcc_reference, 1) +DEFTREECODE (INDIRECT_REF, "indirect_ref", tcc_reference, 1) +DEFTREECODE (OBJ_TYPE_REF, "obj_type_ref", tcc_expression, 3) +DEFTREECODE (CONSTRUCTOR, "constructor", tcc_exceptional, 0) +DEFTREECODE (COMPOUND_EXPR, "compound_expr", tcc_expression, 2) +DEFTREECODE (MODIFY_EXPR, "modify_expr", tcc_expression, 2) +DEFTREECODE (INIT_EXPR, "init_expr", tcc_expression, 2) +DEFTREECODE (TARGET_EXPR, "target_expr", tcc_expression, 4) +DEFTREECODE (COND_EXPR, "cond_expr", tcc_expression, 3) +DEFTREECODE (VEC_DUPLICATE_EXPR, "vec_duplicate_expr", tcc_unary, 1) +DEFTREECODE (VEC_SERIES_EXPR, "vec_series_expr", tcc_binary, 2) +DEFTREECODE (VEC_COND_EXPR, "vec_cond_expr", tcc_expression, 3) +DEFTREECODE (VEC_PERM_EXPR, "vec_perm_expr", tcc_expression, 3) +DEFTREECODE (BIND_EXPR, "bind_expr", tcc_expression, 3) +DEFTREECODE (CALL_EXPR, "call_expr", tcc_vl_exp, 3) +DEFTREECODE (WITH_CLEANUP_EXPR, "with_cleanup_expr", tcc_expression, 1) +DEFTREECODE (CLEANUP_POINT_EXPR, "cleanup_point_expr", tcc_expression, 1) +DEFTREECODE (PLACEHOLDER_EXPR, "placeholder_expr", tcc_exceptional, 0) +DEFTREECODE (PLUS_EXPR, "plus_expr", tcc_binary, 2) +DEFTREECODE (MINUS_EXPR, "minus_expr", tcc_binary, 2) +DEFTREECODE (MULT_EXPR, "mult_expr", tcc_binary, 2) +DEFTREECODE (POINTER_PLUS_EXPR, "pointer_plus_expr", tcc_binary, 2) +DEFTREECODE (POINTER_DIFF_EXPR, "pointer_diff_expr", tcc_binary, 2) +DEFTREECODE (MULT_HIGHPART_EXPR, "mult_highpart_expr", tcc_binary, 2) +DEFTREECODE (TRUNC_DIV_EXPR, "trunc_div_expr", tcc_binary, 2) +DEFTREECODE (CEIL_DIV_EXPR, "ceil_div_expr", tcc_binary, 2) +DEFTREECODE (FLOOR_DIV_EXPR, "floor_div_expr", tcc_binary, 2) +DEFTREECODE (ROUND_DIV_EXPR, "round_div_expr", tcc_binary, 2) +DEFTREECODE (TRUNC_MOD_EXPR, "trunc_mod_expr", tcc_binary, 2) +DEFTREECODE (CEIL_MOD_EXPR, "ceil_mod_expr", tcc_binary, 2) +DEFTREECODE (FLOOR_MOD_EXPR, "floor_mod_expr", tcc_binary, 2) +DEFTREECODE (ROUND_MOD_EXPR, "round_mod_expr", tcc_binary, 2) +DEFTREECODE (RDIV_EXPR, "rdiv_expr", tcc_binary, 2) +DEFTREECODE (EXACT_DIV_EXPR, "exact_div_expr", tcc_binary, 2) +DEFTREECODE (FIX_TRUNC_EXPR, "fix_trunc_expr", tcc_unary, 1) +DEFTREECODE (FLOAT_EXPR, "float_expr", tcc_unary, 1) +DEFTREECODE (NEGATE_EXPR, "negate_expr", tcc_unary, 1) +DEFTREECODE (MIN_EXPR, "min_expr", tcc_binary, 2) +DEFTREECODE (MAX_EXPR, "max_expr", tcc_binary, 2) +DEFTREECODE (ABS_EXPR, "abs_expr", tcc_unary, 1) +DEFTREECODE (ABSU_EXPR, "absu_expr", tcc_unary, 1) +DEFTREECODE (LSHIFT_EXPR, "lshift_expr", tcc_binary, 2) +DEFTREECODE (RSHIFT_EXPR, "rshift_expr", tcc_binary, 2) +DEFTREECODE (LROTATE_EXPR, "lrotate_expr", tcc_binary, 2) +DEFTREECODE (RROTATE_EXPR, "rrotate_expr", tcc_binary, 2) +DEFTREECODE (BIT_IOR_EXPR, "bit_ior_expr", tcc_binary, 2) +DEFTREECODE (BIT_XOR_EXPR, "bit_xor_expr", tcc_binary, 2) +DEFTREECODE (BIT_AND_EXPR, "bit_and_expr", tcc_binary, 2) +DEFTREECODE (BIT_NOT_EXPR, "bit_not_expr", tcc_unary, 1) +DEFTREECODE (TRUTH_ANDIF_EXPR, "truth_andif_expr", tcc_expression, 2) +DEFTREECODE (TRUTH_ORIF_EXPR, "truth_orif_expr", tcc_expression, 2) +DEFTREECODE (TRUTH_AND_EXPR, "truth_and_expr", tcc_expression, 2) +DEFTREECODE (TRUTH_OR_EXPR, "truth_or_expr", tcc_expression, 2) +DEFTREECODE (TRUTH_XOR_EXPR, "truth_xor_expr", tcc_expression, 2) +DEFTREECODE (TRUTH_NOT_EXPR, "truth_not_expr", tcc_expression, 1) +DEFTREECODE (LT_EXPR, "lt_expr", tcc_comparison, 2) +DEFTREECODE (LE_EXPR, "le_expr", tcc_comparison, 2) +DEFTREECODE (GT_EXPR, "gt_expr", tcc_comparison, 2) +DEFTREECODE (GE_EXPR, "ge_expr", tcc_comparison, 2) +DEFTREECODE (LTGT_EXPR, "ltgt_expr", tcc_comparison, 2) +DEFTREECODE (EQ_EXPR, "eq_expr", tcc_comparison, 2) +DEFTREECODE (NE_EXPR, "ne_expr", tcc_comparison, 2) +DEFTREECODE (UNORDERED_EXPR, "unordered_expr", tcc_comparison, 2) +DEFTREECODE (ORDERED_EXPR, "ordered_expr", tcc_comparison, 2) +DEFTREECODE (UNLT_EXPR, "unlt_expr", tcc_comparison, 2) +DEFTREECODE (UNLE_EXPR, "unle_expr", tcc_comparison, 2) +DEFTREECODE (UNGT_EXPR, "ungt_expr", tcc_comparison, 2) +DEFTREECODE (UNGE_EXPR, "unge_expr", tcc_comparison, 2) +DEFTREECODE (UNEQ_EXPR, "uneq_expr", tcc_comparison, 2) +DEFTREECODE (RANGE_EXPR, "range_expr", tcc_binary, 2) +DEFTREECODE (PAREN_EXPR, "paren_expr", tcc_unary, 1) +DEFTREECODE (CONVERT_EXPR, "convert_expr", tcc_unary, 1) +DEFTREECODE (ADDR_SPACE_CONVERT_EXPR, "addr_space_convert_expr", tcc_unary, 1) +DEFTREECODE (FIXED_CONVERT_EXPR, "fixed_convert_expr", tcc_unary, 1) +DEFTREECODE (NOP_EXPR, "nop_expr", tcc_unary, 1) +DEFTREECODE (NON_LVALUE_EXPR, "non_lvalue_expr", tcc_unary, 1) +DEFTREECODE (COMPOUND_LITERAL_EXPR, "compound_literal_expr", tcc_expression, 1) +DEFTREECODE (SAVE_EXPR, "save_expr", tcc_expression, 1) +DEFTREECODE (ADDR_EXPR, "addr_expr", tcc_expression, 1) +DEFTREECODE (FDESC_EXPR, "fdesc_expr", tcc_expression, 2) +DEFTREECODE (BIT_INSERT_EXPR, "bit_insert_expr", tcc_expression, 3) +DEFTREECODE (COMPLEX_EXPR, "complex_expr", tcc_binary, 2) +DEFTREECODE (CONJ_EXPR, "conj_expr", tcc_unary, 1) +DEFTREECODE (PREDECREMENT_EXPR, "predecrement_expr", tcc_expression, 2) +DEFTREECODE (PREINCREMENT_EXPR, "preincrement_expr", tcc_expression, 2) +DEFTREECODE (POSTDECREMENT_EXPR, "postdecrement_expr", tcc_expression, 2) +DEFTREECODE (POSTINCREMENT_EXPR, "postincrement_expr", tcc_expression, 2) +DEFTREECODE (VA_ARG_EXPR, "va_arg_expr", tcc_expression, 1) +DEFTREECODE (TRY_CATCH_EXPR, "try_catch_expr", tcc_statement, 2) +DEFTREECODE (TRY_FINALLY_EXPR, "try_finally_expr", tcc_statement, 2) +DEFTREECODE (EH_ELSE_EXPR, "eh_else_expr", tcc_statement, 2) +DEFTREECODE (DECL_EXPR, "decl_expr", tcc_statement, 1) +DEFTREECODE (LABEL_EXPR, "label_expr", tcc_statement, 1) +DEFTREECODE (GOTO_EXPR, "goto_expr", tcc_statement, 1) +DEFTREECODE (RETURN_EXPR, "return_expr", tcc_statement, 1) +DEFTREECODE (EXIT_EXPR, "exit_expr", tcc_statement, 1) +DEFTREECODE (LOOP_EXPR, "loop_expr", tcc_statement, 1) +DEFTREECODE (SWITCH_EXPR, "switch_expr", tcc_statement, 2) +DEFTREECODE (CASE_LABEL_EXPR, "case_label_expr", tcc_statement, 4) +DEFTREECODE (ASM_EXPR, "asm_expr", tcc_statement, 5) +DEFTREECODE (SSA_NAME, "ssa_name", tcc_exceptional, 0) +DEFTREECODE (CATCH_EXPR, "catch_expr", tcc_statement, 2) +DEFTREECODE (EH_FILTER_EXPR, "eh_filter_expr", tcc_statement, 2) +DEFTREECODE (SCEV_KNOWN, "scev_known", tcc_expression, 0) +DEFTREECODE (SCEV_NOT_KNOWN, "scev_not_known", tcc_expression, 0) +DEFTREECODE (POLYNOMIAL_CHREC, "polynomial_chrec", tcc_expression, 2) +DEFTREECODE (STATEMENT_LIST, "statement_list", tcc_exceptional, 0) +DEFTREECODE (ASSERT_EXPR, "assert_expr", tcc_expression, 2) +DEFTREECODE (TREE_BINFO, "tree_binfo", tcc_exceptional, 0) +DEFTREECODE (WITH_SIZE_EXPR, "with_size_expr", tcc_expression, 2) +DEFTREECODE (REALIGN_LOAD_EXPR, "realign_load", tcc_expression, 3) +DEFTREECODE (TARGET_MEM_REF, "target_mem_ref", tcc_reference, 5) +DEFTREECODE (MEM_REF, "mem_ref", tcc_reference, 2) +DEFTREECODE (OACC_PARALLEL, "oacc_parallel", tcc_statement, 2) +DEFTREECODE (OACC_KERNELS, "oacc_kernels", tcc_statement, 2) +DEFTREECODE (OACC_SERIAL, "oacc_serial", tcc_statement, 2) +DEFTREECODE (OACC_DATA, "oacc_data", tcc_statement, 2) +DEFTREECODE (OACC_HOST_DATA, "oacc_host_data", tcc_statement, 2) +DEFTREECODE (OMP_PARALLEL, "omp_parallel", tcc_statement, 2) +DEFTREECODE (OMP_TASK, "omp_task", tcc_statement, 2) +DEFTREECODE (OMP_FOR, "omp_for", tcc_statement, 7) +DEFTREECODE (OMP_SIMD, "omp_simd", tcc_statement, 7) +DEFTREECODE (OMP_DISTRIBUTE, "omp_distribute", tcc_statement, 7) +DEFTREECODE (OMP_TASKLOOP, "omp_taskloop", tcc_statement, 7) +DEFTREECODE (OMP_LOOP, "omp_loop", tcc_statement, 7) +DEFTREECODE (OACC_LOOP, "oacc_loop", tcc_statement, 7) +DEFTREECODE (OMP_TEAMS, "omp_teams", tcc_statement, 2) +DEFTREECODE (OMP_TARGET_DATA, "omp_target_data", tcc_statement, 2) +DEFTREECODE (OMP_TARGET, "omp_target", tcc_statement, 2) +DEFTREECODE (OMP_SECTIONS, "omp_sections", tcc_statement, 2) +DEFTREECODE (OMP_ORDERED, "omp_ordered", tcc_statement, 2) +DEFTREECODE (OMP_CRITICAL, "omp_critical", tcc_statement, 3) +DEFTREECODE (OMP_SINGLE, "omp_single", tcc_statement, 2) +DEFTREECODE (OMP_SCOPE, "omp_scope", tcc_statement, 2) +DEFTREECODE (OMP_TASKGROUP, "omp_taskgroup", tcc_statement, 2) +DEFTREECODE (OMP_MASKED, "omp_masked", tcc_statement, 2) +DEFTREECODE (OMP_SCAN, "omp_scan", tcc_statement, 2) +DEFTREECODE (OMP_SECTION, "omp_section", tcc_statement, 1) +DEFTREECODE (OMP_MASTER, "omp_master", tcc_statement, 1) +DEFTREECODE (OACC_CACHE, "oacc_cache", tcc_statement, 1) +DEFTREECODE (OACC_DECLARE, "oacc_declare", tcc_statement, 1) +DEFTREECODE (OACC_ENTER_DATA, "oacc_enter_data", tcc_statement, 1) +DEFTREECODE (OACC_EXIT_DATA, "oacc_exit_data", tcc_statement, 1) +DEFTREECODE (OACC_UPDATE, "oacc_update", tcc_statement, 1) +DEFTREECODE (OMP_TARGET_UPDATE, "omp_target_update", tcc_statement, 1) +DEFTREECODE (OMP_TARGET_ENTER_DATA, "omp_target_enter_data", tcc_statement, 1) +DEFTREECODE (OMP_TARGET_EXIT_DATA, "omp_target_exit_data", tcc_statement, 1) +DEFTREECODE (OMP_ATOMIC, "omp_atomic", tcc_statement, 2) +DEFTREECODE (OMP_ATOMIC_READ, "omp_atomic_read", tcc_statement, 1) +DEFTREECODE (OMP_ATOMIC_CAPTURE_OLD, "omp_atomic_capture_old", tcc_statement, 2) +DEFTREECODE (OMP_ATOMIC_CAPTURE_NEW, "omp_atomic_capture_new", tcc_statement, 2) +DEFTREECODE (OMP_CLAUSE, "omp_clause", tcc_exceptional, 0) +DEFTREECODE (TRANSACTION_EXPR, "transaction_expr", tcc_expression, 1) +DEFTREECODE (DOT_PROD_EXPR, "dot_prod_expr", tcc_expression, 3) +DEFTREECODE (WIDEN_SUM_EXPR, "widen_sum_expr", tcc_binary, 2) +DEFTREECODE (SAD_EXPR, "sad_expr", tcc_expression, 3) +DEFTREECODE (WIDEN_MULT_EXPR, "widen_mult_expr", tcc_binary, 2) +DEFTREECODE (WIDEN_MULT_PLUS_EXPR, "widen_mult_plus_expr", tcc_expression, 3) +DEFTREECODE (WIDEN_MULT_MINUS_EXPR, "widen_mult_minus_expr", tcc_expression, 3) +DEFTREECODE (WIDEN_LSHIFT_EXPR, "widen_lshift_expr", tcc_binary, 2) +DEFTREECODE (VEC_WIDEN_MULT_HI_EXPR, "widen_mult_hi_expr", tcc_binary, 2) +DEFTREECODE (VEC_WIDEN_MULT_LO_EXPR, "widen_mult_lo_expr", tcc_binary, 2) +DEFTREECODE (VEC_WIDEN_MULT_EVEN_EXPR, "widen_mult_even_expr", tcc_binary, 2) +DEFTREECODE (VEC_WIDEN_MULT_ODD_EXPR, "widen_mult_odd_expr", tcc_binary, 2) +DEFTREECODE (VEC_UNPACK_HI_EXPR, "vec_unpack_hi_expr", tcc_unary, 1) +DEFTREECODE (VEC_UNPACK_LO_EXPR, "vec_unpack_lo_expr", tcc_unary, 1) +DEFTREECODE (VEC_UNPACK_FLOAT_HI_EXPR, "vec_unpack_float_hi_expr", tcc_unary, 1) +DEFTREECODE (VEC_UNPACK_FLOAT_LO_EXPR, "vec_unpack_float_lo_expr", tcc_unary, 1) +DEFTREECODE (VEC_UNPACK_FIX_TRUNC_HI_EXPR, "vec_unpack_fix_trunc_hi_expr", +DEFTREECODE (VEC_UNPACK_FIX_TRUNC_LO_EXPR, "vec_unpack_fix_trunc_lo_expr", +DEFTREECODE (VEC_PACK_TRUNC_EXPR, "vec_pack_trunc_expr", tcc_binary, 2) +DEFTREECODE (VEC_PACK_SAT_EXPR, "vec_pack_sat_expr", tcc_binary, 2) +DEFTREECODE (VEC_PACK_FIX_TRUNC_EXPR, "vec_pack_fix_trunc_expr", tcc_binary, 2) +DEFTREECODE (VEC_PACK_FLOAT_EXPR, "vec_pack_float_expr", tcc_binary, 2) +DEFTREECODE (VEC_WIDEN_LSHIFT_HI_EXPR, "widen_lshift_hi_expr", tcc_binary, 2) +DEFTREECODE (VEC_WIDEN_LSHIFT_LO_EXPR, "widen_lshift_lo_expr", tcc_binary, 2) +DEFTREECODE (PREDICT_EXPR, "predict_expr", tcc_expression, 1) +DEFTREECODE (OPTIMIZATION_NODE, "optimization_node", tcc_exceptional, 0) +DEFTREECODE (TARGET_OPTION_NODE, "target_option_node", tcc_exceptional, 0) +DEFTREECODE (ANNOTATE_EXPR, "annotate_expr", tcc_expression, 3) diff --git a/gcc/xx.log b/gcc/xx.log new file mode 100644 index 00000000000..33edf65aab6 --- /dev/null +++ b/gcc/xx.log @@ -0,0 +1 @@ +make: *** No targets specified and no makefile found. Stop.