memoize the assert results
authorChris Lattner <sabre@nondot.org>
Mon, 26 Sep 2005 22:10:24 +0000 (22:10 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 26 Sep 2005 22:10:24 +0000 (22:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23457 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/DAGISelEmitter.cpp

index bd439093c17dcebe5228d582c141a8b9dd3968dd..27c0dfab2ef7311ef7e905bae990192f72f1d82d 100644 (file)
@@ -1230,8 +1230,11 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) {
      << "  case ISD::EntryToken:       // These leaves remain the same.\n"
      << "    return N;\n"
      << "  case ISD::AssertSext:\n"
-     << "  case ISD::AssertZext:\n"
-     << "    return Select(N.getOperand(0));\n";
+     << "  case ISD::AssertZext: {\n"
+     << "    SDOperand Tmp0 = Select(N.getOperand(0));\n"
+     << "    if (!N.Val->hasOneUse()) CodeGenMap[N] = Tmp0;\n"
+     << "    return Tmp0;\n"
+     << "  }\n";
     
   // Group the patterns by their top-level opcodes.
   std::map<Record*, std::vector<PatternToMatch*>,