aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/CBackend/CBackend.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-03-12 05:52:14 +0000
committerChris Lattner <sabre@nondot.org>2004-03-12 05:52:14 +0000
commit9f24a077bda36334e6f7c8f27a97eccd820e9644 (patch)
treee5daf8e6c029a298b72804487f735b1dab3cc73e /lib/Target/CBackend/CBackend.cpp
parent46b787e986ff48a5c59d8a37610945a15ae04d9f (diff)
downloadexternal_llvm-9f24a077bda36334e6f7c8f27a97eccd820e9644.zip
external_llvm-9f24a077bda36334e6f7c8f27a97eccd820e9644.tar.gz
external_llvm-9f24a077bda36334e6f7c8f27a97eccd820e9644.tar.bz2
ADd support for select instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12316 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/CBackend/CBackend.cpp')
-rw-r--r--lib/Target/CBackend/CBackend.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp
index 396cc69..e78eef6 100644
--- a/lib/Target/CBackend/CBackend.cpp
+++ b/lib/Target/CBackend/CBackend.cpp
@@ -140,6 +140,7 @@ namespace {
void visitBinaryOperator(Instruction &I);
void visitCastInst (CastInst &I);
+ void visitSelectInst(SelectInst &I);
void visitCallInst (CallInst &I);
void visitCallSite (CallSite CS);
void visitShiftInst(ShiftInst &I) { visitBinaryOperator(I); }
@@ -1185,6 +1186,17 @@ void CWriter::visitCastInst(CastInst &I) {
writeOperand(I.getOperand(0));
}
+void CWriter::visitSelectInst(SelectInst &I) {
+ Out << "((";
+ writeOperand(I.getCondition());
+ Out << ") ? (";
+ writeOperand(I.getTrueValue());
+ Out << ") : (";
+ writeOperand(I.getFalseValue());
+ Out << "))";
+}
+
+
void CWriter::lowerIntrinsics(Module &M) {
for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F)
for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB)