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

    <tr>
        <th>Summary</th>
        <td>
            [flang] flang-new and gfortran behave differently for LAPACK test (zcomplexabs)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          k-arrows
      </td>
    </tr>
</table>

<pre>
    Test code:
https://github.com/Reference-LAPACK/lapack/blob/master/INSTALL/test_zcomplexabs.f

If you use gfortran and the optimization level is -O0 ~ -O3, the compiled program prints nothing:

$ gfortran -O0 test_zcomplexabs.f
$ ./a.out
$

$ gfortran -O1 test_zcomplexabs.f
$ ./a.out
$

$ gfortran -O2 test_zcomplexabs.f
$ ./a.out
$

$ gfortran -O3 test_zcomplexabs.f
$ ./a.out
$

On the other hand, if you use flang-new, the program prints a lot, like:

$ flang-new -O0 -flang-experimental-exec test_zcomplexabs.f
$ ./a.out
```
 !! Some ABS(x+0*I) differ from ABS(x)
[a1] ABS( 4.9406564584124654E-324 * (1+0*I) ) = 0.0000000000000000E+000 differs from  4.9406564584124654E-324
[a1] ABS( 9.8813129168249309E-324 * (1+0*I) ) =  0.0000000000000000E+000 differs from 9.8813129168249309E-324
[a1] ABS( 1.9762625833649862E-323 * (1+0*I) ) = 0.0000000000000000E+000 differs from  1.9762625833649862E-323
[a1] ABS( 3.9525251667299724E-323 * (1+0*I) ) =  0.0000000000000000E+000 differs from 3.9525251667299724E-323
[a1] ABS( 7.9050503334599447E-323 * (1+0*I) ) = 0.0000000000000000E+000 differs from 7.9050503334599447E-323

...

[d4] ABS( 2.1452492687908155E+155 * (1+1*I) ) =                      Inf differs from 3.0338406105949368E+155
[d4] ABS( 1.0726246343954078E+155 * (1+1*I) ) = Inf differs from  1.5169203052974684E+155
[d4] ABS( 5.3631231719770388E+154 * (1+1*I) ) =                      Inf differs from 7.5846015264873419E+154
[d4] ABS( 2.6815615859885194E+154 * (1+1*I) ) = Inf differs from  3.7923007632436709E+154
[d4] ABS( 1.3407807929942597E+154 * (1+1*I) ) =                      Inf differs from 1.8961503816218355E+154
 # Please check the failed ABS(a+b*I) in [stderr]
```
>
Tested version:

$ gfortran --version
GNU Fortran (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0

$ flang-new --version
flang-new version 16.0.0 (https://github.com/llvm/llvm-project.git 83d4851436904c005ff0831e38e1814a0a8f00ac)
Target: x86_64-unknown-linux-gnu
Thread model: posix

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVl2P0zoQ_TXuixVrPP5-6EPL0qvVRYAu8IzcZNLmbppUibMUHvjtV0m7H0C7LLobtWmdcc45PuNkJvZ9tWmI5swsmbmaxSFt225-k8Wua7_0s3VbfJ1_pD7xvC2IqQWDKwaLbUr7fhzhiuFqU6XtsBZ5u2O4-odK6qjJKXuzeL949TfDVR33Mb9huFrX7Zrhahf7RB3D1fXbDx8Xb94wXCXq0-dvebvb13SI616UR6Lj-brkX9uBDz3xTdl2qYsNj03B05Z4u0_VrvoWU9U2vKZbqnnV8-wd8O88e6cYvpqmjdBVTQXfd-2mizu-76om9bxp07ZqNvcrO51RPzCNWBf1oeaC4SqKdkj3l56Aki8HhS8Hpf4H1LvmmIe0pY5vY1OMllcPGSvr2Gyyhr7cpeKnDERet2mM1dUNncnD_f1TIrLjkA576qodNSnWGR0o_6MFWDh9piFnKBlK_qHdEV8sPzD0B4ZLYLi4Zhh4UZUldbzs2t1DOJygzDJKZq5OAa5F0GCN1cZridoa_TpTqDnDkcbLx7jTV11xEPDT8XqcBnBi7o_Ul7DPCwnCe6kkBmk96qAg_F7Ic5VcwD4vRIrgLFo0Ximrg7c4TlYv4sgF7PNClAgGDRpprcMQHOrfC3mukgvY54U4EcCAAaWUNiFo7V7MkQvQjx8pIcQPT5hZFvqROBRSG9QBrXcBvDRmJJLGPJYnf_Hp3HHdlD-7BEp5DVaCCToo60_Y56VIAQ4taqu0CkaD88-R8gsrl8JIGxAUGAxOW6-fpDVCWSVRSSeDc6D8iVa_gANOGK8tSINWe6e0DCfsS8mwXhorjTfBeyODfo6UXx1QwgVUAM4q1Mo6eJpWCjW6DS5gCBpNcC_ngBQ-WGlAeWlRenW3v_T9u1jx9zXFnni-pfxmqhhlnEr3UV5kuFzfkVcNZ2bZp4K6jpmrs-93pl4f_4x9DBX8lrq-apsnS352N2mK_fX2E1-dQgz9p_XQpIFLKZSATA7TUH5HFKBHUcfAE3XsR_SHwOkyl1aAgJHqiUarrm_vfrJ91_5LeRKbKnGvCu2N1MoG0DmAKUvwSpLyJL3UEaIvAWJ-X8M-xm5DiakFP3j72epsaG6a9kuT1VUzHLJNM5zmbTuKBd-1BdXj7H3bV4djaFbMVRFUiDOaS-sQ0YOF2XbuSZcggzIuuhyd9gYBlVSYg40hyFk1R0CUiF5K7TSINelgkYzLQ1GOVUUD7WJVi3Ghou02s6rvB5qb4BTO6rimup-6V8TRwinIEMdmtptP5qyHTc801FWf-geUVKV6ansn-8fd_5CHsbe83wtr2sZbOu1ialL9lZdtx4_d7dR2jIl61HkwDLOhq-d_ljuGq0l7z3A1re2_AAAA__8apBCE">