Since 10.1, given this code:
extern int flag;
extern "C"
void wait() {
while(flag);
}
int flag = 4;
g++ returns this assembly
wait:
ret
flag:
.long 4
Clang does it too! Why is this allowed? It seems clearly wrong.
Here it is on godbolt: https://godbolt.org/z/qeWGMGa87