GCC rarely, like never, supports the complete standards. Every release improves conformance, fixes errors, sometimes drops support for targets, perhaps changes how poorly defined areas work.
As a result, likely no version compiles code the same as a previous version across all possible code.
You’ll also note GCC doesn’t likely compile the variants of C++ it did before the 1998 version.
And this type of page is just the tip of the iceberg https://gcc.gnu.org/gcc-13/porting_to.html. You’ll note changes made that can render previously compilable code no longer compilable.
So no, you cannot naively think a new compiler version will simply run all your old code. On big projects upgrading is a huge endeavor to minimize problems.
We could do every supported language the same way.
GCC rarely, like never, supports the complete standards. Every release improves conformance, fixes errors, sometimes drops support for targets, perhaps changes how poorly defined areas work.
As a result, likely no version compiles code the same as a previous version across all possible code.
You’ll also note GCC doesn’t likely compile the variants of C++ it did before the 1998 version.
And this type of page is just the tip of the iceberg https://gcc.gnu.org/gcc-13/porting_to.html. You’ll note changes made that can render previously compilable code no longer compilable.
So no, you cannot naively think a new compiler version will simply run all your old code. On big projects upgrading is a huge endeavor to minimize problems.
We could do every supported language the same way.