@@ -1256,48 +1256,9 @@ static bool IsStructurallyEquivalent(StructuralEquivalenceContext &Context,
1256
1256
return false ;
1257
1257
}
1258
1258
1259
- if (Field1->isBitField () != Field2->isBitField ()) {
1260
- if (Context.Complain ) {
1261
- Context.Diag2 (
1262
- Owner2->getLocation (),
1263
- Context.getApplicableDiagnostic (diag::err_odr_tag_type_inconsistent))
1264
- << Context.ToCtx .getTypeDeclType (Owner2);
1265
- if (Field1->isBitField ()) {
1266
- Context.Diag1 (Field1->getLocation (), diag::note_odr_bit_field)
1267
- << Field1->getDeclName () << Field1->getType ()
1268
- << Field1->getBitWidthValue (Context.FromCtx );
1269
- Context.Diag2 (Field2->getLocation (), diag::note_odr_not_bit_field)
1270
- << Field2->getDeclName ();
1271
- } else {
1272
- Context.Diag2 (Field2->getLocation (), diag::note_odr_bit_field)
1273
- << Field2->getDeclName () << Field2->getType ()
1274
- << Field2->getBitWidthValue (Context.ToCtx );
1275
- Context.Diag1 (Field1->getLocation (), diag::note_odr_not_bit_field)
1276
- << Field1->getDeclName ();
1277
- }
1278
- }
1279
- return false ;
1280
- }
1281
-
1282
- if (Field1->isBitField ()) {
1283
- // Make sure that the bit-fields are the same length.
1284
- unsigned Bits1 = Field1->getBitWidthValue (Context.FromCtx );
1285
- unsigned Bits2 = Field2->getBitWidthValue (Context.ToCtx );
1286
-
1287
- if (Bits1 != Bits2) {
1288
- if (Context.Complain ) {
1289
- Context.Diag2 (Owner2->getLocation (),
1290
- Context.getApplicableDiagnostic (
1291
- diag::err_odr_tag_type_inconsistent))
1292
- << Context.ToCtx .getTypeDeclType (Owner2);
1293
- Context.Diag2 (Field2->getLocation (), diag::note_odr_bit_field)
1294
- << Field2->getDeclName () << Field2->getType () << Bits2;
1295
- Context.Diag1 (Field1->getLocation (), diag::note_odr_bit_field)
1296
- << Field1->getDeclName () << Field1->getType () << Bits1;
1297
- }
1298
- return false ;
1299
- }
1300
- }
1259
+ if (Field1->isBitField ())
1260
+ return IsStructurallyEquivalent (Context, Field1->getBitWidth (),
1261
+ Field2->getBitWidth ());
1301
1262
1302
1263
return true ;
1303
1264
}
0 commit comments