https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88647
Anders Granlund <anders.granlund.0 at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |UNCONFIRMED Resolution|INVALID |--- --- Comment #3 from Anders Granlund <anders.granlund.0 at gmail dot com> --- What about this modified test case? struct S *p; void f(void); int main() { f(); &*p; } struct S { int x; }; void f() { static struct S s = { 0 }; p = &s; } It gives the same error message (using the same compilation command line), and there is no lvalue to rvalue conversion of *p in this case, because of the operator & . Clang accept that test case without any errors.