From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb1-xb2f.google.com (mail-yb1-xb2f.google.com [IPv6:2607:f8b0:4864:20::b2f]) by sourceware.org (Postfix) with ESMTPS id 669143858CDB for ; Fri, 19 Jan 2024 04:49:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 669143858CDB Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=golang.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=golang.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 669143858CDB Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::b2f ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705639768; cv=none; b=iOhIXmsoeUu3HkdUSTgoks4SyQSotZfDXWZNLSGROwHtHJZ0nb6dMr3oVpNves6+OSTxptZTZU+sFUzsuy4GVvVRAED5cdG/lIkH6/l8KCs7wOEWlT2O62FawJNE8GlomiS1pHhvjl8gpwnbhPXjY5xZsKbisanS37hkY+Qp9RQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705639768; c=relaxed/simple; bh=lBIAGKgoslpx1xi5TUiwVKwyYsrdrA9dRn+HhjpMQfw=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=mHpt8oa72MLboydeEUpMKMwNShO9IMkGy5x9aZlLq2i7+XeKZYf92GyvTIuPFqeeYyHERKaVGFH7BpwzXMeXC8DmZ62/s8PJgRQ4uA6fAzkh4A323pcQ1bi8P3duZ6TEMDupXCzrgMvna1zUCV8TL7GIjJnn/Y86JkFjKJtedwc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-yb1-xb2f.google.com with SMTP id 3f1490d57ef6-dc202317415so351479276.0 for ; Thu, 18 Jan 2024 20:49:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=golang-org.20230601.gappssmtp.com; s=20230601; t=1705639765; x=1706244565; darn=gcc.gnu.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=UbBr3b/E1xF5iINK32/sNlWnCMF4mESPVhxCnfA5LL4=; b=zH/0JsYDrA3oklxmc0Z5RgMGBhrWXTWH8P54hav8bmpLG9emHVfUQbi4iQW/+Wefvg j102cAQVKPPx1Fsjud32P91SyHAO7E44uTN82+0bKE1+zfSuCMCtu1um7ztHlOCoiKsv LV9+Rg8qXRKXoy1QFrJB4yW7t3HnsOxpV/2x5HUZsYLAjT4Np3hI4ib+JaTRohnNtgM/ g3odXVSkv0Qn753NDw64Qd5SKbNCQWv6Hxb5tMFSIkB1d0nNWR7BBk3TgpvXAzMPQr4v /pw2HMZ4N31Bkwe02JjVGd+D+qmFLiADDcCkUISSNJuX1v0JyaW+pbZFZeoONDyo4BZq qi9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705639765; x=1706244565; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UbBr3b/E1xF5iINK32/sNlWnCMF4mESPVhxCnfA5LL4=; b=kuYi8Q0z4DbBBpsUNXEAOhM29a9pVdAN6V86DiSZLmlT9c+IhpC9hfXZeYD9WKSTfK 6Y9XP30dK4j9gsjB7x0n+FCwEOtrlfV1gqMBgvbO1O1ttDL2g32tuvIh+v/pA/Ahey+w MT7jsQIBlcxG/+cPfTVdmJug4STUhM0KPx+6AQz4mqRQG3mKH65+7y+TlzQEHJLWYzQ/ lKJO6FTnc5sjTR0m9sDIvO03i8N9W7q9S0Lg96Nnakb6uQK3KUTQmmFrUeuUPU3C+ZlQ gnEjGsviQeZ4zUKYp4ghJI0Up2WkMFKrgEb7sT73MGWxeP/BD7OA4OQWVdFmP/JG1kIl 9htQ== X-Gm-Message-State: AOJu0Yxf7UCQ932QukPr/2fd7SFU0Nt6P0aNxFqEdpItCck0cvTXR7s0 wGSAra6rndtrN1pqjcgw85U+pY499p1oe1ylmHpYu9EIGCX5iajqgSytLdP38aV0zEPllKLB3Gr zWE59QnIPeTrShsnHkicT6VK0YS0gzQCbUzVj3rMWU7re6e1Ts7Q= X-Google-Smtp-Source: AGHT+IH97YAjjkpLN68VlO9qsv/RKWxPOYskuV6vyB8JIxCF9rZPwtAitpcYFvF8WX2VuK9wC1iDHzifCbRzLNFZWwg= X-Received: by 2002:a25:5f4f:0:b0:dc2:2a7a:721f with SMTP id h15-20020a255f4f000000b00dc22a7a721fmr1461553ybm.76.1705639765634; Thu, 18 Jan 2024 20:49:25 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Ian Lance Taylor Date: Thu, 18 Jan 2024 20:49:14 -0800 Message-ID: Subject: Re: Go patch committed: Move lowering pass after check types pass To: gofrontend-dev , gcc-patches Content-Type: multipart/mixed; boundary="00000000000058cb82060f45349b" X-Spam-Status: No, score=-9.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000058cb82060f45349b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Dec 18, 2023 at 5:32=E2=80=AFPM Ian Lance Taylor = wrote: > > This Go frontend patch moves the lowering pass after the type > determination and the type checking passes. This lets us simplify > some of the code that determines the type of an expression, which > previously had to work correctly both before and after type > determination. > > I'm doing this to help with future generic support. For example, with > generics, we can see code like > > func ident[T any](v T) T { return v } > > func F() int32 { > s :=3D int32(1) > return ident(s) > } > > Before this change, we would type check return statements in the > lowering pass (see Return_statement::do_lower). With a generic > example like the above, that means we have to determine the type of s, > and use that to infer the type arguments passed to ident, and use that > to determine the result type of ident. That is too much to do at > lowering time. Of course we can change the way that return statements > work, but similar issues arise with index expressions, the types of > closures for function literals, and probably other cases as well. > > Rather than try to deal with all those cases, we move the lowering > pass after type checking. This requires a bunch of changes, notably > for determining constant types. We have to add type checking for > various constructs that formerly disappeared in the lowering pass. So > it's a lot of shuffling. Sorry for the size of the patch. > > Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed > to mainline. Sorry, I forgot to commit the changes to some of the test files. I've committed this patch to fix them. This fixes PR 113447. Ian --00000000000058cb82060f45349b Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrk5upva0 M2Q3ODIwYzU4Zjk0NjZhODA5MTZkZmE1MGRjZGZkZTQ1N2I0YzU5NwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nby50ZXN0L3Rlc3QvZml4ZWRidWdzL2lzc3VlMjAxODUuZ28gYi9nY2MvdGVz dHN1aXRlL2dvLnRlc3QvdGVzdC9maXhlZGJ1Z3MvaXNzdWUyMDE4NS5nbwppbmRleCA5MDY1ODY4 ZDdmMi4uMjRkNzRmMDkxMjYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ28udGVzdC90ZXN0 L2ZpeGVkYnVncy9pc3N1ZTIwMTg1LmdvCisrKyBiL2djYy90ZXN0c3VpdGUvZ28udGVzdC90ZXN0 L2ZpeGVkYnVncy9pc3N1ZTIwMTg1LmdvCkBAIC0xMCw3ICsxMCw3IEBACiBwYWNrYWdlIHAKIAog ZnVuYyBGKCkgewotCXN3aXRjaCB0IDo9IG5pbC4odHlwZSkgeyAvLyBFUlJPUiAiY2Fubm90IHR5 cGUgc3dpdGNoIG9uIG5vbi1pbnRlcmZhY2UgdmFsdWUiCisJc3dpdGNoIHQgOj0gbmlsLih0eXBl KSB7IC8vIEVSUk9SICJjYW5ub3QgdHlwZSBzd2l0Y2ggb24gbm9uLWludGVyZmFjZSB2YWx1ZXxk ZWZpbmVkIHRvIG5pbCB0eXBlIgogCWRlZmF1bHQ6CiAJCV8gPSB0CiAJfQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nby50ZXN0L3Rlc3QvZml4ZWRidWdzL2lzc3VlMzMzODYuZ28gYi9nY2Mv dGVzdHN1aXRlL2dvLnRlc3QvdGVzdC9maXhlZGJ1Z3MvaXNzdWUzMzM4Ni5nbwppbmRleCA3YjJm NTY1Mjg1ZS4uYzUwNzM5MTBhNGMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ28udGVzdC90 ZXN0L2ZpeGVkYnVncy9pc3N1ZTMzMzg2LmdvCisrKyBiL2djYy90ZXN0c3VpdGUvZ28udGVzdC90 ZXN0L2ZpeGVkYnVncy9pc3N1ZTMzMzg2LmdvCkBAIC0xOCw3ICsxOCw3IEBAIGZ1bmMgXygpIHsK IAogZnVuYyBfKCkgewogCWRlZmVyIGZ1bmMoKSB7IC8vIG5vIGVycm9yIGhlcmUgYWJvdXQgZGVm ZXJyZWQgZnVuY3Rpb24KLQkJMSArICAgIC8vIEdDQ0dPX0VSUk9SICJ2YWx1ZSBjb21wdXRlZCBp cyBub3QgdXNlZCIKKwkJMSArCiAJfSgpICAgICAgICAgICAgLy8gRVJST1IgImV4cGVjdGluZyBl eHByZXNzaW9ufGV4cGVjdGVkIG9wZXJhbmQiCiB9CiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ28udGVzdC90ZXN0L2ZpeGVkYnVncy9pc3N1ZTQwODVhLmdvIGIvZ2NjL3Rlc3RzdWl0ZS9n by50ZXN0L3Rlc3QvZml4ZWRidWdzL2lzc3VlNDA4NWEuZ28KaW5kZXggMjAwMjkwYTA4MWQuLmY0 NTdmY2YyYjEyIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2dvLnRlc3QvdGVzdC9maXhlZGJ1 Z3MvaXNzdWU0MDg1YS5nbworKysgYi9nY2MvdGVzdHN1aXRlL2dvLnRlc3QvdGVzdC9maXhlZGJ1 Z3MvaXNzdWU0MDg1YS5nbwpAQCAtMTAsOSArMTAsOSBAQCB0eXBlIFQgW11pbnQKIAogZnVuYyBt YWluKCkgewogCV8gPSBtYWtlKFQsIC0xKSAgICAvLyBFUlJPUiAibmVnYXRpdmUiCi0JXyA9IG1h a2UoVCwgMC41KSAgIC8vIEVSUk9SICJjb25zdGFudCAwLjUgdHJ1bmNhdGVkIHRvIGludGVnZXJ8 bm9uLWludGVnZXIgbGVuIGFyZ3VtZW50IgorCV8gPSBtYWtlKFQsIDAuNSkgICAvLyBFUlJPUiAi dHJ1bmNhdGVkIHRvIGludGVnZXJ8bm9uLWludGVnZXIgbGVuIGFyZ3VtZW50IgogCV8gPSBtYWtl KFQsIDEuMCkgICAvLyBvawotCV8gPSBtYWtlKFQsIDE8PDYzKSAvLyBFUlJPUiAibGVuIGFyZ3Vt ZW50IHRvbyBsYXJnZSIKKwlfID0gbWFrZShULCAxPDw2MykgLy8gRVJST1IgImludGVnZXIgY29u c3RhbnQgb3ZlcmZsb3d8bGVuIGFyZ3VtZW50IHRvbyBsYXJnZSIKIAlfID0gbWFrZShULCAwLCAt MSkgLy8gRVJST1IgIm5lZ2F0aXZlIGNhcCIKIAlfID0gbWFrZShULCAxMCwgMCkgLy8gRVJST1Ig ImxlbiBsYXJnZXIgdGhhbiBjYXAiCiB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dvLnRl c3QvdGVzdC9zaGlmdDEuZ28gYi9nY2MvdGVzdHN1aXRlL2dvLnRlc3QvdGVzdC9zaGlmdDEuZ28K aW5kZXggZDZhNmMzODgzOWYuLjNiMWFhOWU2OTAwIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRl L2dvLnRlc3QvdGVzdC9zaGlmdDEuZ28KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nby50ZXN0L3Rlc3Qv c2hpZnQxLmdvCkBAIC0xODksMTIgKzE4OSwxMiBAQCBmdW5jIF8oKSB7CiAJdmFyIG0xIG1hcFtp bnRdc3RyaW5nCiAJZGVsZXRlKG0xLCAxPDxzKQogCWRlbGV0ZShtMSwgMS48PHMpCi0JZGVsZXRl KG0xLCAxLjE8PHMpIC8vIEVSUk9SICJ0cnVuY2F0ZWR8c2hpZnQgb2YgdHlwZSBmbG9hdDY0Igor CWRlbGV0ZShtMSwgMS4xPDxzKSAvLyBFUlJPUiAidHJ1bmNhdGVkfHNoaWZ0IG9mIHR5cGUgZmxv YXQ2NHxpbmNvbXBhdGlibGV8bm9uLWludGVnZXIiCiAKIAl2YXIgbTIgbWFwW2Zsb2F0MzJdc3Ry aW5nCi0JZGVsZXRlKG0yLCAxPDxzKSAgIC8vIEVSUk9SICJpbnZhbGlkfGNhbm5vdCB1c2UgMSA8 PCBzIGFzIHR5cGUgZmxvYXQzMiIKLQlkZWxldGUobTIsIDEuPDxzKSAgLy8gRVJST1IgImludmFs aWR8Y2Fubm90IHVzZSAxIDw8IHMgYXMgdHlwZSBmbG9hdDMyIgotCWRlbGV0ZShtMiwgMS4xPDxz KSAvLyBFUlJPUiAiaW52YWxpZHxjYW5ub3QgdXNlIDEuMSA8PCBzIGFzIHR5cGUgZmxvYXQzMiIK KwlkZWxldGUobTIsIDE8PHMpICAgLy8gRVJST1IgImludmFsaWR8Y2Fubm90IHVzZSAxIDw8IHMg YXMgdHlwZSBmbG9hdDMyfGluY29tcGF0aWJsZSIKKwlkZWxldGUobTIsIDEuPDxzKSAgLy8gRVJS T1IgImludmFsaWR8Y2Fubm90IHVzZSAxIDw8IHMgYXMgdHlwZSBmbG9hdDMyfGluY29tcGF0aWJs ZSIKKwlkZWxldGUobTIsIDEuMTw8cykgLy8gRVJST1IgImludmFsaWR8Y2Fubm90IHVzZSAxLjEg PDwgcyBhcyB0eXBlIGZsb2F0MzJ8aW5jb21wYXRpYmxlIgogfQogCiAvLyBzaGlmdHMgb2Ygc2hp ZnRzCg== --00000000000058cb82060f45349b--