Skip to content

Commit cf40fde

Browse files
committed
[mlir] Don't emit forward declaration for user defined storage classes
Currently DefGen::emitDecl always emits forward declarations of storage classes even for user define ones, which makes it difficult to use template class directly in ODS. This patch changes `DefGen` not to emit forward decl when `genStorageClass` is false. Original discussion: https://discourse.llvm.org/t/use-template-classes-as-user-defined-storage-classes/72015 Reviewed By: mehdi_amini, rriddle Differential Revision: https://reviews.llvm.org/D155225
1 parent 3a9683f commit cf40fde

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

flang/include/flang/Optimizer/Dialect/FIRType.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ namespace fir {
2222
class FIROpsDialect;
2323
class KindMapping;
2424
using KindTy = unsigned;
25+
26+
namespace detail {
27+
struct RecordTypeStorage;
28+
} // namespace detail
29+
2530
} // namespace fir
2631

2732
//===----------------------------------------------------------------------===//

mlir/include/mlir/IR/BuiltinAttributes.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ class Location;
3131
class Operation;
3232
class RankedTensorType;
3333

34+
namespace detail {
35+
struct DenseIntOrFPElementsAttrStorage;
36+
struct DenseStringElementsAttrStorage;
37+
struct StringAttrStorage;
38+
} // namespace detail
39+
3440
//===----------------------------------------------------------------------===//
3541
// Elements Attributes
3642
//===----------------------------------------------------------------------===//

mlir/include/mlir/IR/BuiltinTypes.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ class RankedTensorType;
3232
class StringAttr;
3333
class TypeRange;
3434

35+
namespace detail {
36+
struct FunctionTypeStorage;
37+
struct IntegerTypeStorage;
38+
struct TupleTypeStorage;
39+
} // namespace detail
40+
3541
//===----------------------------------------------------------------------===//
3642
// FloatType
3743
//===----------------------------------------------------------------------===//

mlir/tools/mlir-tblgen/AttrOrTypeDefGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class DefGen {
6767
DefGen(const AttrOrTypeDef &def);
6868

6969
void emitDecl(raw_ostream &os) const {
70-
if (storageCls) {
70+
if (storageCls && def.genStorageClass()) {
7171
NamespaceEmitter ns(os, def.getStorageNamespace());
7272
os << "struct " << def.getStorageClassName() << ";\n";
7373
}

0 commit comments

Comments
 (0)