I am finding clang-format on save seems to be a bit erratic and I've managed to come up with a reproducible case:
I have a source file with the following line in it:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
If I place the cursor immediately after the '|' character, then hit return, then Ctrl-S, the extra newline is successfully removed before saving, so the line is restored to the above.
However, if I place the cursor immediately before the following 'G', ie: after the space after the '|', then hit return, then Ctrl-S, the newline is NOT removed, the line remains split and is saved like that.