1//==--- CodeGenABITypes.cpp - Convert Clang types to LLVM types for ABI ----==// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// CodeGenABITypes is a simple interface for getting LLVM types for 11// the parameters and the return value of a function given the Clang 12// types. 13// 14// The class is implemented as a public wrapper around the private 15// CodeGenTypes class in lib/CodeGen. 16// 17//===----------------------------------------------------------------------===// 18 19#include "clang/CodeGen/CodeGenABITypes.h" 20#include "CodeGenModule.h" 21#include "clang/CodeGen/CGFunctionInfo.h" 22#include "clang/Frontend/CodeGenOptions.h" 23#include "clang/Lex/HeaderSearchOptions.h" 24#include "clang/Lex/PreprocessorOptions.h" 25 26using namespace clang; 27using namespace CodeGen; 28 29const CGFunctionInfo & 30CodeGen::arrangeObjCMessageSendSignature(CodeGenModule &CGM, 31 const ObjCMethodDecl *MD, 32 QualType receiverType) { 33 return CGM.getTypes().arrangeObjCMessageSendSignature(MD, receiverType); 34} 35 36const CGFunctionInfo & 37CodeGen::arrangeFreeFunctionType(CodeGenModule &CGM, 38 CanQual<FunctionProtoType> Ty, 39 const FunctionDecl *FD) { 40 return CGM.getTypes().arrangeFreeFunctionType(Ty, FD); 41} 42 43const CGFunctionInfo & 44CodeGen::arrangeFreeFunctionType(CodeGenModule &CGM, 45 CanQual<FunctionNoProtoType> Ty) { 46 return CGM.getTypes().arrangeFreeFunctionType(Ty); 47} 48 49const CGFunctionInfo & 50CodeGen::arrangeCXXMethodType(CodeGenModule &CGM, 51 const CXXRecordDecl *RD, 52 const FunctionProtoType *FTP, 53 const CXXMethodDecl *MD) { 54 return CGM.getTypes().arrangeCXXMethodType(RD, FTP, MD); 55} 56 57const CGFunctionInfo & 58CodeGen::arrangeFreeFunctionCall(CodeGenModule &CGM, 59 CanQualType returnType, 60 ArrayRef<CanQualType> argTypes, 61 FunctionType::ExtInfo info, 62 RequiredArgs args) { 63 return CGM.getTypes().arrangeLLVMFunctionInfo( 64 returnType, /*IsInstanceMethod=*/false, /*IsChainCall=*/false, argTypes, 65 info, {}, args); 66} 67