1

I'm not sure if this is a subjective question, I hope not but I'm not proficient with LLVM so I'm just wondering: how come it's become so popular and so widespread used in the industry?

Were the optimization algorithms used in gcc/icc/msvc just worse than the LLVM ones? Is it possible that a university project managed to outperform such known and long-standing compilers? I know that LLVM is modular, but can then a design be the cause of that much success?

I can't understand the real reasons behind that, this is also probably related to a subjective question like "is the success of a software always related to a new or semi-new algorithm that speeds something up?" but I'd like to get objective reasons to my first question if possible

user122592
  • 19
  • 1
  • 3
    I'd rather attribute the LLVM's success to its *permissive license*. LLVM's “killer app“ is certainly the Clang compiler, primarily developed by Apple, for strategic reasons: Objective-C support is no priority for GCC, and GCC uses the “copyleft” GPL. – amon Mar 07 '14 at 23:18
  • 1
    @amon: Those are two good reasons. I would add that the ability to provide different language front-ends and the ability to target different cpu's are extremely useful and valuable capabilities of the LLVM infrastructure. – Robert Harvey Mar 07 '14 at 23:33
  • @RobertHarvey But that's in no way unique to the LLVM. GCC is a *compiler collection* which has ~8 frontends for different languages and almost two dozen backends for different CPUs. The difference is that LLVM is easier to extend (e.g. with new frontends, with new optimization passes). But the technological advantage alone is not big enough to switch from GCC to LLVM. For *other* compilers that lack this flexibility, there would certainly be a good argument here – but Clang effectively competes against GCC, not against Microsoft's compilers. – amon Mar 08 '14 at 00:11

1 Answers1

3

The license of LLVM is more acceptable to some companies, thus creating a greater current critical mass of corporate sponsored/paid development of the tool suite for certain architectures/languages.

The division between compiler components/front/back/ends has a cleaner (resulting from being newer) specification in LLVM, and thus presents a lower hurdle for new developers.

The effect of the new algorithms was that research implementers needed a place to put them to experiment with them without digging through as much legacy compiler architecture, which may be another reason for the newer specified modularity.

hotpaw2
  • 7,938
  • 4
  • 21
  • 47