Structure alignment

%FIRSTSTRU = type { i32, double, i32, i8* }

struct {
  int var1;
  double var2;
  int var3;
  char *var4;
}firstStru ;

Could someone help?
If, running a application in windows with MSVC, I allocate a memmory buffer and call a LLVM
function with such buffer, there's a structure alignment problem.
If the LLVM function call a C function using the same buffer, it runs fine.
Any ideas?

Thanks,

Manoel Teixeira

You're probably passing in the wrong string to the TargetData; try
something like the following:
target datalayout =
"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"

-Eli

Hello

%FIRSTSTRU = type { i32, double, i32, i8* }

struct {
int var1;
double var2;
int var3;
char *var4;
}firstStru ;

LLVM type is not equivalent to mentioned C struct type. You need to
insert padding field into LLVM type.

Manoel Teixeira wrote:

%FIRSTSTRU = type { i32, double, i32, i8* }

struct {
  int var1;
  double var2;
  int var3;
  char *var4;
}firstStru ;

Could someone help? If, running a application in windows with MSVC, I allocate a memmory buffer and call a LLVM function with such buffer, there's a structure alignment problem.
If the LLVM function call a C function using the same buffer, it runs fine.
Any ideas?

I think it's best if you send the bitcode produced by llvm-gcc/clang.

Ciao,

Duncan.