[LLVMdev] There are compiling errors when converting bytecode to c by LLC

Dmitry N. Mikushin maemarcus at gmail.com
Sat Oct 29 16:43:40 PDT 2011


Hi Fei Jia,

What revision are you using? I suggest you to try C backend with the
most recent LLVM version, if possible. I recall I had some similar C
backend breakages in July-August: structs definitions were lost
somewhere. To my understanding, the correct result should look like
this:

/* Typedefs */
typedef struct l_unnamed_0 l_unnamed_0;
typedef struct l_unnamed_1 l_unnamed_1;

/* Structure contents */
struct l_unnamed_0 {
  unsigned char array[12];
};

struct l_unnamed_1 {
  unsigned char array[13];
};

/* Global Variable Declarations */
static l_unnamed_0 _OC_cst;
static l_unnamed_1 _OC_cst1;

/* Global Variable Definitions and Initialization */
extern static l_unnamed_0 _OC_cst = { "hello world" };
extern static l_unnamed_1 _OC_cst1 = { "hello world1" };

- D.

2011/10/11 Fei Jia <j.jiafei at gmail.com>:
> I convert C to bytecode by LLVM, and then convert the bytecode back to C by
> LLC, but the generated C code cannot be compiled. Could anyone give me some
> suggestions? Thanks!
> The initial C file is rather simple (hello world):
>
> #include <stdio.h>
>
> int main() {
>
>         printf("hello world\n");
>
>         printf("hello world1\n");
>
>         return 0;
>
> }
>
> The two commands:
>
> llvm-gcc -emit-llvm -c -o hello.bc hello.c
>
> llc -march=c hello.bc
>
> Version of LLVM: 2.9
>
> The source of error in generated c file:
>
> /* Global Variable Declarations */
>
> static _OC_str { unsigned char array[12]; };
>
> static _OC_str1 { unsigned char array[13]; };
>
>
>
> /* Global Variable Definitions and Initialization */
>
> static _OC_str { unsigned char array[12]; } = { "hello world" };
>
> static _OC_str1 { unsigned char array[13]; } = { "hello world1" };
>
> It seems that _OC_str, and _OC_str1 are structure variables, but I have
> never seen such way of declarations, definitions, and initialization of
> structure in C code. I guess it may be supported in some standards of C.
> Could anyone please give me some information about the problem? Thanks!
> --
> Best Regards,
> Fei Jia
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>




More information about the llvm-dev mailing list