clang 20.0.0git
CIRGenTypeCache.h
Go to the documentation of this file.
1//===--- CIRGenTypeCache.h - Commonly used LLVM types and info -*- C++ --*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This structure provides a set of common types useful during CIR emission.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_CLANG_LIB_CIR_CIRGENTYPECACHE_H
14#define LLVM_CLANG_LIB_CIR_CIRGENTYPECACHE_H
15
17
18namespace clang::CIRGen {
19
20/// This structure provides a set of types that are commonly used
21/// during IR emission. It's initialized once in CodeGenModule's
22/// constructor and then copied around into new CIRGenFunction's.
24 CIRGenTypeCache() = default;
25
26 // ClangIR void type
27 cir::VoidType VoidTy;
28
29 // ClangIR signed integral types of common sizes
30 cir::IntType SInt8Ty;
31 cir::IntType SInt16Ty;
32 cir::IntType SInt32Ty;
33 cir::IntType SInt64Ty;
34 cir::IntType SInt128Ty;
35
36 // ClangIR unsigned integral type of common sizes
37 cir::IntType UInt8Ty;
38 cir::IntType UInt16Ty;
39 cir::IntType UInt32Ty;
40 cir::IntType UInt64Ty;
41 cir::IntType UInt128Ty;
42
43 // ClangIR floating-point types with fixed formats
44 cir::FP16Type FP16Ty;
45 cir::BF16Type BFloat16Ty;
46 cir::SingleType FloatTy;
47 cir::DoubleType DoubleTy;
48 cir::FP80Type FP80Ty;
49 cir::FP128Type FP128Ty;
50};
51
52} // namespace clang::CIRGen
53
54#endif // LLVM_CLANG_LIB_CIR_CODEGEN_CIRGENTYPECACHE_H
This structure provides a set of types that are commonly used during IR emission.