With GCC, with a very few exceptions (the removal of a few ill-thought-out language extensions in 4.0, the removal of 'traditional mode' for complexity, ill-definedness, and no-one-uses-it reasons), most code broken by new GCC releases was simply buggy all along, but GCC was incorrectly accepting it. GCC never supported C83, and nothing post-C89 has ever been removed (nor, likely, ever will be). C78 was never supported either: traditional mode supported C78 plus a bunch of common vendor extensions plus a *lot* of bugs because traditional mode was basically never used by anyone for anything for decades before its removal.