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

    <tr>
        <th>Summary</th>
        <td>
            clang cannot select when using wasm table builtins and -fPIC
        </td>
    </tr>

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

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

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

<pre>
    ## Example:
Source file:
```c
static __externref_t table[0];

__externref_t test_builtin_wasm_table_get() {
  return __builtin_wasm_table_get(table, 0);
}
```
Compiling as follows works:
```
clang -c -target wasm32 -mreference-types builtins-table.c
```
but if I add `-fPIC`, it says:
```
fatal error: error in backend: Cannot select: intrinsic %llvm.wasm.table.get.externref
```

The IR looks as follows:
```llvm
@table = internal addrspace(1) global [0 x ptr addrspace(10)] zeroinitializer, align 1

; Function Attrs: noinline nounwind optnone
define hidden ptr addrspace(10) @test_builtin_wasm_table_get() #0 {
entry:
  %0 = call ptr addrspace(10) @llvm.wasm.table.get.externref(ptr addrspace(1) @table, i32 0)
  ret ptr addrspace(10) %0
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(read)
declare ptr addrspace(10) @llvm.wasm.table.get.externref(ptr addrspace(1), i32) #1
```
If I change `@table = internal addrspace(1)` to `@table = local_unnamed_addr addrspace(1)` it seems to fix the problem.

@pmatos
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyslc9vqzgQx_8a5zJKZOxAwoFDm2yk3la7e0fGHsBbYyPbbJr3168MadPXpt09PCki2HiYz3znByIE3VnEiuSPJD-uxBR756veOTUIi6vGqUtFGCeMw28vYhgNEv5A6JHQhz_d5CVCq9_tkYIuP7msQxRRS6hrfInorce2jhBFY5Dkj5TkR8Ifr5bz9cNBDLFuJm2itvVZhKGeTesOI2F7wkogu6s5gMc4eQv11waLX3YASlh5c7w7fmBflgc3jNpo24EI0Dpj3DnA2fnn8DnaZSmNsB2sJayj8B1GSAScwXrw2KJHK3EdLyMGuCKG9Yy0kXdf10wRdAtPIJQCUtB1-_vTIT1lB9ARgrh8SdKKKAyg984T_rDcgLbQCPmMVqW9g7DWRQhoUMa0oW302gYtgbDcmH-GTcLfLIQdxs1bZu66XK5_9QhPf4Bx7jm80-0zZ3Jw3drS2QcQfkwQ6K0wKWYfRiGRsH2WMt0Z1wgDqWzgBcbofz4ypzQ_wg_0TlsdtTD6B_qklTC6s5C9xyT8EU6TlVE7Cw8x-kQI1mlrtEWwbrJnbRW4MVpncTFS2KaHvVYK7X0CSMH8d9EyTm-Vizb6y5tAkNSnsxZSGPO1m-8zxPafDF_xXptAc7Y0wq1_vvLGcvqxV76VMZGnUgPrWo9Jz3Cx8ibrWRtzbdcBB-cvhO09CvVGo1Aa4fHXRn8N-pqB7G4VP6V-k72wHaaW-3-1SQoK0X06b5IO9WStGFDVyeiuZWplxCGkV7T6BWKPMHrXGBw2P4m9peMgogsrVXFV8lKssMqKkhfZNme7VV8VBcUMMaM0bwXHLFP7cpeXhcSmKZstX-mKUcZpSRmlbL_dbfZ5u222XCmesYyphmwpDkKbzayv891KhzBhVeRZma2MaNCE10-Fr9KhdTN1ISVEhxhuZlFHg9UyEOX7SQPnHi1MIc3VlL_lY_A2EEFYBfOgW03eVH2M4zw82ImwU6djPzUb6QbCTvMAWf7Wo3d_pynGTjNuIOw0E_8bAAD__27vHf8">