title: -emit-llvm in Linux
body: <p>I am a newbie to LLVM and try to generate a human readable .ll file on Linux. I installed llvm-gcc but as I see it can generate only assembly code (-S option). Is there any way to get something like what is generated by llvm online <a href="http://llvm.org/demo/index.cgi" rel="noreferrer">compiler</a>?</p>
  
  <p>That's what I get with <code>-S -emit-llvm</code> on Linux:</p>
  
  <pre><code>    .file   "hello.c"
  
      .ident  "GCC: (Ubuntu/Linaro 4.5.1-7ubuntu2) 4.5.1 LLVM: "
  
      .text
      .globl  main
      .align  16, 0x90
      .type   main,@function
  main:
      pushl   %ebp
      movl    %esp, %ebp
      subl    $8, %esp
      movl    $.L.str, 4(%esp)
      movl    $1, (%esp)
      call    __printf_chk
      xorl    %eax, %eax
      addl    $8, %esp
      popl    %ebp
      ret
  .Ltmp0:
      .size   main, .Ltmp0-main
  
      .type   .L.str,@object
      .section    .rodata.str1.1,"aMS",@progbits,1
  .L.str:
      .asciz   "hello world\n"
      .size   .L.str, 13
  
      .section    .note.GNU-stack,"",@progbits
  </code></pre>
  
  <p>That's what I am trying to get:</p>
  
  <pre><code>; ModuleID = '/tmp/webcompile/_7829_0.bc'
  target datalayout = "e-p:64:64:64-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-s0:64:64-f80:128:128-n8:16:32:64"
  target triple = "x86_64-linux-gnu"
  
  @.str = private constant [12 x i8] c"hello world\00", align 1 ; &lt;[12 x i8]*&gt; [#uses=1]
  
  define i32 @main() nounwind {
  entry:
    %0 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @.str, i64 0, i64 0)) nounwind ; &lt;i32&gt; [#uses=0]
    ret i32 0
  }
  
  declare i32 @puts(i8* nocapture) nounwind
  </code></pre>
  
  <p>On windows I successfully get this file with the same command: <code>llvm-gcc -S -emit-llvm hello.c</code>.</p>