30 nov 2009 kl. 15.26 skrev Mike Stump:

> On Nov 30, 2009, at 11:43 AM, Anders Carlsson wrote:
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/CGVtable.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/CGVtable.cpp Mon Nov 30 13:43:26 2009
>> @@ -867,8 +867,8 @@
>>  const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase();
>> 
>>  if (PrimaryBase) {
>> -    assert(PrimaryBase->isCanonicalDecl() && 
>> -           "Should have the canonical decl of the primary base!");
>> +    assert(PrimaryBase->isDefinition() && 
>> +           "Should have the definition decl of the primary base!");
> 
> The mental model I was using was that we are playing with canonical types 
> through this entire file.  The assert was to ensure that was true.  By 
> stepping back to a non-canonical type, I fear we'll just discover much later 
> on we're in the weeds when something went wrong.  I think I'd rather have a 
> switch to the canonical type, or change the primary to be canonical during 
> record layout.

I added that assert a couple of days ago :) While I do agree that it's best to 
try to work with canonical types and decls, the problem is that a canonical 
CXXRecordDecl might not have the definition:

class A;

class A { virtual void f(); };

and in this case it's probably best to operate on the definition decls.

Anders

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to