Search code examples
c++compiler-constructionfrontendbackend

C++ compilers and back/front ends


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.


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.