This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Using C++ within a backend?

Hi all,

Since I need to use the type-checking system designed for the architecture I'm 
porting gcc to, I'll need to use C++ code from my backend (the library I have 
to link to is written in C++). I thought this might be a good idea to write 
as much of the backend as possible in C++, and define the needed functions as 
extern "C". This might not be a good idea for bootstrapping but is fine in my 
case anyway, since I only want a basic cross-compiler.

Problem is, g++ (3.2.3 here) doesn't seem to like gcc's include files. 
Whenever I include rtl.h for instance, I get:

../../gcc-3.2.2-camille/gcc/rtl.h:109: declaration of 
config.h:8: changes meaning of `rtx' from `typedef struct rtx_def*rtx'
../../gcc-3.2.2-camille/gcc/rtl.h:110: declaration of `
config.h:10: changes meaning of `rtvec' from `typedef struct rtvec_def*rtvec'

Effectively, line 109 of rtl.h is
  rtx rtx;

Which I understand cause problems to g++.

I've thought of working this around by writing C code when necessary and C++ 
when possible, but it would involves making messy wrappers. Another solution 
would be to say g++ to treat a part of the program as pure C, this I haven't 
found neither. Putting the includes within an extern "C" clause doesn't help, 
and the doc doesn't mention a command-line option that would make g++ more 
permissive with the code.

I'm also surprised I haven't found anything about this topic in the archives - 
I'd have bet this was a common question. Has somebody here messed up with C++ 
in the backend and could advice me? Is it possible to safely include gcc's 
include files from a C++ file?

Thanks for any advice!

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]