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

    <tr>
        <th>Summary</th>
        <td>
            clang with no-pic should use local-exec tls model for risc-v
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          Temperature-block
      </td>
    </tr>
</table>

<pre>
    a.c
```
extern __thread int ThreadVar;
int _start(void)
{
 return ThreadVar;
}
```


b.c
`__thread int ThreadVar = 123;
`


when we compile and link using -fno-pic
shouldn't it default to using Local-exec instead of initial-exec
from my limited understanding non-pic code uses absolutes and indirection through GOT is not necessary
instead we end up with objdump containing GOT indirection to access tls variable 
```
0000000000010170 <_start>:
 10170: 00002517 auipc a0,0x2
 10174: ea853503 ld a0,-344(a0) # 12018 <_GLOBAL_OFFSET_TABLE_+0x8>
 10178: 9512 add a0,a0,tp
 1017a: 4108 lw a0,0(a0)
 1017c: 8082 ret

```
if we do explicitly ask clang to use local exec (-ftls-model)
we end up having expected behavior o/p
```
0000000000010158 <_start>:
 10158: 00022503 lw a0,0(tp) # 0 <ThreadVar>
 1015c: 8082 ret
```


when no-pic is used above code should emit local exec relocations
```
OFFSET           TYPE VALUE
0000000000000008 R_RISCV_TPREL_HI20 ThreadVar
0000000000000008 R_RISCV_RELAX     *ABS*
000000000000000c R_RISCV_TPREL_ADD  ThreadVar
000000000000000c R_RISCV_RELAX *ABS*
0000000000000010 R_RISCV_TPREL_LO12_I  ThreadVar
0000000000000010 R_RISCV_RELAX     *ABS*
```
instead, we end up using initial exec 
OFFSET           TYPE              VALUE
```
0000000000000008 R_RISCV_TLS_GOT_HI20  ThreadVar
000000000000000c R_RISCV_PCREL_LO12_I .Lpcrel_hi0
000000000000000c R_RISCV_RELAX     *ABS*
```


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVVFv4jgQ_jXmZQRyHAjhgQcosLcSUlctt7p7iowzId4aO7IdoP_-5CRdUo62a6HgOOP5xt83M-bOyYNGnJPJkkxWA1770tj5Do8VWu5ri8O9MuJlsDf565yPBKErQhckod2vecWLR6shy3xpkecgtYddM_3JLYmXrVVYzZzn1hOWnozMCZt17qadCVj0tdV3NpPp6i50_7nvhXc_FiDxCiIWX93e83MuUcMZQZhjJRUC1zkoqV-gdlIfYFhoM6xkh-VKU6tcEzb1ID3kWPBaefCms94awdUQLyhAaudDSKYAqaWX3Xrrp7DmCMdXUPIoPeZQ6xyt81znwYs2OkCCMDlC7dAB3zujah9mOpwylxaFl0aDL62pDyV8e9yBdKCNB40CneP29U2JNpAzAuoc6grO0pdg9r_y-liBMNpzqQNu46Pv2wAXwRd45eDEreR7hXBXGnodEY2mFEj80Okfr0nckQ3NNxIvIBiySTQFXstKAKeEPdAL65mNgxnydBJPaAwqb22G8XhMWBrmMyAshojRKG3Qvm0fl4tt9rjZPK932W6x3K4zwpb0koYQro7T4Hg2iRjwvPPaPHzVM-LBaBzRFNS5i-4NtmclglVKUxZy-V1uvWdHFoH-3ABeKiWF9OoVuHsBobg-tOmDoELyQJM8hKXDwis3PJoc1W_Mq4QlPwXF8FKhCAm0x7BiLBjCNtUfKDRJP1ZoknYKMdZQ3yPAV2-8Nwr3SrfH8OQeLR9XclOBbZWFFK4d5sD35oRtAbQ1B3iUvk-RxfAS8tTdRWjTAK5j9--PNfxcbP9e_4-PMFJ4yp6-Pz_8zHY_ntbb7K_vjPZa0-dbntbbxT8NCmGLxfKZsMXdHeIGZLFawRcg4gbkU4CI3gBsHyOWff8Co7frw4PcJnTbVAh76PWVtgd23a5L5E-0eDd6wnyctzc6bZ-zb4-7Vqk_ZvHHQ4-X0bYSFlVWyvtgt-R_TUz7HOTzOJ_FMz7AeZTMGEvSJKGDcs4jZOMimVE6o5GYFpQJmheFEGLCkkREAzlnlMU0jaYRjadjOkrTYhLTKB7TJI6LfEbGFI9cqpFSp-PI2MNAOlfjPBlPk2Sg-B6Vay54xjSeoflIGAv3vZ2HPcN9fXBkTJV03l29eOkVztuG1FwQXUV25fe7QbW3W7gQmt4EhbFgpRPD06C2al56X7nQTdiGsM1B-rLej4Q5ErYJUN3fsLLmFwpP2KYJ0BG2aQ7wXwAAAP__vUptUg">