<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/153197>153197</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [flang] Long compile time with large array constructor
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang:frontend
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          DanielCChen
      </td>
    </tr>
</table>

<pre>
    Consider the following code
```
  PROGRAM main
  IMPLICIT NONE

  INTEGER(2), PARAMETER :: I2Max=32767
  INTEGER(2), PARAMETER :: I2Min=-32768

  TYPE :: DT0
  END TYPE

  INTEGER, TARGET  :: I

  TYPE(DT0), TARGET  :: I1Arr(I2Min:I2Max)=(/(DT0(),I=I2Min, I2Max)/)
  END
```

Flang took long time to compile it.
All ifort, gfortran and XLF used much less time.

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUUstu4zgQ_Brq0ohBk5YtHnTg6hEYiB3D0GH3SEuUxF2KDEgq2fz9gJKdGWROAwgQ0aiq7uou4b0ajJQ5Sv9CaZmIOYzW5aUwSuqiGKVJbrb7zAtrvOqkgzBK6K3W9kOZAVrbSYQ52uP7hznA5fr6fOUnmIQyS-F4urwci2MD59dzFeFL8dxUz9UVkYwgwhAp4MKv_FQ11RUQ5YhyOJKT-B_RkpLD_vAHJGUQLZ8iK3t0a_65VA9E2axzVudyqf82UQENvz5XDXxp_iqDSBYV1vbfgVvuHCLZfQi-OiAM0RKRDJH6Qc5W_hHRcsWSAr7AEcYeI35bL8K81sIMEKz9D7SNLzVJCBZaO70pLUGFDcKcaw2qty5E6SE-nDAgTAd_v9Qwe9nBNLcjaOn9IhFJSZfTjlEmEplvD2mKccYOOBnzvWSsS3dCdKSn3b7t910mKEsF7g9ZlrJE5QSTFGdbst0RRvFG7rKeyR6zVuzaNu3QDstJKL3R-n3aWDckyvtZ5tuUbtkh0eImtV9iSEgfHSLKe2dNkKZDhMRwujxyn27z4NEOa-WD_6kWVNBLjFdyWsKLXRK6LmVZ0ocKI2jhBgnCOfEJrTU-uLkN1iWz0_kYwpuPt4wnqAcVxvm2ae2ESB0b3X9Pb87-K9uASL148IjUdxvvOfkRAAD__1ig9GY">