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

    <tr>
        <th>Summary</th>
        <td>
            Defaulting `CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL` to `ON` broke OpenCL
        </td>
    </tr>

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

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

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

<pre>
    Mesa Clover relying on Clang and libclc started to fail some days ago when building against LLVM `main` branch. I bisected the LLVM tree and I noticed the error appeared with LLVM commit 702d5de4380b1e1554e5b90863093c3a57f76f70 which sets `CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL` to `ON`:

> [Clang] Enable opaque pointers by default
>
> Enable opaque pointers by default in clang, which can be disabled
> either via cc1 option -no-opaque-pointers or cmake flag
> -DCLANG_ENABLE_OPAQUE_POINTERS=OFF.
>
> See https://llvm.org/docs/OpaquePointers.html for context.
>
> Differential Revision: https://reviews.llvm.org/D123300

Starting with this commit, when running [Luxmark 3.1](http://wiki.luxcorerender.org/LuxMark_v3#Binaries) OpenCL benchmark, I get this crash:

```
luxmark.bin: …/include/llvm/IR/Type.h:381: llvm::Type *llvm::Type::getNonOpaquePointerElementType() const: Assertion `NumContainedTys && "Attempting to get element type of opaque pointer"' failed.
```
I build LLVM and Mesa using my [`user-mesa`](https://gitlab.com/illwieckz/i-love-compute/-/blob/master/scripts/user-mesa) build script that rebuilds Clang, libclc, Mesa and other components, so every time I rebuilt LLVM I also rebuilt Mesa (not from scratch, Meson rebuilding what it detects to have to be rebuilt).

I don't know if the bug should be addressed in LLVM or in Mesa.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydVV1v6zYM_TXOCxHDlvP5kIe0SYYAadLddnstZIuOtcpWJslJs18_Snab3q7YgAGOpUgiechDHedaXBcPaDncK31GAwbVVTZH0A2tcJrwRoCSeaEKsI4bhwKchpJLBVbXCIJfLfCjhkuFDeStVMLb8yOXjXWw2_3-ANEkqekvDZAb3hRVDFvIpcUiuKuwO-YMYoi3hUY7WfR7aIw2wE8n5IaWLtJV3flC17V0ME2YGAscZbMkTzEdj0c4zufJbJIl86zI-HhaTiflNCGEsqjAorMe0f1uuf_lZb1f3u3WL4fH5a-_rV8eD9v98_rH00sY9sudh0zp0nDY0yvKllGyipL3d7aGaHwXChWNV7BueK4Q9In_2SKctGwcGgv5FQSWvFXuw-xm_582IBsoQgR236dQcKo0lV5abytuzpBqQySeJYeiSMmpk0TksNHDzv_wwz9VtKj5K0Kp-PHmYLj6t7JE2eqw2cTfZPFEzFXOnayvENvQo9S5jrUh1BuhC0vDIUB47BHElasVlB6HpoU3953blSxLNNg4yRX8wLO0lA-F-BLL0A5ebPwp5iplWZYkn9l68u3rezN0kKuk7TuoKyx1r2mbxh8gTnftW83NK2RxSsxGbOYjfgS8yFcZq_at0MbDE2j6sGT2QGYv5yxi2Z1suJFIuc_hcMLmfkesUfd7xz7mFo7oeiCG2-prd1G_dU_4qzpEcS5DBaI1i2ZJtJxQVNkUqhXYV52G7Q96PV9PGHun2Sz1FmGPQmRLvwMRW_680s0I0l43P3G1VlgTB-EMm_lsiDLrvM-ltWhCkxHOfVvfE5d001E8kypEjMBNaGBL57A-heLTbfJZY-cTnIeiyy_9TyYRmwaVQRF_W45tpzWdEnjRCCrWWh-jvnoK6WhL6IY1bXizDxpvjXOUTvE8pjbwVVTqIrF4_cvPh14Oh7Rxap0v7JB-udI5DTW3AeLGFkaenG_tWxwqToer2yR2uSNRDWu2k1RPfaeofhZge_w6XF0fUTdUGes3rQYkVb6CkyS1295Rr6pb4IoOvK8FR5QhSSeURtceAXdF1QchinoY4Qp4WKSdAh2JsPWsVPyMfiRh6V1SMvHnhtyCoNvHpg5eG30BWQZ5ztsj2Eq3lDOZciEMUlMIL1sBJt1wmnp0vbOBWGRins35wFH5cbHqdC5cvP8ny_RV0SRl3R0btEYt_kFz1b7T3F8RPwxPRv9B-XvCrW39Td2MR_NpMqgWoyJl9CWZ5rORmNM3ZDwbjSaCIZvhPJtMJgNqHFR24RuNsQapHt6F79zxaiAXLGEsGaXzJGOz0SQWaZnOxmWaszQrWcGjUYL0TVQfmjUwiwCJymlpU0nrboI24NbKY4MYwpF_3rpKm8VHyw5C8EUA_zfrIYA7">