[cfe-commits] r153447 - in /cfe/trunk: lib/CodeGen/CGClass.cpp lib/CodeGen/CodeGenModule.cpp lib/CodeGen/CodeGenModule.h lib/CodeGen/CodeGenTBAA.cpp lib/CodeGen/CodeGenTBAA.h test/CodeGen/tbaa-for-vptr.cpp

Matt Beaumont-Gay matthewbg at google.com
Mon Mar 26 13:26:31 PDT 2012


Looks like ddunbar just fixed it in r153460.

On Mon, Mar 26, 2012 at 13:25, Matt Beaumont-Gay <matthewbg at google.com> wrote:
> Specifically, it fails when clang is built without asserts...
>
> On Mon, Mar 26, 2012 at 13:24, Chandler Carruth <chandlerc at google.com> wrote:
>> Yea, it's failing for us too...
>>
>> On Mon, Mar 26, 2012 at 1:16 PM, Bill Wendling <wendling at apple.com> 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 <kcc at google.com> 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
>>> > cfe-commits at cs.uiuc.edu
>>> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>>




More information about the cfe-commits mailing list