<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63484>63484</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Verifier regression for caller/callee after enabling opaque pointers
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
nikic
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
joker-eph
</td>
</tr>
</table>
<pre>
I've been tracking a simple case like:
```
declare void @foo(double %0)
define void @caller(i32 %i) {
call void @foo(i32 %i)
ret void
}
```
We expect the verifier to complain:
```
bad.ll:3:13: error: '@foo' defined with type 'void (double)*' but expected 'void (i32)*'
```
And it was until LLVM 15, I bisected to 41d5033eb162cb92b684855166cabfa3983b74c6 which enabled opaque pointer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8k89uozwUxZ_GbK4awTUYWLBIvypSpX7bztp_LsGNgxnbJNO3H0HCtB2NKqGLkX-Yc44OMkZ7HIk6Vj0yxNGerGaIrHrK5JwGH7o3f6LwQNOQKW_eu2eG9YVAEY2QgtQnOx5BQrTnyRFoGQmcPRHje5Y_sXybIr9f66Mh7WQguHhrgJV57z3DxvhZOQKGVc6w3cjejh-gls5RYNhYjgtoGbbA6scbDLDs_3XqJ3KjAqUVumurn_4p8jZ_ENCviXSCNBBcKNjeUoDkQfvz5KQdv7eqpNk5x_ieM74vlgEUgg_LgmG9yazh5tTA1aYB0vu0BFHfrGzRLBZwv8BqTndZZD5zluMf6BtT-9GATXCVEeYxWQcvL6__Q1Ex_A-eQdl4Ozh5KAtT5ZyTKgRq1aISTdlUVSGElqqXvG24qkst4DpYPQCNUjky4Cf5cyaYvB0Thd2XfNaZmY6blrcyo64QTV2JomrbbOhag33LG5SmMY0pEUUpi7ItmqbHUvY6sx3myHOBfJm83bUil6XipRFYixoLVuZ0ltbtnLucdz4cMxvjTJ3gZVNmTipycas7XWHdvFc-dMs7D2o-RlbmzsYUP05JNjnqXrcGBDoGitH6EXofYGvmYV0QyD5RuOWx_CFfA4nZHFw3pDTFpT14YHg42jTMaqf9meFh-ej99jAF_0Y6MTysUiPDw2rldwAAAP__IWYaMQ">