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

Fei Jia j.jiafei at gmail.com
Mon Oct 10 16:15:44 PDT 2011

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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111010/d326447e/attachment.html>

More information about the llvm-dev mailing list