Morten Ofstad | 1 Dec 2004 15:10
Picon
Favicon

GetElementPtr for packed types and VS build

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
(Continue reading)

Chris Lattner | 1 Dec 2004 18:34

Re: GetElementPtr for packed types and VS build

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
(Continue reading)


Gmane