<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/163255>163255</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang] Incorrect diagnostic on NULL intrinsic
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DanielCChen
</td>
</tr>
</table>
<pre>
Consider the following code:
```
module m
type base
real(4) data
end type
interface operator (==)
logical(4) function equal (b1, b2)
import
class (base), pointer, intent(in) :: b1, b2
end function
end interface
end module
program fclass022
use m
class(base), pointer :: b1, b2
nullify (b1, b2)
if (b1 == null(b1)) ERROR STOP 3
end
```
Flang complains:
```
error: Semantic errors in t.f
./t.f:20:9: error: A NULL() pointer is not allowed as an operand here
if (b1 == null(b1)) ERROR STOP 3
^^^^^^^^^^^^^^
./t.f:20:15: error: NULL() may not be used as an expression in this context
if (b1 == null(b1)) ERROR STOP 3
^^^^^^^^
```
All gfortran, ifort and XLF accepts the code.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVFGPnDYQ_jXmZZSVGWC7PPBA77JSpVNTXVqprwYPrCtjU9ukuX9fjdnsXnpR1QZZwgwz4-_7_NkqRjM7ok40P4rmsVBbuvjQPSpnyD48XMgVg9cv3YN30WgKkC4Ek7fW_2XcDKPXJKpeyF4c5XXIfvF6swSLkD0AQHpZCQYV6frNTyBlBZ5qgS1olRT_IqdzLnfbM41LFCY1EviVgko-gMCTqB55YPuqn_WzGe8tp82NyXgH9OemLBcNpcAHGPDrMrOsPqRXAX5Gq2LMNYwZWy5cfcbCU564JPBkHC_F9Ksebv3vvZjPFyDXMIdupITs-XtXaye9Bj8HtcCUMUjkdlu8S5nD30T2DRzXGrdZa6aXtyJ8EXnaf8Gua86_5rZM8P3z84dn-Pjrh1-g2iH_Y7uF7M9WZTcsq1XGxbeWoBB8YHwfaVEumRFyJIJxkA6TkP1B4JlnVY9SVH3LybeqHn7-7emJ9x7bG2MTwfkEis1IGlQE5XajOA0XCne__U-KdyuI5v1_HW8YlM1XFF4RWNRLRj4QbPGGnD6vgWJk17IoFxNh9C7R5_TdPP4F7Ns97K2FefIhBeWyz3kOrOXvT2dQ40hrivn886k_FLqrdFu1qqCu_OEoq1PdYFlcuqrEI6FuR6yIjrKVssJBaRwmXcu6rQrTocSmlGVVtjXK8nCsp1q3UtcnOmFdn0QtaVHGHqz9tBx8mAsT40ZdeaywaQqrBrIx31iIEztPVP0UWCunBSLfY6Hj2nfDNkdRS2tiivduySSbb7y9uHmEn9zoQ6AxgTZqdj6yQ73Lm8YHNhgXzVhswXaXlNZscDwLPM8mXbbhMPpF4JkXuL7ercH_QWMSeM7Yo8DzFf6nDv8OAAD__645kBY">