Thanks! On Mon, Sep 26, 2011 at 11:14 AM, Argyrios Kyrtzidis <[email protected]> wrote: > Author: akirtzidis > Date: Mon Sep 26 13:14:24 2011 > New Revision: 140542 > > URL: http://llvm.org/viewvc/llvm-project?rev=140542&view=rev > Log: > Fix assertion hit when @encoding C++ classes. rdar://10172840 & > http://llvm.org/PR10990 > > Modified: > cfe/trunk/lib/AST/ASTContext.cpp > cfe/trunk/test/CodeGenObjCXX/encode.mm > > Modified: cfe/trunk/lib/AST/ASTContext.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=140542&r1=140541&r2=140542&view=diff > ============================================================================== > --- cfe/trunk/lib/AST/ASTContext.cpp (original) > +++ cfe/trunk/lib/AST/ASTContext.cpp Mon Sep 26 13:14:24 2011 > @@ -4583,8 +4583,9 @@ > if (base->isEmpty()) > continue; > uint64_t offs = layout.getVBaseClassOffsetInBits(base); > - FieldOrBaseOffsets.insert(FieldOrBaseOffsets.upper_bound(offs), > - std::make_pair(offs, base)); > + if (FieldOrBaseOffsets.find(offs) == FieldOrBaseOffsets.end()) > + FieldOrBaseOffsets.insert(FieldOrBaseOffsets.end(), > + std::make_pair(offs, base)); > } > } > > > Modified: cfe/trunk/test/CodeGenObjCXX/encode.mm > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/encode.mm?rev=140542&r1=140541&r2=140542&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenObjCXX/encode.mm (original) > +++ cfe/trunk/test/CodeGenObjCXX/encode.mm Mon Sep 26 13:14:24 2011 > @@ -167,3 +167,23 @@ > > // CHECK: @_ZL2g5 = internal constant [32 x i8] > c"{basic_string={_Alloc_hider=*}}\00" > const char g5[] = @encode(basic_string); > + > + > +// PR10990 > +class CefBase { > + virtual ~CefBase() {} > +}; > +class CefBrowser : public virtual CefBase {}; > +class CefBrowserImpl : public CefBrowser {}; > +// CHECK: @_ZL2g6 = internal constant [21 x i8] c"{CefBrowserImpl=^^?}\00" > +const char g6[] = @encode(CefBrowserImpl); > + > +// PR10990_2 > +class CefBase2 { > + virtual ~CefBase2() {} > + int i; > +}; > +class CefBrowser2 : public virtual CefBase2 {}; > +class CefBrowserImpl2 : public CefBrowser2 {}; > +// CHECK: @_ZL2g7 = internal constant [26 x i8] > c"{CefBrowserImpl2=^^?^^?i}\00" > +const char g7[] = @encode(CefBrowserImpl2); > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
