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

    <tr>
        <th>Summary</th>
        <td>
            [Flang][OpenMP] SPEC CPU 2017 603.bwaves crashes when linked using lld
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    Using the most recent Flang + OpenMP on **AArch64**, 603.bwaves (_fpspeed_) segfaults in a `__kmpc_global_thread_num` call.

This happens in an `OMP PARALLEL DO PRIVATE` clause.

Looking at the disassemble, looks like a wrong relocation:

```
(gdb) disassemble
Dump of assembler code for function __kmpc_global_thread_num@plt:
   0x0000aaaaaaac8fe0 <+0>:     adrp    x16, 0xaaaaaaae9000
   0x0000aaaaaaac8fe4 <+4>:     ldr x17, [x16, #2752]
=> 0x0000aaaaaaac8fe8 <+8>:     add     x16, x16, #0xac0
   0x0000aaaaaaac8fec <+12>:    br      x17
```

It's branching to an invalid address. So I'm not sure if this is an OpenMP or lld bug.

I'm trying to create a small reproducer for this and will update this issue if I can manage that.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8lN9v4ygQx_8a8jLaCIMduw9-SJpEqtRVo_1xr9EYsM0FgwW4zf73Jxz3mupuN4pAhOEz84VvBkPQnVWqJsWOFPsVTrF3vhYqKLdqnPxV_wzadhB7BYMLEbwSykY4GrQdELaDl1HZrydwFgjbErbdbr3oN_ltQdgjbChfN2_4qgIQVp3bMYxKyTNhDxBU1-JkYgBtAYFs6Pl8GUZx7oxr0Jxj7xXKs50GsqEg0Jg1oXtCt7fxR68D9DiOyt4INiFevp7gtP22fX4-PMP-BU7fnv7a_jjMBINTUJ8Yz85dkkCMs0apA4aghsaoVLtx7hLA6IsChDfvbAdeGScwamcJ396TyIYu39uSVZ1sksp75ry1n4YRXAvvv3oQTiponYd2siKx4bcXkdPRxH9TAwC9Ukop3j6iahUFwh8J21HCD4SnEACUfkzzNdskXfS6xKsHSunvUfmCyu9QRnq4ZmXCkGK3AAnjrCwYKfaLer4n_PBfYLUAq0-1Sbir7YNIryj-UJxYWBn7gDUeFlb5_68yj0-RsDJA49GKfra3S-bR9hWNlqkgr0JYw3cHT4SVA1gXIUxegW4hJtfpkA68e9-DMRKaqftkrdvR6H8tGYRXGJORwoDGgFejd3ISys8vP2PRSnjTxsA0yhS75ArTnPkJBFoY0GKXtjCuV7Lm8oE_4ErVWUlZXvI856u-rirBylbRXHKalZgXGW-qnCmOvCwEe1jpmlHGM5bxjGcl42smseIttm1eNUgxIzlVA2qzNuZ1WDvfreY66rLgvFwZbJQJ713D1ynoSzN1geTU6BDDx7Goo5n7y9wzkkOK3e3iSLGH76fDIzyefgKjWXnfK4TH0KsAb72yYLS9KAnT3IuMkavJm7qPcQzpn8COhB07HfupWQs3EHZMyZfpy-jd30pEwo6zgEDYcdbwTwAAAP__Qcp_fA">