Hi Jingwen,

This is the same GCC which in recent versions produces something like two dozen 
extraneous, useless, no-op instructions when doing a simple 64-bit math 
operation on 32-bit systems, and does not use SSE properly either. In each 
major release these problems get worse. The code generator is clearly in a 
state of slow degradation, starting about GCC version 5 or 6--not 
coincidentally the same time when the major version numbers started 
increasingly so rapidly, although it really has been junk since the beginning.

Stefan Kanthak hammered this point home numerous times on this list, much to 
the ire of people like Jonathan Wakely who called him a noob, telling him to 
"go file a bug" in a filing cabinet in some obscure corner of a disused 
lavatory so that it can be safely ignored, and so on. 

It seems that if correct code generation and optimization is important to you 
(as it should be), GCC is NOT the compiler to be using. I'm all the time 
discovering new and crazy problems with this convoluted pile of junk. My recent 
foray into bootstrapping GNAT (ADA) has opened up yet another can of worms. 
It's broken on GCC 10, and even more broken on GCC 9, and this despite 30+ 
years of development. 

Sometimes these days I even blame GCC when it wasn't at fault after all, 
because it's making itself into more and more of a likely suspect as the years 
go by.

I haven't examined the code output of Clang to see how it compares, but it's 
worth serious investigation. 

Dave

Reply via email to