3 ms·
One of the GCC 3.3.x releases (possibly 6?) was completely broken if you attempted to build from source because they applied some last minute patches that didn'
by AlotOfReading 4y ago
One of the GCC 3.3.x releases (possibly 6?) was completely broken if you attempted to build from source because they applied some last minute patches that didn't compile on most systems and never tested it.
That said, the reputation in those days was that the compiler was essentially perfect circa GCC 2.7, and the rewrite to support C99 created innumerable bugs that would never be fixed, especially if you used that sketchy -O2 option. -O0 for correctness and -O1 for ahem, "speed".
It took awhile to get back there, but mainstream compilers are probably the most correct and reliable software in common use today, often exceeding large parts of the OS they're running on. It's only with weird, obscure targets and new features that you tend to run into the rough edges that are actually broken.
- unnah 4y agoI would bet that a substantial fraction of the rumoured GCC 3 bugs were originally caused by undefined behaviour in the compiled source, as new advanced compiler optimizations were being introduced in the GCC 3 series. (On the other hand, those newly introduced optimizations likely did have many bugs to begin with...) At the time of GCC 2.7, no one really expected pointer access through the wrong type or signed integer overflow to cause anything weird. The CPU would just read whatever was in memory at the pointed address, and integers would wrap around just like in assembly.