Looks like ddunbar just fixed it in r153460. On Mon, Mar 26, 2012 at 13:25, Matt Beaumont-Gay <[email protected]> wrote: > 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
