[patch, Fortran] Fix undefined variable warnings related to ASSOCIATE

Thomas Koenig <[email protected]> Sat, 1 Aug 2026 15:26:36 +0200
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------TxnKtU2I0bxKZ4BD85iKAiJg
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hello world,

this fixes one of the false positives from the addition of the recent
-W options, with ASSOCIATE.

Regression-tested. OK for trunk?

Best regards

	Thomas

Fix undefined variable warning related to ASSOCIATE.

This patch fixes unused warnings in ASSOCIATE constructs by setting
value_used and value_set attributes based on the associate names.
This is placed after resolution of the code. To get to the association
list, an extra argument to gfc_resolve was needed.

gcc/fortran/ChangeLog:

	PR fortran/126558
	* gfortran.h (gfc_resolve): Add optional argument for
	an association list.
	* resolve.cc (mark_assoc_used): New function.
	(gfc_resolve): Use it.

gcc/testsuite/ChangeLog:

	PR fortran/126558
	* gfortran.dg/warn_undefined_vars_10.f90: New test.

--------------TxnKtU2I0bxKZ4BD85iKAiJg
Content-Type: text/x-patch; charset=UTF-8; name="p1.diff"
Content-Disposition: attachment; filename="p1.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2dmb3J0cmFuLmggYi9nY2MvZm9ydHJhbi9nZm9y
dHJhbi5oCmluZGV4IGRmOTg3NTc2ZmZmLi4wYThjNmE4NTNhMCAxMDA2NDQKLS0tIGEvZ2Nj
L2ZvcnRyYW4vZ2ZvcnRyYW4uaAorKysgYi9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCkBAIC00
MTg5LDcgKzQxODksNyBAQCBib29sIGdmY19vcF9yYW5rX2NvbmZvcm1hYmxlIChnZmNfZXhw
ciAqLCBnZmNfZXhwciAqKTsKIGJvb2wgZ2ZjX3Jlc29sdmVfcmVmIChnZmNfZXhwciAqKTsK
IHZvaWQgZ2ZjX2ZpeHVwX2luZmVycmVkX3R5cGVfcmVmcyAoZ2ZjX2V4cHIgKik7CiBib29s
IGdmY19yZXNvbHZlX2V4cHIgKGdmY19leHByICopOwotdm9pZCBnZmNfcmVzb2x2ZSAoZ2Zj
X25hbWVzcGFjZSAqKTsKK3ZvaWQgZ2ZjX3Jlc29sdmUgKGdmY19uYW1lc3BhY2UgKiwgZ2Zj
X2Fzc29jaWF0aW9uX2xpc3QgKmEgPSBOVUxMKTsKIHZvaWQgZ2ZjX3Jlc29sdmVfY29kZSAo
Z2ZjX2NvZGUgKiwgZ2ZjX25hbWVzcGFjZSAqKTsKIHZvaWQgZ2ZjX3Jlc29sdmVfYmxvY2tz
IChnZmNfY29kZSAqLCBnZmNfbmFtZXNwYWNlICopOwogdm9pZCBnZmNfcmVzb2x2ZV9mb3Jt
YWxfYXJnbGlzdCAoZ2ZjX3N5bWJvbCAqKTsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3Jl
c29sdmUuY2MgYi9nY2MvZm9ydHJhbi9yZXNvbHZlLmNjCmluZGV4IDVmM2VkYjM3YWE0Li5m
NDYyMjM3NWI4NCAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jYworKysgYi9n
Y2MvZm9ydHJhbi9yZXNvbHZlLmNjCkBAIC0xMjk3MCwxMCArMTI5NzAsMjkgQEAgcmVzb2x2
ZV9ibG9ja19jb25zdHJ1Y3QgKGdmY19jb2RlKiBjb2RlKQogCiAgIC8qIEZvciBhbiBBU1NP
Q0lBVEUgYmxvY2ssIHRoZSBhc3NvY2lhdGlvbnMgKGFuZCB0aGVpciB0YXJnZXRzKSB3aWxs
IGJlCiAgICAgIHJlc29sdmVkIGJ5IGdmY19yZXNvbHZlX3N5bWJvbCwgZHVyaW5nIHJlc29s
dXRpb24gb2YgdGhlIEJMT0NLJ3MKLSAgICAgbmFtZXNwYWNlLiAgKi8KLSAgZ2ZjX3Jlc29s
dmUgKG5zKTsKKyAgICAgbmFtZXNwYWNlLiAgSG93ZXZlciwgbWFya2luZyB2YXJpYWJsZXMg
YXMgdXNlZCBhbnMgZGVmaW5lZCByZXF1aXJlcworICAgICBwYXNzaW5nIGV4dC5ibG9jay5h
c3NvYy4gICovCisgIGdmY19yZXNvbHZlIChucywgY29kZS0+ZXh0LmJsb2NrLmFzc29jKTsK
IH0KIAorLyogTWFyayBldmVyeXRoaW5nIGluIGFuIGFzc29jaWF0aW9uIGxpc3QgYXMgdXNl
ZCBhbmQgc2V0IGlmIGFwcGxpY2FibGUsCisgICByZXNwZWN0aXZlbHkuICAqLworCitzdGF0
aWMgdm9pZAorbWFya19hc3NvY191c2VkIChnZmNfYXNzb2NpYXRpb25fbGlzdCAqYSkKK3sK
KyAgd2hpbGUgKGEgIT0gTlVMTCkKKyAgICB7CisgICAgICBnZmNfc3ltYm9sICpuX3N5bSA9
IGEtPnN0LT5uLnN5bTsKKyAgICAgIGlmIChuX3N5bS0+YXR0ci52YWx1ZV91c2VkICE9IFZB
TFVFX1VOVVNFRCkKKwlnZmNfdmFsdWVfdXNlZF9leHByIChhLT50YXJnZXQsIG5fc3ltLT5h
dHRyLnZhbHVlX3VzZWQpOworCisgICAgICBpZiAoYS0+dmFyaWFibGUgJiYgbl9zeW0tPmF0
dHIudmFsdWVfc2V0ICE9IFZBTFVFX1VOU0VUKQorCWdmY19leHByX3NldF9hdCAoYS0+dGFy
Z2V0LCAmbl9zeW0tPm90aGVyX2xvYywgbl9zeW0tPmF0dHIudmFsdWVfc2V0KTsKKworICAg
ICAgYSA9IGEtPm5leHQ7CisgICAgfQorfQogCiAvKiBSZXNvbHZlIGxpc3RzIG9mIGJsb2Nr
cyBmb3VuZCBpbiBJRiwgU0VMRUNUIENBU0UsIFdIRVJFLCBGT1JBTEwsIEdPVE8gYW5kCiAg
ICBETyBjb2RlIG5vZGVzLiAgKi8KQEAgLTIxMDMxLDcgKzIxMDUwLDcgQEAgd2Fybl91bnVz
ZWRfdnNfc2V0IChnZmNfbmFtZXNwYWNlICpucykKICAgIHdoaWNoIGZ1bmN0aW9ucyBvciBz
dWJyb3V0aW5lcy4gICovCiAKIHZvaWQKLWdmY19yZXNvbHZlIChnZmNfbmFtZXNwYWNlICpu
cykKK2dmY19yZXNvbHZlIChnZmNfbmFtZXNwYWNlICpucywgZ2ZjX2Fzc29jaWF0aW9uX2xp
c3QgKmEpCiB7CiAgIGdmY19uYW1lc3BhY2UgKm9sZF9uczsKICAgY29kZV9zdGFjayAqb2xk
X2NzX2Jhc2U7CkBAIC0yMTA1Myw2ICsyMTA3Miw3IEBAIGdmY19yZXNvbHZlIChnZmNfbmFt
ZXNwYWNlICpucykKICAgcmVzb2x2ZV90eXBlcyAobnMpOwogICBjb21wb25lbnRfYXNzaWdu
bWVudF9sZXZlbCA9IDA7CiAgIHJlc29sdmVfY29kZXMgKG5zKTsKKyAgbWFya19hc3NvY191
c2VkIChhKTsKIAogICBpZiAod2Fybl91bnVzZWRfYnV0X3NldF92YXJpYWJsZSB8fCB3YXJu
X3VudXNlZF9pbnRlbnRfb3V0CiAgICAgICB8fCB3YXJuX3VudXNlZF9yZWFkIHx8IHdhcm5f
dW5kZWZpbmVkX3ZhcnMpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn
L3dhcm5fdW5kZWZpbmVkX3ZhcnNfMTAuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k
Zy93YXJuX3VuZGVmaW5lZF92YXJzXzEwLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uNTdjOTU3MTQzZTQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz
dHN1aXRlL2dmb3J0cmFuLmRnL3dhcm5fdW5kZWZpbmVkX3ZhcnNfMTAuZjkwCkBAIC0wLDAg
KzEsMTUgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1vcHRpb25zICItV3VuZGVm
aW5lZC12YXJzIiB9CishIFBSIGZvcnRyYW4vMTI2NTU4IC0gdGhpcyB1c2VkIHRvIGdpdmUg
YSBmYWxzZSBwb3NpdGl2ZSBmb3IgeS4KKworcHJvZ3JhbSBtZW1haW4KKyAgaW1wbGljaXQg
bm9uZQorICBpbnRlZ2VyIDo6IHgseQorICBhc3NvY2lhdGUgKGF4ID0+IHgpCisgIGVuZCBh
c3NvY2lhdGUKKyAgcHJpbnQgKiwgeCAhIHsgZGctd2FybmluZyAiVW5kZWZpbmVkIHZhcmlh
YmxlIiB9CisgIGFzc29jaWF0ZSAoYXkgPT4geSkKKyAgICBheSA9IDQyCisgIGVuZCBhc3Nv
Y2lhdGUKKyAgcHJpbnQgKix5CitlbmQgcHJvZ3JhbSBtZW1haW4K

--------------TxnKtU2I0bxKZ4BD85iKAiJg--