From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by sourceware.org (Postfix) with ESMTPS id 76A3C3858014 for ; Wed, 21 Sep 2022 09:21:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 76A3C3858014 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663752102; x=1695288102; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=MACv2ZUJLc6EsVufiT0oFeSGXyRlT5NcCbogqjHI7cQ=; b=XMQCToOHviqd4Rwsqc/jIx84tQWft6QcTaK6moz1aQNVbY24K/CxePZe MoOQGfNM5qMcMJeeNSUNHNHAqLBi7AwGUw53n/nOKJ9IDpEq91UEyyjfd f8A56KUxNjIfLgsOash1aAWnm+1XpIvK8nbbvft4FG2VdZV2FAfsNrDAp 4TbkhYJ7mFAjsihUuIrzmxLpverBJD5fC2QLMTJJKIlWYoelKRHcYyMG0 HnWosILa66BBSNL2plWXogsbFryWAncMqLDPdL6knWTUuCyNXy93UWRSR KOXzsBAaDfKgXpAvH1CQrkga5DmMklwBQK0A0ynJ2htwTEYF5NGdYe82J g==; X-IronPort-AV: E=McAfee;i="6500,9779,10476"; a="361708777" X-IronPort-AV: E=Sophos;i="5.93,333,1654585200"; d="scan'208,223";a="361708777" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Sep 2022 02:21:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,332,1654585200"; d="scan'208,223";a="614737074" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga007.jf.intel.com with ESMTP; 21 Sep 2022 02:21:40 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 21 Sep 2022 02:21:40 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Wed, 21 Sep 2022 02:21:40 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.43) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Wed, 21 Sep 2022 02:21:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j/HtEw02K4oBkHu1SddPhH7hixLMFTkf57xaVCvIxKhEVeRxTStpRc1php6rKZEmZPP/eeabcnxrUNWaH+QJuEHdN0BxLrEgmMXBfjv0jxjzy+06NPV04QNxko9W5h3wlVQVFIB6JxaPg0uksyWNmcuuFx6Em9Y6I33WPakvJzsFLcaddjR/iGMsyQR8XrO+Zy5jp1pCbB2QLKlqC4rZi1mAyHVlnsnxnvHRIkwE34NL7arO/pBwffF3qfXrUx9nDWBSLxqAOQ6MB+GC9ZT6Nv4K60NeTNB83zVbt+Ha5IdKCvbNrXl/sQ4lcnwAexpASqMZENPmIqT7YqLUESi7dQ== 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=TrbB88KTgZottI2Our3aOHvnlB3bGEcg3r5LumjF1bo=; b=YzgsJ/fwhMWc3mS1vhJvxQ7Ds0nSlSxkvYQZwv/DKwLGOVZgx7XEpXok+ZSTr5Ea6JTxaMANXE1oEwG1pXtQErG9EBi2xBk49s/ZAWXZL6Q2EJ59xJlj/WJV0F88H9hQNGmLNhHgIOcCfMM5o3HKm/QSRKcwaQpBm3XmXSdvTIRpHuRpm3mYtn+eBjKWwlxlaPs7nQlCjlGXkyYpCoo1EqRueto/Hya7+Q5M2ZQHYS/NaOiZTlTMtfuh+RG7LcYSHrpnspptvozhHoxsxj0tE05urpblyfgmAPEm3+a5Px61/xqupQKjU1MLf0U3Q/WHseikwnJERlpLMKqPYz+Wng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SJ0PR11MB5600.namprd11.prod.outlook.com (2603:10b6:a03:3ab::16) by DM4PR11MB6095.namprd11.prod.outlook.com (2603:10b6:8:aa::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Wed, 21 Sep 2022 09:21:38 +0000 Received: from SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::3d1a:a947:5b57:5b8e]) by SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::3d1a:a947:5b57:5b8e%7]) with mapi id 15.20.5654.017; Wed, 21 Sep 2022 09:21:38 +0000 From: "Cui, Lili" To: Jan Hubicka CC: "gcc-patches@gcc.gnu.org" , "Liu, Hongtao" , "Lu, Hongjiu" Subject: RE: [PATCH] Add attribute hot judgement for INLINE_HINT_known_hot hint. Thread-Topic: [PATCH] Add attribute hot judgement for INLINE_HINT_known_hot hint. Thread-Index: AQHYzM3hz5SEbbuWE021DEQwM6v93a3ofziAgAEZ3AA= Date: Wed, 21 Sep 2022 09:21:38 +0000 Message-ID: References: <20220920084810.25157-1-lili.cui@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: dlp-version: 11.6.500.17 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR11MB5600:EE_|DM4PR11MB6095:EE_ x-ms-office365-filtering-correlation-id: 54657fc0-b40b-4850-015b-08da9bb2afba x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vGk0dNm0+IUAw9oyJlVZGDvzetIEn+Zm/fkpkYJ3g1XU3ANEIMfiwKM4v9WKPDqZplTtFUNO6b1lm/88fQ9x4oRDJua736+KTwnIAcTc5UAfqrV4AVG/hehCSAzstW6ZQLReVKP2Gwn23cvlUMLcaISL09kfnUaGz9Mbj1g5rgvy2btkTjeqJayN73zVB6E3joiM/xfBYnotmrQK/5XHjvrBmiti06h8+vYchyrq/Ns07ubdXODZZZxu7FfrRkBcv/NYJGNE3kX4PjXbeLggYk7FrpSAveokxq6H+nJU/IWvTSMttfULELNrYwbqjWyn5ePQoGPtEhGTM7VyD6XDL5tX11A2J7yf8uXxKAdQzyOFLLMm/pwTVi+9SDn4Q7rFSD4Tv+GoQgfZxeVqg8/ulCJa9TA3yPyAM1Nd3QGQP5TbAyCj2SzkxIR5ywioCpeAU91A0/Pv1LWqz1cCq96pEU7M3LoCtnaZeMj+LKqEQ7CnY9qsnr1yHeH2KCd1zLJoKWkSiJvJx++bCTm+3bLNobmnHiG6xD/Vc/+HuRtIN8goV4hbeHyQAoBTQoQT7Gixuw09Ojdt+iHWRseVn7Pmxitq4c1/H3/w1MwT8h3XyQ0VLz6csoy8YxAugnXRcvpWxNf27oeTvOh1fiwHzkG1sWSf95pfYYQI4PIgW/R+iVZ7iNzmf8Y/nA/FFFqnJynK9tm8aJNrft9na3xnx/ijRkIbJ7MYbW2otoKIFXlPP2iUtTSIiiBtlowm6Mb/NNWcO+wafEfVz8yQHVpeIVwYQSLpd0khnXkicTGIehRuwAE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB5600.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(396003)(346002)(376002)(366004)(136003)(451199015)(122000001)(2906002)(107886003)(55016003)(54906003)(8936002)(8676002)(4326008)(26005)(84970400001)(66946007)(5660300002)(76116006)(33656002)(99936003)(86362001)(64756008)(478600001)(7696005)(9686003)(6506007)(52536014)(38100700002)(186003)(6916009)(83380400001)(82960400001)(38070700005)(316002)(66446008)(71200400001)(41300700001)(66556008)(66476007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?0Iqr3EbnsniVr1sBv+naCo0XvIpsfDwP9KRIZhdNQFSSFd/xZqOCmvgvnjdg?= =?us-ascii?Q?gMADLkm8CJOhHjsoXr86N5uFc5sKg7e2uZrsXHTPFHKVRfdFGBtweg3deAls?= =?us-ascii?Q?YyaXHrp0Mu24XkUHD3PnB9++ZbTbLnutQz15fUl8FJP+XoPIOPnuQewtu8iB?= =?us-ascii?Q?r5PLNnJdXjHqXD+BV9CjTD8SgpX3k5KwkRkkue2rWPAbxYfB/IZfSwBtWXwa?= =?us-ascii?Q?O+NbsqWi5nkknHPZrCBjtQbZ+T0qsT+4pSCk/PTsNbsVAoSOyb5dJ28QvD2c?= =?us-ascii?Q?AT6H42Jj/DiGTd5mNxaO27OZ0dq9cLBukTMT1FCcU8IUsKGh8zU1H5AOvTMh?= =?us-ascii?Q?/P3LE8Vom9IIuw8gYel2uk8O90aS8lUxBUqHTMJrga2MkL+mczTTf+ijMT+K?= =?us-ascii?Q?/+d7snhhPBGtQg8Nj5sl+o1VOI6V72u1E5JjWFwxZ6dOdzRB70ZAhwt+rMOM?= =?us-ascii?Q?r/B4+2SXypU/cU42WSLS933AY4O3pnhTKGxbdohKMEjof7Q7uF+fw7EjAoJM?= =?us-ascii?Q?3KGQRDPn1SpOKfM1iJgJMN6/5OO6VcrTcvV9EgLUFZIOLZpvQukZCGGYVa5v?= =?us-ascii?Q?1S+4/lXY16WfVsmAKb5+2pF2Jwh4cmyhjZerjHpMMrKf+HG+fkiU0I+zhPl6?= =?us-ascii?Q?AAvASiYdmRQxZoxBQ72MRJ06w6m0mmDPIZt+xB2fD397iNO1xkFIQG5cLReA?= =?us-ascii?Q?Xu3Q7grOZwMmky0Bj14i9fgXiuDLNgWm6oC6IdFOIgc9V7C6U6bv2HykcYxq?= =?us-ascii?Q?yWw7aTH0xPLYReUCl90TZ0guEDhlaI7JxB/dN12O45UpJUi3qFzRQDHq+IMb?= =?us-ascii?Q?gYnU0nc5qzEVjXKNJYsoOnzAGMTbjyrkyllMM1ITAcQaLqBwLCC8X0kEbSrF?= =?us-ascii?Q?qQFhD//O5Bh3MkeruI3burlsQ062w44OEV1917JCc7fcjaA/ZEghRIdqqT96?= =?us-ascii?Q?Cxe/kzaC3vbiqEMbSBUDh+j277VQ6P4/dhyhlCC+TqJb7xP3toEPJOwX2QLo?= =?us-ascii?Q?HZk0MkJliNMnDzmzE1PvdLnHHUsHuL31E7WIazBeXhQTrZTqLe8S7lJ8L+Xw?= =?us-ascii?Q?zn14q2C7qiy2//9FGr6R92OPN78J/NrgBxX1RAZBCNu03ToQTOZzF2EOjg58?= =?us-ascii?Q?O3yJrH9l/yPi8oRz1AmhHQXcX8rLVIWm/NAQQeLtQaBcJwSOMUE2QwUE4WXu?= =?us-ascii?Q?S+L8q6hgMjIbTVcfXCW1Eej2/6IJYSf/rhT/pJ8BCVjWtoN9Jsr8dE5UjQ43?= =?us-ascii?Q?+tXnR6DI+j+xqGE8RF3ArgCAhq7SHj5e6HGyyBP586AdVM7cT5E9RXH/c6Ik?= =?us-ascii?Q?95xJx0DyF6SilmEEVQAD57yv9XzOxwXj1S3lmSKCHv9pVjI8TUTAt3goQGtH?= =?us-ascii?Q?80PPxUHlN5VYsahtrSPIXtEcLMnyvtJP8aqmGlzI1nSg/a0Ab9aLQwSLi3vz?= =?us-ascii?Q?KCv8Rl4lVlCZjAtaO8t5hJ/M7jXzNr5SBRbuAt3tI+FqFGzRms2mq6nPyTOu?= =?us-ascii?Q?PZlCXL70cgW04+EetjYvjbnjBjU4dxTksqZARvF226e+XM6v3W2f6Fo1aHwf?= =?us-ascii?Q?VBZcLfp8WhwQ73hfM5ZOz/oR1mes4D+y5kLHVAzk?= Content-Type: multipart/mixed; boundary="_002_SJ0PR11MB5600CA193D8B92A0EB8ADBBE9E4F9SJ0PR11MB5600namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5600.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 54657fc0-b40b-4850-015b-08da9bb2afba X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Sep 2022 09:21:38.0564 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Z7Ntpg/SnsfN+wY42S1XT6Ae8CiCcUSITLTt2dMOQ4/5Q6as4SkXFvjSefvrWo9T2JEOI0kGDorzoSDgjyJVGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6095 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-10.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_SJ0PR11MB5600CA193D8B92A0EB8ADBBE9E4F9SJ0PR11MB5600namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > Thank you. Can you please also add a testcase that tests for this. > So you modify imagemagick marking attribute hot on the specific inline? Thanks Honza. Added the testcase. I didn't modify source code of 538.imagic= _r, the original source code has attribute like: #define magick_hot_spot __attribute__((__hot__)) static Cache *SetPixelCacheNexusPixels( ... ) magick_hot_spot; > I will try to also look again at your earlier patch - I had very busy sum= mer and > unfortunately lost track on this one. > NP, I guessed you were busy during that time, my earlier patch was partiall= y duplicated with function "Elimination_by_inlining_prob",=20 except "parameter points to caller local memory" part, maybe we can find a = suitable place to add local memory part to the IPA. > Honza gcc/ChangeLog * ipa-inline-analysis.cc (do_estimate_edge_time): Add function attribute judgement for INLINE_HINT_known_hot hint. gcc/testsuite/ChangeLog: * gcc.dg/ipa/inlinehint-6.c: New test. --- gcc/ipa-inline-analysis.cc | 13 ++++--- gcc/testsuite/gcc.dg/ipa/inlinehint-6.c | 47 +++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/ipa/inlinehint-6.c diff --git a/gcc/ipa-inline-analysis.cc b/gcc/ipa-inline-analysis.cc index 1ca685d1b0e..7bd29c36590 100644 --- a/gcc/ipa-inline-analysis.cc +++ b/gcc/ipa-inline-analysis.cc @@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. If not see #include "ipa-utils.h" #include "cfgexpand.h" #include "gimplify.h" +#include "attribs.h" =20 /* Cached node/edge growths. */ fast_call_summary *edge_growth_cache = =3D NULL; @@ -249,15 +250,19 @@ do_estimate_edge_time (struct cgraph_edge *edge, srea= l *ret_nonspec_time) hints =3D estimates.hints; } =20 - /* When we have profile feedback, we can quite safely identify hot - edges and for those we disable size limits. Don't do that when - probability that caller will call the callee is low however, since it + /* When we have profile feedback or function attribute, we can quite saf= ely + identify hot edges and for those we disable size limits. Don't do th= at + when probability that caller will call the callee is low however, sin= ce it may hurt optimization of the caller's hot path. */ - if (edge->count.ipa ().initialized_p () && edge->maybe_hot_p () + if ((edge->count.ipa ().initialized_p () && edge->maybe_hot_p () && (edge->count.ipa () * 2 > (edge->caller->inlined_to ? edge->caller->inlined_to->count.ipa () : edge->caller->count.ipa ()))) + || (lookup_attribute ("hot", DECL_ATTRIBUTES (edge->caller->decl)) + !=3D NULL + && lookup_attribute ("hot", DECL_ATTRIBUTES (edge->callee->decl)) + !=3D NULL)) hints |=3D INLINE_HINT_known_hot; =20 gcc_checking_assert (size >=3D 0); diff --git a/gcc/testsuite/gcc.dg/ipa/inlinehint-6.c b/gcc/testsuite/gcc.dg= /ipa/inlinehint-6.c new file mode 100644 index 00000000000..1f3be641c6d --- /dev/null +++ b/gcc/testsuite/gcc.dg/ipa/inlinehint-6.c @@ -0,0 +1,47 @@ +/* { dg-options "-O3 -c -fdump-ipa-inline-details -fno-early-inlining -fno= -ipa-cp" } */ +/* { dg-add-options bind_pic_locally } */ + +#define size_t long long int + +struct A +{ + size_t f1, f2, f3, f4; +}; +struct C +{ + struct A a; + size_t b; +}; +struct C x; + +__attribute__((hot)) struct C callee (struct A *a, struct C *c) +{ + c->a=3D(*a); + + if((c->b + 7) & 17) + { + c->a.f1 =3D c->a.f2 + c->a.f1; + c->a.f2 =3D c->a.f3 - c->a.f2; + c->a.f3 =3D c->a.f2 + c->a.f3; + c->a.f4 =3D c->a.f2 - c->a.f4; + c->b =3D c->a.f2; + + } + return *c; +} + +__attribute__((hot)) struct C caller (size_t d, size_t e, size_t f, size_t= g, struct C *c) +{ + struct A a; + a.f1 =3D 1 + d; + a.f2 =3D e; + a.f3 =3D 12 + f; + a.f4 =3D 68 + g; + if (c->b > 0) + return callee (&a, c); + else + return *c; +} + +/* { dg-final { scan-ipa-dump "known_hot" "inline" } } */ + --=20 2.17.1 Thanks, Lili. --_002_SJ0PR11MB5600CA193D8B92A0EB8ADBBE9E4F9SJ0PR11MB5600namp_ Content-Type: application/octet-stream; name="0001-Add-attribute-hot-judgement-for-INLINE_HINT_known_ho.patch" Content-Description: 0001-Add-attribute-hot-judgement-for-INLINE_HINT_known_ho.patch Content-Disposition: attachment; filename="0001-Add-attribute-hot-judgement-for-INLINE_HINT_known_ho.patch"; size=3942; creation-date="Wed, 21 Sep 2022 09:19:00 GMT"; modification-date="Wed, 21 Sep 2022 09:21:37 GMT" Content-Transfer-Encoding: base64 RnJvbSA4ZTI2ODU3MmRlYmEwOTcxNTg2ODZlZWIxMGVkNDVlZDMzY2QyZWY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ3VpLExpbGkiIDxsaWxpLmN1aUBpbnRlbC5jb20+CkRhdGU6 IFdlZCwgMTQgU2VwIDIwMjIgMjA6MDg6MzUgKzA4MDAKU3ViamVjdDogW1BBVENIXSBBZGQgYXR0 cmlidXRlIGhvdCBqdWRnZW1lbnQgZm9yIElOTElORV9ISU5UX2tub3duX2hvdCBoaW50LgoKV2Ug c2V0IHVwIElOTElORV9ISU5UX2tub3duX2hvdCBoaW50IG9ubHkgd2hlbiB3ZSBoYXZlIHByb2Zp bGUgZmVlZGJhY2ssCm5vdyBhZGQgZnVuY3Rpb24gYXR0cmlidXRlIGp1ZGdlbWVudCBmb3IgaXQs IHdoZW4gYm90aCBjYWxsZXIgYW5kIGNhbGxlZQpoYXZlIF9fYXR0cmlidXRlX18oKGhvdCkpLCB3 ZSB3aWxsIGFsc28gc2V0IHVwIElOTElORV9ISU5UX2tub3duX2hvdCBoaW50CmZvciBpdC4KCldp dGggdGhpcyBwYXRjaCBhcHBsaWVkLAoJCQkJIFJhdGlvICBDb2RlIHNpemUKQURMIE11bHRpLWNv cHk6ICAgIDUzOC5pbWFnaWNfciAgMTYuNyUgICAgMS42JQpTUFIgTXVsdGktY29weTogICAgNTM4 LmltYWdpY19yICAxNSUgICAgICAxLjclCklDWCBNdWx0aS1jb3B5OiAgICA1MzguaW1hZ2ljX3Ig IDE1LjIlICAgIDEuNyUKQ0xYIE11bHRpLWNvcHk6ICAgIDUzOC5pbWFnaWNfciAgMTIuNyUgICAg MS43JQpabnZlcjMgTXVsdGktY29weTogNTM4LmltYWdpY19yICAxMC42JSAgICAxLjUlCgpnY2Mv Q2hhbmdlTG9nCgogICogaXBhLWlubGluZS1hbmFseXNpcy5jYyAoZG9fZXN0aW1hdGVfZWRnZV90 aW1lKTogQWRkIGZ1bmN0aW9uIGF0dHJpYnV0ZQogIGp1ZGdlbWVudCBmb3IgSU5MSU5FX0hJTlRf a25vd25faG90IGhpbnQuCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCiAgKiBnY2MuZGcvaXBh L2lubGluZWhpbnQtNi5jOiBOZXcgdGVzdC4KLS0tCiBnY2MvaXBhLWlubGluZS1hbmFseXNpcy5j YyAgICAgICAgICAgICAgfCAxMyArKysrLS0tCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9pcGEvaW5s aW5laGludC02LmMgfCA0NyArKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5n ZWQsIDU2IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvaXBhL2lubGluZWhpbnQtNi5jCgpkaWZmIC0tZ2l0IGEvZ2Nj L2lwYS1pbmxpbmUtYW5hbHlzaXMuY2MgYi9nY2MvaXBhLWlubGluZS1hbmFseXNpcy5jYwppbmRl eCAxY2E2ODVkMWIwZS4uN2JkMjljMzY1OTAgMTAwNjQ0Ci0tLSBhL2djYy9pcGEtaW5saW5lLWFu YWx5c2lzLmNjCisrKyBiL2djYy9pcGEtaW5saW5lLWFuYWx5c2lzLmNjCkBAIC00OCw2ICs0OCw3 IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAj aW5jbHVkZSAiaXBhLXV0aWxzLmgiCiAjaW5jbHVkZSAiY2ZnZXhwYW5kLmgiCiAjaW5jbHVkZSAi Z2ltcGxpZnkuaCIKKyNpbmNsdWRlICJhdHRyaWJzLmgiCiAKIC8qIENhY2hlZCBub2RlL2VkZ2Ug Z3Jvd3Rocy4gICovCiBmYXN0X2NhbGxfc3VtbWFyeTxlZGdlX2dyb3d0aF9jYWNoZV9lbnRyeSAq LCB2YV9oZWFwPiAqZWRnZV9ncm93dGhfY2FjaGUgPSBOVUxMOwpAQCAtMjQ5LDE1ICsyNTAsMTkg QEAgZG9fZXN0aW1hdGVfZWRnZV90aW1lIChzdHJ1Y3QgY2dyYXBoX2VkZ2UgKmVkZ2UsIHNyZWFs ICpyZXRfbm9uc3BlY190aW1lKQogICAgICAgaGludHMgPSBlc3RpbWF0ZXMuaGludHM7CiAgICAg fQogCi0gIC8qIFdoZW4gd2UgaGF2ZSBwcm9maWxlIGZlZWRiYWNrLCB3ZSBjYW4gcXVpdGUgc2Fm ZWx5IGlkZW50aWZ5IGhvdAotICAgICBlZGdlcyBhbmQgZm9yIHRob3NlIHdlIGRpc2FibGUgc2l6 ZSBsaW1pdHMuICBEb24ndCBkbyB0aGF0IHdoZW4KLSAgICAgcHJvYmFiaWxpdHkgdGhhdCBjYWxs ZXIgd2lsbCBjYWxsIHRoZSBjYWxsZWUgaXMgbG93IGhvd2V2ZXIsIHNpbmNlIGl0CisgIC8qIFdo ZW4gd2UgaGF2ZSBwcm9maWxlIGZlZWRiYWNrIG9yIGZ1bmN0aW9uIGF0dHJpYnV0ZSwgd2UgY2Fu IHF1aXRlIHNhZmVseQorICAgICBpZGVudGlmeSBob3QgZWRnZXMgYW5kIGZvciB0aG9zZSB3ZSBk aXNhYmxlIHNpemUgbGltaXRzLiAgRG9uJ3QgZG8gdGhhdAorICAgICB3aGVuIHByb2JhYmlsaXR5 IHRoYXQgY2FsbGVyIHdpbGwgY2FsbCB0aGUgY2FsbGVlIGlzIGxvdyBob3dldmVyLCBzaW5jZSBp dAogICAgICBtYXkgaHVydCBvcHRpbWl6YXRpb24gb2YgdGhlIGNhbGxlcidzIGhvdCBwYXRoLiAg Ki8KLSAgaWYgKGVkZ2UtPmNvdW50LmlwYSAoKS5pbml0aWFsaXplZF9wICgpICYmIGVkZ2UtPm1h eWJlX2hvdF9wICgpCisgIGlmICgoZWRnZS0+Y291bnQuaXBhICgpLmluaXRpYWxpemVkX3AgKCkg JiYgZWRnZS0+bWF5YmVfaG90X3AgKCkKICAgICAgICYmIChlZGdlLT5jb3VudC5pcGEgKCkgKiAy CiAJICA+IChlZGdlLT5jYWxsZXItPmlubGluZWRfdG8KIAkgICAgID8gZWRnZS0+Y2FsbGVyLT5p bmxpbmVkX3RvLT5jb3VudC5pcGEgKCkKIAkgICAgIDogZWRnZS0+Y2FsbGVyLT5jb3VudC5pcGEg KCkpKSkKKyAgICAgIHx8IChsb29rdXBfYXR0cmlidXRlICgiaG90IiwgREVDTF9BVFRSSUJVVEVT IChlZGdlLT5jYWxsZXItPmRlY2wpKQorCSAgIT0gTlVMTAorCSAmJiBsb29rdXBfYXR0cmlidXRl ICgiaG90IiwgREVDTF9BVFRSSUJVVEVTIChlZGdlLT5jYWxsZWUtPmRlY2wpKQorCSAgIT0gTlVM TCkpCiAgICAgaGludHMgfD0gSU5MSU5FX0hJTlRfa25vd25faG90OwogCiAgIGdjY19jaGVja2lu Z19hc3NlcnQgKHNpemUgPj0gMCk7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9p cGEvaW5saW5laGludC02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9pcGEvaW5saW5laGludC02 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFmM2JlNjQxYzZkCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvaXBhL2lubGluZWhpbnQtNi5j CkBAIC0wLDAgKzEsNDcgQEAKKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1jIC1mZHVtcC1pcGEtaW5s aW5lLWRldGFpbHMgLWZuby1lYXJseS1pbmxpbmluZyAtZm5vLWlwYS1jcCIgIH0gKi8KKy8qIHsg ZGctYWRkLW9wdGlvbnMgYmluZF9waWNfbG9jYWxseSB9ICovCisKKyNkZWZpbmUgc2l6ZV90IGxv bmcgbG9uZyBpbnQKKworc3RydWN0IEEKK3sKKyAgc2l6ZV90IGYxLCBmMiwgZjMsIGY0OworfTsK K3N0cnVjdCBDCit7CisgIHN0cnVjdCBBIGE7CisgIHNpemVfdCBiOworfTsKK3N0cnVjdCBDIHg7 CisKK19fYXR0cmlidXRlX18oKGhvdCkpIHN0cnVjdCBDIGNhbGxlZSAoc3RydWN0IEEgKmEsIHN0 cnVjdCBDICpjKQoreworICBjLT5hPSgqYSk7CisKKyAgaWYoKGMtPmIgKyA3KSAmIDE3KQorICAg eworICAgICAgYy0+YS5mMSA9IGMtPmEuZjIgKyBjLT5hLmYxOworICAgICAgYy0+YS5mMiA9IGMt PmEuZjMgLSBjLT5hLmYyOworICAgICAgYy0+YS5mMyA9IGMtPmEuZjIgKyBjLT5hLmYzOworICAg ICAgYy0+YS5mNCA9IGMtPmEuZjIgLSBjLT5hLmY0OworICAgICAgYy0+YiA9IGMtPmEuZjI7CisK KyAgICB9CisgIHJldHVybiAqYzsKK30KKworX19hdHRyaWJ1dGVfXygoaG90KSkgc3RydWN0IEMg Y2FsbGVyIChzaXplX3QgZCwgc2l6ZV90IGUsIHNpemVfdCBmLCBzaXplX3QgZywgc3RydWN0IEMg KmMpCit7CisgIHN0cnVjdCBBIGE7CisgIGEuZjEgPSAxICsgZDsKKyAgYS5mMiA9IGU7CisgIGEu ZjMgPSAxMiArIGY7CisgIGEuZjQgPSA2OCArIGc7CisgIGlmIChjLT5iID4gMCkKKyAgICByZXR1 cm4gY2FsbGVlICgmYSwgYyk7CisgIGVsc2UKKyAgICByZXR1cm4gKmM7Cit9CisKKy8qIHsgZGct ZmluYWwgeyBzY2FuLWlwYS1kdW1wICJrbm93bl9ob3QiICAiaW5saW5lIiAgfSB9ICovCisKLS0g CjIuMTcuMQoK --_002_SJ0PR11MB5600CA193D8B92A0EB8ADBBE9E4F9SJ0PR11MB5600namp_--