1259701Sdim//==--- CodeGenABITypes.cpp - Convert Clang types to LLVM types for ABI ----==// 2259701Sdim// 3259701Sdim// The LLVM Compiler Infrastructure 4259701Sdim// 5259701Sdim// This file is distributed under the University of Illinois Open Source 6259701Sdim// License. See LICENSE.TXT for details. 7259701Sdim// 8259701Sdim//===----------------------------------------------------------------------===// 9259701Sdim// 10259701Sdim// CodeGenABITypes is a simple interface for getting LLVM types for 11259701Sdim// the parameters and the return value of a function given the Clang 12259701Sdim// types. 13259701Sdim// 14259701Sdim// The class is implemented as a public wrapper around the private 15259701Sdim// CodeGenTypes class in lib/CodeGen. 16259701Sdim// 17259701Sdim//===----------------------------------------------------------------------===// 18259701Sdim 19259701Sdim#include "clang/CodeGen/CodeGenABITypes.h" 20259701Sdim 21259701Sdim#include "clang/CodeGen/CGFunctionInfo.h" 22259701Sdim#include "CodeGenModule.h" 23259701Sdim 24259701Sdimusing namespace clang; 25259701Sdimusing namespace CodeGen; 26259701Sdim 27259701SdimCodeGenABITypes::CodeGenABITypes(ASTContext &C, 28259701Sdim const CodeGenOptions &CodeGenOpts, 29259701Sdim llvm::Module &M, 30259701Sdim const llvm::DataLayout &TD, 31259701Sdim DiagnosticsEngine &Diags) 32259701Sdim : CGM(new CodeGen::CodeGenModule(C, CodeGenOpts, M, TD, Diags)) { 33259701Sdim} 34259701Sdim 35259701SdimCodeGenABITypes::~CodeGenABITypes() 36259701Sdim{ 37259701Sdim delete CGM; 38259701Sdim} 39259701Sdim 40259701Sdimconst CGFunctionInfo & 41259701SdimCodeGenABITypes::arrangeObjCMessageSendSignature(const ObjCMethodDecl *MD, 42259701Sdim QualType receiverType) { 43259701Sdim return CGM->getTypes().arrangeObjCMessageSendSignature(MD, receiverType); 44259701Sdim} 45259701Sdim 46259701Sdimconst CGFunctionInfo & 47259701SdimCodeGenABITypes::arrangeFreeFunctionType(CanQual<FunctionProtoType> Ty) { 48259701Sdim return CGM->getTypes().arrangeFreeFunctionType(Ty); 49259701Sdim} 50259701Sdim 51259701Sdimconst CGFunctionInfo & 52259701SdimCodeGenABITypes::arrangeFreeFunctionType(CanQual<FunctionNoProtoType> Ty) { 53259701Sdim return CGM->getTypes().arrangeFreeFunctionType(Ty); 54259701Sdim} 55259701Sdim 56259701Sdimconst CGFunctionInfo & 57259701SdimCodeGenABITypes::arrangeCXXMethodType(const CXXRecordDecl *RD, 58259701Sdim const FunctionProtoType *FTP) { 59259701Sdim return CGM->getTypes().arrangeCXXMethodType(RD, FTP); 60259701Sdim} 61259701Sdim 62259701Sdimconst CGFunctionInfo & 63259701SdimCodeGenABITypes::arrangeLLVMFunctionInfo(CanQualType returnType, 64259701Sdim llvm::ArrayRef<CanQualType> argTypes, 65259701Sdim FunctionType::ExtInfo info, 66259701Sdim RequiredArgs args) { 67259701Sdim return CGM->getTypes().arrangeLLVMFunctionInfo(returnType, argTypes, 68259701Sdim info, args); 69259701Sdim} 70