Specifically, it fails when clang is built without asserts... On Mon, Mar 26, 2012 at 13:24, Chandler Carruth <[email protected]> wrote: > Yea, it's failing for us too... > > On Mon, Mar 26, 2012 at 1:16 PM, Bill Wendling <[email protected]> wrote: >> >> Hi Kostya, >> >> This is failing on our buildbots. Could you investigate, please? >> >> (view as text) >> ******************** TEST 'Clang :: CodeGen/tbaa-for-vptr.cpp' FAILED >> ********************Script: >> -- >> >> /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-R/clang-build/Release/bin/clang >> -cc1 -internal-isystem >> /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-R/clang-build/Release/bin/../lib/clang/3.1/include >> -emit-llvm -o - -O1 >> /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-R/clang.src/test/CodeGen/tbaa-for-vptr.cpp >> | FileCheck >> /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-R/clang.src/test/CodeGen/tbaa-for-vptr.cpp >> -- >> Exit Code: 1 >> Command Output (stderr): >> -- >> >> /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-R/clang.src/test/CodeGen/tbaa-for-vptr.cpp:16:11: >> error: expected string not found in input >> // CHECK: %vtable = load {{.*}} !tbaa !0 >> ^ >> <stdin>:1:1: note: scanning from here >> ; ModuleID = >> '/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-R/clang.src/test/CodeGen/tbaa-for-vptr.cpp' >> ^ >> <stdin>:28:32: note: possible intended match here >> %2 = load i32 (%struct.A*)*** %1, align 8, !tbaa !0 >> ^ >> -- >> >> ******************** >> >> >> -bw >> >> On Mar 26, 2012, at 10:03 AM, Kostya Serebryany <[email protected]> wrote: >> >> > Author: kcc >> > Date: Mon Mar 26 12:03:51 2012 >> > New Revision: 153447 >> > >> > URL: http://llvm.org/viewvc/llvm-project?rev=153447&view=rev >> > Log: >> > add tbaa metadata to vtable pointer loads/stores >> > >> > Added: >> > cfe/trunk/test/CodeGen/tbaa-for-vptr.cpp >> > Modified: >> > cfe/trunk/lib/CodeGen/CGClass.cpp >> > cfe/trunk/lib/CodeGen/CodeGenModule.cpp >> > cfe/trunk/lib/CodeGen/CodeGenModule.h >> > cfe/trunk/lib/CodeGen/CodeGenTBAA.cpp >> > cfe/trunk/lib/CodeGen/CodeGenTBAA.h >> > >> > Modified: cfe/trunk/lib/CodeGen/CGClass.cpp >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGClass.cpp?rev=153447&r1=153446&r2=153447&view=diff >> > >> > ============================================================================== >> > --- cfe/trunk/lib/CodeGen/CGClass.cpp (original) >> > +++ cfe/trunk/lib/CodeGen/CGClass.cpp Mon Mar 26 12:03:51 2012 >> > @@ -1514,7 +1514,8 @@ >> > llvm::Type *AddressPointPtrTy = >> > VTableAddressPoint->getType()->getPointerTo(); >> > VTableField = Builder.CreateBitCast(VTableField, AddressPointPtrTy); >> > - Builder.CreateStore(VTableAddressPoint, VTableField); >> > + llvm::StoreInst *Store = Builder.CreateStore(VTableAddressPoint, >> > VTableField); >> > + CGM.DecorateInstruction(Store, CGM.getTBAAInfoForVTablePtr()); >> > } >> > >> > void >> > @@ -1597,7 +1598,9 @@ >> > llvm::Value *CodeGenFunction::GetVTablePtr(llvm::Value *This, >> > llvm::Type *Ty) { >> > llvm::Value *VTablePtrSrc = Builder.CreateBitCast(This, >> > Ty->getPointerTo()); >> > - return Builder.CreateLoad(VTablePtrSrc, "vtable"); >> > + llvm::Instruction *VTable = Builder.CreateLoad(VTablePtrSrc, >> > "vtable"); >> > + CGM.DecorateInstruction(VTable, CGM.getTBAAInfoForVTablePtr()); >> > + return VTable; >> > } >> > >> > static const CXXRecordDecl *getMostDerivedClassDecl(const Expr *Base) { >> > >> > Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=153447&r1=153446&r2=153447&view=diff >> > >> > ============================================================================== >> > --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) >> > +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Mon Mar 26 12:03:51 2012 >> > @@ -182,6 +182,12 @@ >> > return TBAA->getTBAAInfo(QTy); >> > } >> > >> > +llvm::MDNode *CodeGenModule::getTBAAInfoForVTablePtr() { >> > + if (!TBAA) >> > + return 0; >> > + return TBAA->getTBAAInfoForVTablePtr(); >> > +} >> > + >> > void CodeGenModule::DecorateInstruction(llvm::Instruction *Inst, >> > llvm::MDNode *TBAAInfo) { >> > Inst->setMetadata(llvm::LLVMContext::MD_tbaa, TBAAInfo); >> > >> > Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=153447&r1=153446&r2=153447&view=diff >> > >> > ============================================================================== >> > --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original) >> > +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Mon Mar 26 12:03:51 2012 >> > @@ -448,6 +448,7 @@ >> > bool shouldUseTBAA() const { return TBAA != 0; } >> > >> > llvm::MDNode *getTBAAInfo(QualType QTy); >> > + llvm::MDNode *getTBAAInfoForVTablePtr(); >> > >> > bool isTypeConstant(QualType QTy, bool ExcludeCtorDtor); >> > >> > >> > Modified: cfe/trunk/lib/CodeGen/CodeGenTBAA.cpp >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenTBAA.cpp?rev=153447&r1=153446&r2=153447&view=diff >> > >> > ============================================================================== >> > --- cfe/trunk/lib/CodeGen/CodeGenTBAA.cpp (original) >> > +++ cfe/trunk/lib/CodeGen/CodeGenTBAA.cpp Mon Mar 26 12:03:51 2012 >> > @@ -179,3 +179,7 @@ >> > // For now, handle any other kind of type conservatively. >> > return MetadataCache[Ty] = getChar(); >> > } >> > + >> > +llvm::MDNode *CodeGenTBAA::getTBAAInfoForVTablePtr() { >> > + return getTBAAInfoForNamedType("vtable pointer", getRoot()); >> > +} >> > >> > Modified: cfe/trunk/lib/CodeGen/CodeGenTBAA.h >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenTBAA.h?rev=153447&r1=153446&r2=153447&view=diff >> > >> > ============================================================================== >> > --- cfe/trunk/lib/CodeGen/CodeGenTBAA.h (original) >> > +++ cfe/trunk/lib/CodeGen/CodeGenTBAA.h Mon Mar 26 12:03:51 2012 >> > @@ -68,6 +68,10 @@ >> > /// getTBAAInfo - Get the TBAA MDNode to be used for a dereference >> > /// of the given type. >> > llvm::MDNode *getTBAAInfo(QualType QTy); >> > + >> > + /// getTBAAInfoForVTablePtr - Get the TBAA MDNode to be used for a >> > + /// dereference of a vtable pointer. >> > + llvm::MDNode *getTBAAInfoForVTablePtr(); >> > }; >> > >> > } // end namespace CodeGen >> > >> > Added: cfe/trunk/test/CodeGen/tbaa-for-vptr.cpp >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/tbaa-for-vptr.cpp?rev=153447&view=auto >> > >> > ============================================================================== >> > --- cfe/trunk/test/CodeGen/tbaa-for-vptr.cpp (added) >> > +++ cfe/trunk/test/CodeGen/tbaa-for-vptr.cpp Mon Mar 26 12:03:51 2012 >> > @@ -0,0 +1,19 @@ >> > +// RUN: %clang_cc1 -emit-llvm -o - -O1 %s | FileCheck %s >> > +// Check that we generate TBAA for vtable pointer loads and stores. >> > +struct A { >> > + virtual int foo() const ; >> > + virtual ~A(); >> > +}; >> > + >> > +void CreateA() { >> > + new A; >> > +} >> > + >> > +void CallFoo(A *a) { >> > + a->foo(); >> > +} >> > + >> > +// CHECK: %vtable = load {{.*}} !tbaa !0 >> > +// CHECK: store {{.*}} !tbaa !0 >> > +// CHECK: !0 = metadata !{metadata !"vtable pointer", metadata !1} >> > +// CHECK: !1 = metadata !{metadata !"Simple C/C++ TBAA", null} >> > >> > >> > _______________________________________________ >> > 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 > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
