I really want to disagree. Assuming the code is correct:
- proper handling of system calls and EINTR,
- do not call illegal functions in signal handlers,
- proper synchronization to avoid race conditions,
- etc.
it will work just fine.
The problems with today's systems does not lie in compilers. It lies in vastly increased complexity of the code itself.
Back in 96 we had a few sprites, with some animation sequence, sound effects. State of an object was kept in a few integers. Collisions were done using really stupid algorithm that would probe special mask in level builder with a circle consisting of 16 points, so we can get a vector pointing away from the wall. Etc.
Today, collisions, physics, presentation - all this is thousands of times more complex. More code, more bugs, more issues.
For that reason, it would be very difficult to write keyboard-state driven multiplayer today.
Unfortunately, many of the edge cases that cause non-deterministic behavior have gotten substantially more exploited by compilers since then.