From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2048.outbound.protection.outlook.com [40.107.7.48]) by sourceware.org (Postfix) with ESMTPS id 3D526385800C for ; Thu, 1 Feb 2024 21:33:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3D526385800C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3D526385800C Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.7.48 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1706823201; cv=pass; b=IxfQXWJy6iZNPr7rx2W9Od0dCYXS+WA1LFc6mCLsN9leZWqbe2EDZ8/+3a5EaBQWwcXWW1fD9A7n5B/PoQ8tBoG95JqlpBn7wZGr9JowuhjUCq2aFHEESYIE9b8tlHDkWd8FqM+kEW2HobgAxLWLE6Xcdgmb+c71cJbpa5EYSno= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1706823201; c=relaxed/simple; bh=27LE2sgnlBZWpFoZrQP+cz45qtR4NAOQsesVG7hAnuM=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=Fx5mVOJuOar+Ut78Ef6HTZSlgqVC1RoYuikE6Qm9K3gieM54A/Ksaqi5ulpfv72IKs1N0C2qXbTz/ydfhJWWtP+uddaXzFjVkIHqYigSGRpG4f5hetkKuel6Cnc0BdrFaBdGr23KRuy5bZOCXGt0lSKDRH+vB5Eum72D09U7kGM= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=E6UFDsnzxGZH7l9MT6eLsCl354DpPE5YVeB1yA9W4N1J97dbEr8erF9B6/C3Eax6UDVJ9LFhVJO1S0fY1nOJEsmO8eDd9/wP6iaZACGdJsqlmCSErTqucq/mJEgs63CPX3N2d1O+n0H+nWH8BpRA95lNLpI9qv5xUBApJCOmsZ9SUSdFv1TDeoTMSFCIjly7y0SGixIP6NvG0M6NeRK4axF4VJfM8LybDh3/OLeSRyrL/hVVRP73ri+jP8+bI4nve32MpV23IjLmYU3qrc6WiLEGcOVfWJ3KgeoGUAwydeWzuq0XBh+JSXyaLLln4NDMyMDo76XOdI+tI7IxlQNJLQ== ARC-Message-Signature: i=2; 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=kCa4oTbTP5NRc1RyCq1ldan4zKIv5UCmwTx7ZWH5GGc=; b=fMDuQHDHrQMUuQnCgc9VTslRDbUGwE+OqRlHb/R/t7BGXQLpM7GJGtu6orO5kajCYJYCsEjh2FSCvL0+kupe25zDt2FoRSCkyS2MmkaG5pdkU5AOIh78oqdIdPm7Mnd8Mkg69SR52jbnq8qtWpuzYSXfKESbnCr8m32EdHatecCxJDzgtsNAkcHwpXwhVVbDbLknfkmlDqvAb0mrapzOxGsaZLLeD8zW936+C+9BN3/b2ttEMAzQsIewnhbtIjxXmGMsZPbEDVwD9YH1lmC5ez0e1fWzupNl5IsiGjPfKsHlJbNDLEaeDo2FXZ7dIRyC9cAUDxXqa9aFXOzQb5vB5Q== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kCa4oTbTP5NRc1RyCq1ldan4zKIv5UCmwTx7ZWH5GGc=; b=F/92/EI9wKY7metQlojST1lzofYnXSDVYmVUkDw2/Lihbs6GoEAy/XiVzFtO75vggDkEJE39FAoyJ1Gb58ROwZXUDMnsL3//Ag4Oi2cemn2P705/X+uvFciskoILIvt3Z5tJbS3/wuFxLRccZLg0NOna9lVN070VHcNMvamh9DA= Received: from AM9P193CA0017.EURP193.PROD.OUTLOOK.COM (2603:10a6:20b:21e::22) by AS2PR08MB9666.eurprd08.prod.outlook.com (2603:10a6:20b:606::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34; Thu, 1 Feb 2024 21:33:12 +0000 Received: from AM4PEPF00025F96.EURPRD83.prod.outlook.com (2603:10a6:20b:21e:cafe::b7) by AM9P193CA0017.outlook.office365.com (2603:10a6:20b:21e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.26 via Frontend Transport; Thu, 1 Feb 2024 21:33:12 +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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM4PEPF00025F96.mail.protection.outlook.com (10.167.16.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.0 via Frontend Transport; Thu, 1 Feb 2024 21:33:11 +0000 Received: ("Tessian outbound a064b9944658:v228"); Thu, 01 Feb 2024 21:33:11 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 113454d79f8df8bb X-CR-MTA-TID: 64aa7808 Received: from ce88b35d793f.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 6FDD59C4-5D49-42EA-BF5F-7C0272FC3529.1; Thu, 01 Feb 2024 21:33:05 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ce88b35d793f.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 01 Feb 2024 21:33:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iZdrUrptSgJghvxOdCrGh97DpFHyNH83pZNY4K7R6/X3Rh7cKMTaIMO4ulv+b7RuoB/AsFzAP+jOL/HbNNzIbL9sEABNO95vvGoOR9/sr9KhCLPgDzTGKFJ1MrO1SUINi910EjtRPhDy3/8P1X0eftEZLSZmVY7P5Bkeno+mLOF+55YGst8cH9Z0Zn4Z9aTYBZziLNnf3zZv1ER/kxKwcy/pS328beztF38pmXujbODiPvqQ7b+NI9iv8G8UMPmjJSsgxl4So4dZxWvouW9MIBgacV1USJSTw5Z4Pib/6nOBWT79BOhN0dFGhlubptPnDkFjYxqn3VwoBr1UiyUZzQ== 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=kCa4oTbTP5NRc1RyCq1ldan4zKIv5UCmwTx7ZWH5GGc=; b=geXY5IWj1lOktoRfGotHIgJnqHWHMrIMZat8Uw8bPEp9Cgpcnhnkd6Zf+K2eTfkPMTUObysT229pksyTCxTHVdUnAshvAbncPXKD//SzLyRlo+dmPE530ggKsltQnXQuESqnIY+SkTEXWF03RyYhVIv4PeHE+wBXsF7tI1nHV6N+Bpvqb91dNA/RDayPwM7vn/X9gVZqNVGAL3Q/G60dCf1Q3rZMaIEizVHtWi6SdLBbLuOub9jcb3PTJ3Q2JC9Hh3J4ESdW/LypcfIdKhdEylUKrsdN9Fu1euFMC7vV4Bmmd9BBmv9FBY3YTVAnC+ypCpn+s/VuFu+QyoEDQ9p4Yg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kCa4oTbTP5NRc1RyCq1ldan4zKIv5UCmwTx7ZWH5GGc=; b=F/92/EI9wKY7metQlojST1lzofYnXSDVYmVUkDw2/Lihbs6GoEAy/XiVzFtO75vggDkEJE39FAoyJ1Gb58ROwZXUDMnsL3//Ag4Oi2cemn2P705/X+uvFciskoILIvt3Z5tJbS3/wuFxLRccZLg0NOna9lVN070VHcNMvamh9DA= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by PA4PR08MB6096.eurprd08.prod.outlook.com (2603:10a6:102:eb::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.30; Thu, 1 Feb 2024 21:33:02 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::810c:8495:3f0a:ef8]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::810c:8495:3f0a:ef8%7]) with mapi id 15.20.7249.027; Thu, 1 Feb 2024 21:33:02 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd , "jlaw@ventanamicro.com" Subject: RE: [PATCH]middle-end: check memory accesses in the destination block [PR113588]. Thread-Topic: [PATCH]middle-end: check memory accesses in the destination block [PR113588]. Thread-Index: AQHaUsR+LDTP8h6MVE2LDVbgiBjvO7DyHjIAgAAwqQCAAAVagIADsaWQ Date: Thu, 1 Feb 2024 21:33:02 +0000 Message-ID: References: <1096n2p8-s430-5p01-orn1-ro09s5162o8n@fhfr.qr> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|PA4PR08MB6096:EE_|AM4PEPF00025F96:EE_|AS2PR08MB9666:EE_ X-MS-Office365-Filtering-Correlation-Id: c863bea9-fcc0-4e21-b678-08dc236d642d x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: W+LLfWn4nRx5gL1nXfNJ9PVrP5A7OowHjfAQFbTauMXxtHxrgTCDQmDbqxYMJ8YLvJbhZqmjSfJlmv8mMc0u6x035aIVHjujcuKIdKSiMnuW8jL+j+0+Om59RhzEt14QeRqbeZykT5Do2iF9bwDImQpsME88OflRQRvDyxxvdnNngSUTgOBzoHb8TRBJ4dpZjEYwafCxJuqu6+eHTAfbcBnDq6laQEZFPhDjexkW3dRhMiSAOgeF+cIgqDXoQW9Yl+L45V5lLt/l2EmOKK+wGvIP0+I+MUIrQdw1E2d/2bc6+e4Bqkd67qu/iffzFO1Pk1OlGCCC+Dxx1/4OWPTTZhD0yhUNQltz/Gveoaz6hDHlmcFa+O8VeDYr+ishkr2q3L6SuOvXV7PjxU+zUqkXPwrG7HbERXzDLE/XmEYYItEgZjmE4k0OoT9NqPlJWRb9R2jC6HH2gPFL2SbBv4mpkSQj6FR/yYSc1eypMLtuTVhCVbu1O7SkI4R3vMpPHO1vYI83pyIjn89BEZ5ZZyXfKmIp1NChvfU66yEUPuG019WylY5a/wpaM2AjFUjn8QZHQVIKx9EjnVp0UepePAKiISnEyNBmfSQ2ZBeM8E58Q5tVwgNeXDv7lRIZq/0e0ZNcCiKnYKgIfRERVMaSxfj++Q== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(396003)(39860400002)(136003)(376002)(346002)(230922051799003)(451199024)(186009)(64100799003)(1800799012)(41300700001)(26005)(84970400001)(55016003)(38070700009)(6916009)(54906003)(316002)(9686003)(478600001)(7696005)(6506007)(83380400001)(71200400001)(64756008)(99936003)(38100700002)(122000001)(66476007)(66446008)(33656002)(5660300002)(66946007)(76116006)(86362001)(2906002)(66556008)(4326008)(8676002)(8936002)(52536014);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_VI1PR08MB5325C266E259ACB3B572FAD6FF432VI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6096 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: AM4PEPF00025F96.EURPRD83.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: b1b51409-d940-4057-7fc3-08dc236d5e6e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Jw0Y9XaVxW4WyAoVhzN+lVLLKiIPug7zfalbpZ2CsvmbVXxM+TOXdu6Glfv4eXuU/FQr/8SHAtvD9UaKgwWua7a28q9b2C+/OrH2xCoMiIHtZAVG/AEjvkfph4fCTWGdN+aWJWf9P/37qpgPuzmmT9y17am8/3voO7ZzO5X5ZKc3W3MNcRPzsABa5YqEH5nW62gs6GiupIVPLgWKKsyHzfzsu4u5YcnlGP64sHrM31OqMREe4GpXQzBPYwwxP7+XS5kOZtbjB6C0y8mYtjmZhty0PHbfjpaRh0+/SfGG4XCw/ud07AgWL5R3ydlIM+auMS2X9vXa8bQmYc5APpT6ZXbrMa0EOOHZtVbYh3XDX/DDUczJ+I5mjooYJbv5op+Eyhp6QReJimP2lnF874ZJV//j4CmFH3vLLH5qxLMbRYc/UwIh7e5Dsw3BNP4JgbfGy2bbqgJjreE/b7yU9cujXd94126xzFNX0uRMSdp7hwnkLtRd5F30qBt4lcmjIxoMfgOUpzEXs/f2Ylf6mwsLN7X/KBKf2zyOe7G1R7KuiqRFtC/lnBMUQ8XDYb6EsplkX/zbCt8As2h0T3VHraBwsgEuEw8f/5FRaFdkAzxpOGJAOqqR/bNKo1C4SY1soJ4q2t08AA5YcGCnITEEuEW+C67KCvw42K0kkIPBPUdtNRge5ouNsd0PhSpQUmW+zTEc2Tyr0sZ4yTMqBrUbsmpUoSRZc2gArswlArNg55eM+29/xpf3buUi0efz2sm9m9qMTQqU77FvKI92zcONFND+UA== 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:(13230031)(4636009)(376002)(136003)(346002)(396003)(39860400002)(230922051799003)(64100799003)(186009)(451199024)(82310400011)(1800799012)(46966006)(36840700001)(40470700004)(26005)(7696005)(54906003)(4326008)(316002)(70206006)(52536014)(6862004)(2906002)(33656002)(8936002)(8676002)(5660300002)(235185007)(86362001)(70586007)(47076005)(83380400001)(36860700001)(82740400003)(99936003)(478600001)(81166007)(356005)(6506007)(9686003)(41300700001)(336012)(84970400001)(107886003)(40480700001)(55016003)(40460700003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Feb 2024 21:33:11.8267 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c863bea9-fcc0-4e21-b678-08dc236d642d 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: AM4PEPF00025F96.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9666 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_VI1PR08MB5325C266E259ACB3B572FAD6FF432VI1PR08MB5325eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > > > > If the above is correct then I think I understand what you're saying an= d > > will update the patch and do some Checks. >=20 > Yes, I think that's what I wanted to say. >=20 As discussed: Bootstrapped Regtested on aarch64-none-linux-gnu and x86_64-pc-linux-gnu no= issues. Also checked both with --enable-lto --with-build-config=3D'bootstrap-O3 boo= tstrap-lto' --enable-multilib and --enable-lto --with-build-config=3Dbootstrap-O3 --enable-checking=3Drel= ease,yes,rtl,extra; and checked the libcrypt testsuite as reported on PR113467. Ok for master? Thanks, Tamar gcc/ChangeLog: PR tree-optimization/113588 PR tree-optimization/113467 (vect_analyze_data_ref_dependence): Choose correct dest and fix checks. (vect_analyze_early_break_dependences): Update comments. gcc/testsuite/ChangeLog: PR tree-optimization/113588 PR tree-optimization/113467 * gcc.dg/vect/vect-early-break_108-pr113588.c: New test. * gcc.dg/vect/vect-early-break_109-pr113588.c: New test. --- inline copy of patch --- diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_108-pr113588.c b/gc= c/testsuite/gcc.dg/vect/vect-early-break_108-pr113588.c new file mode 100644 index 0000000000000000000000000000000000000000..e488619c9aac41fafbcf4798183= 92a6bb7c6924f --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_108-pr113588.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-add-options vect_early_break } */ +/* { dg-require-effective-target vect_early_break } */ +/* { dg-require-effective-target vect_int } */ + +/* { dg-final { scan-tree-dump-not "LOOP VECTORIZED" "vect" } } */ + +int foo (const char *s, unsigned long n) +{ + unsigned long len =3D 0; + while (*s++ && n--) + ++len; + return len; +} + diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_109-pr113588.c b/gc= c/testsuite/gcc.dg/vect/vect-early-break_109-pr113588.c new file mode 100644 index 0000000000000000000000000000000000000000..488c19d3ede809631d1a7ede0e7= f7bcdc7a1ae43 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_109-pr113588.c @@ -0,0 +1,44 @@ +/* { dg-add-options vect_early_break } */ +/* { dg-require-effective-target vect_early_break } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-require-effective-target mmap } */ + +/* { dg-final { scan-tree-dump-not "LOOP VECTORIZED" "vect" } } */ + +#include +#include + +#include "tree-vect.h" + +__attribute__((noipa)) +int foo (const char *s, unsigned long n) +{ + unsigned long len =3D 0; + while (*s++ && n--) + ++len; + return len; +} + +int main() +{ + + check_vect (); + + long pgsz =3D sysconf (_SC_PAGESIZE); + void *p =3D mmap (NULL, pgsz * 3, PROT_READ|PROT_WRITE, + MAP_ANONYMOUS|MAP_PRIVATE, 0, 0); + if (p =3D=3D MAP_FAILED) + return 0; + mprotect (p, pgsz, PROT_NONE); + mprotect (p+2*pgsz, pgsz, PROT_NONE); + char *p1 =3D p + pgsz; + p1[0] =3D 1; + p1[1] =3D 0; + foo (p1, 1000); + p1 =3D p + 2*pgsz - 2; + p1[0] =3D 1; + p1[1] =3D 0; + foo (p1, 1000); + return 0; +} + diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc index f592aeb8028afd4fd70e2175104efab2a2c0d82e..53fdfc25d7dc2deb77881762526= 97d2e455555fc 100644 --- a/gcc/tree-vect-data-refs.cc +++ b/gcc/tree-vect-data-refs.cc @@ -619,10 +619,10 @@ vect_analyze_data_ref_dependence (struct data_depende= nce_relation *ddr, return opt_result::success (); } =20 -/* Funcion vect_analyze_early_break_dependences. +/* Function vect_analyze_early_break_dependences. =20 - Examime all the data references in the loop and make sure that if we ha= ve - mulitple exits that we are able to safely move stores such that they be= come + Examine all the data references in the loop and make sure that if we ha= ve + multiple exits that we are able to safely move stores such that they be= come safe for vectorization. The function also calculates the place where t= o move the instructions to and computes what the new vUSE chain should be. =20 @@ -639,7 +639,7 @@ vect_analyze_data_ref_dependence (struct data_dependenc= e_relation *ddr, - Multiple loads are allowed as long as they don't alias. =20 NOTE: - This implemementation is very conservative. Any overlappig loads/stor= es + This implementation is very conservative. Any overlapping loads/store= s that take place before the early break statement gets rejected aside = from WAR dependencies. =20 @@ -668,7 +668,6 @@ vect_analyze_early_break_dependences (loop_vec_info loo= p_vinfo) auto_vec bases; basic_block dest_bb =3D NULL; =20 - hash_set visited; class loop *loop =3D LOOP_VINFO_LOOP (loop_vinfo); class loop *loop_nest =3D loop_outer (loop); =20 @@ -677,19 +676,33 @@ vect_analyze_early_break_dependences (loop_vec_info l= oop_vinfo) "loop contains multiple exits, analyzing" " statement dependencies.\n"); =20 + if (LOOP_VINFO_EARLY_BREAKS_VECT_PEELED (loop_vinfo)) + if (dump_enabled_p ()) + dump_printf_loc (MSG_NOTE, vect_location, + "alternate exit has been chosen as main exit.\n"); + /* Since we don't support general control flow, the location we'll move = the side-effects to is always the latch connected exit. When we support - general control flow we can do better but for now this is fine. */ - dest_bb =3D single_pred (loop->latch); + general control flow we can do better but for now this is fine. Move + side-effects to the in-loop destination of the last early exit. For = the PEELED + case we move the side-effects to the latch block as this is guarantee= d to be the + last block to be executed when a vector iteration finished. */ + if (LOOP_VINFO_EARLY_BREAKS_VECT_PEELED (loop_vinfo)) + dest_bb =3D loop->latch; + else + dest_bb =3D single_pred (loop->latch); + + /* We start looking from dest_bb, for the non-PEELED case we don't want = to + move any stores already present, but we do want to read and validate = the + loads. */ basic_block bb =3D dest_bb; =20 + /* In the peeled case we need to check all the loads in the loop since t= o move the + the stores we lift the stores over all loads into the latch. */ + bool check_deps =3D LOOP_VINFO_EARLY_BREAKS_VECT_PEELED (loop_vinfo); + do { - /* If the destination block is also the header then we have nothing = to do. */ - if (!single_pred_p (bb)) - continue; - - bb =3D single_pred (bb); gimple_stmt_iterator gsi =3D gsi_last_bb (bb); =20 /* Now analyze all the remaining statements and try to determine whi= ch @@ -707,42 +720,13 @@ vect_analyze_early_break_dependences (loop_vec_info l= oop_vinfo) if (!dr_ref) continue; =20 - /* We currently only support statically allocated objects due to - not having first-faulting loads support or peeling for - alignment support. Compute the size of the referenced object - (it could be dynamically allocated). */ - tree obj =3D DR_BASE_ADDRESS (dr_ref); - if (!obj || TREE_CODE (obj) !=3D ADDR_EXPR) - { - if (dump_enabled_p ()) - dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, - "early breaks only supported on statically" - " allocated objects.\n"); - return opt_result::failure_at (stmt, - "can't safely apply code motion to " - "dependencies of %G to vectorize " - "the early exit.\n", stmt); - } - - tree refop =3D TREE_OPERAND (obj, 0); - tree refbase =3D get_base_address (refop); - if (!refbase || !DECL_P (refbase) || !DECL_SIZE (refbase) - || TREE_CODE (DECL_SIZE (refbase)) !=3D INTEGER_CST) - { - if (dump_enabled_p ()) - dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, - "early breaks only supported on" - " statically allocated objects.\n"); - return opt_result::failure_at (stmt, - "can't safely apply code motion to " - "dependencies of %G to vectorize " - "the early exit.\n", stmt); - } - /* Check if vector accesses to the object will be within bounds. must be a constant or assume loop will be versioned or niters - bounded by VF so accesses are within range. */ - if (!ref_within_array_bound (stmt, DR_REF (dr_ref))) + bounded by VF so accesses are within range. We only need to check t= he + reads since writes are moved to a safe place where if we get there w= e + know they are safe to perform. */ + if (DR_IS_READ (dr_ref) + && !ref_within_array_bound (stmt, DR_REF (dr_ref))) { if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, @@ -755,6 +739,9 @@ vect_analyze_early_break_dependences (loop_vec_info loo= p_vinfo) "the early exit.\n", stmt); } =20 + if (!check_deps) + continue; + if (DR_IS_READ (dr_ref)) bases.safe_push (dr_ref); else if (DR_IS_WRITE (dr_ref)) @@ -814,8 +801,19 @@ vect_analyze_early_break_dependences (loop_vec_info lo= op_vinfo) "marked statement for vUSE update: %G", stmt); } } + + if (!single_pred_p (bb)) + { + gcc_assert (bb =3D=3D loop->header); + break; + } + + /* For the non-PEELED case we don't want to check the loads in the I= V exit block + for dependencies with the stores, but any block preceeding it we do. */ + check_deps =3D true; + bb =3D single_pred (bb); } - while (bb !=3D loop->header); + while (1); =20 /* We don't allow outer -> inner loop transitions which should have been trapped already during loop form analysis. */ --_002_VI1PR08MB5325C266E259ACB3B572FAD6FF432VI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb18216.patch" Content-Description: rb18216.patch Content-Disposition: attachment; filename="rb18216.patch"; size=8372; creation-date="Thu, 01 Feb 2024 21:32:47 GMT"; modification-date="Thu, 01 Feb 2024 21:33:01 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha18x MDgtcHIxMTM1ODguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVh a18xMDgtcHIxMTM1ODguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDg4NjE5YzlhYWM0MWZhZmJjZjQ3OTgxODM5 MmE2YmI3YzY5MjRmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVj dC92ZWN0LWVhcmx5LWJyZWFrXzEwOC1wcjExMzU4OC5jCkBAIC0wLDAgKzEsMTUgQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLWFkZC1vcHRpb25zIHZlY3RfZWFybHlfYnJlYWsg fSAqLworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9lYXJseV9icmVhayB9 ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9ICovCisKKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgIkxPT1AgVkVDVE9SSVpFRCIgInZlY3Qi IH0gfSAqLworCitpbnQgZm9vIChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBsb25nIG4pCit7Cisg dW5zaWduZWQgbG9uZyBsZW4gPSAwOworIHdoaWxlICgqcysrICYmIG4tLSkKKyAgICsrbGVuOwor IHJldHVybiBsZW47Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3Qv dmVjdC1lYXJseS1icmVha18xMDktcHIxMTM1ODguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Zl Y3QvdmVjdC1lYXJseS1icmVha18xMDktcHIxMTM1ODguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODhjMTlkM2Vk ZTgwOTYzMWQxYTdlZGUwZTdmN2JjZGM3YTFhZTQzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzEwOS1wcjExMzU4OC5jCkBAIC0w LDAgKzEsNDQgQEAKKy8qIHsgZGctYWRkLW9wdGlvbnMgdmVjdF9lYXJseV9icmVhayB9ICovCisv KiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2Vhcmx5X2JyZWFrIH0gKi8KKy8q IHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8KKy8qIHsgZGctcmVx dWlyZS1lZmZlY3RpdmUtdGFyZ2V0IG1tYXAgfSAqLworCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtbm90ICJMT09QIFZFQ1RPUklaRUQiICJ2ZWN0IiB9IH0gKi8KKworI2luY2x1ZGUg PHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJ0cmVlLXZlY3Qu aCIKKworX19hdHRyaWJ1dGVfXygobm9pcGEpKQoraW50IGZvbyAoY29uc3QgY2hhciAqcywgdW5z aWduZWQgbG9uZyBuKQoreworIHVuc2lnbmVkIGxvbmcgbGVuID0gMDsKKyB3aGlsZSAoKnMrKyAm JiBuLS0pCisgICArK2xlbjsKKyByZXR1cm4gbGVuOworfQorCitpbnQgbWFpbigpCit7CisKKyAg Y2hlY2tfdmVjdCAoKTsKKworICBsb25nIHBnc3ogPSBzeXNjb25mIChfU0NfUEFHRVNJWkUpOwor ICB2b2lkICpwID0gbW1hcCAoTlVMTCwgcGdzeiAqIDMsIFBST1RfUkVBRHxQUk9UX1dSSVRFLAor ICAgICBNQVBfQU5PTllNT1VTfE1BUF9QUklWQVRFLCAwLCAwKTsKKyAgaWYgKHAgPT0gTUFQX0ZB SUxFRCkKKyAgICByZXR1cm4gMDsKKyAgbXByb3RlY3QgKHAsIHBnc3osIFBST1RfTk9ORSk7Cisg IG1wcm90ZWN0IChwKzIqcGdzeiwgcGdzeiwgUFJPVF9OT05FKTsKKyAgY2hhciAqcDEgPSBwICsg cGdzejsKKyAgcDFbMF0gPSAxOworICBwMVsxXSA9IDA7CisgIGZvbyAocDEsIDEwMDApOworICBw MSA9IHAgKyAyKnBnc3ogLSAyOworICBwMVswXSA9IDE7CisgIHAxWzFdID0gMDsKKyAgZm9vIChw MSwgMTAwMCk7CisgIHJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LWRh dGEtcmVmcy5jYyBiL2djYy90cmVlLXZlY3QtZGF0YS1yZWZzLmNjCmluZGV4IGY1OTJhZWI4MDI4 YWZkNGZkNzBlMjE3NTEwNGVmYWIyYTJjMGQ4MmUuLjUzZmRmYzI1ZDdkYzJkZWI3Nzg4MTc2MjUy Njk3ZDJlNDU1NTU1ZmMgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXZlY3QtZGF0YS1yZWZzLmNjCisr KyBiL2djYy90cmVlLXZlY3QtZGF0YS1yZWZzLmNjCkBAIC02MTksMTAgKzYxOSwxMCBAQCB2ZWN0 X2FuYWx5emVfZGF0YV9yZWZfZGVwZW5kZW5jZSAoc3RydWN0IGRhdGFfZGVwZW5kZW5jZV9yZWxh dGlvbiAqZGRyLAogICByZXR1cm4gb3B0X3Jlc3VsdDo6c3VjY2VzcyAoKTsKIH0KIAotLyogRnVu Y2lvbiB2ZWN0X2FuYWx5emVfZWFybHlfYnJlYWtfZGVwZW5kZW5jZXMuCisvKiBGdW5jdGlvbiB2 ZWN0X2FuYWx5emVfZWFybHlfYnJlYWtfZGVwZW5kZW5jZXMuCiAKLSAgIEV4YW1pbWUgYWxsIHRo ZSBkYXRhIHJlZmVyZW5jZXMgaW4gdGhlIGxvb3AgYW5kIG1ha2Ugc3VyZSB0aGF0IGlmIHdlIGhh dmUKLSAgIG11bGl0cGxlIGV4aXRzIHRoYXQgd2UgYXJlIGFibGUgdG8gc2FmZWx5IG1vdmUgc3Rv cmVzIHN1Y2ggdGhhdCB0aGV5IGJlY29tZQorICAgRXhhbWluZSBhbGwgdGhlIGRhdGEgcmVmZXJl bmNlcyBpbiB0aGUgbG9vcCBhbmQgbWFrZSBzdXJlIHRoYXQgaWYgd2UgaGF2ZQorICAgbXVsdGlw bGUgZXhpdHMgdGhhdCB3ZSBhcmUgYWJsZSB0byBzYWZlbHkgbW92ZSBzdG9yZXMgc3VjaCB0aGF0 IHRoZXkgYmVjb21lCiAgICBzYWZlIGZvciB2ZWN0b3JpemF0aW9uLiAgVGhlIGZ1bmN0aW9uIGFs c28gY2FsY3VsYXRlcyB0aGUgcGxhY2Ugd2hlcmUgdG8gbW92ZQogICAgdGhlIGluc3RydWN0aW9u cyB0byBhbmQgY29tcHV0ZXMgd2hhdCB0aGUgbmV3IHZVU0UgY2hhaW4gc2hvdWxkIGJlLgogCkBA IC02MzksNyArNjM5LDcgQEAgdmVjdF9hbmFseXplX2RhdGFfcmVmX2RlcGVuZGVuY2UgKHN0cnVj dCBkYXRhX2RlcGVuZGVuY2VfcmVsYXRpb24gKmRkciwKICAgICAgLSBNdWx0aXBsZSBsb2FkcyBh cmUgYWxsb3dlZCBhcyBsb25nIGFzIHRoZXkgZG9uJ3QgYWxpYXMuCiAKICAgIE5PVEU6Ci0gICAg IFRoaXMgaW1wbGVtZW1lbnRhdGlvbiBpcyB2ZXJ5IGNvbnNlcnZhdGl2ZS4gQW55IG92ZXJsYXBw aWcgbG9hZHMvc3RvcmVzCisgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgdmVyeSBjb25zZXJ2 YXRpdmUuIEFueSBvdmVybGFwcGluZyBsb2Fkcy9zdG9yZXMKICAgICAgdGhhdCB0YWtlIHBsYWNl IGJlZm9yZSB0aGUgZWFybHkgYnJlYWsgc3RhdGVtZW50IGdldHMgcmVqZWN0ZWQgYXNpZGUgZnJv bQogICAgICBXQVIgZGVwZW5kZW5jaWVzLgogCkBAIC02NjgsNyArNjY4LDYgQEAgdmVjdF9hbmFs eXplX2Vhcmx5X2JyZWFrX2RlcGVuZGVuY2VzIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8pCiAg IGF1dG9fdmVjPGRhdGFfcmVmZXJlbmNlICo+IGJhc2VzOwogICBiYXNpY19ibG9jayBkZXN0X2Ji ID0gTlVMTDsKIAotICBoYXNoX3NldCA8Z2ltcGxlICo+IHZpc2l0ZWQ7CiAgIGNsYXNzIGxvb3Ag Kmxvb3AgPSBMT09QX1ZJTkZPX0xPT1AgKGxvb3BfdmluZm8pOwogICBjbGFzcyBsb29wICpsb29w X25lc3QgPSBsb29wX291dGVyIChsb29wKTsKIApAQCAtNjc3LDE5ICs2NzYsMzMgQEAgdmVjdF9h bmFseXplX2Vhcmx5X2JyZWFrX2RlcGVuZGVuY2VzIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8p CiAJCSAgICAgImxvb3AgY29udGFpbnMgbXVsdGlwbGUgZXhpdHMsIGFuYWx5emluZyIKIAkJICAg ICAiIHN0YXRlbWVudCBkZXBlbmRlbmNpZXMuXG4iKTsKIAorICBpZiAoTE9PUF9WSU5GT19FQVJM WV9CUkVBS1NfVkVDVF9QRUVMRUQgKGxvb3BfdmluZm8pKQorICAgIGlmIChkdW1wX2VuYWJsZWRf cCAoKSkKKyAgICAgIGR1bXBfcHJpbnRmX2xvYyAoTVNHX05PVEUsIHZlY3RfbG9jYXRpb24sCisJ CSAgICAgICAiYWx0ZXJuYXRlIGV4aXQgaGFzIGJlZW4gY2hvc2VuIGFzIG1haW4gZXhpdC5cbiIp OworCiAgIC8qIFNpbmNlIHdlIGRvbid0IHN1cHBvcnQgZ2VuZXJhbCBjb250cm9sIGZsb3csIHRo ZSBsb2NhdGlvbiB3ZSdsbCBtb3ZlIHRoZQogICAgICBzaWRlLWVmZmVjdHMgdG8gaXMgYWx3YXlz IHRoZSBsYXRjaCBjb25uZWN0ZWQgZXhpdC4gIFdoZW4gd2Ugc3VwcG9ydAotICAgICBnZW5lcmFs IGNvbnRyb2wgZmxvdyB3ZSBjYW4gZG8gYmV0dGVyIGJ1dCBmb3Igbm93IHRoaXMgaXMgZmluZS4g ICovCi0gIGRlc3RfYmIgPSBzaW5nbGVfcHJlZCAobG9vcC0+bGF0Y2gpOworICAgICBnZW5lcmFs IGNvbnRyb2wgZmxvdyB3ZSBjYW4gZG8gYmV0dGVyIGJ1dCBmb3Igbm93IHRoaXMgaXMgZmluZS4g IE1vdmUKKyAgICAgc2lkZS1lZmZlY3RzIHRvIHRoZSBpbi1sb29wIGRlc3RpbmF0aW9uIG9mIHRo ZSBsYXN0IGVhcmx5IGV4aXQuICBGb3IgdGhlIFBFRUxFRAorICAgICBjYXNlIHdlIG1vdmUgdGhl IHNpZGUtZWZmZWN0cyB0byB0aGUgbGF0Y2ggYmxvY2sgYXMgdGhpcyBpcyBndWFyYW50ZWVkIHRv IGJlIHRoZQorICAgICBsYXN0IGJsb2NrIHRvIGJlIGV4ZWN1dGVkIHdoZW4gYSB2ZWN0b3IgaXRl cmF0aW9uIGZpbmlzaGVkLiAgKi8KKyAgaWYgKExPT1BfVklORk9fRUFSTFlfQlJFQUtTX1ZFQ1Rf UEVFTEVEIChsb29wX3ZpbmZvKSkKKyAgICBkZXN0X2JiID0gbG9vcC0+bGF0Y2g7CisgIGVsc2UK KyAgICBkZXN0X2JiID0gc2luZ2xlX3ByZWQgKGxvb3AtPmxhdGNoKTsKKworICAvKiBXZSBzdGFy dCBsb29raW5nIGZyb20gZGVzdF9iYiwgZm9yIHRoZSBub24tUEVFTEVEIGNhc2Ugd2UgZG9uJ3Qg d2FudCB0bworICAgICBtb3ZlIGFueSBzdG9yZXMgYWxyZWFkeSBwcmVzZW50LCBidXQgd2UgZG8g d2FudCB0byByZWFkIGFuZCB2YWxpZGF0ZSB0aGUKKyAgICAgbG9hZHMuICAqLwogICBiYXNpY19i bG9jayBiYiA9IGRlc3RfYmI7CiAKKyAgLyogSW4gdGhlIHBlZWxlZCBjYXNlIHdlIG5lZWQgdG8g Y2hlY2sgYWxsIHRoZSBsb2FkcyBpbiB0aGUgbG9vcCBzaW5jZSB0byBtb3ZlIHRoZQorICAgICB0 aGUgc3RvcmVzIHdlIGxpZnQgdGhlIHN0b3JlcyBvdmVyIGFsbCBsb2FkcyBpbnRvIHRoZSBsYXRj aC4gICovCisgIGJvb2wgY2hlY2tfZGVwcyA9IExPT1BfVklORk9fRUFSTFlfQlJFQUtTX1ZFQ1Rf UEVFTEVEIChsb29wX3ZpbmZvKTsKKwogICBkbwogICAgIHsKLSAgICAgIC8qIElmIHRoZSBkZXN0 aW5hdGlvbiBibG9jayBpcyBhbHNvIHRoZSBoZWFkZXIgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8g ZG8uICAqLwotICAgICAgaWYgKCFzaW5nbGVfcHJlZF9wIChiYikpCi0JY29udGludWU7Ci0KLSAg ICAgIGJiID0gc2luZ2xlX3ByZWQgKGJiKTsKICAgICAgIGdpbXBsZV9zdG10X2l0ZXJhdG9yIGdz aSA9IGdzaV9sYXN0X2JiIChiYik7CiAKICAgICAgIC8qIE5vdyBhbmFseXplIGFsbCB0aGUgcmVt YWluaW5nIHN0YXRlbWVudHMgYW5kIHRyeSB0byBkZXRlcm1pbmUgd2hpY2gKQEAgLTcwNyw0MiAr NzIwLDEzIEBAIHZlY3RfYW5hbHl6ZV9lYXJseV9icmVha19kZXBlbmRlbmNlcyAobG9vcF92ZWNf aW5mbyBsb29wX3ZpbmZvKQogCSAgaWYgKCFkcl9yZWYpCiAJICAgIGNvbnRpbnVlOwogCi0JICAv KiBXZSBjdXJyZW50bHkgb25seSBzdXBwb3J0IHN0YXRpY2FsbHkgYWxsb2NhdGVkIG9iamVjdHMg ZHVlIHRvCi0JICAgICBub3QgaGF2aW5nIGZpcnN0LWZhdWx0aW5nIGxvYWRzIHN1cHBvcnQgb3Ig cGVlbGluZyBmb3IKLQkgICAgIGFsaWdubWVudCBzdXBwb3J0LiAgQ29tcHV0ZSB0aGUgc2l6ZSBv ZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QKLQkgICAgIChpdCBjb3VsZCBiZSBkeW5hbWljYWxseSBh bGxvY2F0ZWQpLiAgKi8KLQkgIHRyZWUgb2JqID0gRFJfQkFTRV9BRERSRVNTIChkcl9yZWYpOwot CSAgaWYgKCFvYmogfHwgVFJFRV9DT0RFIChvYmopICE9IEFERFJfRVhQUikKLQkgICAgewotCSAg ICAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkKLQkJZHVtcF9wcmludGZfbG9jIChNU0dfTUlTU0VE X09QVElNSVpBVElPTiwgdmVjdF9sb2NhdGlvbiwKLQkJCQkgImVhcmx5IGJyZWFrcyBvbmx5IHN1 cHBvcnRlZCBvbiBzdGF0aWNhbGx5IgotCQkJCSAiIGFsbG9jYXRlZCBvYmplY3RzLlxuIik7Ci0J ICAgICAgcmV0dXJuIG9wdF9yZXN1bHQ6OmZhaWx1cmVfYXQgKHN0bXQsCi0JCQkJICJjYW4ndCBz YWZlbHkgYXBwbHkgY29kZSBtb3Rpb24gdG8gIgotCQkJCSAiZGVwZW5kZW5jaWVzIG9mICVHIHRv IHZlY3Rvcml6ZSAiCi0JCQkJICJ0aGUgZWFybHkgZXhpdC5cbiIsIHN0bXQpOwotCSAgICB9Ci0K LQkgIHRyZWUgcmVmb3AgPSBUUkVFX09QRVJBTkQgKG9iaiwgMCk7Ci0JICB0cmVlIHJlZmJhc2Ug PSBnZXRfYmFzZV9hZGRyZXNzIChyZWZvcCk7Ci0JICBpZiAoIXJlZmJhc2UgfHwgIURFQ0xfUCAo cmVmYmFzZSkgfHwgIURFQ0xfU0laRSAocmVmYmFzZSkKLQkgICAgICB8fCBUUkVFX0NPREUgKERF Q0xfU0laRSAocmVmYmFzZSkpICE9IElOVEVHRVJfQ1NUKQotCSAgICB7Ci0JICAgICAgaWYgKGR1 bXBfZW5hYmxlZF9wICgpKQotCQlkdW1wX3ByaW50Zl9sb2MgKE1TR19NSVNTRURfT1BUSU1JWkFU SU9OLCB2ZWN0X2xvY2F0aW9uLAotCQkJCSAiZWFybHkgYnJlYWtzIG9ubHkgc3VwcG9ydGVkIG9u IgotCQkJCSAiIHN0YXRpY2FsbHkgYWxsb2NhdGVkIG9iamVjdHMuXG4iKTsKLQkgICAgICByZXR1 cm4gb3B0X3Jlc3VsdDo6ZmFpbHVyZV9hdCAoc3RtdCwKLQkJCQkgImNhbid0IHNhZmVseSBhcHBs eSBjb2RlIG1vdGlvbiB0byAiCi0JCQkJICJkZXBlbmRlbmNpZXMgb2YgJUcgdG8gdmVjdG9yaXpl ICIKLQkJCQkgInRoZSBlYXJseSBleGl0LlxuIiwgc3RtdCk7Ci0JICAgIH0KLQogCSAgLyogQ2hl Y2sgaWYgdmVjdG9yIGFjY2Vzc2VzIHRvIHRoZSBvYmplY3Qgd2lsbCBiZSB3aXRoaW4gYm91bmRz LgogCSAgICAgbXVzdCBiZSBhIGNvbnN0YW50IG9yIGFzc3VtZSBsb29wIHdpbGwgYmUgdmVyc2lv bmVkIG9yIG5pdGVycwotCSAgICAgYm91bmRlZCBieSBWRiBzbyBhY2Nlc3NlcyBhcmUgd2l0aGlu IHJhbmdlLiAgKi8KLQkgIGlmICghcmVmX3dpdGhpbl9hcnJheV9ib3VuZCAoc3RtdCwgRFJfUkVG IChkcl9yZWYpKSkKKwkgICAgIGJvdW5kZWQgYnkgVkYgc28gYWNjZXNzZXMgYXJlIHdpdGhpbiBy YW5nZS4gIFdlIG9ubHkgbmVlZCB0byBjaGVjayB0aGUKKwkgICAgIHJlYWRzIHNpbmNlIHdyaXRl cyBhcmUgbW92ZWQgdG8gYSBzYWZlIHBsYWNlIHdoZXJlIGlmIHdlIGdldCB0aGVyZSB3ZQorCSAg ICAga25vdyB0aGV5IGFyZSBzYWZlIHRvIHBlcmZvcm0uICAqLworCSAgaWYgKERSX0lTX1JFQUQg KGRyX3JlZikKKwkgICAgICAmJiAhcmVmX3dpdGhpbl9hcnJheV9ib3VuZCAoc3RtdCwgRFJfUkVG IChkcl9yZWYpKSkKIAkgICAgewogCSAgICAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkKIAkJZHVt cF9wcmludGZfbG9jIChNU0dfTUlTU0VEX09QVElNSVpBVElPTiwgdmVjdF9sb2NhdGlvbiwKQEAg LTc1NSw2ICs3MzksOSBAQCB2ZWN0X2FuYWx5emVfZWFybHlfYnJlYWtfZGVwZW5kZW5jZXMgKGxv b3BfdmVjX2luZm8gbG9vcF92aW5mbykKIAkJCQkgInRoZSBlYXJseSBleGl0LlxuIiwgc3RtdCk7 CiAJICAgIH0KIAorCSAgaWYgKCFjaGVja19kZXBzKQorCSAgICBjb250aW51ZTsKKwogCSAgaWYg KERSX0lTX1JFQUQgKGRyX3JlZikpCiAJICAgIGJhc2VzLnNhZmVfcHVzaCAoZHJfcmVmKTsKIAkg IGVsc2UgaWYgKERSX0lTX1dSSVRFIChkcl9yZWYpKQpAQCAtODE0LDggKzgwMSwxOSBAQCB2ZWN0 X2FuYWx5emVfZWFybHlfYnJlYWtfZGVwZW5kZW5jZXMgKGxvb3BfdmVjX2luZm8gbG9vcF92aW5m bykKIAkJCQkgIm1hcmtlZCBzdGF0ZW1lbnQgZm9yIHZVU0UgdXBkYXRlOiAlRyIsIHN0bXQpOwog CSAgICB9CiAJfQorCisgICAgICBpZiAoIXNpbmdsZV9wcmVkX3AgKGJiKSkKKwl7CisJICBnY2Nf YXNzZXJ0IChiYiA9PSBsb29wLT5oZWFkZXIpOworCSAgYnJlYWs7CisJfQorCisgICAgICAvKiBG b3IgdGhlIG5vbi1QRUVMRUQgY2FzZSB3ZSBkb24ndCB3YW50IHRvIGNoZWNrIHRoZSBsb2FkcyBp biB0aGUgSVYgZXhpdCBibG9jaworCSBmb3IgZGVwZW5kZW5jaWVzIHdpdGggdGhlIHN0b3Jlcywg YnV0IGFueSBibG9jayBwcmVjZWVkaW5nIGl0IHdlIGRvLiAgKi8KKyAgICAgIGNoZWNrX2RlcHMg PSB0cnVlOworICAgICAgYmIgPSBzaW5nbGVfcHJlZCAoYmIpOwogICAgIH0KLSAgd2hpbGUgKGJi ICE9IGxvb3AtPmhlYWRlcik7CisgIHdoaWxlICgxKTsKIAogICAvKiBXZSBkb24ndCBhbGxvdyBv dXRlciAtPiBpbm5lciBsb29wIHRyYW5zaXRpb25zIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4KICAg ICAgdHJhcHBlZCBhbHJlYWR5IGR1cmluZyBsb29wIGZvcm0gYW5hbHlzaXMuICAqLwo= --_002_VI1PR08MB5325C266E259ACB3B572FAD6FF432VI1PR08MB5325eurp_--