<span class="hljs-comment">; ModuleID = &#x27;test.c&#x27;</span>
<span class="hljs-keyword">target</span> <span class="hljs-keyword">datalayout</span> <span class="hljs-operator">=</span> <span class="hljs-string">&quot;e-m:e-i64:64-f80:128-n8:16:32:64-S128&quot;</span>
<span class="hljs-keyword">target</span> <span class="hljs-keyword">triple</span> <span class="hljs-operator">=</span> <span class="hljs-string">&quot;x86_64-unknown-linux-gnu&quot;</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">&quot;foo()\00&quot;</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">&quot;oooooh\00&quot;</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">; &lt;label&gt;: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">; &lt;label&gt;: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">; &lt;label&gt;: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">&quot;disable-tail-calls&quot;</span><span class="hljs-operator">=</span><span class="hljs-string">&quot;false&quot;</span> <span class="hljs-string">&quot;less-precise-fpmad&quot;</span><span class="hljs-operator">=</span><span class="hljs-string">&quot;false&quot;</span> <span class="hljs-string">&quot;no-frame-pointer-elim&quot;</span><span class="hljs-operator">=</span><span class="hljs-string">&quot;true&quot;</span> <span class="hljs-string">&quot;no-frame-pointer-elim-non-leaf&quot;</span> <span class="hljs-string">&quot;no-infs-fp-math&quot;</span><span class="hljs-operator">=</span><span class="hljs-string">&quot;false&quot;</span> <span class="hljs-string">&quot;no-nans-fp-math&quot;</span><span class="hljs-operator">=</span><span class="hljs-string">&quot;false&quot;</span> <span class="hljs-string">&quot;stack-protector-buffer-size&quot;</span><span class="hljs-operator">=</span><span class="hljs-string">&quot;8&quot;</span> <span class="hljs-string">&quot;target-cpu&quot;</span><span class="hljs-operator">=</span><span class="hljs-string">&quot;x86-64&quot;</span> <span class="hljs-string">&quot;target-features&quot;</span><span class="hljs-operator">=</span><span class="hljs-string">&quot;+fxsr,+mmx,+sse,+sse2&quot;</span> <span class="hljs-string">&quot;unsafe-fp-math&quot;</span><span class="hljs-operator">=</span><span class="hljs-string">&quot;false&quot;</span> <span class="hljs-string">&quot;use-soft-float&quot;</span><span class="hljs-operator">=</span><span class="hljs-string">&quot;false&quot;</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">&quot;clang version 3.8.0 (tags/RELEASE_380/final)&quot;</span>}
