On Fri, Jun 21, 2013 at 3:24 PM, Argyrios Kyrtzidis <[email protected]> wrote: > +struct Test2 { > + struct { > + struct { > +//CHECK64: FieldDecl=foo:[[@LINE+1]]:11 (Definition) [type=int] > [typekind=Int] [sizeof=4] [alignof=4] [offsetof=0] > + int foo; > + }; > + struct { > +//CHECK64: FieldDecl=bar:[[@LINE+1]]:11 (Definition) [type=int] > [typekind=Int] [sizeof=4] [alignof=4] [offsetof=32] > + int bar; > + }; > + struct { > + struct { > +//CHECK64: FieldDecl=foobar:[[@LINE+1]]:15 (Definition) [type=int] > [typekind=Int] [sizeof=4] [alignof=4] [offsetof=64] > + int foobar; > + }; > + }; > + struct inner { > + struct { > +//CHECK64: FieldDecl=mybar:[[@LINE+1]]:15 (Definition) [type=int] > [typekind=Int] [sizeof=4] [alignof=4] [offsetof=0] > + int mybar; > + }; > +//CHECK64: FieldDecl=mole:[[@LINE+1]]:7 (Definition) [type=struct inner] > [typekind=Unexposed] [sizeof=4] [alignof=4] [offsetof=96] > + } mole; > + }; > +}; > > > This struct is invalid: > tools/clang/test/Index/print-type-size.cpp:77:12: error: types cannot > be declared in an anonymous struct > struct inner { > ^ > > I noticed because it trips an assert I added to > ASTContext::getASTRecordLayout (asserting that the decl is valid). How > deeply do you care about this particular part of the test case? Can I > remove it, or is there a particular fix I should apply? > > I have a patch which adds some invalid-decl checks to > clang_Type_getOffsetOf, but it breaks all of the existing test cases > which explicitly exercise invalid structs (not to mention Test2 > above). It's obviously important that we don't crash on those inputs, > but I'm not sure I see the value of checking for any particular > output. > > Thoughts? > > > I suggest adding the invalid-decl checks and leaving an invalid struct in > the test to make sure libclang does not hit the assertion; the rest can be > turned into valid decls so that the checks can work.
Great. I've taken the proverbial hatchet to the CHECKs in that test and added a new little case that resembles the original crasher; patch attached, please review. -Matt
c-index-record-layout.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
