<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/81025>81025</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang] Incorrect use association for generic names.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DanielCChen
</td>
</tr>
</table>
<pre>
The following test cases crashes. The problem is when procedure pointer `PtrInt8` is declared, its `procInterface` `Int8` is not marked as generic nor specific function, so it is typeless.
The `-fdebug-dump-symbols` shows `int8 (Function): Use from int8 in m1`.
```
Module scope: m size=0 alignment=1 sourceRange=156 bytes
int, PUBLIC (Function): Subprogram result:INTEGER(4) int (INTEGER(4) arg)
int8, PUBLIC (Function): Subprogram result:INTEGER(8) int8 (INTEGER(8) arg)
Subprogram scope: int size=8 alignment=4 sourceRange=60 bytes
arg size=4 offset=4: ObjectEntity dummy type: INTEGER(4)
int size=4 offset=0: ObjectEntity funcResult type: INTEGER(4)
Subprogram scope: int8 size=16 alignment=8 sourceRange=66 bytes
arg size=8 offset=8: ObjectEntity dummy type: INTEGER(8)
int8 size=8 offset=0: ObjectEntity funcResult type: INTEGER(8)
Module scope: m1 size=0 alignment=1 sourceRange=98 bytes
int, PUBLIC (Function): Use from int in m
int8, PUBLIC (Function): Generic Name (specific) procs: int,int8
MainProgram scope: ptrassigngen size=8 alignment=8 sourceRange=216 bytes
int (Function): Generic Name (specific) procs: int,int8
int8 (Function): Use from int8 in m1
ptrint8, EXTERNAL, POINTER (Function) size=8 offset=0: ProcEntity int8
```
I would expect both `Int` and `Int8` are generic names that has specific `Int` and `Int8` from module `m`.
```
MODULE M
CONTAINS
FUNCTION Int(Arg)
INTEGER :: Int, Arg
Int = Arg
END FUNCTION
FUNCTION Int8(Arg)
INTEGER(8) :: Int8, Arg
Int8 = 8_8
END FUNCTION
END MODULE
MODULE M1
USE M
INTERFACE Int8
MODULE PROCEDURE Int
MODULE PROCEDURE Int8
END INTERFACE
END MODULE
PROGRAM PtrAssignGen
USE M
USE M1
IMPLICIT NONE
INTERFACE Int
MODULE PROCEDURE Int
MODULE PROCEDURE Int8
END INTERFACE
PROCEDURE(Int8), POINTER :: PtrInt8
PtrInt8 => Int8
IF ( PtrInt8(100_8) .NE. 8_8 ) ERROR STOP 12
END
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVl1v6jgT_jXmZlTkGAjmggsOH1WkFhCl0nt35CST4HcTG9nOdru_fuUQIKT0nFa7UiWaeOZ5nvl0hLUyV4hTMvpBRoueqNxBm-lCKInFfH5A1Yt1-j7dHxAyXRT6TaocHFoHibBoITHCHtD2wVscjY4LLEFaeDug8s8JppVBOGqpHBogId06EynHSUi9XYpJIQymhM1BOusNvFfkrTORoDcjIW15KO2gFOYPTEFYyFGhkQkobcAeMZGZTCCrVOKkVh7UapDO-7n3IxZobZ_QBaEzOP142SSkD1mKcZU_pFV5fLDvZawL6_nsQb_VoqRyHAjjqwv0hAxm8GoRMqNLqM-lgjIgIW0oSEibvxMjPOu0KhBsoo_ovUuw8m8kgwUFUchclagcGSwCsLoyCe6Eyv1pMAohfndozzjg6Xxw29cfT9H8jq6XKj4anRtRgkFbFY4MZtF6v3xc7gjjQ8ImHsI7dt4Kk3uINhH_F0y8YeK3VPweVQvpkiEvsskRv8nRsJOjkHZTBJ7g7DwEnWUWa0-Pu4n_j4lbKifdO6RVWb7X_eGPbhPSxmuJaeHRD3i-_XZ1Ln4L-knM_MwThDdR827UHxrjJmp-Vcm_HDX_GDW_A_jNsNuoH8Yg-NocTPh3x6A9nvV0fqOxH5vNshYl-uPzdvGt61eUbWpF2LzGOgcnpNp2S3p05rRpc1T3-7lbWRbcm_n_TibANzbaxefozDlvy__tl7v17KnO4cYXetdB-6xptkYnTcu0FHWWZQRvuipSwL-OmDiItTs094Bfy0Kl7VtBGLxeBKJEC-4gHByEvd4JnzrXwZanliQhLVv7-5Mtvlm8Pi3huW0E8816P4vWLzcvAWD1up7vo80aPDnjs87OawYEyGBWz8upn71VawIjX_jB4vb1cr24gP-KlH_Oel7EV3J-n53X9Pwn_wq9Pzml6Ob9OWuXbnp96eawUbZbzebLk5qWjMZ_u9vMl4vXXW3wy_MOgpd1Qf-SYo_1uJs9w9aZWT29j6juqG8eLoFFz9unaB7tYb1ZdxBvwrtqu6v9N8e8rf6TwC4e_vKtqzvxBYbrwJ4qf_4ku3U-vfSlJ4PbekQrP-oXN8YDSn_WrdRfL_u-UcA_LHe7zQ5e9pstBOxDys__Xuarl04H6WQwET2cBmM6HgyCcBT0DtM4HYd0JHgcCopZFlIxHCcMhzFFnARZ2JNTRtmQMjoO-HA8CPrDlKcZH9Fxlg3TIeNkSLEUsugXxZ9lX5u8J62tcMoDyka9QsRY2PoTmLGsEConjPmvYTP19g9xlVsypIW0zl4RnHRF_d28qj1GC4hUoo3x66qyCMJanUjhlyFk2twuqH6vMsX04NzR72fCVoStcukOVdxPdEnYytM0Pw9Ho_01S9iqVm0JW9XC_wkAAP__DJxitg">