From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30041.outbound.protection.outlook.com [40.107.3.41]) by sourceware.org (Postfix) with ESMTPS id E36203858D28 for ; Fri, 12 Nov 2021 07:30:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E36203858D28 Received: from AS9PR06CA0050.eurprd06.prod.outlook.com (2603:10a6:20b:463::13) by AM5PR0802MB2484.eurprd08.prod.outlook.com (2603:10a6:203:a1::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.16; Fri, 12 Nov 2021 07:30:44 +0000 Received: from VE1EUR03FT011.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:463:cafe::39) by AS9PR06CA0050.outlook.office365.com (2603:10a6:20b:463::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.19 via Frontend Transport; Fri, 12 Nov 2021 07:30:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT011.mail.protection.outlook.com (10.152.18.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.20 via Frontend Transport; Fri, 12 Nov 2021 07:30:43 +0000 Received: ("Tessian outbound bc35e71e65aa:v109"); Fri, 12 Nov 2021 07:30:43 +0000 X-CR-MTA-TID: 64aa7808 Received: from 6a11b3e3f135.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 851BA408-B47D-4D48-A936-ABCC8D0B923E.1; Fri, 12 Nov 2021 07:30:37 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 6a11b3e3f135.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 12 Nov 2021 07:30:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SaDSq5ToO3J9mOGVnG9pJslps0qsIwpa1azFOQcfkpii5OOewGpX13A340ps8+WUyBbpl5QPfUbKzd0ZP8HvTKTLbX6cafUwrLzO3Jq44UYFQL6hs/0Ct7gDaVxpGeOB1ArimrXyCBtnmQyD5DDU5gHwZjCmE96en/I1cfZCDYWk7rge/JGigeRXe9fyuL+scQc/hu81lnZTb3w9CR1VLQmBUPs/ORMk2/4FD1hhzeWgkVRYxXNC4H9Osl1k60EhJNo+tmV6RD8bwIaSxF5TsDDwy5Biiy/jUpJJU+VsZ4HyTK76rTTjimTq4ctVM+ZYdczk4qEdsxdPwKU9iC2YzA== 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=3pLuobImiapZ/xFMq7jMgXUy9D3IpBfVooVRZYmSqzA=; b=QidxX/HbgvrXy7RGNt3NDnwYIrEKum06+LEMqRKPybB1MQ981MHysaeMcujSWQkV7HmCe9LYrqt5xsKlQMagRKGY57PQakZVmuLABJbUSQLiegi9Mj8RMNZW+90m2WyUNd3uNR4WbHWDRxW2LAFcH4Qf8fTi8JP/R+bTD6SD1Shm3QF6rOG7+9yzQfQ51K5F/aoUGZvsCaCKnjE6juC5mj6NFSZJ4cfMQze4eU11HrDEufQ1lzLFHyUqqKUISTdIcQK3Bz89LEqZuajHmcLZaQhAnts552am177llIZOV6gh7r6d2hNSvwY4PqtcTe69M0fy0+omN3Yph6o3nyqZdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from AM0PR08MB5316.eurprd08.prod.outlook.com (2603:10a6:208:185::14) by AM0PR08MB5506.eurprd08.prod.outlook.com (2603:10a6:208:17e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Fri, 12 Nov 2021 07:30:35 +0000 Received: from AM0PR08MB5316.eurprd08.prod.outlook.com ([fe80::1096:1244:d709:fbee]) by AM0PR08MB5316.eurprd08.prod.outlook.com ([fe80::1096:1244:d709:fbee%3]) with mapi id 15.20.4690.019; Fri, 12 Nov 2021 07:30:35 +0000 From: Tamar Christina To: Jakub Jelinek CC: Jonathan Wakely , Richard Biener , "gcc-patches@gcc.gnu.org" , nd Subject: RE: [PATCH] middle-end: fix de-optimizations with bitclear patterns on signed values Thread-Topic: [PATCH] middle-end: fix de-optimizations with bitclear patterns on signed values Thread-Index: AQHXwbT49hlh89SzcEi6qeY4FuXfDqvT7LQAgA/njkCAAS6gAIAAAdEQgAADmgCAADiyMIAAEiCAgAAB2wCAAACAgIAABA2AgABkXwCAAAEugIAAAusAgAv6UoCAADw/gIABbymAgAAxFoCADBFbYA== Date: Fri, 12 Nov 2021 07:30:35 +0000 Message-ID: References: <20211026132008.GY304296@tucnak> <20211026133625.GZ304296@tucnak> <20211026193953.GC304296@tucnak> <20211103142045.GO304296@tucnak> <20211104151033.GY304296@tucnak> In-Reply-To: <20211104151033.GY304296@tucnak> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: CEC415655E4C7F47B626A5F84C52CDAF.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: dd213327-97f4-43bb-4935-08d9a5ae564b x-ms-traffictypediagnostic: AM0PR08MB5506:|AM5PR0802MB2484: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: LU4SOFk5HJf8+JDQmsIKHo5rnetLozTN4gNzdclH2hxy4SG0prcKN0KKSu32ww2NBUR8E8y69KUuKe1QDiWNfDMVH0WBpX0zLhZbeeb8JEpIjOAP/gjuY1NMrV6qVIj151MKr7kJCavv8AjuqCImA6u7O6jkCUDXm9leqzY2n03nEvBDhKenriexzurR5ug47U0g2GjVD+V8HdcHJdb5BjucFnXoSaTrE3uaIZ0wIEWJ4SgEDTvBfrMwCSwgiMekCR6gRZgIXyO+D6/dxaOpDyHIOpw86glfKesF/quAsTu+Vcxi4DQBA4M2HFROA1MQ1Ygf/UMIaStTleZW+ppSqmpaId3vqYYVZ+s5IpV8OpC7XIFBrG6LvtJ16IPo1S3xLYNA7HFBPCV+7Szb12Jz6mPuPKl0MULjD5BLe86pdhrCSN5sNdEqB2wzwNAnXrV06DhZRqkqHeKpfZy082QY2rLeD3oWnSWy0fuLs8XvITpbJ+GZ5SlzTLQ+Xz6PrdS9jawPeLFVeTkrT5QOGDrdPkZxmnQo/MlDmITuR7wL3niGoX8YPyOjcxTuzvoo/72a2xZk+D4nIjUm3hhiMHGhmqYiq7jJVTkOUbBzRnMbzJrBq9Ayo0LBp5VH4oRNRD4nG4YDMlNlFfDudlzTw32LY5P3Z53uUw9PgDl20UcU9c7zLNPjI5bvWojBoVPLcb0to9V46VSIXYsup38RGAQ4nQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR08MB5316.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(76116006)(66946007)(508600001)(2906002)(7696005)(66476007)(9686003)(316002)(99936003)(38070700005)(55016002)(83380400001)(66446008)(66556008)(4326008)(64756008)(186003)(54906003)(8936002)(71200400001)(5660300002)(52536014)(26005)(53546011)(33656002)(6506007)(8676002)(6916009)(38100700002)(122000001)(86362001); DIR:OUT; SFP:1101; Content-Type: multipart/mixed; boundary="_002_AM0PR08MB5316B2FB8E5A2A0D5229DF64FF959AM0PR08MB5316eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5506 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT011.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: df0d0b3c-3744-4eea-ab8d-08d9a5ae514f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tT8OVZWr5iFL2mAKnGFc2SPGudhzjxjTqzmxTU9zwqv7LErV3RYS/L5Mfb2bXlfs2h3Tq8GJ3mA37+ZES9nINc3+/S86ZUi7yyFF8eUyPLYymleXvQMgzGPS+ao0IEp0PgsECYNSicyuzybPWVOgZe8QiO/uqCTKxFp5mCi6udzlTUrld+mlUpi7ju51s3PUih6rLEhHl4OlZmnLrSkmXExWU1o/3z+Qb5wkjw3A7rX3njvyVhltxrlm5vdM7rNUByNPZW7sbBSqS9bKd1aEwD6mPSoE9w9ha7QgD/NHozkC1/x7gebGoq6IW9ukfL07d+TytMIaBGVeAIdWFWUfwj1/kmqiG1eVDMiB2r1cD6/eziz2rzVt0mG4q0sfm0YlUHep4wyUjCMWl6tvmH5/MjjqefD90VIoLXo3UktCqvpEwGnzHpVUH02/eUPXNxXAUd2GfQw1XKj+eYHsYd7CDSVpuKpayf04Dn+jsEfJ4VYHOE7UkKx05g3PVNa+kn1kLMMMn8A6Lq+BGFHdx5oKpPZD8H8oXHN8NuBla0EMXo/IzVl4PTjSrDPuLAbiAcCfP4KUPjL8V/5oANKyJUFDJ/N5MwJpEkWOX6i1hUrUOtl1Wb7Rq8WqTYInyYIq3eoFPWMaYPGI63dkc5SYY4UA0r2bJ7om5vXevQbtA9avqzrm/bnx9tWmcNYBLf2282BSDJ4D5VDWz1B6ADZoitt5Jw== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(36840700001)(46966006)(33656002)(7696005)(83380400001)(99936003)(5660300002)(26005)(508600001)(70206006)(86362001)(70586007)(2906002)(6506007)(55016002)(53546011)(81166007)(4326008)(8676002)(9686003)(235185007)(356005)(47076005)(6862004)(186003)(82310400003)(52536014)(336012)(36860700001)(8936002)(54906003)(316002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 07:30:43.8893 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dd213327-97f4-43bb-4935-08d9a5ae564b X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT011.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2484 X-Spam-Status: No, score=-13.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: , X-List-Received-Date: Fri, 12 Nov 2021 07:30:50 -0000 --_002_AM0PR08MB5316B2FB8E5A2A0D5229DF64FF959AM0PR08MB5316eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: Jakub Jelinek > Sent: Thursday, November 4, 2021 4:11 PM > To: Tamar Christina > Cc: Jonathan Wakely ; Richard Biener > ; gcc-patches@gcc.gnu.org; nd > Subject: Re: [PATCH] middle-end: fix de-optimizations with bitclear patte= rns > on signed values >=20 > On Thu, Nov 04, 2021 at 12:19:34PM +0000, Tamar Christina wrote: > > I'm not sure the precision matters since if the conversion resulted in > > not enough precision such that It influences the compare it would have > been optimized out. >=20 > You can't really rely on other optimizations being performed. They will > usually happen, but might not because such code only materialized short > time ago without folding happening in between, or some debug counters or = - > fno-* disabling some passes, ... Fair point, I have separated out the logic as you requested and added the d= ebug fix. Bootstrapped Regtested on aarch64-none-linux-gnu, x86_64-pc-linux-gnu and no regressions. Ok for master? Thanks, Tamar gcc/ChangeLog: * tree-ssa-phiopt.c (spaceship_replacement): Handle new canonical codegen. --- inline copy of patch --- diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index 0e339c46afa29fa97f90d9bc4394370cd9b4b396..3ad5b23885a37eec0beff229e2a= 96e86658b2d1a 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -2038,11 +2038,36 @@ spaceship_replacement (basic_block cond_bb, basic_b= lock middle_bb, gimple *orig_use_stmt =3D use_stmt; tree orig_use_lhs =3D NULL_TREE; int prec =3D TYPE_PRECISION (TREE_TYPE (phires)); - if (is_gimple_assign (use_stmt) - && gimple_assign_rhs_code (use_stmt) =3D=3D BIT_AND_EXPR - && TREE_CODE (gimple_assign_rhs2 (use_stmt)) =3D=3D INTEGER_CST - && (wi::to_wide (gimple_assign_rhs2 (use_stmt)) - =3D=3D wi::shifted_mask (1, prec - 1, false, prec))) + bool is_cast =3D false; + + /* Deal with the case when match.pd has rewritten the (res & ~1) =3D=3D = 0 + into res <=3D 1 and has left a type-cast for signed types. */ + if (gimple_assign_cast_p (use_stmt)) + { + orig_use_lhs =3D gimple_assign_lhs (use_stmt); + /* match.pd would have only done this for a signed type, + so the conversion must be to an unsigned one. */ + tree ty1 =3D TREE_TYPE (gimple_assign_rhs1 (use_stmt)); + tree ty2 =3D TREE_TYPE (orig_use_lhs); + + if (!TYPE_UNSIGNED (ty2) || !INTEGRAL_TYPE_P (ty2)) + return false; + if (TYPE_PRECISION (ty1) !=3D TYPE_PRECISION (ty2)) + return false; + if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (orig_use_lhs)) + return false; + if (EDGE_COUNT (phi_bb->preds) !=3D 4) + return false; + if (!single_imm_use (orig_use_lhs, &use_p, &use_stmt)) + return false; + + is_cast =3D true; + } + else if (is_gimple_assign (use_stmt) + && gimple_assign_rhs_code (use_stmt) =3D=3D BIT_AND_EXPR + && TREE_CODE (gimple_assign_rhs2 (use_stmt)) =3D=3D INTEGER_CST + && (wi::to_wide (gimple_assign_rhs2 (use_stmt)) + =3D=3D wi::shifted_mask (1, prec - 1, false, prec))) { /* For partial_ordering result operator>=3D with unspec as second argument is (res & 1) =3D=3D res, folded by match.pd into @@ -2099,7 +2124,7 @@ spaceship_replacement (basic_block cond_bb, basic_blo= ck middle_bb, || !tree_fits_shwi_p (rhs) || !IN_RANGE (tree_to_shwi (rhs), -1, 1)) return false; - if (orig_use_lhs) + if (orig_use_lhs && !is_cast) { if ((cmp !=3D EQ_EXPR && cmp !=3D NE_EXPR) || !integer_zerop (rhs)) return false; @@ -2310,62 +2335,101 @@ spaceship_replacement (basic_block cond_bb, basic_= block middle_bb, one_cmp =3D GT_EXPR; =20 enum tree_code res_cmp; - switch (cmp) + + if (is_cast) { - case EQ_EXPR: - if (integer_zerop (rhs)) - res_cmp =3D EQ_EXPR; - else if (integer_minus_onep (rhs)) - res_cmp =3D one_cmp =3D=3D LT_EXPR ? GT_EXPR : LT_EXPR; - else if (integer_onep (rhs)) - res_cmp =3D one_cmp; - else + if (TREE_CODE (rhs) !=3D INTEGER_CST) return false; - break; - case NE_EXPR: - if (integer_zerop (rhs)) - res_cmp =3D NE_EXPR; - else if (integer_minus_onep (rhs)) - res_cmp =3D one_cmp =3D=3D LT_EXPR ? LE_EXPR : GE_EXPR; - else if (integer_onep (rhs)) - res_cmp =3D one_cmp =3D=3D LT_EXPR ? GE_EXPR : LE_EXPR; - else - return false; - break; - case LT_EXPR: - if (integer_onep (rhs)) - res_cmp =3D one_cmp =3D=3D LT_EXPR ? GE_EXPR : LE_EXPR; - else if (integer_zerop (rhs)) - res_cmp =3D one_cmp =3D=3D LT_EXPR ? GT_EXPR : LT_EXPR; - else - return false; - break; - case LE_EXPR: - if (integer_zerop (rhs)) - res_cmp =3D one_cmp =3D=3D LT_EXPR ? GE_EXPR : LE_EXPR; - else if (integer_minus_onep (rhs)) - res_cmp =3D one_cmp =3D=3D LT_EXPR ? GT_EXPR : LT_EXPR; - else - return false; - break; - case GT_EXPR: - if (integer_minus_onep (rhs)) - res_cmp =3D one_cmp =3D=3D LT_EXPR ? LE_EXPR : GE_EXPR; - else if (integer_zerop (rhs)) - res_cmp =3D one_cmp; - else - return false; - break; - case GE_EXPR: - if (integer_zerop (rhs)) - res_cmp =3D one_cmp =3D=3D LT_EXPR ? LE_EXPR : GE_EXPR; - else if (integer_onep (rhs)) - res_cmp =3D one_cmp; - else - return false; - break; - default: - gcc_unreachable (); + /* As for -ffast-math we assume the 2 return to be + impossible, canonicalize (unsigned) res <=3D 1U or + (unsigned) res < 2U into res >=3D 0 and (unsigned) res > 1U + or (unsigned) res >=3D 2U as res < 0. */ + switch (cmp) + { + case LE_EXPR: + if (!integer_onep (rhs)) + return false; + res_cmp =3D GE_EXPR; + break; + case LT_EXPR: + if (wi::ne_p (wi::to_widest (rhs), 2)) + return false; + res_cmp =3D GE_EXPR; + break; + case GT_EXPR: + if (!integer_onep (rhs)) + return false; + res_cmp =3D LT_EXPR; + break; + case GE_EXPR: + if (wi::ne_p (wi::to_widest (rhs), 2)) + return false; + res_cmp =3D LT_EXPR; + break; + default: + return false; + } + rhs =3D build_zero_cst (TREE_TYPE (phires)); + } + else + { + switch (cmp) + { + case EQ_EXPR: + if (integer_zerop (rhs)) + res_cmp =3D EQ_EXPR; + else if (integer_minus_onep (rhs)) + res_cmp =3D one_cmp =3D=3D LT_EXPR ? GT_EXPR : LT_EXPR; + else if (integer_onep (rhs)) + res_cmp =3D one_cmp; + else + return false; + break; + case NE_EXPR: + if (integer_zerop (rhs)) + res_cmp =3D NE_EXPR; + else if (integer_minus_onep (rhs)) + res_cmp =3D one_cmp =3D=3D LT_EXPR ? LE_EXPR : GE_EXPR; + else if (integer_onep (rhs)) + res_cmp =3D one_cmp =3D=3D LT_EXPR ? GE_EXPR : LE_EXPR; + else + return false; + break; + case LT_EXPR: + if (integer_onep (rhs)) + res_cmp =3D one_cmp =3D=3D LT_EXPR ? GE_EXPR : LE_EXPR; + else if (integer_zerop (rhs)) + res_cmp =3D one_cmp =3D=3D LT_EXPR ? GT_EXPR : LT_EXPR; + else + return false; + break; + case LE_EXPR: + if (integer_zerop (rhs)) + res_cmp =3D one_cmp =3D=3D LT_EXPR ? GE_EXPR : LE_EXPR; + else if (integer_minus_onep (rhs)) + res_cmp =3D one_cmp =3D=3D LT_EXPR ? GT_EXPR : LT_EXPR; + else + return false; + break; + case GT_EXPR: + if (integer_minus_onep (rhs)) + res_cmp =3D one_cmp =3D=3D LT_EXPR ? LE_EXPR : GE_EXPR; + else if (integer_zerop (rhs)) + res_cmp =3D one_cmp; + else + return false; + break; + case GE_EXPR: + if (integer_zerop (rhs)) + res_cmp =3D one_cmp =3D=3D LT_EXPR ? LE_EXPR : GE_EXPR; + else if (integer_onep (rhs)) + res_cmp =3D one_cmp; + else + return false; + break; + default: + gcc_unreachable (); + } } =20 if (gimple_code (use_stmt) =3D=3D GIMPLE_COND) @@ -2394,6 +2458,7 @@ spaceship_replacement (basic_block cond_bb, basic_blo= ck middle_bb, use_operand_p use_p; imm_use_iterator iter; bool has_debug_uses =3D false; + bool has_cast_debug_uses =3D false; FOR_EACH_IMM_USE_FAST (use_p, iter, phires) { gimple *use_stmt =3D USE_STMT (use_p); @@ -2405,12 +2470,14 @@ spaceship_replacement (basic_block cond_bb, basic_b= lock middle_bb, } if (orig_use_lhs) { - if (!has_debug_uses) + if (!has_debug_uses || is_cast) FOR_EACH_IMM_USE_FAST (use_p, iter, orig_use_lhs) { gimple *use_stmt =3D USE_STMT (use_p); gcc_assert (is_gimple_debug (use_stmt)); has_debug_uses =3D true; + if (is_cast) + has_cast_debug_uses =3D true; } gimple_stmt_iterator gsi =3D gsi_for_stmt (orig_use_stmt); tree zero =3D build_zero_cst (TREE_TYPE (orig_use_lhs)); @@ -2448,7 +2515,23 @@ spaceship_replacement (basic_block cond_bb, basic_bl= ock middle_bb, gsi_insert_before (&gsi, g, GSI_SAME_STMT); replace_uses_by (phires, temp2); if (orig_use_lhs) - replace_uses_by (orig_use_lhs, temp2); + { + if (has_cast_debug_uses) + { + tree temp3 =3D make_node (DEBUG_EXPR_DECL); + DECL_ARTIFICIAL (temp3) =3D 1; + TREE_TYPE (temp3) =3D TREE_TYPE (orig_use_lhs); + SET_DECL_MODE (temp3, TYPE_MODE (type)); + t =3D build2 (EQ_EXPR, boolean_type_node, lhs1, rhs2); + t =3D build3 (COND_EXPR, type, t, build_zero_cst (type), + temp1); + g =3D gimple_build_debug_bind (temp3, t, phi); + gsi_insert_before (&gsi, g, GSI_SAME_STMT); + replace_uses_by (orig_use_lhs, temp3); + } + else + replace_uses_by (orig_use_lhs, temp2); + } } } --_002_AM0PR08MB5316B2FB8E5A2A0D5229DF64FF959AM0PR08MB5316eurp_ Content-Type: application/octet-stream; name="rb14938.patch" Content-Description: rb14938.patch Content-Disposition: attachment; filename="rb14938.patch"; size=7989; creation-date="Fri, 12 Nov 2021 07:29:26 GMT"; modification-date="Fri, 12 Nov 2021 07:27:29 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1waGlvcHQuYyBiL2djYy90cmVlLXNzYS1waGlvcHQu YwppbmRleCAwZTMzOWM0NmFmYTI5ZmE5N2Y5MGQ5YmM0Mzk0MzcwY2Q5YjRiMzk2Li4zYWQ1YjIz ODg1YTM3ZWVjMGJlZmYyMjllMmE5NmU4NjY1OGIyZDFhIDEwMDY0NAotLS0gYS9nY2MvdHJlZS1z c2EtcGhpb3B0LmMKKysrIGIvZ2NjL3RyZWUtc3NhLXBoaW9wdC5jCkBAIC0yMDM4LDExICsyMDM4 LDM2IEBAIHNwYWNlc2hpcF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sgY29uZF9iYiwgYmFzaWNf YmxvY2sgbWlkZGxlX2JiLAogICBnaW1wbGUgKm9yaWdfdXNlX3N0bXQgPSB1c2Vfc3RtdDsKICAg dHJlZSBvcmlnX3VzZV9saHMgPSBOVUxMX1RSRUU7CiAgIGludCBwcmVjID0gVFlQRV9QUkVDSVNJ T04gKFRSRUVfVFlQRSAocGhpcmVzKSk7Ci0gIGlmIChpc19naW1wbGVfYXNzaWduICh1c2Vfc3Rt dCkKLSAgICAgICYmIGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKHVzZV9zdG10KSA9PSBCSVRfQU5E X0VYUFIKLSAgICAgICYmIFRSRUVfQ09ERSAoZ2ltcGxlX2Fzc2lnbl9yaHMyICh1c2Vfc3RtdCkp ID09IElOVEVHRVJfQ1NUCi0gICAgICAmJiAod2k6OnRvX3dpZGUgKGdpbXBsZV9hc3NpZ25fcmhz MiAodXNlX3N0bXQpKQotCSAgPT0gd2k6OnNoaWZ0ZWRfbWFzayAoMSwgcHJlYyAtIDEsIGZhbHNl LCBwcmVjKSkpCisgIGJvb2wgaXNfY2FzdCA9IGZhbHNlOworCisgIC8qIERlYWwgd2l0aCB0aGUg Y2FzZSB3aGVuIG1hdGNoLnBkIGhhcyByZXdyaXR0ZW4gdGhlIChyZXMgJiB+MSkgPT0gMAorICAg ICBpbnRvIHJlcyA8PSAxIGFuZCBoYXMgbGVmdCBhIHR5cGUtY2FzdCBmb3Igc2lnbmVkIHR5cGVz LiAgKi8KKyAgaWYgKGdpbXBsZV9hc3NpZ25fY2FzdF9wICh1c2Vfc3RtdCkpCisgICAgeworICAg ICAgb3JpZ191c2VfbGhzID0gZ2ltcGxlX2Fzc2lnbl9saHMgKHVzZV9zdG10KTsKKyAgICAgIC8q IG1hdGNoLnBkIHdvdWxkIGhhdmUgb25seSBkb25lIHRoaXMgZm9yIGEgc2lnbmVkIHR5cGUsCisJ IHNvIHRoZSBjb252ZXJzaW9uIG11c3QgYmUgdG8gYW4gdW5zaWduZWQgb25lLiAgKi8KKyAgICAg IHRyZWUgdHkxID0gVFJFRV9UWVBFIChnaW1wbGVfYXNzaWduX3JoczEgKHVzZV9zdG10KSk7Cisg ICAgICB0cmVlIHR5MiA9IFRSRUVfVFlQRSAob3JpZ191c2VfbGhzKTsKKworICAgICAgaWYgKCFU WVBFX1VOU0lHTkVEICh0eTIpIHx8ICFJTlRFR1JBTF9UWVBFX1AgKHR5MikpCisJcmV0dXJuIGZh bHNlOworICAgICAgaWYgKFRZUEVfUFJFQ0lTSU9OICh0eTEpICE9IFRZUEVfUFJFQ0lTSU9OICh0 eTIpKQorCXJldHVybiBmYWxzZTsKKyAgICAgIGlmIChTU0FfTkFNRV9PQ0NVUlNfSU5fQUJOT1JN QUxfUEhJIChvcmlnX3VzZV9saHMpKQorCXJldHVybiBmYWxzZTsKKyAgICAgIGlmIChFREdFX0NP VU5UIChwaGlfYmItPnByZWRzKSAhPSA0KQorCXJldHVybiBmYWxzZTsKKyAgICAgIGlmICghc2lu Z2xlX2ltbV91c2UgKG9yaWdfdXNlX2xocywgJnVzZV9wLCAmdXNlX3N0bXQpKQorCXJldHVybiBm YWxzZTsKKworICAgICAgaXNfY2FzdCA9IHRydWU7CisgICAgfQorICBlbHNlIGlmIChpc19naW1w bGVfYXNzaWduICh1c2Vfc3RtdCkKKwkgICAmJiBnaW1wbGVfYXNzaWduX3Joc19jb2RlICh1c2Vf c3RtdCkgPT0gQklUX0FORF9FWFBSCisJICAgJiYgVFJFRV9DT0RFIChnaW1wbGVfYXNzaWduX3Jo czIgKHVzZV9zdG10KSkgPT0gSU5URUdFUl9DU1QKKwkgICAmJiAod2k6OnRvX3dpZGUgKGdpbXBs ZV9hc3NpZ25fcmhzMiAodXNlX3N0bXQpKQorCSAgICAgICA9PSB3aTo6c2hpZnRlZF9tYXNrICgx LCBwcmVjIC0gMSwgZmFsc2UsIHByZWMpKSkKICAgICB7CiAgICAgICAvKiBGb3IgcGFydGlhbF9v cmRlcmluZyByZXN1bHQgb3BlcmF0b3I+PSB3aXRoIHVuc3BlYyBhcyBzZWNvbmQKIAkgYXJndW1l bnQgaXMgKHJlcyAmIDEpID09IHJlcywgZm9sZGVkIGJ5IG1hdGNoLnBkIGludG8KQEAgLTIwOTks NyArMjEyNCw3IEBAIHNwYWNlc2hpcF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sgY29uZF9iYiwg YmFzaWNfYmxvY2sgbWlkZGxlX2JiLAogICAgICAgfHwgIXRyZWVfZml0c19zaHdpX3AgKHJocykK ICAgICAgIHx8ICFJTl9SQU5HRSAodHJlZV90b19zaHdpIChyaHMpLCAtMSwgMSkpCiAgICAgcmV0 dXJuIGZhbHNlOwotICBpZiAob3JpZ191c2VfbGhzKQorICBpZiAob3JpZ191c2VfbGhzICYmICFp c19jYXN0KQogICAgIHsKICAgICAgIGlmICgoY21wICE9IEVRX0VYUFIgJiYgY21wICE9IE5FX0VY UFIpIHx8ICFpbnRlZ2VyX3plcm9wIChyaHMpKQogCXJldHVybiBmYWxzZTsKQEAgLTIzMTAsNjIg KzIzMzUsMTAxIEBAIHNwYWNlc2hpcF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sgY29uZF9iYiwg YmFzaWNfYmxvY2sgbWlkZGxlX2JiLAogICAgIG9uZV9jbXAgPSBHVF9FWFBSOwogCiAgIGVudW0g dHJlZV9jb2RlIHJlc19jbXA7Ci0gIHN3aXRjaCAoY21wKQorCisgIGlmIChpc19jYXN0KQogICAg IHsKLSAgICBjYXNlIEVRX0VYUFI6Ci0gICAgICBpZiAoaW50ZWdlcl96ZXJvcCAocmhzKSkKLQly ZXNfY21wID0gRVFfRVhQUjsKLSAgICAgIGVsc2UgaWYgKGludGVnZXJfbWludXNfb25lcCAocmhz KSkKLQlyZXNfY21wID0gb25lX2NtcCA9PSBMVF9FWFBSID8gR1RfRVhQUiA6IExUX0VYUFI7Ci0g ICAgICBlbHNlIGlmIChpbnRlZ2VyX29uZXAgKHJocykpCi0JcmVzX2NtcCA9IG9uZV9jbXA7Ci0g ICAgICBlbHNlCisgICAgICBpZiAoVFJFRV9DT0RFIChyaHMpICE9IElOVEVHRVJfQ1NUKQogCXJl dHVybiBmYWxzZTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTkVfRVhQUjoKLSAgICAgIGlmIChp bnRlZ2VyX3plcm9wIChyaHMpKQotCXJlc19jbXAgPSBORV9FWFBSOwotICAgICAgZWxzZSBpZiAo aW50ZWdlcl9taW51c19vbmVwIChyaHMpKQotCXJlc19jbXAgPSBvbmVfY21wID09IExUX0VYUFIg PyBMRV9FWFBSIDogR0VfRVhQUjsKLSAgICAgIGVsc2UgaWYgKGludGVnZXJfb25lcCAocmhzKSkK LQlyZXNfY21wID0gb25lX2NtcCA9PSBMVF9FWFBSID8gR0VfRVhQUiA6IExFX0VYUFI7Ci0gICAg ICBlbHNlCi0JcmV0dXJuIGZhbHNlOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMVF9FWFBSOgot ICAgICAgaWYgKGludGVnZXJfb25lcCAocmhzKSkKLQlyZXNfY21wID0gb25lX2NtcCA9PSBMVF9F WFBSID8gR0VfRVhQUiA6IExFX0VYUFI7Ci0gICAgICBlbHNlIGlmIChpbnRlZ2VyX3plcm9wIChy aHMpKQotCXJlc19jbXAgPSBvbmVfY21wID09IExUX0VYUFIgPyBHVF9FWFBSIDogTFRfRVhQUjsK LSAgICAgIGVsc2UKLQlyZXR1cm4gZmFsc2U7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIExFX0VY UFI6Ci0gICAgICBpZiAoaW50ZWdlcl96ZXJvcCAocmhzKSkKLQlyZXNfY21wID0gb25lX2NtcCA9 PSBMVF9FWFBSID8gR0VfRVhQUiA6IExFX0VYUFI7Ci0gICAgICBlbHNlIGlmIChpbnRlZ2VyX21p bnVzX29uZXAgKHJocykpCi0JcmVzX2NtcCA9IG9uZV9jbXAgPT0gTFRfRVhQUiA/IEdUX0VYUFIg OiBMVF9FWFBSOwotICAgICAgZWxzZQotCXJldHVybiBmYWxzZTsKLSAgICAgIGJyZWFrOwotICAg IGNhc2UgR1RfRVhQUjoKLSAgICAgIGlmIChpbnRlZ2VyX21pbnVzX29uZXAgKHJocykpCi0JcmVz X2NtcCA9IG9uZV9jbXAgPT0gTFRfRVhQUiA/IExFX0VYUFIgOiBHRV9FWFBSOwotICAgICAgZWxz ZSBpZiAoaW50ZWdlcl96ZXJvcCAocmhzKSkKLQlyZXNfY21wID0gb25lX2NtcDsKLSAgICAgIGVs c2UKLQlyZXR1cm4gZmFsc2U7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdFX0VYUFI6Ci0gICAg ICBpZiAoaW50ZWdlcl96ZXJvcCAocmhzKSkKLQlyZXNfY21wID0gb25lX2NtcCA9PSBMVF9FWFBS ID8gTEVfRVhQUiA6IEdFX0VYUFI7Ci0gICAgICBlbHNlIGlmIChpbnRlZ2VyX29uZXAgKHJocykp Ci0JcmVzX2NtcCA9IG9uZV9jbXA7Ci0gICAgICBlbHNlCi0JcmV0dXJuIGZhbHNlOwotICAgICAg YnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsKKyAgICAgIC8q IEFzIGZvciAtZmZhc3QtbWF0aCB3ZSBhc3N1bWUgdGhlIDIgcmV0dXJuIHRvIGJlCisJIGltcG9z c2libGUsIGNhbm9uaWNhbGl6ZSAodW5zaWduZWQpIHJlcyA8PSAxVSBvcgorCSAodW5zaWduZWQp IHJlcyA8IDJVIGludG8gcmVzID49IDAgYW5kICh1bnNpZ25lZCkgcmVzID4gMVUKKwkgb3IgKHVu c2lnbmVkKSByZXMgPj0gMlUgYXMgcmVzIDwgMC4gICovCisgICAgICBzd2l0Y2ggKGNtcCkKKwl7 CisJY2FzZSBMRV9FWFBSOgorCSAgaWYgKCFpbnRlZ2VyX29uZXAgKHJocykpCisJICAgIHJldHVy biBmYWxzZTsKKwkgIHJlc19jbXAgPSBHRV9FWFBSOworCSAgYnJlYWs7CisJY2FzZSBMVF9FWFBS OgorCSAgaWYgKHdpOjpuZV9wICh3aTo6dG9fd2lkZXN0IChyaHMpLCAyKSkKKwkgICAgcmV0dXJu IGZhbHNlOworCSAgcmVzX2NtcCA9IEdFX0VYUFI7CisJICBicmVhazsKKwljYXNlIEdUX0VYUFI6 CisJICBpZiAoIWludGVnZXJfb25lcCAocmhzKSkKKwkgICAgcmV0dXJuIGZhbHNlOworCSAgcmVz X2NtcCA9IExUX0VYUFI7CisJICBicmVhazsKKwljYXNlIEdFX0VYUFI6CisJICBpZiAod2k6Om5l X3AgKHdpOjp0b193aWRlc3QgKHJocyksIDIpKQorCSAgICByZXR1cm4gZmFsc2U7CisJICByZXNf Y21wID0gTFRfRVhQUjsKKwkgIGJyZWFrOworCWRlZmF1bHQ6CisJICByZXR1cm4gZmFsc2U7CisJ fQorICAgICAgcmhzID0gYnVpbGRfemVyb19jc3QgKFRSRUVfVFlQRSAocGhpcmVzKSk7CisgICAg fQorICBlbHNlCisgICAgeworICAgICAgc3dpdGNoIChjbXApCisgICAgICB7CisgICAgICBjYXNl IEVRX0VYUFI6CisJaWYgKGludGVnZXJfemVyb3AgKHJocykpCisJICByZXNfY21wID0gRVFfRVhQ UjsKKwllbHNlIGlmIChpbnRlZ2VyX21pbnVzX29uZXAgKHJocykpCisJICByZXNfY21wID0gb25l X2NtcCA9PSBMVF9FWFBSID8gR1RfRVhQUiA6IExUX0VYUFI7CisJZWxzZSBpZiAoaW50ZWdlcl9v bmVwIChyaHMpKQorCSAgcmVzX2NtcCA9IG9uZV9jbXA7CisJZWxzZQorCSAgcmV0dXJuIGZhbHNl OworCWJyZWFrOworICAgICAgY2FzZSBORV9FWFBSOgorCWlmIChpbnRlZ2VyX3plcm9wIChyaHMp KQorCSAgcmVzX2NtcCA9IE5FX0VYUFI7CisJZWxzZSBpZiAoaW50ZWdlcl9taW51c19vbmVwIChy aHMpKQorCSAgcmVzX2NtcCA9IG9uZV9jbXAgPT0gTFRfRVhQUiA/IExFX0VYUFIgOiBHRV9FWFBS OworCWVsc2UgaWYgKGludGVnZXJfb25lcCAocmhzKSkKKwkgIHJlc19jbXAgPSBvbmVfY21wID09 IExUX0VYUFIgPyBHRV9FWFBSIDogTEVfRVhQUjsKKwllbHNlCisJICByZXR1cm4gZmFsc2U7CisJ YnJlYWs7CisgICAgICBjYXNlIExUX0VYUFI6CisJaWYgKGludGVnZXJfb25lcCAocmhzKSkKKwkg IHJlc19jbXAgPSBvbmVfY21wID09IExUX0VYUFIgPyBHRV9FWFBSIDogTEVfRVhQUjsKKwllbHNl IGlmIChpbnRlZ2VyX3plcm9wIChyaHMpKQorCSAgcmVzX2NtcCA9IG9uZV9jbXAgPT0gTFRfRVhQ UiA/IEdUX0VYUFIgOiBMVF9FWFBSOworCWVsc2UKKwkgIHJldHVybiBmYWxzZTsKKwlicmVhazsK KyAgICAgIGNhc2UgTEVfRVhQUjoKKwlpZiAoaW50ZWdlcl96ZXJvcCAocmhzKSkKKwkgIHJlc19j bXAgPSBvbmVfY21wID09IExUX0VYUFIgPyBHRV9FWFBSIDogTEVfRVhQUjsKKwllbHNlIGlmIChp bnRlZ2VyX21pbnVzX29uZXAgKHJocykpCisJICByZXNfY21wID0gb25lX2NtcCA9PSBMVF9FWFBS ID8gR1RfRVhQUiA6IExUX0VYUFI7CisJZWxzZQorCSAgcmV0dXJuIGZhbHNlOworCWJyZWFrOwor ICAgICAgY2FzZSBHVF9FWFBSOgorCWlmIChpbnRlZ2VyX21pbnVzX29uZXAgKHJocykpCisJICBy ZXNfY21wID0gb25lX2NtcCA9PSBMVF9FWFBSID8gTEVfRVhQUiA6IEdFX0VYUFI7CisJZWxzZSBp ZiAoaW50ZWdlcl96ZXJvcCAocmhzKSkKKwkgIHJlc19jbXAgPSBvbmVfY21wOworCWVsc2UKKwkg IHJldHVybiBmYWxzZTsKKwlicmVhazsKKyAgICAgIGNhc2UgR0VfRVhQUjoKKwlpZiAoaW50ZWdl cl96ZXJvcCAocmhzKSkKKwkgIHJlc19jbXAgPSBvbmVfY21wID09IExUX0VYUFIgPyBMRV9FWFBS IDogR0VfRVhQUjsKKwllbHNlIGlmIChpbnRlZ2VyX29uZXAgKHJocykpCisJICByZXNfY21wID0g b25lX2NtcDsKKwllbHNlCisJICByZXR1cm4gZmFsc2U7CisJYnJlYWs7CisgICAgICBkZWZhdWx0 OgorCSAgZ2NjX3VucmVhY2hhYmxlICgpOworICAgICAgfQogICAgIH0KIAogICBpZiAoZ2ltcGxl X2NvZGUgKHVzZV9zdG10KSA9PSBHSU1QTEVfQ09ORCkKQEAgLTIzOTQsNiArMjQ1OCw3IEBAIHNw YWNlc2hpcF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sgY29uZF9iYiwgYmFzaWNfYmxvY2sgbWlk ZGxlX2JiLAogICAgICAgdXNlX29wZXJhbmRfcCB1c2VfcDsKICAgICAgIGltbV91c2VfaXRlcmF0 b3IgaXRlcjsKICAgICAgIGJvb2wgaGFzX2RlYnVnX3VzZXMgPSBmYWxzZTsKKyAgICAgIGJvb2wg aGFzX2Nhc3RfZGVidWdfdXNlcyA9IGZhbHNlOwogICAgICAgRk9SX0VBQ0hfSU1NX1VTRV9GQVNU ICh1c2VfcCwgaXRlciwgcGhpcmVzKQogCXsKIAkgIGdpbXBsZSAqdXNlX3N0bXQgPSBVU0VfU1RN VCAodXNlX3ApOwpAQCAtMjQwNSwxMiArMjQ3MCwxNCBAQCBzcGFjZXNoaXBfcmVwbGFjZW1lbnQg KGJhc2ljX2Jsb2NrIGNvbmRfYmIsIGJhc2ljX2Jsb2NrIG1pZGRsZV9iYiwKIAl9CiAgICAgICBp ZiAob3JpZ191c2VfbGhzKQogCXsKLQkgIGlmICghaGFzX2RlYnVnX3VzZXMpCisJICBpZiAoIWhh c19kZWJ1Z191c2VzIHx8IGlzX2Nhc3QpCiAJICAgIEZPUl9FQUNIX0lNTV9VU0VfRkFTVCAodXNl X3AsIGl0ZXIsIG9yaWdfdXNlX2xocykKIAkgICAgICB7CiAJCWdpbXBsZSAqdXNlX3N0bXQgPSBV U0VfU1RNVCAodXNlX3ApOwogCQlnY2NfYXNzZXJ0IChpc19naW1wbGVfZGVidWcgKHVzZV9zdG10 KSk7CiAJCWhhc19kZWJ1Z191c2VzID0gdHJ1ZTsKKwkJaWYgKGlzX2Nhc3QpCisJCSAgaGFzX2Nh c3RfZGVidWdfdXNlcyA9IHRydWU7CiAJICAgICAgfQogCSAgZ2ltcGxlX3N0bXRfaXRlcmF0b3Ig Z3NpID0gZ3NpX2Zvcl9zdG10IChvcmlnX3VzZV9zdG10KTsKIAkgIHRyZWUgemVybyA9IGJ1aWxk X3plcm9fY3N0IChUUkVFX1RZUEUgKG9yaWdfdXNlX2xocykpOwpAQCAtMjQ0OCw3ICsyNTE1LDIz IEBAIHNwYWNlc2hpcF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sgY29uZF9iYiwgYmFzaWNfYmxv Y2sgbWlkZGxlX2JiLAogCSAgZ3NpX2luc2VydF9iZWZvcmUgKCZnc2ksIGcsIEdTSV9TQU1FX1NU TVQpOwogCSAgcmVwbGFjZV91c2VzX2J5IChwaGlyZXMsIHRlbXAyKTsKIAkgIGlmIChvcmlnX3Vz ZV9saHMpCi0JICAgIHJlcGxhY2VfdXNlc19ieSAob3JpZ191c2VfbGhzLCB0ZW1wMik7CisJICAg IHsKKwkgICAgICBpZiAoaGFzX2Nhc3RfZGVidWdfdXNlcykKKwkJeworCQkgIHRyZWUgdGVtcDMg PSBtYWtlX25vZGUgKERFQlVHX0VYUFJfREVDTCk7CisJCSAgREVDTF9BUlRJRklDSUFMICh0ZW1w MykgPSAxOworCQkgIFRSRUVfVFlQRSAodGVtcDMpID0gVFJFRV9UWVBFIChvcmlnX3VzZV9saHMp OworCQkgIFNFVF9ERUNMX01PREUgKHRlbXAzLCBUWVBFX01PREUgKHR5cGUpKTsKKwkJICB0ID0g YnVpbGQyIChFUV9FWFBSLCBib29sZWFuX3R5cGVfbm9kZSwgbGhzMSwgcmhzMik7CisJCSAgdCA9 IGJ1aWxkMyAoQ09ORF9FWFBSLCB0eXBlLCB0LCBidWlsZF96ZXJvX2NzdCAodHlwZSksCisJCQkg ICAgICB0ZW1wMSk7CisJCSAgZyA9IGdpbXBsZV9idWlsZF9kZWJ1Z19iaW5kICh0ZW1wMywgdCwg cGhpKTsKKwkJICBnc2lfaW5zZXJ0X2JlZm9yZSAoJmdzaSwgZywgR1NJX1NBTUVfU1RNVCk7CisJ CSAgcmVwbGFjZV91c2VzX2J5IChvcmlnX3VzZV9saHMsIHRlbXAzKTsKKwkJfQorCSAgICAgIGVs c2UKKwkJcmVwbGFjZV91c2VzX2J5IChvcmlnX3VzZV9saHMsIHRlbXAyKTsKKwkgICAgfQogCX0K ICAgICB9CiAK --_002_AM0PR08MB5316B2FB8E5A2A0D5229DF64FF959AM0PR08MB5316eurp_--