<span class="hljs-comment">; ModuleID = 'test.c'</span>
<span class="hljs-keyword">target</span> <span class="hljs-keyword">datalayout</span> <span class="hljs-operator">=</span> <span class="hljs-string">"e-m:e-i64:64-f80:128-n8:16:32:64-S128"</span>
<span class="hljs-keyword">target</span> <span class="hljs-keyword">triple</span> <span class="hljs-operator">=</span> <span class="hljs-string">"x86_64-unknown-linux-gnu"</span>
<span class="hljs-variable">%struct._IO_FILE</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">type</span> { <span class="hljs-type">i32</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-variable">%struct._IO_marker</span>*<span class="hljs-punctuation">,</span> <span class="hljs-variable">%struct._IO_FILE</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i64</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i16</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span><span class="hljs-punctuation">,</span> [<span class="hljs-number">1</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>]<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i64</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i64</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span><span class="hljs-punctuation">,</span> [<span class="hljs-number">20</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>] }
<span class="hljs-variable">%struct._IO_marker</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">type</span> { <span class="hljs-variable">%struct._IO_marker</span>*<span class="hljs-punctuation">,</span> <span class="hljs-variable">%struct._IO_FILE</span>*<span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> }
<span class="hljs-variable">%struct.what</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">type</span> { <span class="hljs-type">i8</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i16</span> }
<span class="hljs-title">@.str</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">private</span> <span class="hljs-keyword">unnamed_addr</span> <span class="hljs-keyword">constant</span> [<span class="hljs-number">6</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>] <span class="hljs-keyword">c</span><span class="hljs-string">"foo()<span class="hljs-char escape_">\00</span>"</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">1</span>
<span class="hljs-title">@e_long</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">common</span> <span class="hljs-keyword">global</span> <span class="hljs-type">i64</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">8</span>
<span class="hljs-title">@g_double</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">common</span> <span class="hljs-keyword">global</span> <span class="hljs-keyword">double</span> <span class="hljs-number">0.000000e+00</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">8</span>
<span class="hljs-title">@.str.1</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">private</span> <span class="hljs-keyword">unnamed_addr</span> <span class="hljs-keyword">constant</span> [<span class="hljs-number">7</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>] <span class="hljs-keyword">c</span><span class="hljs-string">"oooooh<span class="hljs-char escape_">\00</span>"</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">1</span>
<span class="hljs-title">@func_ptr</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">common</span> <span class="hljs-keyword">global</span> <span class="hljs-type">i32</span> (...)* <span class="hljs-keyword">null</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">8</span>
<span class="hljs-title">@stderr</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">external</span> <span class="hljs-keyword">global</span> <span class="hljs-variable">%struct._IO_FILE</span>*<span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">8</span>
<span class="hljs-comment">; Function Attrs: nounwind uwtable</span>
<span class="hljs-keyword">define</span> <span class="hljs-type">i32</span> <span class="hljs-title">@foo</span>() <span class="hljs-variable">#0</span> {
<span class="hljs-variable">%1</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">call</span> <span class="hljs-type">i32</span> <span class="hljs-title">@puts</span>(<span class="hljs-type">i8</span>* <span class="hljs-keyword">getelementptr</span> <span class="hljs-keyword">inbounds</span> ([<span class="hljs-number">6</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>]<span class="hljs-punctuation">,</span> [<span class="hljs-number">6</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>]* <span class="hljs-title">@.str</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span>))
<span class="hljs-keyword">ret</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span>
}
<span class="hljs-keyword">declare</span> <span class="hljs-type">i32</span> <span class="hljs-title">@puts</span>(<span class="hljs-type">i8</span>*) <span class="hljs-variable">#1</span>
<span class="hljs-comment">; Function Attrs: nounwind uwtable</span>
<span class="hljs-keyword">define</span> <span class="hljs-type">i32</span> <span class="hljs-title">@main</span>(<span class="hljs-type">i32</span> <span class="hljs-variable">%argc</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>** <span class="hljs-variable">%argv</span>) <span class="hljs-variable">#0</span> {
<span class="hljs-variable">%1</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">alloca</span> <span class="hljs-type">i32</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">4</span>
<span class="hljs-variable">%2</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">alloca</span> <span class="hljs-type">i32</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">4</span>
<span class="hljs-variable">%3</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">alloca</span> <span class="hljs-type">i8</span>**<span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">8</span>
<span class="hljs-comment">; <label>:7 ; preds = %0</span>
<span class="hljs-variable">%8</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">getelementptr</span> <span class="hljs-keyword">inbounds</span> <span class="hljs-variable">%struct.what</span><span class="hljs-punctuation">,</span> <span class="hljs-variable">%struct.what</span>* <span class="hljs-variable">%X</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span>
<span class="hljs-keyword">store</span> <span class="hljs-type">i8</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>* <span class="hljs-variable">%8</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">2</span>
<span class="hljs-keyword">store</span> <span class="hljs-type">i8</span> <span class="hljs-number">49</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>* <span class="hljs-variable">%b_char</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">1</span>
<span class="hljs-variable">%9</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">getelementptr</span> <span class="hljs-keyword">inbounds</span> <span class="hljs-variable">%struct.what</span><span class="hljs-punctuation">,</span> <span class="hljs-variable">%struct.what</span>* <span class="hljs-variable">%X</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">1</span>
<span class="hljs-keyword">store</span> <span class="hljs-keyword">double</span> <span class="hljs-number">1.000000e+01</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">double</span>* <span class="hljs-title">@g_double</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">8</span>
<span class="hljs-keyword">store</span> <span class="hljs-type">i8</span>* <span class="hljs-keyword">getelementptr</span> <span class="hljs-keyword">inbounds</span> ([<span class="hljs-number">7</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>]<span class="hljs-punctuation">,</span> [<span class="hljs-number">7</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>]* <span class="hljs-title">@.str.1</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span>)<span class="hljs-punctuation">,</span> <span class="hljs-type">i8</span>** <span class="hljs-variable">%cp_char_ptr</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">8</span>
<span class="hljs-keyword">store</span> <span class="hljs-type">i32</span> (...)* <span class="hljs-keyword">bitcast</span> (<span class="hljs-type">i32</span> ()* <span class="hljs-title">@foo</span> <span class="hljs-keyword">to</span> <span class="hljs-type">i32</span> (...)*)<span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> (...)** <span class="hljs-title">@func_ptr</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">8</span>
<span class="hljs-variable">%10</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">call</span> <span class="hljs-type">i32</span> <span class="hljs-title">@puts</span>(<span class="hljs-type">i8</span>* <span class="hljs-keyword">getelementptr</span> <span class="hljs-keyword">inbounds</span> ([<span class="hljs-number">8</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>]<span class="hljs-punctuation">,</span> [<span class="hljs-number">8</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>]* <span class="hljs-title">@.str.2</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span>))
<span class="hljs-keyword">store</span> <span class="hljs-type">i32</span> <span class="hljs-number">10</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span>* <span class="hljs-variable">%1</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">4</span>
<span class="hljs-keyword">br</span> label <span class="hljs-variable">%66</span>
<span class="hljs-comment">; <label>:63 ; preds = %11</span>
<span class="hljs-variable">%64</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">load</span> <span class="hljs-variable">%struct._IO_FILE</span>*<span class="hljs-punctuation">,</span> <span class="hljs-variable">%struct._IO_FILE</span>** <span class="hljs-title">@stderr</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">8</span>
<span class="hljs-variable">%65</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">call</span> <span class="hljs-type">i32</span> <span class="hljs-title">@fputs</span>(<span class="hljs-type">i8</span>* <span class="hljs-keyword">getelementptr</span> <span class="hljs-keyword">inbounds</span> ([<span class="hljs-number">11</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>]<span class="hljs-punctuation">,</span> [<span class="hljs-number">11</span> <span class="hljs-keyword">x</span> <span class="hljs-type">i8</span>]* <span class="hljs-title">@.str.9</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span> <span class="hljs-number">0</span>)<span class="hljs-punctuation">,</span> <span class="hljs-variable">%struct._IO_FILE</span>* <span class="hljs-variable">%64</span>)
<span class="hljs-keyword">store</span> <span class="hljs-type">i32</span> <span class="hljs-number">-1</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span>* <span class="hljs-variable">%1</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">4</span>
<span class="hljs-keyword">br</span> label <span class="hljs-variable">%66</span>
<span class="hljs-comment">; <label>:66 ; preds = %63, %46, %7</span>
<span class="hljs-variable">%67</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">load</span> <span class="hljs-type">i32</span><span class="hljs-punctuation">,</span> <span class="hljs-type">i32</span>* <span class="hljs-variable">%1</span><span class="hljs-punctuation">,</span> <span class="hljs-keyword">align</span> <span class="hljs-number">4</span>
<span class="hljs-keyword">ret</span> <span class="hljs-type">i32</span> <span class="hljs-variable">%67</span>
}
<span class="hljs-keyword">declare</span> <span class="hljs-type">i32</span> <span class="hljs-title">@printf</span>(<span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> ...) <span class="hljs-variable">#1</span>
<span class="hljs-keyword">declare</span> <span class="hljs-type">i32</span> <span class="hljs-title">@fputs</span>(<span class="hljs-type">i8</span>*<span class="hljs-punctuation">,</span> <span class="hljs-variable">%struct._IO_FILE</span>*) <span class="hljs-variable">#1</span>
<span class="hljs-keyword">attributes</span> <span class="hljs-variable">#0</span> <span class="hljs-operator">=</span> { <span class="hljs-keyword">nounwind</span> <span class="hljs-keyword">uwtable</span> <span class="hljs-string">"disable-tail-calls"</span><span class="hljs-operator">=</span><span class="hljs-string">"false"</span> <span class="hljs-string">"less-precise-fpmad"</span><span class="hljs-operator">=</span><span class="hljs-string">"false"</span> <span class="hljs-string">"no-frame-pointer-elim"</span><span class="hljs-operator">=</span><span class="hljs-string">"true"</span> <span class="hljs-string">"no-frame-pointer-elim-non-leaf"</span> <span class="hljs-string">"no-infs-fp-math"</span><span class="hljs-operator">=</span><span class="hljs-string">"false"</span> <span class="hljs-string">"no-nans-fp-math"</span><span class="hljs-operator">=</span><span class="hljs-string">"false"</span> <span class="hljs-string">"stack-protector-buffer-size"</span><span class="hljs-operator">=</span><span class="hljs-string">"8"</span> <span class="hljs-string">"target-cpu"</span><span class="hljs-operator">=</span><span class="hljs-string">"x86-64"</span> <span class="hljs-string">"target-features"</span><span class="hljs-operator">=</span><span class="hljs-string">"+fxsr,+mmx,+sse,+sse2"</span> <span class="hljs-string">"unsafe-fp-math"</span><span class="hljs-operator">=</span><span class="hljs-string">"false"</span> <span class="hljs-string">"use-soft-float"</span><span class="hljs-operator">=</span><span class="hljs-string">"false"</span> }
<span class="hljs-title">!llvm.ident</span> <span class="hljs-operator">=</span> !{<span class="hljs-title">!0</span>}
<span class="hljs-title">!0</span> <span class="hljs-operator">=</span> !{!<span class="hljs-string">"clang version 3.8.0 (tags/RELEASE_380/final)"</span>}