I have a question about the code in utils/TableGen/FixedLenDecoderEmitter.cpp (line 1150).<br><br>bool FilterChooser::emitPredicateMatch(raw_ostream &o, unsigned &Indentation,<br>                                       unsigned Opc) const {<br>
  ListInit *Predicates =<br>    AllInstructions[Opc]->TheDef->getValueAsListInit("Predicates");<br>  for (unsigned i = 0; i < Predicates->getSize(); ++i) {<br>    Record *Pred = Predicates->getElementAsRecord(i);<br>
    if (!Pred->getValue("AssemblerMatcherPredicate"))<br>      continue;<br><br>The code above seems to be checking whether there exists a field named "AssemblerMatcherPredicate" in record "Pred", but It seems to me that it should be checking whether the field AssemblerMatcherPredicate's value is 1 or 0. class "Predicate" in Target.td has a field AssemblerMatcherPredicate, so this will always return a non-null value.<br>
<br>I think this line should be:<br><br>if (!Pred->getValue("AssemblerMatcherPredicate")->getValue())<br>
<br>Pred->getValue returns a RecordVal object.<br>