<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/87476>87476</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
NUMERIC_STORAGE_SIZE should change to 64 when -fdefault-integer-8 and -fdefault-real-8 are set
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jeffhammond
</td>
</tr>
</table>
<pre>
Fortran 16.10.2.23 and 19.5.3.2 say that when `INTEGER`, `REAL`, and `LOGICAL` are 64b and `COMPLEX` and `DOUBLE PRECISION` are 128b, `NUMERIC_STORAGE_SIZE` should be 64.
I applaud LLVM for implementing the other aspects of this correctly, unlike most Fortran compilers. Intel Fortran is the only other compiler that supports this configuration at all, and it too fails to change `NUMERIC_STORAGE_SIZE` to 64 (I reported it this morning).
```
% /opt/llvm/latest/bin/flang-new fsizes.F90 -fdefault-integer-8 -fdefault-real-8 && ./a.out
NUMERIC_STORAGE_SIZE= 32
STORAGE_SIZE(LOGICAL)= 64
STORAGE_SIZE(INTEGER)= 64
STORAGE_SIZE(REAL)= 64
STORAGE_SIZE(DOUBLE PRECISION)= 128
STORAGE_SIZE(COMPLEX)= 128
```
```fortran
! fsizes.F90
program main
use iso_fortran_env
implicit none
logical :: l
integer :: i
real :: r
double precision :: d
complex :: c
print*,'NUMERIC_STORAGE_SIZE=',NUMERIC_STORAGE_SIZE
print*,'STORAGE_SIZE(LOGICAL)=',STORAGE_SIZE(l)
print*,'STORAGE_SIZE(INTEGER)=',STORAGE_SIZE(i)
print*,'STORAGE_SIZE(REAL)=',STORAGE_SIZE(r)
print*,'STORAGE_SIZE(DOUBLE PRECISION)=',STORAGE_SIZE(d)
print*,'STORAGE_SIZE(COMPLEX)=',STORAGE_SIZE(c)
end program main
```
# LLVM Version
```
% /opt/llvm/latest/bin/flang-new --version
flang-new version 19.0.0git (https://github.com/llvm/llvm-project.git d1f585056f71bc63bd2e71d744051139809e5d8b)
Target: arm64-apple-darwin22.6.0
Thread model: posix
InstalledDir: /opt/llvm/latest/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVk1v2zgQ_TX0ZWCBoj5sHXxwHbsw4DZFmhaLvQSUNJLYpUiBpNJmf_2CllTHiTbIYoEgBuc9vjFnnjnk1opaIW5I8oEkNwveu0abzQ-sqoa3rVblItfl0-agjTNcQZgGIQ1YwCLgqoQwC5IgChhY_gSu4Q5-NqiApPT4-X7_cX9HUkrYzgfu9tvTuPI7SUpPtx-Pu3MQuEFI43xCdrefvpz2f5yRIXJz--3DaQ9f7va749fj7edpU8jW-Zjg87dP-7vj7uHr_e3d9uP-4evxz72n2Ub3soTcZwgIvSF0O_w_Au86yfsSTqfvn6DSBkTbSWxROaFqcA2Cdg0a4LbDwlnQFbhGWCi0MVg4-eRT90qKvxBabR1MZSp02wmJxgYAR-VQ_kaEHXSVfBrFJ-5QP9t3nTbOTolUJerecCe0Au6ASzlVUDhwWkPFhbTgNBQNVzW-VQmnIY2BsPURDPosOKj4TK02SqiasOyqRr5jw9-wZAkQdtCdI-wg5WPrP7hD69e5UIQdKslVvVT4Eyor_kYbHDIKy6rEivfSLYVyWKNZrp_FDHK5XANhKWEpBIQdeKB7N6SE2dNENxCxkXAFsPVkK5Z5VhrPsyZ_vs06m_ZtyitnDvSQref5k7df0F4W-jpYDe6ZmhA-q-0Q64yuDW-h5WJkAQD0FkFY_TBuf0D1eAG910UhHCit8BKWuhYFl0CiLYm2IJ9tGFo3IeKC-AZOYXMJl7rPJUJnsBDWG3iklBeKN7_EXxNSjEhnhHKEbQnbEbb6FwcQtiJsNwvOqbxlk0HqBUN67B1KV1aaVRLvVLrYbVbGvFNm3pKzkuU7Ja9cO6tU_FZCVcJrP84bnEXD5fsdjXfI_790lsvH51IXYAz7kUUDWgvnL8LGuc5677EDYYdauKbPg0K3zxLJx3bZGf0DCxf4XWVYJeuEJmm1CvMijfKS4SosV3FMkzCMsjXNMCn9VBrLcc9Njc67m5s2jZd-6OCy5OanUIwFaTAe874xyEtodYnSszttxa9xUinruJRY3gjjoTercV3CRbmJyizK-AI34SpkYRyyMFw0myrJMl6yLF7zgqbIacrzDJMwzUpe0ThciA2jLKYxjUIap0kYxHS94mlFM56HiElOYootFzLw3yLQpl4Ia3vcrFfxKl1InqO053cFY-c2EMb8E8NszjXN-9qSmEphnb0oOOEkbuZ-09McH8fcMMvOr4254eIH5KsB4x8MFt2iN3Lz3zpP2OF8NkvY4Xy8fwIAAP__gzCriA">