Dear Dmitry,<div><br></div><div>Thanks for your reply. I have just updated my version from svn sever and it's perfect now. The previous version is from the svn server several days before Oct 10, and I guess the code related with gcc might not be updated at that time.</div>

<div><br></div><div>Thanks a lot!</div><div><div><br>--<br>Best Regards,<br>Fei Jia</div><div><br></div><br>
<br><br><div class="gmail_quote">On Sat, Oct 29, 2011 at 4:43 PM, Dmitry N. Mikushin <span dir="ltr"><<a href="mailto:maemarcus@gmail.com">maemarcus@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Hi Fei Jia,<br>
<br>
What revision are you using? I suggest you to try C backend with the<br>
most recent LLVM version, if possible. I recall I had some similar C<br>
backend breakages in July-August: structs definitions were lost<br>
somewhere. To my understanding, the correct result should look like<br>
this:<br>
<br>
/* Typedefs */<br>
typedef struct l_unnamed_0 l_unnamed_0;<br>
typedef struct l_unnamed_1 l_unnamed_1;<br>
<br>
/* Structure contents */<br>
struct l_unnamed_0 {<br>
  unsigned char array[12];<br>
};<br>
<br>
struct l_unnamed_1 {<br>
  unsigned char array[13];<br>
};<br>
<br>
/* Global Variable Declarations */<br>
static l_unnamed_0 _OC_cst;<br>
static l_unnamed_1 _OC_cst1;<br>
<div class="im"><br>
/* Global Variable Definitions and Initialization */<br>
</div>extern static l_unnamed_0 _OC_cst = { "hello world" };<br>
extern static l_unnamed_1 _OC_cst1 = { "hello world1" };<br>
<br>
- D.<br>
<br>
2011/10/11 Fei Jia <<a href="mailto:j.jiafei@gmail.com">j.jiafei@gmail.com</a>>:<br>
<div><div></div><div class="h5">> I convert C to bytecode by LLVM, and then convert the bytecode back to C by<br>
> LLC, but the generated C code cannot be compiled. Could anyone give me some<br>
> suggestions? Thanks!<br>
> The initial C file is rather simple (hello world):<br>
><br>
> #include <stdio.h><br>
><br>
> int main() {<br>
><br>
>         printf("hello world\n");<br>
><br>
>         printf("hello world1\n");<br>
><br>
>         return 0;<br>
><br>
> }<br>
><br>
> The two commands:<br>
><br>
> llvm-gcc -emit-llvm -c -o hello.bc hello.c<br>
><br>
> llc -march=c hello.bc<br>
><br>
> Version of LLVM: 2.9<br>
><br>
> The source of error in generated c file:<br>
><br>
> /* Global Variable Declarations */<br>
><br>
> static _OC_str { unsigned char array[12]; };<br>
><br>
> static _OC_str1 { unsigned char array[13]; };<br>
><br>
><br>
><br>
> /* Global Variable Definitions and Initialization */<br>
><br>
> static _OC_str { unsigned char array[12]; } = { "hello world" };<br>
><br>
> static _OC_str1 { unsigned char array[13]; } = { "hello world1" };<br>
><br>
> It seems that _OC_str, and _OC_str1 are structure variables, but I have<br>
> never seen such way of declarations, definitions, and initialization of<br>
> structure in C code. I guess it may be supported in some standards of C.<br>
> Could anyone please give me some information about the problem? Thanks!<br>
> --<br>
> Best Regards,<br>
> Fei Jia<br>
><br>
</div></div>> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
><br>
><br>
</blockquote></div><br></div>