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 |