diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp
index 75bcc04..7d5ec62 100644
--- a/utils/TableGen/AsmMatcherEmitter.cpp
+++ b/utils/TableGen/AsmMatcherEmitter.cpp
@@ -355,12 +355,8 @@
   MatchableInfo(const CodeGenInstAlias *Alias)
     : TheDef(Alias->TheDef), DefRec(Alias), TheOperandList(Alias->Operands),
       AsmString(Alias->AsmString) {
-        
-    // FIXME: Huge hack.
-    DefInit *DI = dynamic_cast<DefInit*>(Alias->Result->getOperator());
-    assert(DI);
-        
-    InstrName = DI->getDef()->getName();
+    // FIXME: InstrName should be a CGI.
+    InstrName = Alias->ResultInst->TheDef->getName();
   }
   
   void Initialize(const AsmMatcherInfo &Info,
@@ -1066,7 +1062,7 @@
   std::vector<Record*> AllInstAliases =
     Records.getAllDerivedDefinitions("InstAlias");
   for (unsigned i = 0, e = AllInstAliases.size(); i != e; ++i) {
-    CodeGenInstAlias *Alias = new CodeGenInstAlias(AllInstAliases[i]);
+    CodeGenInstAlias *Alias = new CodeGenInstAlias(AllInstAliases[i], Target);
 
     OwningPtr<MatchableInfo> II(new MatchableInfo(Alias));
     
@@ -1117,11 +1113,9 @@
         OperandName = Token.substr(1);
       
       if (II->DefRec.is<const CodeGenInstruction*>())
-        BuildInstructionOperandReference(II,
-                                         OperandName, Op);
+        BuildInstructionOperandReference(II, OperandName, Op);
       else
-        BuildAliasOperandReference(II,
-                                   OperandName, Op);
+        BuildAliasOperandReference(II, OperandName, Op);
     }
     
     II->BuildResultOperands();
diff --git a/utils/TableGen/CodeGenInstruction.cpp b/utils/TableGen/CodeGenInstruction.cpp
index 7428f2c..3c58cc6 100644
--- a/utils/TableGen/CodeGenInstruction.cpp
+++ b/utils/TableGen/CodeGenInstruction.cpp
@@ -388,8 +388,16 @@
 /// CodeGenInstAlias Implementation
 //===----------------------------------------------------------------------===//
 
-CodeGenInstAlias::CodeGenInstAlias(Record *R) : TheDef(R), Operands(R) {
+CodeGenInstAlias::CodeGenInstAlias(Record *R, CodeGenTarget &T)
+  : TheDef(R), Operands(R) {
   AsmString = R->getValueAsString("AsmString");
 
   Result = R->getValueAsDag("ResultInst");
+
+  // Verify that the root of the result is an instruction.
+  DefInit *DI = dynamic_cast<DefInit*>(Result->getOperator());
+  if (DI == 0 || !DI->getDef()->isSubClassOf("Instruction"))
+    throw TGError(R->getLoc(), "result of inst alias should be an instruction");
+
+  ResultInst = &T.getInstruction(DI->getDef());
 }
diff --git a/utils/TableGen/CodeGenInstruction.h b/utils/TableGen/CodeGenInstruction.h
index 24bdbe2..625afc6 100644
--- a/utils/TableGen/CodeGenInstruction.h
+++ b/utils/TableGen/CodeGenInstruction.h
@@ -15,6 +15,7 @@
 #define CODEGEN_INSTRUCTION_H
 
 #include "llvm/CodeGen/ValueTypes.h"
+#include "llvm/ADT/StringRef.h"
 #include <string>
 #include <vector>
 #include <utility>
@@ -264,7 +265,22 @@
     /// Result - The result instruction.
     DagInit *Result;
     
-    CodeGenInstAlias(Record *R);
+    /// ResultInst - The instruction generated by the alias (decoded from
+    /// Result).
+    CodeGenInstruction *ResultInst;
+    
+    
+    struct ResultOperand {
+      StringRef Name;
+      Record *R;
+      
+      ResultOperand(StringRef N, Record *r) : Name(N), R(r) {}
+    };
+    
+    /// ResultOperands - The decoded operands for the result instruction.
+    std::vector<ResultOperand> ResultOperands;
+    
+    CodeGenInstAlias(Record *R, CodeGenTarget &T);
   };    
 }
 
