On Mon, 25 Jul 2005, Daniel Berlin wrote:
On Mon, 2005-07-25 at 14:01 +0400, Vladimir A. Merzliakov wrote:
Hi all,
Are there any open-source(or free) front-end which translates C++ to C?
I could find some commercial things - Comeau, AT&T Cfront, etc., but
these have many limitations(especially, It's too difficult to get cfront
because there are few cfront-based compiler at present)
LLVM ( http://llvm.cs.uiuc.edu/ ) ?
It use modified gcc 3.4 as C/C++ frontend and it can emits portable C code.
Depends what you mean by portable.
You can't take the output of the gcc llvm frontend on one platform, and
run it on another, like cfront could.
The sizes, alignments, etc, of things will be different, where people
use sizeof(x), etc, in their code. Unless you hacked up the C frontend
to give you sizeof_expr, etc.
It isn't portable in that sense. Like Tom Tromey mentions, anything that
deals with code that comes out of the preprocessor isn't "portable" in
that way.
It is portable in the sense of being able to use any standard ANSI C
compiler to compile the code, which gives you a pretty portable C++
implementation. We have had quite a few people say they are using LLVM as
a replacement for old and out-dated CFront-based vendor C++ front-ends.
Using LLVM in this way allows them to use the GCC 3.4 parser and libstdc++
which is usually far better than what they are dealing with. Getting IPO
and the other advantages that LLVM provides is just a perk that people
with embedded devices (or other systems with constrained resources)
particularly enjoy.
-Chris
--
http://nondot.org/sabre/
http://llvm.org/