[Fwd: [LLVMdev] GetElementPtr for packed types and VS build]

Chris Lattner sabre at nondot.org
Fri Dec 3 08:32:36 PST 2004


On Fri, 3 Dec 2004, Reid Spencer wrote:

> This needs to be applied as well.

This was already applied.

-Chris

> -----Forwarded Message-----
> > From: Morten Ofstad <morten at hue.no>
> > To: LLVM Developers Mailing List <llvmdev at cs.uiuc.edu>
> > Subject: [LLVMdev] GetElementPtr for packed types and VS build
> > Date: Wed, 01 Dec 2004 15:10:49 +0100
> >
> > As I was working with packed types it became apparent that I sometimes
> > need to access individual elements - I fixed this by implementing GEP
> > for packed types with just 2 small patches.
> >
> > When I updated from the CVS today after about 2 weeks, I got a lot of
> > problems with the VS build. I will send the updated project files
> > directly to Reid so he can check them in as they are rather large. There
> > is also one more issue which prevents the CVS version from compiling -
> > in lib/ExecutionEngine/JIT/JITEmitter.cpp line 266 there is:
> >
> > if (GlobalVariable *GV = dyn_cast<GlobalVariable>(V)) {
> >      GlobalVariable *GV = cast<GlobalVariable>(V);
> >      .
> >      .
> >
> > This is obviously nonsense and is an error with the VS compiler since GV
> > is being defined twice in the same scope using it's non-standard scoping
> > rules. Just delete the line with the cast and it's fine...
> >
> > m.
> >
> >
> > ______________________________________________________________________
> > Index: lib/Target/TargetData.cpp
> > ===================================================================
> > RCS file: /var/cvs/llvm/llvm/lib/Target/TargetData.cpp,v
> > retrieving revision 1.53
> > diff -u -r1.53 TargetData.cpp
> > --- lib/Target/TargetData.cpp	2 Nov 2004 22:18:18 -0000	1.53
> > +++ lib/Target/TargetData.cpp	26 Nov 2004 09:46:45 -0000
> > @@ -175,6 +175,13 @@
> >      Size = AlignedSize*ATy->getNumElements();
> >      return;
> >    }
> > +  case Type::PackedTyID: {
> > +    const PackedType *PTy = cast<PackedType>(Ty);
> > +    getTypeInfo(PTy->getElementType(), TD, Size, Alignment);
> > +    unsigned AlignedSize = (Size + Alignment - 1)/Alignment*Alignment;
> > +    Size = AlignedSize*PTy->getNumElements();
> > +    return;
> > +  }
> >    case Type::StructTyID: {
> >      // Get the layout annotation... which is lazily created on demand.
> >      const StructLayout *Layout = TD->getStructLayout(cast<StructType>(Ty));
> > Index: lib/VMCore/Type.cpp
> > ===================================================================
> > RCS file: /var/cvs/llvm/llvm/lib/VMCore/Type.cpp,v
> > retrieving revision 1.119
> > diff -u -r1.119 Type.cpp
> > --- lib/VMCore/Type.cpp	19 Nov 2004 16:39:44 -0000	1.119
> > +++ lib/VMCore/Type.cpp	1 Dec 2004 11:33:46 -0000
> > @@ -151,6 +151,9 @@
> >    if (const ArrayType *ATy = dyn_cast<ArrayType>(this))
> >      return ATy->getElementType()->isSized();
> >
> > +  if (const PackedType *PTy = dyn_cast<PackedType>(this))
> > +    return PTy->getElementType()->isSized();
> > +
> >    if (!isa<StructType>(this)) return false;
> >
> >    // Okay, our struct is sized if all of the elements are...
> >
> > ______________________________________________________________________
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
>

-Chris

-- 
http://nondot.org/sabre/
http://llvm.cs.uiuc.edu/




More information about the llvm-dev mailing list