15#include "llvm/Support/ErrorHandling.h"
21class LowerMicrosoftCXXABI :
public CIRCXXABI {
23 LowerMicrosoftCXXABI(LowerModule &lm) : CIRCXXABI(lm) {}
26 lowerDataMemberType(cir::DataMemberType type,
27 const mlir::TypeConverter &typeConverter)
const override {
28 llvm_unreachable(
"Microsoft ABI member pointer lowering NYI");
32 lowerMethodType(cir::MethodType type,
33 const mlir::TypeConverter &typeConverter)
const override {
34 llvm_unreachable(
"Microsoft ABI method pointer lowering NYI");
37 mlir::TypedAttr lowerDataMemberConstant(
38 cir::DataMemberAttr attr,
const mlir::DataLayout &layout,
39 const mlir::TypeConverter &typeConverter)
const override {
40 llvm_unreachable(
"Microsoft ABI member pointer lowering NYI");
43 mlir::TypedAttr lowerDataMemberOffsetConstant(
44 cir::DataMemberOffsetAttr attr,
const mlir::DataLayout &layout,
45 const mlir::TypeConverter &typeConverter)
const override {
46 llvm_unreachable(
"Microsoft ABI member pointer lowering NYI");
50 lowerMethodConstant(cir::MethodAttr attr,
const mlir::DataLayout &layout,
51 const mlir::TypeConverter &typeConverter)
const override {
52 llvm_unreachable(
"Microsoft ABI method pointer lowering NYI");
56 lowerGetRuntimeMember(cir::GetRuntimeMemberOp op, mlir::Type loweredResultTy,
57 mlir::Value loweredAddr, mlir::Value loweredMember,
58 mlir::OpBuilder &builder)
const override {
59 llvm_unreachable(
"Microsoft ABI member pointer lowering NYI");
63 lowerGetMethod(cir::GetMethodOp op, mlir::Value &callee, mlir::Value &thisArg,
64 mlir::Value loweredMethod, mlir::Value loweredObjectPtr,
65 mlir::ConversionPatternRewriter &rewriter)
const override {
66 llvm_unreachable(
"Microsoft ABI method pointer lowering NYI");
69 mlir::Value lowerBaseDataMember(cir::BaseDataMemberOp op,
70 mlir::Value loweredSrc,
71 mlir::OpBuilder &builder)
const override {
72 llvm_unreachable(
"Microsoft ABI member pointer lowering NYI");
75 mlir::Value lowerDerivedDataMember(cir::DerivedDataMemberOp op,
76 mlir::Value loweredSrc,
77 mlir::OpBuilder &builder)
const override {
78 llvm_unreachable(
"Microsoft ABI member pointer lowering NYI");
81 mlir::Value lowerBaseMethod(cir::BaseMethodOp op, mlir::Value loweredSrc,
82 mlir::OpBuilder &builder)
const override {
83 llvm_unreachable(
"Microsoft ABI method pointer lowering NYI");
86 mlir::Value lowerDerivedMethod(cir::DerivedMethodOp op,
87 mlir::Value loweredSrc,
88 mlir::OpBuilder &builder)
const override {
89 llvm_unreachable(
"Microsoft ABI method pointer lowering NYI");
92 mlir::Value lowerDataMemberCmp(cir::CmpOp op, mlir::Value loweredLhs,
93 mlir::Value loweredRhs,
94 mlir::OpBuilder &builder)
const override {
95 llvm_unreachable(
"Microsoft ABI member pointer lowering NYI");
98 mlir::Value lowerMethodCmp(cir::CmpOp op, mlir::Value loweredLhs,
99 mlir::Value loweredRhs,
100 mlir::OpBuilder &builder)
const override {
101 llvm_unreachable(
"Microsoft ABI method pointer lowering NYI");
104 mlir::Value lowerDataMemberBitcast(cir::CastOp op, mlir::Type loweredDstTy,
105 mlir::Value loweredSrc,
106 mlir::OpBuilder &builder)
const override {
107 llvm_unreachable(
"Microsoft ABI member pointer lowering NYI");
111 lowerDataMemberToBoolCast(cir::CastOp op, mlir::Value loweredSrc,
112 mlir::OpBuilder &builder)
const override {
113 llvm_unreachable(
"Microsoft ABI member pointer lowering NYI");
116 mlir::Value lowerMethodBitcast(cir::CastOp op, mlir::Type loweredDstTy,
117 mlir::Value loweredSrc,
118 mlir::OpBuilder &builder)
const override {
119 llvm_unreachable(
"Microsoft ABI method pointer lowering NYI");
122 mlir::Value lowerMethodToBoolCast(cir::CastOp op, mlir::Value loweredSrc,
123 mlir::OpBuilder &builder)
const override {
124 llvm_unreachable(
"Microsoft ABI method pointer lowering NYI");
127 mlir::Value lowerDynamicCast(cir::DynamicCastOp op,
128 mlir::OpBuilder &builder)
const override {
129 llvm_unreachable(
"Microsoft ABI dynamic cast lowering NYI");
132 mlir::Value lowerVTableGetTypeInfo(cir::VTableGetTypeInfoOp op,
133 mlir::OpBuilder &builder)
const override {
134 llvm_unreachable(
"Microsoft ABI vtable get type info lowering NYI");
138 getArrayCookieSizeImpl(mlir::Type elementType,
139 const mlir::DataLayout &dataLayout)
const override {
140 llvm_unreachable(
"Microsoft ABI array cookie lowering NYI");
143 mlir::Value readArrayCookieImpl(mlir::Location loc, mlir::Value allocPtr,
144 clang::CharUnits cookieSize,
145 clang::CharUnits cookieAlignment,
146 const mlir::DataLayout &dataLayout,
147 CIRBaseBuilderTy &builder)
const override {
148 llvm_unreachable(
"Microsoft ABI array cookie lowering NYI");
155 return std::make_unique<LowerMicrosoftCXXABI>(lm);
std::unique_ptr< CIRCXXABI > createMicrosoftCXXABI(LowerModule &lm)
Creates a Microsoft-family ABI.