Implement CodeGen/CBackend/2005-02-14-VolatileOperations.ll
Volatile loads and stores need to emit volatile pointer operations in C.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20177 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp
index cb831ae..adac8e2 100644
--- a/lib/Target/CBackend/Writer.cpp
+++ b/lib/Target/CBackend/Writer.cpp
@@ -1655,12 +1655,27 @@
 
 void CWriter::visitLoadInst(LoadInst &I) {
   Out << "*";
+  if (I.isVolatile()) {
+    Out << "((volatile ";
+    printType(Out, I.getOperand(0)->getType());
+    Out << ")";
+  }
+
   writeOperand(I.getOperand(0));
+
+  if (I.isVolatile())
+    Out << ")";
 }
 
 void CWriter::visitStoreInst(StoreInst &I) {
   Out << "*";
+  if (I.isVolatile()) {
+    Out << "((volatile ";
+    printType(Out, I.getPointerOperand()->getType());
+    Out << ")";
+  }
   writeOperand(I.getPointerOperand());
+  if (I.isVolatile()) Out << ")";
   Out << " = ";
   writeOperand(I.getOperand(0));
 }