Skip to main content

Timeline for Why are there so few C compilers?

Current License: CC BY-SA 4.0

41 events
when toggle format what by license comment
Jan 6, 2019 at 17:06 history edited Basile Starynkevitch CC BY-SA 4.0
mention Chisnall paper
Dec 2, 2017 at 12:44 comment added Peter Cordes Out-of-order execution does make instruction scheduling much less important than in the past (or present where in-order ARM is still a thing, and Knight's Corner Xeon Phi uses in-order cores, like Atom pre-silvermont. But mainstream x86 is all out-of-order, even low-power Silvermont has a small OoO window). Robust front-ends in modern CPUs (like Sandybridge-family) again make ordering to avoid fetch/decode problems not usually an issue. Moving independent instructions around without changing the pattern of dependencies usually has only a tiny effect, if any.
Oct 26, 2017 at 7:49 comment added Basile Starynkevitch They don't need it but they take advantage of it. Bad ordering of instruction would slow down the processor pipeline.
Oct 26, 2017 at 7:12 comment added gnasher729 Modern x86 processors don’t need instruction scheduling created by the compiler, nor does POWER.
Oct 25, 2017 at 17:07 history edited Robert Harvey CC BY-SA 3.0
edited body
S Oct 25, 2017 at 15:49 history suggested Dana Robinson CC BY-SA 3.0
Yanked extraneous sup tag around a paragraph.
Oct 25, 2017 at 15:49 review Suggested edits
S Oct 25, 2017 at 15:49
Jan 4, 2016 at 6:03 history edited Basile Starynkevitch CC BY-SA 3.0
added 63 characters in body
Jan 3, 2016 at 21:49 comment added Basile Starynkevitch No, most of GCC code is in middle-end, and that is both independent of source language and of target processor. More than a half of GCC is middle-end, a quarter is all the front-ends, and a quarter is the back-ends. C++ parsing is less than 20% of GCC.
Jan 3, 2016 at 20:40 comment added Lightness Races in Orbit "In particular, making a C++ compiler is not much harder than making a C compiler" You must be joking.
Jul 3, 2015 at 5:17 history edited Basile Starynkevitch CC BY-SA 3.0
mention size of GCC & LLVM
Feb 21, 2015 at 6:53 comment added Basile Starynkevitch When you look into GIMPLE (or Gimple/SSA) most of the representation is common to C & C++, however, GIMPLE addad some instructions for C++ exceptions.
Feb 20, 2015 at 23:09 comment added Voo @Basile What MSalters is saying is that C++ code will generate different intermediate language than what equivalent C code would. Sure everybody works on some form of SSA, etc. these days, but that doesn't change much. To use MSalter's example: If the compiler has to assume that two variables might alias it will have to reload one after writing to the other - if the c++ code allows the compiler to conclude that they can't, this will lead to different SSA form.
Feb 20, 2015 at 12:17 comment added Basile Starynkevitch But both GCC & LLVM are operating on much lower representations, and they optimize likewise C++ & C (& Ada & Fortran, for GCC) code. I would on the contrary say that C++ requires more optimization (notably when compiling code using its STL) than C!
Feb 20, 2015 at 12:12 comment added MSalters @BasileStarynkevitch: C++ actually helps in at least two ways: making more code (longer instruction sequences) available to the optimizer, and reducing false aliasing (char* aliases everything, std::string virtually nothing). The optimizer may be shared, but it works on different inputs.
Feb 20, 2015 at 10:36 history edited Basile Starynkevitch CC BY-SA 3.0
added 122 characters in body
Feb 20, 2015 at 10:31 history edited Basile Starynkevitch CC BY-SA 3.0
added 426 characters in body
Feb 20, 2015 at 8:18 history edited Basile Starynkevitch CC BY-SA 3.0
added 151 characters in body
Feb 20, 2015 at 5:38 comment added Basile Starynkevitch @RobertHarvey: in practice both GCC & LLVM are optimizing a quite low level common internal representation, so I don't think that C++ helps...
Feb 20, 2015 at 1:38 vote accept CommunityBot
S Feb 19, 2015 at 23:10 history suggested Kyle Jones CC BY-SA 3.0
minor phrasing changes to make the article more euphonious
Feb 19, 2015 at 22:55 review Suggested edits
S Feb 19, 2015 at 23:10
Feb 19, 2015 at 20:11 comment added Robert Harvey Optimizing C++ might actually be easier than optimizing C, since C++ contains mechanisms that are designed to be optimized.
Feb 19, 2015 at 18:38 comment added Basile Starynkevitch But for many translation units, their compilation last long enough to make parallel compilation worthwhile (even if extremely difficult to do)
Feb 19, 2015 at 18:36 comment added jamesqf Re no parallel/multithreaded C compilers, perhaps this is because most people break their projects into many independent files, which can be compiled in parallel with "make -j".
Feb 19, 2015 at 16:06 comment added MSalters @MasonWheeler: VS is given away for free nowadays (as in beer). The non-free versions add tooling, but the C compiler in VS2013 is the same in all versions. There just isn't a market, not even for them.
Feb 19, 2015 at 13:09 comment added Davidmh There are many proprietary compilers in the HPC world. PGCC, NAG, and ICC are the most widely used.
Feb 19, 2015 at 10:24 history edited Basile Starynkevitch CC BY-SA 3.0
added 21 characters in body
Feb 19, 2015 at 10:23 comment added Basile Starynkevitch Microsoft has a monopoly. I meant that small companies developing new C compilers won't sell a lot of them. Can you name a recent proprietary competitor to MSVC?
Feb 19, 2015 at 10:15 comment added Mason Wheeler (there is no more a market for proprietary compilers Tell that to the Visual Studio team...
Feb 19, 2015 at 10:00 history edited Basile Starynkevitch CC BY-SA 3.0
added 52 characters in body
Feb 19, 2015 at 8:51 comment added Alex Celeste Could have sworn the docs claimed it did, but they don't... don't know where I got that idea now.
Feb 19, 2015 at 8:14 comment added Basile Starynkevitch But tinycc don't give at all gcc -O1 performance (but -O0 or worse)
Feb 19, 2015 at 8:08 comment added Alex Celeste Maybe I'm overestimating the number of people who still enjoy working in C as an app-level language enough to settle for the kind of -O1-or-worse performance a smaller compiler like TCC can give.
Feb 19, 2015 at 8:04 history edited Basile Starynkevitch CC BY-SA 3.0
added 12 characters in body
Feb 19, 2015 at 7:57 history edited Basile Starynkevitch CC BY-SA 3.0
added 400 characters in body
Feb 19, 2015 at 6:28 history edited Basile Starynkevitch CC BY-SA 3.0
added 86 characters in body
Feb 19, 2015 at 6:22 history edited Basile Starynkevitch CC BY-SA 3.0
added 106 characters in body
Feb 19, 2015 at 6:15 history edited Basile Starynkevitch CC BY-SA 3.0
added 122 characters in body
Feb 19, 2015 at 6:08 history edited Basile Starynkevitch CC BY-SA 3.0
added 305 characters in body
Feb 19, 2015 at 6:02 history answered Basile Starynkevitch CC BY-SA 3.0