[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