diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp
index f007b28..e30be1b 100644
--- a/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -369,17 +369,11 @@
     return false;
 
   if (AM.BaseType == X86ISelAddressMode::RegBase) {
-    if (AM.Base.Reg.Val) {
-      if (AM.Base.Reg.getOpcode() != ISD::Register)
-        AM.Base.Reg = Select(AM.Base.Reg);
-    } else {
+    if (!AM.Base.Reg.Val)
       AM.Base.Reg = CurDAG->getRegister(0, MVT::i32);
-    }
   }
 
-  if (AM.IndexReg.Val)
-    AM.IndexReg = Select(AM.IndexReg);
-  else
+  if (!AM.IndexReg.Val)
     AM.IndexReg = CurDAG->getRegister(0, MVT::i32);
 
   getAddressOperands(AM, Base, Scale, Index, Disp);
@@ -441,11 +435,6 @@
         return false;
     }
 
-    if (SelectBase)
-      AM.Base.Reg = Select(AM.Base.Reg);
-    if (SelectIndex)
-      AM.IndexReg = Select(AM.IndexReg);
-
     getAddressOperands(AM, Base, Scale, Index, Disp);
     return true;
   }
@@ -461,6 +450,11 @@
   if (Opcode >= ISD::BUILTIN_OP_END && Opcode < X86ISD::FIRST_NUMBER)
     return N;   // Already selected.
 
+  // These are probably emitted by SelectAddr().
+  if (Opcode == ISD::TargetConstant || Opcode == ISD::TargetConstantPool ||
+      Opcode == ISD::TargetFrameIndex || Opcode == ISD::TargetGlobalAddress)
+    return N;
+
   std::map<SDOperand, SDOperand>::iterator CGMI = CodeGenMap.find(N);
   if (CGMI != CodeGenMap.end()) return CGMI->second;
   
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp
index b85ee8c..0b3d6df 100644
--- a/utils/TableGen/DAGISelEmitter.cpp
+++ b/utils/TableGen/DAGISelEmitter.cpp
@@ -2136,6 +2136,11 @@
         for (unsigned i = 0; i < NumRes; i++)
           Code += ", Tmp" + utostr(i + ResNo);
         emitCheck(Code + ")");
+
+        for (unsigned i = 0; i < NumRes; ++i)
+          emitCode("Tmp" + utostr(i+ResNo) + " = Select(Tmp" +
+                   utostr(i+ResNo) + ");");
+
         TmpNo = ResNo + NumRes;
       } else {
         emitCode("SDOperand Tmp" + utostr(ResNo) + " = Select(" + Val + ");");
