Skip to content

Commit f1d23b3

Browse files
committed
Revert unintended clang/codegen changes
1 parent 5f2fd84 commit f1d23b3

File tree

1 file changed

+13
-47
lines changed

1 file changed

+13
-47
lines changed

clang/lib/CodeGen/CGClass.cpp

Lines changed: 13 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,7 @@ CharUnits CodeGenModule::computeNonVirtualBaseClassOffset(
180180
// Get the layout.
181181
const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
182182

183-
const auto *BaseDecl =
184-
cast<CXXRecordDecl>(
185-
Base->getType()->castAs<RecordType>()->getOriginalDecl())
186-
->getDefinitionOrSelf();
187-
183+
const auto *BaseDecl = Base->getType()->castAsCXXRecordDecl();
188184
// Add the offset.
189185
Offset += Layout.getBaseClassOffset(BaseDecl);
190186

@@ -302,9 +298,7 @@ Address CodeGenFunction::GetAddressOfBaseClass(
302298
// *start* with a step down to the correct virtual base subobject,
303299
// and hence will not require any further steps.
304300
if ((*Start)->isVirtual()) {
305-
VBase = cast<CXXRecordDecl>(
306-
(*Start)->getType()->castAs<RecordType>()->getOriginalDecl())
307-
->getDefinitionOrSelf();
301+
VBase = (*Start)->getType()->castAsCXXRecordDecl();
308302
++Start;
309303
}
310304

@@ -559,10 +553,7 @@ static void EmitBaseInitializer(CodeGenFunction &CGF,
559553

560554
Address ThisPtr = CGF.LoadCXXThisAddress();
561555

562-
const Type *BaseType = BaseInit->getBaseClass();
563-
const auto *BaseClassDecl =
564-
cast<CXXRecordDecl>(BaseType->castAs<RecordType>()->getOriginalDecl())
565-
->getDefinitionOrSelf();
556+
const auto *BaseClassDecl = BaseInit->getBaseClass()->castAsCXXRecordDecl();
566557

567558
bool isBaseVirtual = BaseInit->isBaseVirtual();
568559

@@ -1267,10 +1258,7 @@ namespace {
12671258

12681259
static bool isInitializerOfDynamicClass(const CXXCtorInitializer *BaseInit) {
12691260
const Type *BaseType = BaseInit->getBaseClass();
1270-
const auto *BaseClassDecl =
1271-
cast<CXXRecordDecl>(BaseType->castAs<RecordType>()->getOriginalDecl())
1272-
->getDefinitionOrSelf();
1273-
return BaseClassDecl->isDynamicClass();
1261+
return BaseType->castAsCXXRecordDecl()->isDynamicClass();
12741262
}
12751263

12761264
/// EmitCtorPrologue - This routine generates necessary code to initialize
@@ -1377,10 +1365,7 @@ HasTrivialDestructorBody(ASTContext &Context,
13771365
if (I.isVirtual())
13781366
continue;
13791367

1380-
const CXXRecordDecl *NonVirtualBase =
1381-
cast<CXXRecordDecl>(
1382-
I.getType()->castAs<RecordType>()->getOriginalDecl())
1383-
->getDefinitionOrSelf();
1368+
const auto *NonVirtualBase = I.getType()->castAsCXXRecordDecl();
13841369
if (!HasTrivialDestructorBody(Context, NonVirtualBase,
13851370
MostDerivedClassDecl))
13861371
return false;
@@ -1389,10 +1374,7 @@ HasTrivialDestructorBody(ASTContext &Context,
13891374
if (BaseClassDecl == MostDerivedClassDecl) {
13901375
// Check virtual bases.
13911376
for (const auto &I : BaseClassDecl->vbases()) {
1392-
const auto *VirtualBase =
1393-
cast<CXXRecordDecl>(
1394-
I.getType()->castAs<RecordType>()->getOriginalDecl())
1395-
->getDefinitionOrSelf();
1377+
const auto *VirtualBase = I.getType()->castAsCXXRecordDecl();
13961378
if (!HasTrivialDestructorBody(Context, VirtualBase,
13971379
MostDerivedClassDecl))
13981380
return false;
@@ -1408,13 +1390,10 @@ FieldHasTrivialDestructorBody(ASTContext &Context,
14081390
{
14091391
QualType FieldBaseElementType = Context.getBaseElementType(Field->getType());
14101392

1411-
const RecordType *RT = FieldBaseElementType->getAs<RecordType>();
1412-
if (!RT)
1393+
auto *FieldClassDecl = FieldBaseElementType->getAsCXXRecordDecl();
1394+
if (!FieldClassDecl)
14131395
return true;
14141396

1415-
auto *FieldClassDecl =
1416-
cast<CXXRecordDecl>(RT->getOriginalDecl())->getDefinitionOrSelf();
1417-
14181397
// The destructor for an implicit anonymous union member is never invoked.
14191398
if (FieldClassDecl->isUnion() && FieldClassDecl->isAnonymousStructOrUnion())
14201399
return true;
@@ -1907,11 +1886,7 @@ void CodeGenFunction::EnterDtorCleanups(const CXXDestructorDecl *DD,
19071886
// We push them in the forward order so that they'll be popped in
19081887
// the reverse order.
19091888
for (const auto &Base : ClassDecl->vbases()) {
1910-
auto *BaseClassDecl =
1911-
cast<CXXRecordDecl>(
1912-
Base.getType()->castAs<RecordType>()->getOriginalDecl())
1913-
->getDefinitionOrSelf();
1914-
1889+
auto *BaseClassDecl = Base.getType()->castAsCXXRecordDecl();
19151890
if (BaseClassDecl->hasTrivialDestructor()) {
19161891
// Under SanitizeMemoryUseAfterDtor, poison the trivial base class
19171892
// memory. For non-trival base classes the same is done in the class
@@ -2130,10 +2105,7 @@ void CodeGenFunction::EmitCXXAggrConstructorCall(const CXXConstructorDecl *ctor,
21302105
void CodeGenFunction::destroyCXXObject(CodeGenFunction &CGF,
21312106
Address addr,
21322107
QualType type) {
2133-
const RecordType *rtype = type->castAs<RecordType>();
2134-
const auto *record =
2135-
cast<CXXRecordDecl>(rtype->getOriginalDecl())->getDefinitionOrSelf();
2136-
const CXXDestructorDecl *dtor = record->getDestructor();
2108+
const CXXDestructorDecl *dtor = type->castAsCXXRecordDecl()->getDestructor();
21372109
assert(!dtor->isTrivial());
21382110
CGF.EmitCXXDestructorCall(dtor, Dtor_Complete, /*for vbase*/ false,
21392111
/*Delegating=*/false, addr, type);
@@ -2652,10 +2624,7 @@ void CodeGenFunction::getVTablePointers(BaseSubobject Base,
26522624

26532625
// Traverse bases.
26542626
for (const auto &I : RD->bases()) {
2655-
auto *BaseDecl = cast<CXXRecordDecl>(
2656-
I.getType()->castAs<RecordType>()->getOriginalDecl())
2657-
->getDefinitionOrSelf();
2658-
2627+
auto *BaseDecl = I.getType()->castAsCXXRecordDecl();
26592628
// Ignore classes without a vtable.
26602629
if (!BaseDecl->isDynamicClass())
26612630
continue;
@@ -2850,13 +2819,10 @@ void CodeGenFunction::EmitVTablePtrCheckForCast(QualType T, Address Derived,
28502819
if (!getLangOpts().CPlusPlus)
28512820
return;
28522821

2853-
auto *ClassTy = T->getAs<RecordType>();
2854-
if (!ClassTy)
2822+
const auto *ClassDecl = T->getAsCXXRecordDecl();
2823+
if (!ClassDecl)
28552824
return;
28562825

2857-
const auto *ClassDecl =
2858-
cast<CXXRecordDecl>(ClassTy->getOriginalDecl())->getDefinitionOrSelf();
2859-
28602826
if (!ClassDecl->isCompleteDefinition() || !ClassDecl->isDynamicClass())
28612827
return;
28622828

0 commit comments

Comments
 (0)