[LLVMdev] GetElementPtr for packed types and VS build

Chris Lattner sabre at nondot.org
Wed Dec 1 09:34:42 PST 2004


On Wed, 1 Dec 2004, Morten Ofstad wrote:

> 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.

Yup, makes sense.

> 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

Ok

> 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);

Fixed.

I've applied both of your patches:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20041129/021529.html
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20041129/021531.html

However, I don't think the second one is correct.  In particular, packed
types often have greater alignment requirements than the underlying type.
With SSE-enabled X86, for example, float requires 32-bit alignment and <4
x float> requires 128-bit alignment.  Your patch is clearly better than
what we had before, but I think the right solution is to add a new
instance variable to TargetData to indicate the alignment of the target
packed types.  In general a target can have multiple SIMD sizes and
alignment restrictions, but just allowing them to specify one for now
should be fine.

-Chris

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




More information about the llvm-dev mailing list