Akira Hatanaka
2012-Nov-27 23:02 UTC
[LLVMdev] question about code in FixedLenDecoderEmitter.cpp
I have a question about the code in
utils/TableGen/FixedLenDecoderEmitter.cpp (line 1150).
bool FilterChooser::emitPredicateMatch(raw_ostream &o, unsigned
&Indentation,
unsigned Opc) const {
ListInit *Predicates
AllInstructions[Opc]->TheDef->getValueAsListInit("Predicates");
for (unsigned i = 0; i < Predicates->getSize(); ++i) {
Record *Pred = Predicates->getElementAsRecord(i);
if (!Pred->getValue("AssemblerMatcherPredicate"))
continue;
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.
I think this line should be:
if (!Pred->getValue("AssemblerMatcherPredicate")->getValue())
Pred->getValue returns a RecordVal object.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20121127/55c08be4/attachment.html>
