The previous macro definition using {...} would fail to compile when the callsite uses a semicolon followed by an else-statement (i.e., if (...) FATAL(...); else ...;). Replacing the simple braces with do{...}while(0) (n.b., semicolon not included in the macro definition) enables callsites to use the semicolon plus else-statement syntax without problems. The new definition now requires the semicolon at all callsites, but since it was already being called that way nothing changes.
For more explanation, see https://gcc.gnu.org/onlinedocs/cpp/Swallowing-the-Semicolon.html