While playing around with that I noticed some strange behavior when handling void expressions. They apparently gets removed entirely in argument lists. E.g:
void x() {}
int main() { werror ("%O\n", x() + 3); }
This compiles just fine and writes "3". I expected a type error for passing a void argument to `+.