//===----- ABIInfo.h - ABI information access & encapsulation ---*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_LIB_CODEGEN_ABIINFO_H #define LLVM_CLANG_LIB_CODEGEN_ABIINFO_H #include "clang/AST/Attr.h" #include "clang/AST/CharUnits.h" #include "clang/AST/Type.h" #include "llvm/IR/CallingConv.h" #include "llvm/IR/Type.h" namespace llvm { class Value; class LLVMContext; class DataLayout; class Type; } // namespace llvm namespace clang { class ASTContext; class CodeGenOptions; class TargetInfo; namespace CodeGen { class ABIArgInfo; class Address; class CGCXXABI; class CGFunctionInfo; class CodeGenFunction; class CodeGenTypes; class RValue; class AggValueSlot; // FIXME: All of this stuff should be part of the target interface // somehow. It is currently here because it is not clear how to factor // the targets to support this, since the Targets currently live in a // layer below types n'stuff. /// ABIInfo - Target specific hooks for defining how a type should be /// passed or returned from functions. class ABIInfo { … }; /// Target specific hooks for defining how a type should be passed or returned /// from functions with one of the Swift calling conventions. class SwiftABIInfo { … }; } // end namespace CodeGen } // end namespace clang #endif