[cfe-commits] r117638 - in /cfe/trunk/lib/AST: CXXABI.h ItaniumCXXABI.cpp MicrosoftCXXABI.cpp

Charles Davis cdavis at mines.edu
Thu Oct 28 20:25:12 PDT 2010


Author: cdavis
Date: Thu Oct 28 22:25:11 2010
New Revision: 117638

URL: http://llvm.org/viewvc/llvm-project?rev=117638&view=rev
Log:
Add a hook to the CXXABI object to get the default method calling convention.
This isn't used yet, because someone more experienced than I needs to look
at the type system about gutting getCanonicalCallConv().

Modified:
    cfe/trunk/lib/AST/CXXABI.h
    cfe/trunk/lib/AST/ItaniumCXXABI.cpp
    cfe/trunk/lib/AST/MicrosoftCXXABI.cpp

Modified: cfe/trunk/lib/AST/CXXABI.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/CXXABI.h?rev=117638&r1=117637&r2=117638&view=diff
==============================================================================
--- cfe/trunk/lib/AST/CXXABI.h (original)
+++ cfe/trunk/lib/AST/CXXABI.h Thu Oct 28 22:25:11 2010
@@ -15,6 +15,8 @@
 #ifndef LLVM_CLANG_AST_CXXABI_H
 #define LLVM_CLANG_AST_CXXABI_H
 
+#include "clang/AST/Type.h"
+
 namespace clang {
 
 class ASTContext;
@@ -28,6 +30,9 @@
   /// Returns the size of a member pointer in multiples of the target
   /// pointer size.
   virtual unsigned getMemberPointerSize(const MemberPointerType *MPT) const = 0;
+
+  /// Returns the default calling convention for C++ methods.
+  virtual CallingConv getDefaultMethodCallConv() const = 0;
 };
 
 /// Creates an instance of a C++ ABI class.

Modified: cfe/trunk/lib/AST/ItaniumCXXABI.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumCXXABI.cpp?rev=117638&r1=117637&r2=117638&view=diff
==============================================================================
--- cfe/trunk/lib/AST/ItaniumCXXABI.cpp (original)
+++ cfe/trunk/lib/AST/ItaniumCXXABI.cpp Thu Oct 28 22:25:11 2010
@@ -35,6 +35,10 @@
     if (Pointee->isFunctionType()) return 2;
     return 1;
   }
+
+  CallingConv getDefaultMethodCallConv() const {
+    return CC_C;
+  }
 };
 
 class ARMCXXABI : public ItaniumCXXABI {

Modified: cfe/trunk/lib/AST/MicrosoftCXXABI.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftCXXABI.cpp?rev=117638&r1=117637&r2=117638&view=diff
==============================================================================
--- cfe/trunk/lib/AST/MicrosoftCXXABI.cpp (original)
+++ cfe/trunk/lib/AST/MicrosoftCXXABI.cpp Thu Oct 28 22:25:11 2010
@@ -13,6 +13,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "CXXABI.h"
+#include "clang/Basic/TargetInfo.h"
 #include "clang/AST/ASTContext.h"
 #include "clang/AST/Type.h"
 #include "clang/AST/DeclCXX.h"
@@ -26,6 +27,13 @@
   MicrosoftCXXABI(ASTContext &Ctx) : Context(Ctx) { }
 
   unsigned getMemberPointerSize(const MemberPointerType *MPT) const;
+
+  CallingConv getDefaultMethodCallConv() const {
+    if (Context.Target.getTriple().getArch() == llvm::Triple::x86)
+      return CC_X86ThisCall;
+    else
+      return CC_C;
+  }
 };
 }
 





More information about the cfe-commits mailing list