Skip to content

Commit cdef49c

Browse files
authored
[CIR][NFC] Reverse the polarity of RecordType complete/incomplete (#1563)
This change reverse the polarity of the cir::RecordType incomplete attribute, making the attribute name "complete" and reversing all checks in the code accordingly. The asm layout still prints "incomplete" for records that are not complete and treats the absence of this text as meaning that the definition provided is complete. No functional change is intended.
1 parent 4e7a223 commit cdef49c

File tree

3 files changed

+27
-27
lines changed

3 files changed

+27
-27
lines changed

clang/include/clang/CIR/Dialect/IR/CIRTypes.td

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,7 @@ def CIR_RecordType : CIR_Type<"Record", "record",
654654
let parameters = (ins
655655
OptionalArrayRefParameter<"mlir::Type">:$members,
656656
OptionalParameter<"mlir::StringAttr">:$name,
657-
"bool":$incomplete,
657+
"bool":$complete,
658658
"bool":$packed,
659659
"bool":$padded,
660660
"RecordType::RecordKind":$kind,
@@ -678,7 +678,7 @@ def CIR_RecordType : CIR_Type<"Record", "record",
678678
"RecordKind":$kind,
679679
CArg<"ASTRecordDeclInterface", "{}">:$ast
680680
), [{
681-
return $_get($_ctxt, members, name, /*incomplete=*/false, packed, padded,
681+
return $_get($_ctxt, members, name, /*complete=*/true, packed, padded,
682682
kind, ast);
683683
}]>,
684684

@@ -688,7 +688,7 @@ def CIR_RecordType : CIR_Type<"Record", "record",
688688
"RecordKind":$kind
689689
), [{
690690
return $_get($_ctxt, /*members=*/llvm::ArrayRef<Type>{}, name,
691-
/*incomplete=*/true, /*packed=*/false,
691+
/*complete=*/false, /*packed=*/false,
692692
/*padded=*/false, kind,
693693
/*ast=*/ASTRecordDeclInterface{});
694694
}]>,
@@ -701,7 +701,7 @@ def CIR_RecordType : CIR_Type<"Record", "record",
701701
"RecordKind":$kind,
702702
CArg<"ASTRecordDeclInterface", "{}">:$ast
703703
), [{
704-
return $_get($_ctxt, members, mlir::StringAttr{}, /*incomplete=*/false,
704+
return $_get($_ctxt, members, mlir::StringAttr{}, /*complete=*/true,
705705
packed, padded, kind, ast);
706706
}]>];
707707

@@ -713,8 +713,8 @@ def CIR_RecordType : CIR_Type<"Record", "record",
713713
bool isClass() const { return getKind() == RecordKind::Class; };
714714
bool isStruct() const { return getKind() == RecordKind::Struct; };
715715
bool isUnion() const { return getKind() == RecordKind::Union; };
716-
bool isComplete() const { return !isIncomplete(); };
717-
bool isIncomplete() const;
716+
bool isComplete() const;
717+
bool isIncomplete() const { return !isComplete(); };
718718

719719
void dropAst();
720720

clang/include/clang/CIR/Dialect/IR/CIRTypesDetails.h

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,56 +30,56 @@ struct RecordTypeStorage : public mlir::TypeStorage {
3030
struct KeyTy {
3131
llvm::ArrayRef<mlir::Type> members;
3232
mlir::StringAttr name;
33-
bool incomplete;
33+
bool complete;
3434
bool packed;
3535
bool padded;
3636
RecordType::RecordKind kind;
3737
ASTRecordDeclInterface ast;
3838

3939
KeyTy(llvm::ArrayRef<mlir::Type> members, mlir::StringAttr name,
40-
bool incomplete, bool packed, bool padded,
41-
RecordType::RecordKind kind, ASTRecordDeclInterface ast)
42-
: members(members), name(name), incomplete(incomplete), packed(packed),
40+
bool complete, bool packed, bool padded, RecordType::RecordKind kind,
41+
ASTRecordDeclInterface ast)
42+
: members(members), name(name), complete(complete), packed(packed),
4343
padded(padded), kind(kind), ast(ast) {}
4444
};
4545

4646
llvm::ArrayRef<mlir::Type> members;
4747
mlir::StringAttr name;
48-
bool incomplete;
48+
bool complete;
4949
bool packed;
5050
bool padded;
5151
RecordType::RecordKind kind;
5252
ASTRecordDeclInterface ast;
5353

5454
RecordTypeStorage(llvm::ArrayRef<mlir::Type> members, mlir::StringAttr name,
55-
bool incomplete, bool packed, bool padded,
55+
bool complete, bool packed, bool padded,
5656
RecordType::RecordKind kind, ASTRecordDeclInterface ast)
57-
: members(members), name(name), incomplete(incomplete), packed(packed),
57+
: members(members), name(name), complete(complete), packed(packed),
5858
padded(padded), kind(kind), ast(ast) {}
5959

6060
KeyTy getAsKey() const {
61-
return KeyTy(members, name, incomplete, packed, padded, kind, ast);
61+
return KeyTy(members, name, complete, packed, padded, kind, ast);
6262
}
6363

6464
bool operator==(const KeyTy &key) const {
6565
if (name)
6666
return (name == key.name) && (kind == key.kind);
6767
return (members == key.members) && (name == key.name) &&
68-
(incomplete == key.incomplete) && (packed == key.packed) &&
68+
(complete == key.complete) && (packed == key.packed) &&
6969
(padded == key.padded) && (kind == key.kind) && (ast == key.ast);
7070
}
7171

7272
static llvm::hash_code hashKey(const KeyTy &key) {
7373
if (key.name)
7474
return llvm::hash_combine(key.name, key.kind);
75-
return llvm::hash_combine(key.members, key.incomplete, key.packed,
76-
key.padded, key.kind, key.ast);
75+
return llvm::hash_combine(key.members, key.complete, key.packed, key.padded,
76+
key.kind, key.ast);
7777
}
7878

7979
static RecordTypeStorage *construct(mlir::TypeStorageAllocator &allocator,
8080
const KeyTy &key) {
8181
return new (allocator.allocate<RecordTypeStorage>()) RecordTypeStorage(
82-
allocator.copyInto(key.members), key.name, key.incomplete, key.packed,
82+
allocator.copyInto(key.members), key.name, key.complete, key.packed,
8383
key.padded, key.kind, key.ast);
8484
}
8585

@@ -97,7 +97,7 @@ struct RecordTypeStorage : public mlir::TypeStorage {
9797
return llvm::failure();
9898

9999
// Mutation of complete records are allowed if they change nothing.
100-
if (!incomplete)
100+
if (complete)
101101
return mlir::success((this->members == members) &&
102102
(this->packed == packed) &&
103103
(this->padded == padded) && (this->ast == ast));
@@ -108,7 +108,7 @@ struct RecordTypeStorage : public mlir::TypeStorage {
108108
this->ast = ast;
109109
this->padded = padded;
110110

111-
incomplete = false;
111+
complete = true;
112112
return llvm::success();
113113
}
114114
};

clang/lib/CIR/Dialect/IR/CIRTypes.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,10 @@ Type RecordType::parse(mlir::AsmParser &parser) {
172172
padded = true;
173173

174174
// Parse record members or lack thereof.
175-
bool incomplete = true;
175+
bool complete = false;
176176
llvm::SmallVector<mlir::Type> members;
177177
if (parser.parseOptionalKeyword("incomplete").failed()) {
178-
incomplete = false;
178+
complete = true;
179179
const auto delimiter = AsmParser::Delimiter::Braces;
180180
const auto parseElementFn = [&parser, &members]() {
181181
return parser.parseType(members.emplace_back());
@@ -195,15 +195,15 @@ Type RecordType::parse(mlir::AsmParser &parser) {
195195
// Try to create the proper record type.
196196
ArrayRef<mlir::Type> membersRef(members); // Needed for template deduction.
197197
mlir::Type type = {};
198-
if (name && incomplete) { // Identified & incomplete
198+
if (name && !complete) { // Identified & incomplete
199199
type = getChecked(eLoc, context, name, kind);
200-
} else if (name && !incomplete) { // Identified & complete
200+
} else if (name && complete) { // Identified & complete
201201
type = getChecked(eLoc, context, membersRef, name, packed, padded, kind);
202202
// If the record has a self-reference, its type already exists in a
203203
// incomplete state. In this case, we must complete it.
204204
if (mlir::cast<RecordType>(type).isIncomplete())
205205
mlir::cast<RecordType>(type).complete(membersRef, packed, padded, ast);
206-
} else if (!name && !incomplete) { // anonymous & complete
206+
} else if (!name && complete) { // anonymous & complete
207207
type = getChecked(eLoc, context, membersRef, packed, padded, kind);
208208
} else { // anonymous & incomplete
209209
parser.emitError(loc, "anonymous records must be complete");
@@ -282,11 +282,11 @@ ::llvm::ArrayRef<mlir::Type> RecordType::getMembers() const {
282282
return getImpl()->members;
283283
}
284284

285-
bool RecordType::isIncomplete() const { return getImpl()->incomplete; }
285+
bool RecordType::isComplete() const { return getImpl()->complete; }
286286

287287
mlir::StringAttr RecordType::getName() const { return getImpl()->name; }
288288

289-
bool RecordType::getIncomplete() const { return getImpl()->incomplete; }
289+
bool RecordType::getComplete() const { return getImpl()->complete; }
290290

291291
bool RecordType::getPacked() const { return getImpl()->packed; }
292292

0 commit comments

Comments
 (0)