title: How to turn off the constant folding optimization in llvm
body: <p>I am new to clang and llvm. I'm trying to generate an unoptimized version of bit code from a c source code. I found that the generated bit code is having the constant folding optimization which I don't want. 
  I'm using this command: clang -O0 -Xclang -disable-O0-optnone test1.c -S -emit-llvm -o test1.ll </p>
  
  <p>The test1.c file has the following code:</p>
  
  <pre><code>int test() {
  int y;
  y = 2 * 4;
  return y;
  }
  </code></pre>
  
  <p>The content of the test1.ll file:
  <a href="https://i.stack.imgur.com/b60GG.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/b60GG.png" alt="enter image description here"></a></p>
  
  <p>Instead of generating an instruction for multiplying 2 and 4, it is directly storing the value 8 by doing the constant folding operation:
  store i32 8, i32* %1, align 4</p>
  
  <p>It would be really nice if someone kindly let me know what I am missing and how should I turn off the constant folding optimization. The version of llvm I am using is 6.0.0. </p>
  
  <p>Thank you. </p>