An instruction is a meta-instruction if it doesn't produce any output
in the form of executable instructions. So in the concept, a
meta-instruction does not have to be target independent.
Before this patch, isMetaInstruction is implemented by checking the
opcode of the instruction, add we have no way to add target dependent
opcode to the list, which does not make sense.
After this patch, a bit isMeta is added for class Instruction in
tablegen, which is used to indicate whether it's a meta instruction.
@skan (and reviewerts): Did you consider what the default QueryType should be here?
Downstream we've been using IgnoreBundle for isMetaInstruction (similarly as for isPseudo above). And now a number of debug info related test cases started to fail.
Before your patch isMetaInstruction() returned false when being queried on a BUNDLE instruction. So I think it would be more safe to use IgnoreBundle unless you want to change that behavior. And I don't think usage of isMetaInstruction in for example llvm::calculateDbgEntityHistory is supposed to skip a bundle just because one of multiple instructions in a BUNDLE is a meta instruction.