Why GCC is big and complicated (my guess)

Article: MAQSIP-RT: An HPC Benchmark
By: Gabriele Svelto (gabriele.svelto.delete@this.gmail.com), June 28, 2010 4:00 am
Room: Moderated Discussions
Mark Roulo (nothanks@xxx.com) on 6/24/10 wrote:
---------------------------
>I suspect that one of the issues making GCC larger/more-complicated/harder-to-maintain
>is that the architectures that it supports are much more varied (weirder) as a group
>than any one is individually. The compiler internals have to handle the collective strangeness.

Yes but not only that. Admittedly the back-end design is quite old and convoluted but it is very solid, supports all kind of crazy architectures (*), is well documented and has a lot of implementations. Changing it has never been an option because it would require completely rewriting and re-testing *everything*. In spite of this it still gets some large, structural improvements from time to time (lately the register allocator was changed and significant improvements to the way conditions and branching were handled were made).

On top of that GCC has lots of front-ends too, many which also support significant extensions. What other compiler supports both very high level stuff like OpenMP or native compilation of Java on the front-end, polyhedral loop transformations in the architecture-independent optimizer as well as deeply embedded architectures like H8/300 in the back end? GCC code is as complex as the feature set is vast. I doubt that many other compilers would be much easier to maintain while still having the same feature set. In fact *no* other compiler compares with GCC in the breadth and depth of both language and target support.

>*) Unless you want a totally different instruction scheduler for each target architecture
>(and maybe you do ... maybe this is what GCC already does?), then you need some
>sort of super-set of all the constraints one can have when building instruction
>sequences (the branch-delay-slot is one example of this sort of constraint). The
>super-set is going to be more complicated than any one constraint set.

IIRC instruction scheduling is architecture independent but an architecture must provide its own model to make the scheduler do its work.

(*) When I say crazy architectures I mean real *crazy* stuff BTW. IA64 or old SPARC delay-slots are quite easy to handle. Supporting machines with sub-registers, a register bank that changes depending on the CPU status, accumulators or uneven pointer sizes (24-bit pointers anyone?) is much harder. GCC supports all of that stuff plus much more.
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
New article online: MAQSIP RTDavid Kanter2010/06/21 11:57 AM
  Why no GCC?Rohit2010/06/22 09:25 PM
    Why no GCC?David Kanter2010/06/23 12:45 AM
      sun 's cc better than GCC?Rohit2010/06/23 05:04 AM
        sun 's cc better than GCC?anon2010/06/23 07:49 AM
          Where is the GCC optimization effort directed?Mark Roulo2010/06/23 10:42 AM
            GCC is very ugly bad everywhere in 64 bitsVincent Diepeveen2010/06/23 02:49 PM
              even for 64-bit arch?anon2010/06/23 02:59 PM
              GCC is very ugly bad everywhere in 64 bitsajensen2010/06/23 11:03 PM
                GCC is very ugly bad everywhere in 64 bitsGabriele Svelto2010/06/24 02:33 AM
                  GCC is very ugly bad everywhere in 64 bitsajensen2010/06/24 05:32 AM
                    GCC is very ugly bad everywhere in 64 bitsGabriele Svelto2010/06/24 07:18 AM
                      GCC is very ugly bad everywhere in 64 bitsajensen2010/06/24 09:50 AM
                        Why GCC is big and complicated (my guess)Mark Roulo2010/06/24 12:17 PM
                          Why GCC is big and complicated (my guess)Gabriele Svelto2010/06/28 04:00 AM
                GCC is very ugly bad everywhere in 64 bitsBernd Schmidt2010/06/24 05:46 AM
                  GCC is very ugly bad everywhere in 64 bitsajensen2010/06/24 09:43 AM
                  GCC is very ugly bad everywhere in 64 bitsVincent Diepeveen2010/06/26 02:12 PM
                GCC is very ugly bad everywhere in 64 bitsRob Thorpe2010/06/24 07:47 AM
                  GCC is very ugly bad everywhere in 64 bitsAnon2010/06/24 05:23 PM
            Where is the GCC optimization effort directed?Gabriele Svelto2010/06/23 10:45 PM
              Where is the GCC optimization effort directed??2010/06/24 01:48 AM
                Where is the GCC optimization effort directed?Gabriele Svelto2010/06/24 02:29 AM
                  Where is the GCC optimization effort directed??2010/06/24 03:13 AM
                    Where is the GCC optimization effort directed?Andi Kleen2010/06/24 03:15 AM
                      Where is the GCC optimization effort directed??2010/06/24 04:08 AM
                    Where is the GCC optimization effort directed?Gabriele Svelto2010/06/24 03:54 AM
                      Where is the GCC optimization effort directed??2010/06/24 04:15 AM
                        Where is the GCC optimization effort directed?Gabriele Svelto2010/06/24 07:22 AM
                Where is the GCC optimization effort directed?Rohit2010/06/24 03:04 AM
                  Placebo effect?2010/06/24 06:37 AM
                    Placebo effectRohit2010/06/24 08:45 AM
                    Placebo effectVincent Diepeveen2010/06/26 02:50 PM
                      Compile timeMark Roulo2010/06/26 05:28 PM
                        Compile timeRichard Cownie2010/06/27 04:44 AM
                          Compile timeMark Roulo2010/06/27 10:12 AM
                          Compile timeMark Roulo2010/06/27 10:21 AM
                            Compile timeEduardoS2010/06/27 11:37 AM
                            Compile timeRichard Cownie2010/06/27 04:07 PM
                              Compile time & efficiency?2010/06/28 12:03 AM
                                Compile time & efficiencyMark Christiansen2010/06/28 06:08 AM
                                Compile time & efficiencyLinus Torvalds2010/06/28 07:48 AM
                                  kernel programming languageJohn Simon2010/06/29 06:46 PM
                                Compile time & efficiencyRichard Cownie2010/06/28 09:29 AM
                                  Compile time & efficiencyLinus Torvalds2010/06/28 11:17 AM
                                    Compile time & efficiencyRichard Cownie2010/06/28 02:16 PM
                                      Compile time & efficiencyRichard Cownie2010/06/28 06:23 PM
                                        Compile time & efficiencyMark Roulo2010/06/29 08:31 AM
                                          Compile time & efficiencyRichard Cownie2010/06/29 11:48 AM
                                          Compile time & efficiencyrwessel2010/06/29 12:28 PM
                                            C is a crappydev2010/06/29 07:12 PM
                                              C is a crappy, but only when you push it out of it's nicheRohit2010/06/30 02:11 AM
                                              C is a crappyanon2010/06/30 02:17 AM
                                                C is a crappydev2010/06/30 07:59 AM
                                                  C is a crappyMax2010/07/01 04:30 AM
                                                    C is a crappyMichael S2010/07/01 07:00 AM
                                                      C is a crappyKonrad Schwarz2010/07/01 08:02 AM
                                                        C is a crappyMichael S2010/07/01 08:50 AM
                                                          C isn't so crappyanon2010/07/01 10:11 AM
                                                            C isn't so crappyMikael Tillenius2010/07/01 11:39 AM
                                                          C is a crappyKonrad Schwarz2010/07/01 11:22 AM
                                                          C is a crappyMax2010/07/02 08:44 AM
                                                            C is a crappyrwessel2010/07/02 12:33 PM
                                                              C is a crappyanon2010/07/02 01:17 PM
                                                              C is a crappyMax2010/07/02 02:56 PM
                                                                C is a crappyMax2010/07/02 03:13 PM
                                                                  C is a crappyrwessel2010/07/02 03:32 PM
                                                                    C is a crappyMax2010/07/02 04:19 PM
                                                                    C is a crappyGabriele Svelto2010/07/05 05:25 AM
                                                      C is a crappygallier22010/07/02 12:14 AM
                                                    C is a crappyIan Ollmann2010/07/06 03:07 PM
                                                      PortabilityMax2010/07/06 03:37 PM
                                                      C is a crappyhobold2010/07/07 02:31 AM
                                                        C is a crappyIan Ollmann2010/07/07 05:18 PM
                                                      failure to standardize typesCarlie Coats2010/07/07 04:11 AM
                                                      C is a crappyKonrad Schwarz2010/07/07 08:34 AM
                                                        C is a crappyIan Ollmann2010/07/07 05:29 PM
                                                          C is a crappy NOTKonrad Schwarz2010/07/08 12:29 AM
                                                  C is a crappyanon2010/07/01 10:40 PM
                                                    C type safety?2010/07/02 01:10 AM
                                                      C type safetyanon2010/07/02 11:02 PM
                                                    C is a crappydev2010/07/03 04:51 PM
                                                      C is a crappyanon2010/07/03 07:02 PM
                                                        C is a crappydev2010/07/05 07:27 AM
                                                          C is a crappy?2010/07/05 09:05 AM
                                                            C is a crappyanonymous2010/07/07 08:32 AM
                                                              C is a crappy?2010/07/07 10:48 PM
                                                              C is a crappyAnon2010/07/08 12:53 AM
                                                      C is a crappy and a crappie is a fishanonymous2010/07/03 07:24 PM
                                      Compile time & efficiencyMichael S2010/06/29 03:18 AM
                                        Compile time & efficiencyrwessel2010/06/29 12:20 PM
                                        Compile time & efficiencysomeone2010/06/30 11:03 AM
                                        Compile time & efficiencyJouni Osmala2010/07/02 05:29 AM
                                  Compile time & efficiencyMax2010/06/28 05:05 PM
                                    Compile time & efficiencyEduardoS2010/06/28 05:11 PM
                                    Compile time & efficiencyMichael S2010/06/29 03:33 AM
                              Compile timeFoo_2010/06/28 09:03 AM
          sun 's cc better than GCC?Silent2010/06/23 06:19 PM
            sun 's cc better than GCC?Foo_2010/06/23 07:06 PM
          sun 's cc better than GCC?Andi Kleen2010/06/24 02:49 AM
        sun 's versus gccVincent Diepeveen2010/06/23 03:07 PM
    Why no GCC?Carlie Coats2010/06/23 05:11 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell avocado?