diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
index e7838e4..c7e2cd5 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
@@ -2753,6 +2753,58 @@
   return 0;
 }
 
+/// visitExp - lower an exp intrinsic.  Handles the special sequences
+/// for limited-precision mode.
+
+void
+SelectionDAGLowering::visitExp(CallInst &I) {
+  SDValue result;
+  // No special expansion.
+  result = DAG.getNode(ISD::FEXP,
+                       getValue(I.getOperand(1)).getValueType(),
+                       getValue(I.getOperand(1)));
+  setValue(&I, result);
+}
+
+/// visitLog - lower a log intrinsic.  Handles the special sequences
+/// for limited-precision mode.
+
+void
+SelectionDAGLowering::visitLog(CallInst &I) {
+  SDValue result;
+  // No special expansion.
+  result = DAG.getNode(ISD::FLOG,
+                       getValue(I.getOperand(1)).getValueType(),
+                       getValue(I.getOperand(1)));
+  setValue(&I, result);
+}
+
+/// visitLog2 - lower a log2 intrinsic.  Handles the special sequences
+/// for limited-precision mode.
+
+void
+SelectionDAGLowering::visitLog2(CallInst &I) {
+  SDValue result;
+  // No special expansion.
+  result = DAG.getNode(ISD::FLOG2,
+                       getValue(I.getOperand(1)).getValueType(),
+                       getValue(I.getOperand(1)));
+  setValue(&I, result);
+}
+
+/// visitLog10 - lower a log10 intrinsic.  Handles the special sequences
+/// for limited-precision mode.
+
+void
+SelectionDAGLowering::visitLog10(CallInst &I) {
+  SDValue result;
+  // No special expansion.
+  result = DAG.getNode(ISD::FLOG10,
+                       getValue(I.getOperand(1)).getValueType(),
+                       getValue(I.getOperand(1)));
+  setValue(&I, result);
+}
+
 /// visitExp2 - lower an exp2 intrinsic.  Handles the special sequences
 /// for limited-precision mode.
 
@@ -3071,24 +3123,16 @@
                              getValue(I.getOperand(1))));
     return 0;
   case Intrinsic::log:
-    setValue(&I, DAG.getNode(ISD::FLOG,
-                             getValue(I.getOperand(1)).getValueType(),
-                             getValue(I.getOperand(1))));
+    visitLog(I);
     return 0;
   case Intrinsic::log2:
-    setValue(&I, DAG.getNode(ISD::FLOG2,
-                             getValue(I.getOperand(1)).getValueType(),
-                             getValue(I.getOperand(1))));
+    visitLog2(I);
     return 0;
   case Intrinsic::log10:
-    setValue(&I, DAG.getNode(ISD::FLOG10,
-                             getValue(I.getOperand(1)).getValueType(),
-                             getValue(I.getOperand(1))));
+    visitLog10(I);
     return 0;
   case Intrinsic::exp:
-    setValue(&I, DAG.getNode(ISD::FEXP,
-                             getValue(I.getOperand(1)).getValueType(),
-                             getValue(I.getOperand(1))));
+    visitExp(I);
     return 0;
   case Intrinsic::exp2:
     visitExp2(I);
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.h b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.h
index 8e7d863..72c1bf3 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.h
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.h
@@ -506,6 +506,10 @@
   void visitTargetIntrinsic(CallInst &I, unsigned Intrinsic);
 
   void visitExp2(CallInst &I);
+  void visitExp(CallInst &I);
+  void visitLog(CallInst &I);
+  void visitLog2(CallInst &I);
+  void visitLog10(CallInst &I);
 
   void visitVAStart(CallInst &I);
   void visitVAArg(VAArgInst &I);
