aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/CBackend/Writer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/CBackend/Writer.cpp')
-rw-r--r--lib/Target/CBackend/Writer.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp
index cb831ae5d5..adac8e2f33 100644
--- a/lib/Target/CBackend/Writer.cpp
+++ b/lib/Target/CBackend/Writer.cpp
@@ -1655,12 +1655,27 @@ void CWriter::printIndexingExpression(Value *Ptr, gep_type_iterator I,
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));
}