Question

For my own education I am curious what compilers use which C++ front-end and back-end. Can you enlighten me where the following technologies are used and what hallmarks/advantages they have if any?

  • Open64 - is it back-end, front-end, or both? Which compilers use it? I encounter it in CUDA compiler.

  • EDG - as far as I can tell this is a front-end use by Intel compilers and Comeau. do other compilers use it? I found quite a few references to it in boost source code.

  • ANTLR - this is general parser. Do any common compilers use it?

Regarding compilers:

  • with front-end/back-end does gcc compiler suite uses? does it have common heritage with any other compiler?

  • what front-end/back-end PGI and PathScale compilers use?

  • what front-end/back-end XL compiler uses (IBM offering).

in-depth links on the Internet or your personal know-how would be great. I did some Google searching, but information I generally encountered was rather superficial.

Thanks.

Was it helpful?

Solution

EDG is a front-end used by Intel and Comeau. See EDG's list of customers for other users.

ANTLR is a parser generator. I'm not aware of any C++ compiler built around a parser that was built with ANTLR (that doesn't mean it couldn't exist though).

GCC is a suite of compilers, with front ends for C, C++, Fortran, Ada, Java, etc., and back-ends for more processors than I'd care to think about.

Open64 is also a suite of compilers including several front-ends (for C, C++, Fortran, and possibly others I don't remember at the moment) and back-ends (targeting X64, Itanium, ARM, and, again, probably others I don't remember and/or don't know about). I believe its origin (pun noted by not intended) is SGI's compiler(s). I seem to remember reading something hinting that Open64 was derived from some version of the GCC front end(s), but offhand I don't know 1) how similar it remains to GCC internally, or 2) the version of GCC from which it derived -- but it's been around long enough that I'd guess it was GCC 3.x at the most recent, and quite possibly GCC 2.x.

I believe PathScale has created at least one compiler derived from Open64, but they may have others as well.

As far as I know, IBM's compiler is entirely their own creation. I'd guess IBM's (now discontinued) VisualAge for C++ shared some heritage/development/code with XL C++, but don't know that for sure, and can't even begin to guess at the extent of it, even assuming it's true.

OTHER TIPS

The Clang project provides new front-ends for C/C++/Objective C on top of the LLVM backend. The LLVM project also provide a LLVM-gcc, using the GCC front end and the LLVM backend. The DragonEgg project seeks to replace the GCC backend with LLVM.

The Codeplay VectorC, Sieve and Offload compilers use a custom front-end and back-end

with front-end/backend does gcc compiler suite uses? does it have common heritage with any other compiler?

The acronym “GCC” stands for “GNU compiler collection” (originally “GNU C compiler”) and this already gives a hint: GNU compilers are a collection of compilers, most notably for C and C++ but also for Fortran, Objective-C and others. They share a common back-end and intermediate representation that was developed for GCC specifically.

The front-ends are all custom-written for the GCC. Some were contributed by third parties, most notably the Objective-C front-end, which was contributed by Apple.

Visual studio uses EDG for its intellisense engine.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top