[cfe-commits] [PATCH] Adding TCE target to Clang
Eli Friedman
eli.friedman at gmail.com
Mon Aug 17 12:05:53 PDT 2009
2009/8/17 Mikael Lepistö <mikael.lepisto at tut.fi>:
> Hi,
>
> I added the comment as requested in llvm-commits list. Patch adds support to
> Clang for compiling C code with TCE compatible type sizes and alignments.
> TCE further uses the bitcode to generate target program and processor
> description. TCE is publicly (currently with MIT licence) available ASP
> design environment.
Detailed comments on the patch:
+ class TCETargetInfo : public TargetInfo{
+ public:
+ TCETargetInfo(const std::string& triple) : TargetInfo(triple) {
+ TLSSupported = false;
+ IntWidth = 32;
+ LongWidth = LongLongWidth = 32;
Making "long long" 32 bits is not compliant with C99; that said, it's
your choice. (I'm double-checking because it looks like you mostly
copied the PIC16 target, which is an unusual target.)
+ FloatFormat = &llvm::APFloat::IEEEsingle;
+ DoubleFormat = &llvm::APFloat::IEEEsingle;
Making "double" an IEEE single is not compliant with C99, but again,
your choice.
+ virtual uint64_t getPointerWidthV(unsigned AddrSpace) const { return 32; }
+ virtual uint64_t getPointerAlignV(unsigned AddrSpace) const { return 32; }
These are identical to the default implementation.
+ virtual void getTargetDefines(const LangOptions &Opts,
+ std::vector<char> &Defines) const {
+ Define(Defines, "tce");
This should check something like "if (Opts.GNUMode)", like DefineStd
does. Alternatively, you could just use DefineStd here, although that
has slightly different behavior.
+ virtual const char *getVAListDeclaration() const { return "";}
You don't support using stdarg.h?
+ virtual bool useGlobalsForAutomaticVariables() const {return true;}
Do you know what this does? If so, it's fine, but if not you should remove it.
-Eli
More information about the cfe-commits
mailing list