From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1721 invoked by alias); 28 Jun 2014 14:57:45 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 1711 invoked by uid 89); 28 Jun 2014 14:57:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.8 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-vc0-f171.google.com Received: from mail-vc0-f171.google.com (HELO mail-vc0-f171.google.com) (209.85.220.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Sat, 28 Jun 2014 14:57:40 +0000 Received: by mail-vc0-f171.google.com with SMTP id id10so6068622vcb.30 for ; Sat, 28 Jun 2014 07:57:38 -0700 (PDT) X-Received: by 10.52.185.72 with SMTP id fa8mr22413965vdc.12.1403967458376; Sat, 28 Jun 2014 07:57:38 -0700 (PDT) MIME-Version: 1.0 Received: by 10.52.137.111 with HTTP; Sat, 28 Jun 2014 07:57:18 -0700 (PDT) From: Andrew Sutton Date: Sat, 28 Jun 2014 14:57:00 -0000 Message-ID: Subject: [c++-concepts] constraint association To: gcc-patches , Jason Merrill , Braden Obrzut Content-Type: multipart/mixed; boundary=bcaec548a66da2223504fce6a55d X-SW-Source: 2014-06/txt/msg02296.txt.bz2 --bcaec548a66da2223504fce6a55d Content-Type: text/plain; charset=UTF-8 Content-length: 1928 After merging from trunk this morning, I discovered that DECL_SIZE_UNIT is now being used to store lists of specializations. I had been using that to store template constraints. Oops. This patch moves constraints outside the usual tree structures into an association maintained in a hash table. It also lays the framework for allowing constraints to be associated with any _*DECL node (templates, functions, variables, types, etc). Changelog below; committed as 212103. 2014-06-28 Andrew Sutton * gcc/cp/cp-tree.h (DECL_CONSTRAINTS): Remove this macro; use get_constraints instead. (set_constraints): new. * gcc/cp/cxx-pretty-print.c (pp_cxx_template_declaration): Use get_constraints. * gcc/cp/pt.c (get_specialization_constraints): Use get_constraints. (build_template_decl): Use get_constraints. (process_partial_specialization): Use get_constraints. (add_inherited_template_parms): Use get_constraints. (redeclare_class_template): Use get_constraints. (is_compatible_template_arg): Use get_constraints. (tsubst_friend_class): Use get_constraints. (tsubst_decl): Uset get_constraints. * gcc/cp/semantics.c (finish_template_template_parm): Use get_constraints. (fixup_template_type): Use get_constraints. * gcc/cp/constraint.cc (constraints): New global association of declarations to constraints. (get_constraints): Return the associated constraints from the hash table. (set_constraints): New. Associate constraints with a declaration. (check_template_constraints): Use get_constraints. (equivalently_constrained): Use get_constraints. (more_constrained): Use get_constraints. (diagnose_constraints): Use get_constraints. * gcc/testsuite/g++.dg/concepts/partial-spec.C: New. Andrew --bcaec548a66da2223504fce6a55d Content-Type: text/x-patch; charset=US-ASCII; name="constraint-assoc.patch" Content-Disposition: attachment; filename="constraint-assoc.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hwz1ny010 Content-length: 13355 SW5kZXg6IGdjYy9jcC9jeHgtcHJldHR5LXByaW50LmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL2NwL2N4eC1wcmV0dHktcHJpbnQuYwkocmV2 aXNpb24gMjEyMTAwKQorKysgZ2NjL2NwL2N4eC1wcmV0dHktcHJpbnQuYwko d29ya2luZyBjb3B5KQpAQCAtMjIyMCw3ICsyMjIwLDcgQEAgcHBfY3h4X3Rl bXBsYXRlX2RlY2xhcmF0aW9uIChjeHhfcHJldHR5XwogICAgICAgcHBfbmV3 bGluZV9hbmRfaW5kZW50IChwcCwgMyk7CiAgICAgfQogCi0gIGlmICh0cmVl IGMgPSBERUNMX0NPTlNUUkFJTlRTICh0KSkKKyAgaWYgKHRyZWUgYyA9IGdl dF9jb25zdHJhaW50cyAodCkpCiAgICAgewogICAgICAgcHBfY3h4X3dzX3N0 cmluZyAocHAsICJyZXF1aXJlcyIpOwogICAgICAgcHAtPmV4cHJlc3Npb24g KENJX1JFUVVJUkVNRU5UUyAoYykpOwpJbmRleDogZ2NjL2NwL3B0LmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NwL3B0LmMJKHJldmlzaW9u IDIxMjEwMSkKKysrIGdjYy9jcC9wdC5jCSh3b3JraW5nIGNvcHkpCkBAIC04 NDYsNyArODQ2LDcgQEAgZ2V0X3NwZWNpYWxpemF0aW9uX2NvbnN0cmFpbnRz ICh0cmVlIHR5cAogICAvLyB0aGF0IHR5cGUuIElmIGl0IGlzIGFuIGV4cGxp Y2l0IHNwZWNpYWxpemF0aW9uLCByZXR1cm4gbnVsbCBzaW5jZQogICAvLyBu b24tdGVtcGxhdGVzIGNhbm5vdCBiZSBjb25zdHJhaW5lZC4KICAgaWYgKHRy ZWUgZCA9IGdldF9zcGVjaWFsaXppbmdfdGVtcGxhdGVfZGVjbCAodHlwZSkp Ci0gICAgcmV0dXJuIERFQ0xfQ09OU1RSQUlOVFMgKGQpOworICAgIHJldHVy biBnZXRfY29uc3RyYWludHMgKGQpOwogICBlbHNlCiAgICAgcmV0dXJuIE5V TExfVFJFRTsKIH0KQEAgLTQxNDcsMTAgKzQxNDcsMTAgQEAgYnVpbGRfdGVt cGxhdGVfZGVjbCAodHJlZSBkZWNsLCB0cmVlIHBhcgogewogICB0cmVlIHRt cGwgPSBidWlsZF9sYW5nX2RlY2wgKFRFTVBMQVRFX0RFQ0wsIERFQ0xfTkFN RSAoZGVjbCksIE5VTExfVFJFRSk7CiAgIERFQ0xfVEVNUExBVEVfUEFSTVMg KHRtcGwpID0gcGFybXM7Ci0gIERFQ0xfQ09OU1RSQUlOVFMgKHRtcGwpID0g Y29uc3RyOwogICBERUNMX0NPTlRFWFQgKHRtcGwpID0gREVDTF9DT05URVhU IChkZWNsKTsKICAgREVDTF9TT1VSQ0VfTE9DQVRJT04gKHRtcGwpID0gREVD TF9TT1VSQ0VfTE9DQVRJT04gKGRlY2wpOwogICBERUNMX01FTUJFUl9URU1Q TEFURV9QICh0bXBsKSA9IG1lbWJlcl90ZW1wbGF0ZV9wOworICBzZXRfY29u c3RyYWludHMgKHRtcGwsIGNvbnN0cik7CiAKICAgcmV0dXJuIHRtcGw7CiB9 CkBAIC00MzE5LDcgKzQzMTksNyBAQCBwcm9jZXNzX3BhcnRpYWxfc3BlY2lh bGl6YXRpb24gKHRyZWUgZGVjCiAgICAgIGFyZ3VtZW50cyBidXQgZGlmZmVy ZW50IGNvbnN0cmFpbnRzLiAqLwogICB0cmVlIG1haW5fdHlwZSA9IFRSRUVf VFlQRSAobWFpbnRtcGwpOwogICB0cmVlIG1haW5fYXJncyA9IElOTkVSTU9T VF9URU1QTEFURV9BUkdTIChDTEFTU1RZUEVfVElfQVJHUyAobWFpbl90eXBl KSk7Ci0gIHRyZWUgbWFpbl9jb25zdHIgPSBERUNMX0NPTlNUUkFJTlRTICht YWludG1wbCk7CisgIHRyZWUgbWFpbl9jb25zdHIgPSBnZXRfY29uc3RyYWlu dHMgKG1haW50bXBsKTsKICAgaWYgKGNvbXBfdGVtcGxhdGVfYXJncyAoaW5u ZXJfYXJncywgbWFpbl9hcmdzKQogICAgICAgJiYgZXF1aXZhbGVudF9jb25z dHJhaW50cyAoY3VycmVudF90ZW1wbGF0ZV9yZXFzLCBtYWluX2NvbnN0cikp CiAgICAgZXJyb3IgKCJwYXJ0aWFsIHNwZWNpYWxpemF0aW9uICVxVCBkb2Vz IG5vdCBzcGVjaWFsaXplIGFueSAiCkBAIC01MjI5LDEzICs1MjI5LDEzIEBA IGFkZF9pbmhlcml0ZWRfdGVtcGxhdGVfcGFybXMgKHRyZWUgZm4sIHQKICAg Ly8gSWYgdGhlIGluaGVyaXRlZCBjb25zdHJ1Y3RvciB3YXMgY29uc3RyYWlu ZWQsIHRoZW4gYWxzbwogICAvLyBwcm9wYWdhdGUgdGhlIGNvbnN0cmFpbnRz IHRvIHRoZSBuZXcgZGVjbGFyYXRpb24gYnkKICAgLy8gcmV3cml0aW5nIHRo ZW0gaW4gdGVybXMgb2YgdGhlIGxvY2FsIHRlbXBsYXRlIHBhcmFtZXRlcnMu Ci0gIHRyZWUgY29ucyA9IERFQ0xfQ09OU1RSQUlOVFMgKGluaGVyaXRlZCk7 CisgIHRyZWUgY29ucyA9IGdldF9jb25zdHJhaW50cyAoaW5oZXJpdGVkKTsK ICAgaWYgKGNvbnMpCiAgICAgewogICAgICAgKytwcm9jZXNzaW5nX3RlbXBs YXRlX2RlY2w7CiAgICAgICB0cmVlIHJlcXMgPSBpbnN0YW50aWF0ZV9yZXF1 aXJlbWVudHMgKENJX1JFUVVJUkVNRU5UUyAoY29ucyksIGFyZ3MpOwogICAg ICAgLS1wcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2w7Ci0gICAgICBERUNMX0NP TlNUUkFJTlRTICh0bXBsKSA9IG1ha2VfY29uc3RyYWludHMgKHJlcXMpOwor ICAgICAgc2V0X2NvbnN0cmFpbnRzICh0bXBsLCBtYWtlX2NvbnN0cmFpbnRz IChyZXFzKSk7CiAgICAgfQogCiAgIERFQ0xfVEVNUExBVEVfSU5GTyAoZm4p ID0gYnVpbGRfdGVtcGxhdGVfaW5mbyAodG1wbCwgYXJncyk7CkBAIC01MzU0 LDcgKzUzNTQsNyBAQCByZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUgKHRyZWUg dHlwZSwgdHJlCiAgICAgfQogCiAgIC8vIENhbm5vdCByZWRlY2xhcmUgYSBj bGFzcyB0ZW1wbGF0ZSB3aXRoIGEgZGlmZmVyZW50IHNldCBvZiBjb25zdHJh aW50cy4gCi0gIGlmICghZXF1aXZhbGVudF9jb25zdHJhaW50cyAoREVDTF9D T05TVFJBSU5UUyAodG1wbCksIGNvbnMpKQorICBpZiAoIWVxdWl2YWxlbnRf Y29uc3RyYWludHMgKGdldF9jb25zdHJhaW50cyAodG1wbCksIGNvbnMpKQog ICAgIHsKICAgICAgIGVycm9yX2F0IChpbnB1dF9sb2NhdGlvbiwgInJlZGVj bGFyYXRpb24gJXEjRCB3aXRoIGRpZmZlcmVudCAiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJjb25zdHJhaW50cyIsIHRtcGwpOwpAQCAt NjU4Niw4ICs2NTg2LDggQEAgaXNfY29tcGF0aWJsZV90ZW1wbGF0ZV9hcmcg KHRyZWUgcGFybSwgdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK LSAgdHJlZSBwYXJtY29ucyA9IERFQ0xfQ09OU1RSQUlOVFMgKHBhcm0pOwot ICB0cmVlIGFyZ2NvbnMgPSBERUNMX0NPTlNUUkFJTlRTIChhcmcpOworICB0 cmVlIHBhcm1jb25zID0gZ2V0X2NvbnN0cmFpbnRzIChwYXJtKTsKKyAgdHJl ZSBhcmdjb25zID0gZ2V0X2NvbnN0cmFpbnRzIChhcmcpOwogCiAgIC8vIElm IHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgaXMgY29uc3RyYWluZWQsIHdlIG5l ZWQgdG8gcmV3cml0ZSBpdHMKICAgLy8gY29uc3RyYWludHMgaW4gdGVybXMg b2YgdGhlIEFSRydzIHRlbXBsYXRlIHBhcmFtZXRlcnMuIFRoaXMgZW5zdXJl cwpAQCAtODk5Nyw3ICs4OTk3LDcgQEAgdHN1YnN0X2ZyaWVuZF9jbGFzcyAo dHJlZSBmcmllbmRfdG1wbCwgdAogCiAgICAgICAgICAgc2F2ZWRfaW5wdXRf bG9jYXRpb24gPSBpbnB1dF9sb2NhdGlvbjsKICAgICAgICAgICBpbnB1dF9s b2NhdGlvbiA9IERFQ0xfU09VUkNFX0xPQ0FUSU9OIChmcmllbmRfdG1wbCk7 Ci0gICAgICAgICAgdHJlZSBjb25zID0gREVDTF9DT05TVFJBSU5UUyAodG1w bCk7CisgICAgICAgICAgdHJlZSBjb25zID0gZ2V0X2NvbnN0cmFpbnRzICh0 bXBsKTsKICAgICAgICAgICByZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUgKFRS RUVfVFlQRSAodG1wbCksIHBhcm1zLCBjb25zKTsKICAgICAgICAgICBpbnB1 dF9sb2NhdGlvbiA9IHNhdmVkX2lucHV0X2xvY2F0aW9uOwogICAgICAgICAg IApAQCAtMTA4MDAsMTAgKzEwODAwLDEwIEBAIHRzdWJzdF9kZWNsICh0cmVl IHQsIHRyZWUgYXJncywgdHN1YnN0X2YKICAgICAgICAgLy8gSWYgY29uc3Ry YWluZWQsIGFsc28gaW5zdGFudGlhdGUgcmVxdWlyZW1lbnRzLgogICAgICAg ICAvLyBUT0RPOiBJbnN0YW50aWF0ZSBzaG9ydGhhbmQgY29uc3RyYWludHMg b24gcGFyYW1ldGVycyBhbHNvLgogICAgICAgICAvLyBTZWUgdHN1YnN0X3Rl bXBsYXRlX3Bhcm1zIGZvciB0aGF0LiAKLSAgICAgICAgaWYgKHRyZWUgY2kg PSBERUNMX0NPTlNUUkFJTlRTICh0KSkKKyAgICAgICAgaWYgKHRyZWUgY2kg PSBnZXRfY29uc3RyYWludHMgKHQpKQogICAgICAgICAgIHsKICAgICAgICAg ICAgIHRyZWUgcmVxcyA9IGluc3RhbnRpYXRlX3JlcXVpcmVtZW50cyAoQ0lf U1BFTExJTkcgKGNpKSwgYXJncyk7Ci0gICAgICAgICAgICBERUNMX0NPTlNU UkFJTlRTIChyKSA9IGZpbmlzaF90ZW1wbGF0ZV9yZXF1aXJlbWVudHMgKHJl cXMpOworICAgICAgICAgICAgc2V0X2NvbnN0cmFpbnRzIChyLCBtYWtlX2Nv bnN0cmFpbnRzIChyZXFzKSk7CiAgICAgICAgICAgfQogCiAJaWYgKFBSSU1B UllfVEVNUExBVEVfUCAodCkpCkluZGV4OiBnY2MvY3Avc2VtYW50aWNzLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NwL3NlbWFudGljcy5j CShyZXZpc2lvbiAyMTIxMDEpCisrKyBnY2MvY3Avc2VtYW50aWNzLmMJKHdv cmtpbmcgY29weSkKQEAgLTI2OTMsOSArMjY5Myw5IEBAIGZpbmlzaF90ZW1w bGF0ZV90ZW1wbGF0ZV9wYXJtICh0cmVlIGFnZ3IKIAogICB0cmVlIHRtcGwg PSBidWlsZF9sYW5nX2RlY2wgKFRFTVBMQVRFX0RFQ0wsIGlkZW50aWZpZXIs IE5VTExfVFJFRSk7CiAgIERFQ0xfVEVNUExBVEVfUEFSTVMgKHRtcGwpID0g Y3VycmVudF90ZW1wbGF0ZV9wYXJtczsKLSAgREVDTF9DT05TVFJBSU5UUyAo dG1wbCkgPSBjdXJyZW50X3RlbXBsYXRlX3JlcXM7CiAgIERFQ0xfVEVNUExB VEVfUkVTVUxUICh0bXBsKSA9IGRlY2w7CiAgIERFQ0xfQVJUSUZJQ0lBTCAo ZGVjbCkgPSAxOworICBzZXRfY29uc3RyYWludHMgKHRtcGwsIGN1cnJlbnRf dGVtcGxhdGVfcmVxcyk7CiAKICAgZW5kX3RlbXBsYXRlX2RlY2wgKCk7CiAK QEAgLTMwMTIsNyArMzAxMiw3IEBAIGZpeHVwX3RlbXBsYXRlX3R5cGUgKHRy ZWUgdHlwZSkKICAgdHJlZSBzcGVjcyA9IERFQ0xfVEVNUExBVEVfU1BFQ0lB TElaQVRJT05TICh0bXBsKTsKICAgd2hpbGUgKHNwZWNzKQogICAgIHsKLSAg ICAgIHRyZWUgc3BlY19jb25zdHIgPSBERUNMX0NPTlNUUkFJTlRTIChUUkVF X1ZBTFVFIChzcGVjcykpOworICAgICAgdHJlZSBzcGVjX2NvbnN0ciA9IGdl dF9jb25zdHJhaW50cyAoVFJFRV9WQUxVRSAoc3BlY3MpKTsKIAogICAgICAg Ly8gSWYgdGhlIHR5cGUgYW5kIGNvbnN0cmFpbnRzIG1hdGNoIGEgc3BlY2lh bGl6YXRpb24sIHRoZW4gd2UKICAgICAgIC8vIGFyZSBlbnRlcmluZyB0aGF0 IHR5cGUuIE5vdGUgdGhhdCB0aGUgdHlwZSBjb21wYXJpc29uIGlzCkluZGV4 OiBnY2MvY3AvY29uc3RyYWludC5jYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnY2MvY3AvY29uc3RyYWludC5jYwkocmV2aXNpb24gMjEyMTAwKQor KysgZ2NjL2NwL2NvbnN0cmFpbnQuY2MJKHdvcmtpbmcgY29weSkKQEAgLTM4 LDcgKzM4LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZ SU5HMy4KICNpbmNsdWRlICJ2ZWMuaCIKICNpbmNsdWRlICJ0YXJnZXQuaCIK ICNpbmNsdWRlICJiaXRtYXAuaCIKLQorI2luY2x1ZGUgImhhc2gtbWFwLmgi CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAvLyBS ZXF1aXJlbWVudCBDb25zdHJ1Y3Rpb24KQEAgLTU2NCwyMiArNTY0LDM5IEBA IG1ha2VfY29uc3RyYWludHMgKHRyZWUgcmVxcykKICAgcmV0dXJuICh0cmVl KWNpbmZvOwogfQogCit0eXBlZGVmIGhhc2hfbWFwPHRyZWUsIHRyZWU+IGNv bnN0cmFpbnRfbWFwOworCisvLyBDb25zdHJhaW50cyAoY29uc3RyYWludF9p bmZvIG5vZGVzKSBhcmUgYXNzb2NpYXRkIHdpdGggZGVjbHJhdGlvbnMgCisv LyB2aWEgdGhpcyBtYXBwaW5nLiBOb3RlIHRoYXQgd2UgZG9uJ3Qgc3RvcmUg Y29uc3RyYWludHMgZGlyZWN0bHkgaW4gdHJlZXMgCisvLyBzbyB3ZSBkb24n dCB1c2UgdGhlIGV4dHJhIG1lbW9yeSB3aGVuIGNvbmNlcHRzIGFyZSBub3Qg ZW5hYmxlZC4gVGhpcyBhbHNvIAorLy8gcHJvdmlkZXMgdGhlIGFiaWxpdHkg dG8gYXNzb2NpYXRlIGNvbnN0cmFpbnQgaW5mb3JtYXRpb24gd2l0aCBhIGJy b2FkZXIgCisvLyBzZXQgb2YgZGVjbGFyYXRpb25zIChpLmUuLCB0ZW1wbGF0 ZXMsIGZ1bmN0aW9ucywgdmFyaWFibGVzLCB0ZW1wbGF0ZQorLy8gcGFyYW1l dGVycywgZXRjKS4KK3N0YXRpYyBjb25zdHJhaW50X21hcCBjb25zdHJhaW50 czsKKwogLy8gUmV0dXJucyB0aGUgdGVtcGxhdGUgY29uc3RyYWludHMgb2Yg ZGVjbGFyYXRpb24gVC4gSWYgVCBpcyBub3QgYQogLy8gdGVtcGxhdGUsIHRo aXMgcmV0dXJuIE5VTExfVFJFRS4gTm90ZSB0aGF0IFQgbXVzdCBiZSBub24t bnVsbC4KIHRyZWUKIGdldF9jb25zdHJhaW50cyAodHJlZSB0KQogewogICBn Y2NfYXNzZXJ0IChERUNMX1AgKHQpKTsKLSAgaWYgKFRSRUVfQ09ERSAodCkg IT0gVEVNUExBVEVfREVDTCkKLSAgICB7Ci0gICAgICBpZiAoIURFQ0xfVEVN UExBVEVfSU5GTyAodCkpCi0gICAgICAgIHJldHVybiBOVUxMX1RSRUU7Ci0g ICAgICBlbHNlCi0gICAgICAgIHJldHVybiBERUNMX0NPTlNUUkFJTlRTIChE RUNMX1RJX1RFTVBMQVRFICh0KSk7Ci0gICAgfQotICByZXR1cm4gREVDTF9D T05TVFJBSU5UUyAodCk7CisgIGlmICh0cmVlKiByID0gY29uc3RyYWludHMu Z2V0KHQpKQorICAgIHJldHVybiAqcjsKKyAgZWxzZQorICAgIHJldHVybiBO VUxMX1RSRUU7CiB9CiAKKy8vIEFzc29jaWF0ZSB0aGUgZ2l2ZW4gY29uc3Ry YWludCBpbmZvcm1hdGlvbiB3aXRoIHRoZSBkZWNsYXJhdGlvbi4KKy8vIE9u Y2Ugc2V0LCBjb25zdHJhaW50cyBjYW5ub3QgYmUgb3ZlcndyaXR0ZW4uCit2 b2lkCitzZXRfY29uc3RyYWludHMgKHRyZWUgdCwgdHJlZSBjaSkKK3sKKyAg Z2NjX2Fzc2VydCAoREVDTF9QICh0KSk7CisgIGdjY19hc3NlcnQoIWdldF9j b25zdHJhaW50cyh0KSk7CisgIGNvbnN0cmFpbnRzLnB1dCh0LCBjaSk7Cit9 CisKKwogLy8gUmV0dXJucyBhIGNvbmp1bmN0aW9uIG9mIHNob3J0aGFuZCBy ZXF1aXJlbWVudHMgZm9yIHRoZSB0ZW1wbGF0ZQogLy8gcGFyYW1ldGVyIGxp c3QgUEFSTVMuIE5vdGUgdGhhdCB0aGUgcmVxdWlyZW1lbnRzIGFyZSBzdG9y ZWQgaW4KIC8vIHRoZSBUWVBFIG9mIGVhY2ggdHJlZSBub2RlLgpAQCAtMTE4 Nyw3ICsxMjA0LDcgQEAgY2hlY2tfY29uc3RyYWludHMgKHRyZWUgY2luZm8s IHRyZWUgYXJncwogYm9vbAogY2hlY2tfdGVtcGxhdGVfY29uc3RyYWludHMg KHRyZWUgdCwgdHJlZSBhcmdzKQogewotICByZXR1cm4gY2hlY2tfY29uc3Ry YWludHMgKERFQ0xfQ09OU1RSQUlOVFMgKHQpLCBhcmdzKTsKKyAgcmV0dXJu IGNoZWNrX2NvbnN0cmFpbnRzIChnZXRfY29uc3RyYWludHMgKHQpLCBhcmdz KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8K QEAgLTEyMTIsNyArMTIyOSw3IEBAIGJvb2wKIGVxdWl2YWxlbnRseV9jb25z dHJhaW5lZCAodHJlZSBhLCB0cmVlIGIpCiB7CiAgIGdjY19hc3NlcnQgKFRS RUVfQ09ERSAoYSkgPT0gVFJFRV9DT0RFIChiKSk7Ci0gIHJldHVybiBlcXVp dmFsZW50X2NvbnN0cmFpbnRzIChERUNMX0NPTlNUUkFJTlRTIChhKSwgREVD TF9DT05TVFJBSU5UUyAoYikpOworICByZXR1cm4gZXF1aXZhbGVudF9jb25z dHJhaW50cyAoZ2V0X2NvbnN0cmFpbnRzIChhKSwgZ2V0X2NvbnN0cmFpbnRz IChiKSk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSBBIGNvbnRh aW5zIG1vcmUgYXRvbWljIHByb3BlcnRpZXMgdGhhbiBCLgpAQCAtMTIyOCw3 ICsxMjQ1LDcgQEAgYm9vbAogbW9yZV9jb25zdHJhaW5lZCAodHJlZSBhLCB0 cmVlIGIpCiB7CiAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAoYSkgPT0gVFJF RV9DT0RFIChiKSk7Ci0gIHJldHVybiBtb3JlX2NvbnN0cmFpbnRzIChERUNM X0NPTlNUUkFJTlRTIChhKSwgREVDTF9DT05TVFJBSU5UUyAoYikpOworICBy ZXR1cm4gbW9yZV9jb25zdHJhaW50cyAoZ2V0X2NvbnN0cmFpbnRzIChhKSwg Z2V0X2NvbnN0cmFpbnRzIChiKSk7CiB9CiAKIApAQCAtMTUzNSw3ICsxNTUy LDcgQEAgZGlhZ25vc2VfY29uc3RyYWludHMgKGxvY2F0aW9uX3QgbG9jLCB0 cgogCiAgIC8vIERpYWdub3NlIHRoZSBjb25zdHJhaW50cyBieSByZWN1cnNp dmVseSBkZWNvbXBvc2luZyBhbmQKICAgLy8gZXZhbHVhdGluZyB0aGUgdGVt cGxhdGUgcmVxdWlyZW1lbnRzLgotICB0cmVlIHJlcXMgPSBDSV9TUEVMTElO RyAoREVDTF9DT05TVFJBSU5UUyAodG1wbCkpOworICB0cmVlIHJlcXMgPSBD SV9TUEVMTElORyAoZ2V0X2NvbnN0cmFpbnRzICh0bXBsKSk7CiAgIGRpYWdu b3NlX3JlcXVpcmVtZW50cyAobG9jLCByZXFzLCBhcmdzKTsKIH0KIApJbmRl eDogZ2NjL2NwL2NwLXRyZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBnY2MvY3AvY3AtdHJlZS5oCShyZXZpc2lvbiAyMTIxMDEpCisrKyBnY2Mv Y3AvY3AtdHJlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsMTYgKzgyOCw2 IEBAIGNoZWNrX2NvbnN0cmFpbnRfaW5mbyAodHJlZSB0KQogI2RlZmluZSBD SV9BU1NVTVBUSU9OUyhOT0RFKSBcCiAgIGNoZWNrX25vbm51bGwgKGNoZWNr X2NvbnN0cmFpbnRfaW5mbyAoTk9ERSkpLT5hc3N1bXB0aW9ucwogCi0vLyBB Y2Nlc3MgY29uc3RyYWludHMgZm9yIHRoZSBkZWNsYXJhdGlvbiwgTk9ERS4K LS8vCi0vLyBGb3IgVEVNUExBVEVfREVDTCBub2RlcywgdGhlIGNvbnN0cmFp bnRzIGFyZSBzdG9yZWQgaW4gdGhlCi0vLyBERUNMX1NJWkVfVU5JVCBub2Rl LgotLy8KLS8vIFRPRE86IFRoaXMgd2lsbCBuZWVkIHRvIGJlIHVwZGF0ZWQg Zm9yIHNob3J0aGFuZCBjb25zdHJhaW50cyBhbmQKLS8vIGNvbnN0cmFpbmVk IGF1dG8gZGVjbGFyYXRpb25zLgotI2RlZmluZSBERUNMX0NPTlNUUkFJTlRT KE5PREUpIFwKLSAgKERFQ0xfU0laRV9VTklUIChURU1QTEFURV9ERUNMX0NI RUNLIChOT0RFKSkpCi0KIC8vIEFjY2VzcyB0aGUgbG9naWNhbCBjb25zdHJh aW50cyBvbiB0aGUgdGVtcGxhdGUgcGFyYW1ldGVycyBpbnRyb2R1Y2VkIAog Ly8gYXQgYSBnaXZlbiB0ZW1wbGF0ZSBwYXJhbWV0ZXIgbGlzdCBsZXZlbCBp bmRpY2F0ZWQgYnkgTk9ERS4KICNkZWZpbmUgVEVNUExBVEVfUEFSTVNfQ09O U1RSQUlOVFMoTk9ERSkgXApAQCAtNjM1OCw2ICs2MzQ4LDcgQEAgZXh0ZXJu IHRyZWUgY29uam9pbl9yZXF1aXJlbWVudHMKIGV4dGVybiB0cmVlIHJlZHVj ZV9yZXF1aXJlbWVudHMgICAgICAgICAgICAgICAgICh0cmVlKTsKIGV4dGVy biB0cmVlIG1ha2VfY29uc3RyYWludHMgICAgICAgICAgICAgICAgICAgICh0 cmVlKTsKIGV4dGVybiB0cmVlIGdldF9jb25zdHJhaW50cyAgICAgICAgICAg ICAgICAgICAgICh0cmVlKTsKK2V4dGVybiB2b2lkIHNldF9jb25zdHJhaW50 cyAgICAgICAgICAgICAgICAgICAgICh0cmVlLCB0cmVlKTsKIGV4dGVybiB0 cmVlIGdldF9zaG9ydGhhbmRfcmVxdWlyZW1lbnRzICAgICAgICAgICh0cmVl KTsKIAogZXh0ZXJuIHRyZWUgYnVpbGRfY29uY2VwdF9jaGVjayAgICAgICAg ICAgICAgICAgKHRyZWUsIHRyZWUsIHRyZWUgPSBOVUxMX1RSRUUpOwo= --bcaec548a66da2223504fce6a55d Content-Type: text/x-patch; charset=US-ASCII; name="constraint-assoc-test.patch" Content-Disposition: attachment; filename="constraint-assoc-test.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hwz1ny0s1 Content-length: 704 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NvbmNlcHRzL3BhcnRpYWwt c3BlYy5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3Vp dGUvZysrLmRnL2NvbmNlcHRzL3BhcnRpYWwtc3BlYy5DCShyZXZpc2lvbiAw KQorKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY29uY2VwdHMvcGFydGlhbC1z cGVjLkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKy8vIHsgZGct b3B0aW9ucyAiLXN0ZD1jKysxeiIgfQorCisvLyBDaGVjayB0aGF0IGNvbnN0 cmFpbnRzIGRvbid0IGJyZWFrIHVuY29uc3RyYWluZWQgcGFydGlhbAorLy8g c3BlY2lhbGl6YXRpb25zLiAKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg c3RydWN0IFMgeyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICBzdHJ1 Y3QgUzxUKj4geyB9OworCit0ZW1wbGF0ZTw+CisgIHN0cnVjdCBTPGludD4g eyB9OworCitpbnQgbWFpbigpIHsgfQo= --bcaec548a66da2223504fce6a55d--