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

    <tr>
        <th>Summary</th>
        <td>
            Failed conversion for `!fir.box<!fir.ptr<i32>>`
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          banach-space
      </td>
    </tr>
</table>

<pre>
    ### How to reproduce
```bash
$ cat repro.mlir
module attributes {fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.target_triple = "aarch64-unknown-linux-gnu"}  {
  fir.global internal @_QFEx : !fir.box<!fir.ptr<i32>> {
    %0 = fir.zero_bits !fir.ptr<i32>
    %1 = fir.embox %0 : (!fir.ptr<i32>) -> !fir.box<!fir.ptr<i32>>
    fir.has_value %1 : !fir.box<!fir.ptr<i32>>
  }
}
$ fir-opt --fir-to-llvm-ir="target=x86_64-unknown-linux-gnu" repro.mlir
repro.mlir:2:3: error: 'llvm.mlir.global' op initializer region type '!llvm.ptr<struct<(ptr<i32>, i64, i32, i8, i8, i8, i8)>>' does not match global type '!llvm.struct<(ptr<i32>, i64, i32, i8, i8, i8, i8)>'
```

### Discussion
Reproduced with [ToT](https://github.com/llvm/llvm-project/commit/fb4113ef0c8b2c5e5e2817e9ca14fb57a6d252be). Works just fine on [fir-dev](https://github.com/flang-compiler/f18-llvm-project/tree/fir-dev).

IIUC, this is failing because:
* `!llvm.ptr<struct<(ptr<i32>, i64, i32, i8, i8, i8, i8)>>` 

is not re-mapped as:
* `!llvm.struct<(ptr<i32>, i64, i32, i8, i8, i8, i8)>`. 

It used to be re-mapped in MLIR's [remapValues](https://github.com/llvm/llvm-project/blob/main/mlir/lib/Transforms/Utils/DialectConversion.cpp#L1255-L1307), but that hook was updated in https://reviews.llvm.org/D111620. 

### Credits
Extracted from this [comment](https://reviews.llvm.org/D124610#3484526) (posted by @peixin). Original reproducer:
```Fortran
  integer, save, pointer :: x
   x = 1
end
``` 

### Next steps
Please assign this ticket to yourself if you intend to work on it! Otherwise, I'll try to prepare a fix myself.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1Vdtu40YM_Rr5ZSBDGl0sP_gha8dogG23XWTbx2A0oqTZSBphZmQ7_fqSkuw4aYK0xRYQNHfykDwkc108bTweTR_7SR-Z08xAb3QxSPCCnRfceGkwfbmw9bzFYyaFm24u20aZab_FZw0w4ZxR-eDAMm_1qVRmWUAphsY9qq5gXrRjHucilHGRqbiJTYxLj28Z3aQrrejPt-aTpjm0SydMBe4BZfeo5CxGGFmnsT90j50-dn6juuHkV91AL1c7RggmcGyUXzU6Fw1TnQPT4cSLg4ff9rcnlHeD8kK6k-uTF23nRe8MLlTEvegWv2t5KJwnwYiEbv4JRj_kyln21tPrN-HlDbSo7CyGAGRvveVr5o-6P8b3rIcOa2EfDqIZ4Kz1H9l4loH-m-N9mWDg8YGve8d8n2ZO-xQcHykQ7dDnU5BwfsrSh3fi8jfeXK2jGwRxExFSMEabCfJqJABdmAOIW0z3GEbllGgUuh6FVkp3zD31ZO0KTRsfTbZZZwbpRouzl67dMpXG4xCNVFPZW__17BlUW2jkdacda4WTNZsJ9VrtD1GI4l6m4LycY3HO252ycrAWrZ9Ovp4TuGBH5WrmJZ_u9b2XYHyy2rneolM9vsevwuMhX0rd4oJwz4OPAr4D4ud7PGsVTco8DsMIykBmOZcJJMCzcAVrKcK4zJOVSAue8BwQ-5L9oc2jZd8H65AvHTAMDKIgwhRw-BBJ2Yiu8nHeqwYMbYSZ_wqXMwB0MotEpdfOubv7tiVXulpZhl8pFDKwYjlIMVggtbMTkV7o1_-FLCkm9RUmNdHGgI8FrsfgCPsejh-CIA2WL_TfOYamF1Tic7iCoTr28-e7r8g2S0EygPu_U9Gw_5EyOaYEDq1QHQ2U1nhH0d69EZ0ttWktLr451dC4wxTGl1vdHcAQjZey75HYn0OeJP7nMApWZBLahk0FQ4qdp9b6kR2FZUNfCDcZ8RKngYOCo12O_tSmIj1hGKb8lVee02hroMDqPW3fnpwRkiSXRrcTj9A5lA3Qubcc86ZCHqchRjWK4ixOeEqVnEKqLUnOn6j99KBO5CjMmi9GVYq60qUFm2eGnGvAXhuE1p2LNHWyipJky6w4AI29HtsblXsqn6dLTziNfSec1tAVryS_45df4OQYAu5n1_zagLDY5bHiVN3kGafkIzhi1pMejIWmZKqk-QivGzl3xJJAdYCKSci-uBrMUdkR8N1Y4ZkzT3SxR-uFQQVYOk6sfSJxy0WxiYp1tBYLp1wDmz0mNLpQXjjDkFVzCn3Y39JgMZhm86-JraylrOD7JOFhsKg3WZlAzvNM5DKALEjCNFunfCWlDNdxUqwXjcihsRtkDva9sayhPsoHjhRaqA0POA-SIAzjIEiSZcljvsoCUYaQyXVQID0wG1VzIdXCbEZM-VBZPGyUdc-MW0whARj1oXwxuFqbTS46IWvf9kLCYrRhMxrwFwZN86k">