reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Derived Classes

utils/TableGen/DAGISelMatcher.h
  183 class ScopeMatcher : public Matcher {
  226 class RecordMatcher : public Matcher {
  253 class RecordChildMatcher : public Matcher {
  285 class RecordMemRefMatcher : public Matcher {
  301 class CaptureGlueInputMatcher : public Matcher {
  316 class MoveChildMatcher : public Matcher {
  336 class MoveParentMatcher : public Matcher {
  352 class CheckSameMatcher : public Matcher {
  374 class CheckChildSameMatcher : public Matcher {
  399 class CheckPatternPredicateMatcher : public Matcher {
  420 class CheckPredicateMatcher : public Matcher {
  445 class CheckOpcodeMatcher : public Matcher {
  467 class SwitchOpcodeMatcher : public Matcher {
  491 class CheckTypeMatcher : public Matcher {
  517 class SwitchTypeMatcher : public Matcher {
  542 class CheckChildTypeMatcher : public Matcher {
  568 class CheckIntegerMatcher : public Matcher {
  590 class CheckChildIntegerMatcher : public Matcher {
  615 class CheckCondCodeMatcher : public Matcher {
  636 class CheckChild2CondCodeMatcher : public Matcher {
  657 class CheckValueTypeMatcher : public Matcher {
  681 class CheckComplexPatMatcher : public Matcher {
  720 class CheckAndImmMatcher : public Matcher {
  741 class CheckOrImmMatcher : public Matcher {
  762 class CheckImmAllOnesVMatcher : public Matcher {
  778 class CheckImmAllZerosVMatcher : public Matcher {
  794 class CheckFoldableChainNodeMatcher : public Matcher {
  809 class EmitIntegerMatcher : public Matcher {
  833 class EmitStringIntegerMatcher : public Matcher {
  856 class EmitRegisterMatcher : public Matcher {
  883 class EmitConvertToTargetMatcher : public Matcher {
  906 class EmitMergeInputChainsMatcher : public Matcher {
  933 class EmitCopyToRegMatcher : public Matcher {
  961 class EmitNodeXFormMatcher : public Matcher {
  985 class EmitNodeMatcherCommon : public Matcher {
 1090 class CompleteMatchMatcher : public Matcher {

Declarations

utils/TableGen/DAGISelMatcher.h
   21   class Matcher;

References

include/llvm/ADT/ArrayRef.h
  108         const ArrayRef<U *> &A,
  110            std::is_convertible<U *const *, T const *>::value>::type * = nullptr)
  118       const SmallVectorTemplateCommon<U *, DummyT> &Vec,
  120           std::is_convertible<U *const *, T const *>::value>::type * = nullptr)
  127     ArrayRef(const std::vector<U *, A> &Vec,
  129                  std::is_convertible<U *const *, T const *>::value>::type* = 0)
include/llvm/Support/Casting.h
   57   static inline bool doit(const From &Val) {
  104   static inline bool doit(const From *Val) {
  106     return isa_impl<To, From>::doit(*Val);
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  265   return cast_convert_val<X, Y*,
  266                           typename simplify_type<Y*>::SimpleType>::doit(Val);
  305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  306 cast_or_null(Y *Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
usr/include/c++/7.4.0/bits/unique_ptr.h
   68         default_delete(const default_delete<_Up>&) noexcept { }
   72       operator()(_Tp* __ptr) const
   74 	static_assert(!is_void<_Tp>::value,
   76 	static_assert(sizeof(_Tp)>0,
  122 	  using type = _Up*;
  137       using pointer = typename _Ptr<_Tp, _Dp>::type;
  161 	typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type;
  163       __uniq_ptr_impl<_Tp, _Dp> _M_t;
  166       using pointer	  = typename __uniq_ptr_impl<_Tp, _Dp>::pointer;
  167       using element_type  = _Tp;
  252 	unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept
  297           __safe_conversion_up<_Up, _Ep>,
  301 	operator=(unique_ptr<_Up, _Ep>&& __u) noexcept
usr/include/c++/7.4.0/type_traits
  215     : public __is_void_helper<typename remove_cv<_Tp>::type>::type
  581     : public __or_<is_lvalue_reference<_Tp>,
  582                    is_rvalue_reference<_Tp>>::type
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  602                           is_void<_Tp>>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
 1554     { typedef _Tp     type; };
 1563     { typedef _Tp     type; };
 1574       remove_const<typename remove_volatile<_Tp>::type>::type     type;
 1645     { typedef _Tp&   type; };
 1650     : public __add_lvalue_reference_helper<_Tp>
 1983     { typedef _Up     type; };
utils/TableGen/DAGISelEmitter.cpp
  165   std::vector<Matcher*> PatternMatchers;
  168       if (Matcher *M = ConvertPatternToMatcher(*Patterns[i], Variant, CGP))
  175   std::unique_ptr<Matcher> TheMatcher =
utils/TableGen/DAGISelMatcher.cpp
   35 Matcher *Matcher::unlinkNode(Matcher *Other) {
   35 Matcher *Matcher::unlinkNode(Matcher *Other) {
   40   Matcher *Cur = this;
   53 bool Matcher::canMoveBefore(const Matcher *Other) const {
   66 bool Matcher::canMoveBeforeNode(const Matcher *Other) const {
   81   for (Matcher *C : Children)
  118   for (const Matcher *C : Children) {
  309 bool CheckOpcodeMatcher::isEqualImpl(const Matcher *M) const {
  316 bool EmitNodeMatcherCommon::isEqualImpl(const Matcher *m) const {
  349 bool CheckOpcodeMatcher::isContradictoryImpl(const Matcher *M) const {
  373 bool CheckTypeMatcher::isContradictoryImpl(const Matcher *M) const {
  379 bool CheckChildTypeMatcher::isContradictoryImpl(const Matcher *M) const {
  391 bool CheckIntegerMatcher::isContradictoryImpl(const Matcher *M) const {
  397 bool CheckChildIntegerMatcher::isContradictoryImpl(const Matcher *M) const {
  409 bool CheckValueTypeMatcher::isContradictoryImpl(const Matcher *M) const {
  415 bool CheckImmAllOnesVMatcher::isContradictoryImpl(const Matcher *M) const {
  420 bool CheckImmAllZerosVMatcher::isContradictoryImpl(const Matcher *M) const {
utils/TableGen/DAGISelMatcher.h
   30 Matcher *ConvertPatternToMatcher(const PatternToMatch &Pattern,unsigned Variant,
   32 void OptimizeMatcher(std::unique_ptr<Matcher> &Matcher,
   34 void EmitMatcherTable(const Matcher *Matcher, const CodeGenDAGPatterns &CGP,
   43   std::unique_ptr<Matcher> Next;
   99   Matcher *getNext() { return Next.get(); }
  100   const Matcher *getNext() const { return Next.get(); }
  101   void setNext(Matcher *C) { Next.reset(C); }
  102   Matcher *takeNext() { return Next.release(); }
  104   std::unique_ptr<Matcher> &getNextPtr() { return Next; }
  106   bool isEqual(const Matcher *M) const {
  148   Matcher *unlinkNode(Matcher *Other);
  148   Matcher *unlinkNode(Matcher *Other);
  153   bool canMoveBefore(const Matcher *Other) const;
  157   bool canMoveBeforeNode(const Matcher *Other) const;
  161   bool isContradictory(const Matcher *Other) const {
  176   virtual bool isEqualImpl(const Matcher *M) const = 0;
  177   virtual bool isContradictoryImpl(const Matcher *M) const { return false; }
  183 class ScopeMatcher : public Matcher {
  184   SmallVector<Matcher*, 4> Children;
  186   ScopeMatcher(ArrayRef<Matcher *> children)
  193   Matcher *getChild(unsigned i) { return Children[i]; }
  194   const Matcher *getChild(unsigned i) const { return Children[i]; }
  196   void resetChild(unsigned i, Matcher *N) {
  201   Matcher *takeChild(unsigned i) {
  202     Matcher *Res = Children[i];
  216   static bool classof(const Matcher *N) {
  222   bool isEqualImpl(const Matcher *M) const override { return false; }
  226 class RecordMatcher : public Matcher {
  241   static bool classof(const Matcher *N) {
  247   bool isEqualImpl(const Matcher *M) const override { return true; }
  253 class RecordChildMatcher : public Matcher {
  273   static bool classof(const Matcher *N) {
  279   bool isEqualImpl(const Matcher *M) const override {
  285 class RecordMemRefMatcher : public Matcher {
  289   static bool classof(const Matcher *N) {
  295   bool isEqualImpl(const Matcher *M) const override { return true; }
  301 class CaptureGlueInputMatcher : public Matcher {
  305   static bool classof(const Matcher *N) {
  311   bool isEqualImpl(const Matcher *M) const override { return true; }
  316 class MoveChildMatcher : public Matcher {
  323   static bool classof(const Matcher *N) {
  329   bool isEqualImpl(const Matcher *M) const override {
  336 class MoveParentMatcher : public Matcher {
  340   static bool classof(const Matcher *N) {
  346   bool isEqualImpl(const Matcher *M) const override { return true; }
  352 class CheckSameMatcher : public Matcher {
  360   static bool classof(const Matcher *N) {
  366   bool isEqualImpl(const Matcher *M) const override {
  374 class CheckChildSameMatcher : public Matcher {
  384   static bool classof(const Matcher *N) {
  390   bool isEqualImpl(const Matcher *M) const override {
  399 class CheckPatternPredicateMatcher : public Matcher {
  407   static bool classof(const Matcher *N) {
  413   bool isEqualImpl(const Matcher *M) const override {
  420 class CheckPredicateMatcher : public Matcher {
  431   static bool classof(const Matcher *N) {
  437   bool isEqualImpl(const Matcher *M) const override {
  445 class CheckOpcodeMatcher : public Matcher {
  453   static bool classof(const Matcher *N) {
  459   bool isEqualImpl(const Matcher *M) const override;
  460   bool isContradictoryImpl(const Matcher *M) const override;
  467 class SwitchOpcodeMatcher : public Matcher {
  468   SmallVector<std::pair<const SDNodeInfo*, Matcher*>, 8> Cases;
  470   SwitchOpcodeMatcher(ArrayRef<std::pair<const SDNodeInfo*, Matcher*> > cases)
  474   static bool classof(const Matcher *N) {
  481   Matcher *getCaseMatcher(unsigned i) { return Cases[i].second; }
  482   const Matcher *getCaseMatcher(unsigned i) const { return Cases[i].second; }
  486   bool isEqualImpl(const Matcher *M) const override { return false; }
  491 class CheckTypeMatcher : public Matcher {
  501   static bool classof(const Matcher *N) {
  507   bool isEqualImpl(const Matcher *M) const override {
  510   bool isContradictoryImpl(const Matcher *M) const override;
  517 class SwitchTypeMatcher : public Matcher {
  518   SmallVector<std::pair<MVT::SimpleValueType, Matcher*>, 8> Cases;
  520   SwitchTypeMatcher(ArrayRef<std::pair<MVT::SimpleValueType, Matcher*> > cases)
  524   static bool classof(const Matcher *N) {
  531   Matcher *getCaseMatcher(unsigned i) { return Cases[i].second; }
  532   const Matcher *getCaseMatcher(unsigned i) const { return Cases[i].second; }
  536   bool isEqualImpl(const Matcher *M) const override { return false; }
  542 class CheckChildTypeMatcher : public Matcher {
  552   static bool classof(const Matcher *N) {
  558   bool isEqualImpl(const Matcher *M) const override {
  562   bool isContradictoryImpl(const Matcher *M) const override;
  568 class CheckIntegerMatcher : public Matcher {
  576   static bool classof(const Matcher *N) {
  582   bool isEqualImpl(const Matcher *M) const override {
  585   bool isContradictoryImpl(const Matcher *M) const override;
  590 class CheckChildIntegerMatcher : public Matcher {
  600   static bool classof(const Matcher *N) {
  606   bool isEqualImpl(const Matcher *M) const override {
  610   bool isContradictoryImpl(const Matcher *M) const override;
  615 class CheckCondCodeMatcher : public Matcher {
  623   static bool classof(const Matcher *N) {
  629   bool isEqualImpl(const Matcher *M) const override {
  636 class CheckChild2CondCodeMatcher : public Matcher {
  644   static bool classof(const Matcher *N) {
  650   bool isEqualImpl(const Matcher *M) const override {
  657 class CheckValueTypeMatcher : public Matcher {
  665   static bool classof(const Matcher *N) {
  671   bool isEqualImpl(const Matcher *M) const override {
  674   bool isContradictoryImpl(const Matcher *M) const override;
  681 class CheckComplexPatMatcher : public Matcher {
  706   static bool classof(const Matcher *N) {
  712   bool isEqualImpl(const Matcher *M) const override {
  720 class CheckAndImmMatcher : public Matcher {
  728   static bool classof(const Matcher *N) {
  734   bool isEqualImpl(const Matcher *M) const override {
  741 class CheckOrImmMatcher : public Matcher {
  749   static bool classof(const Matcher *N) {
  755   bool isEqualImpl(const Matcher *M) const override {
  762 class CheckImmAllOnesVMatcher : public Matcher {
  766   static bool classof(const Matcher *N) {
  772   bool isEqualImpl(const Matcher *M) const override { return true; }
  773   bool isContradictoryImpl(const Matcher *M) const override;
  778 class CheckImmAllZerosVMatcher : public Matcher {
  782   static bool classof(const Matcher *N) {
  788   bool isEqualImpl(const Matcher *M) const override { return true; }
  789   bool isContradictoryImpl(const Matcher *M) const override;
  794 class CheckFoldableChainNodeMatcher : public Matcher {
  799   static bool classof(const Matcher *N) {
  805   bool isEqualImpl(const Matcher *M) const override { return true; }
  809 class EmitIntegerMatcher : public Matcher {
  819   static bool classof(const Matcher *N) {
  825   bool isEqualImpl(const Matcher *M) const override {
  833 class EmitStringIntegerMatcher : public Matcher {
  843   static bool classof(const Matcher *N) {
  849   bool isEqualImpl(const Matcher *M) const override {
  856 class EmitRegisterMatcher : public Matcher {
  868   static bool classof(const Matcher *N) {
  874   bool isEqualImpl(const Matcher *M) const override {
  883 class EmitConvertToTargetMatcher : public Matcher {
  891   static bool classof(const Matcher *N) {
  897   bool isEqualImpl(const Matcher *M) const override {
  906 class EmitMergeInputChainsMatcher : public Matcher {
  919   static bool classof(const Matcher *N) {
  925   bool isEqualImpl(const Matcher *M) const override {
  933 class EmitCopyToRegMatcher : public Matcher {
  945   static bool classof(const Matcher *N) {
  951   bool isEqualImpl(const Matcher *M) const override {
  961 class EmitNodeXFormMatcher : public Matcher {
  971   static bool classof(const Matcher *N) {
  977   bool isEqualImpl(const Matcher *M) const override {
  985 class EmitNodeMatcherCommon : public Matcher {
 1031   static bool classof(const Matcher *N) {
 1037   bool isEqualImpl(const Matcher *M) const override;
 1058   static bool classof(const Matcher *N) {
 1082   static bool classof(const Matcher *N) {
 1090 class CompleteMatchMatcher : public Matcher {
 1103   static bool classof(const Matcher *N) {
 1109   bool isEqualImpl(const Matcher *M) const override {
utils/TableGen/DAGISelMatcherEmitter.cpp
   85   unsigned EmitMatcherList(const Matcher *N, unsigned Indent,
   90   void EmitHistogram(const Matcher *N, raw_ostream &OS);
   98   unsigned EmitMatcher(const Matcher *N, unsigned Indent, unsigned CurrentIdx,
  282 EmitMatcher(const Matcher *N, unsigned Indent, unsigned CurrentIdx,
  287   case Matcher::Scope: {
  347   case Matcher::RecordNode:
  356   case Matcher::RecordChild:
  366   case Matcher::RecordMemRef:
  370   case Matcher::CaptureGlueInput:
  374   case Matcher::MoveChild: {
  385   case Matcher::MoveParent:
  389   case Matcher::CheckSame:
  394   case Matcher::CheckChildSame:
  400   case Matcher::CheckPatternPredicate: {
  408   case Matcher::CheckPredicate: {
  429   case Matcher::CheckOpcode:
  434   case Matcher::SwitchOpcode:
  435   case Matcher::SwitchType: {
  454       const Matcher *Child;
  522  case Matcher::CheckType:
  532   case Matcher::CheckChildType:
  538   case Matcher::CheckInteger: {
  544   case Matcher::CheckChildInteger: {
  552   case Matcher::CheckCondCode:
  557   case Matcher::CheckChild2CondCode:
  562   case Matcher::CheckValueType:
  567   case Matcher::CheckComplexPat: {
  586   case Matcher::CheckAndImm: {
  593   case Matcher::CheckOrImm: {
  600   case Matcher::CheckFoldableChainNode:
  604   case Matcher::CheckImmAllOnesV:
  608   case Matcher::CheckImmAllZerosV:
  612   case Matcher::EmitInteger: {
  620   case Matcher::EmitStringInteger: {
  629   case Matcher::EmitRegister: {
  652   case Matcher::EmitConvertToTarget:
  657   case Matcher::EmitMergeInputChains: {
  673   case Matcher::EmitCopyToReg: {
  689   case Matcher::EmitNodeXForm: {
  699   case Matcher::EmitNode:
  700   case Matcher::MorphNodeTo: {
  777   case Matcher::CompleteMatch: {
  815 EmitMatcherList(const Matcher *N, unsigned Indent, unsigned CurrentIdx,
  977 static void BuildHistogram(const Matcher *M, std::vector<unsigned> &OpcodeFreq){
  999 static StringRef getOpcodeString(Matcher::KindTy Kind) {
 1001   case Matcher::Scope: return "OPC_Scope"; break;
 1002   case Matcher::RecordNode: return "OPC_RecordNode"; break;
 1003   case Matcher::RecordChild: return "OPC_RecordChild"; break;
 1004   case Matcher::RecordMemRef: return "OPC_RecordMemRef"; break;
 1005   case Matcher::CaptureGlueInput: return "OPC_CaptureGlueInput"; break;
 1006   case Matcher::MoveChild: return "OPC_MoveChild"; break;
 1007   case Matcher::MoveParent: return "OPC_MoveParent"; break;
 1008   case Matcher::CheckSame: return "OPC_CheckSame"; break;
 1009   case Matcher::CheckChildSame: return "OPC_CheckChildSame"; break;
 1010   case Matcher::CheckPatternPredicate:
 1012   case Matcher::CheckPredicate: return "OPC_CheckPredicate"; break;
 1013   case Matcher::CheckOpcode: return "OPC_CheckOpcode"; break;
 1014   case Matcher::SwitchOpcode: return "OPC_SwitchOpcode"; break;
 1015   case Matcher::CheckType: return "OPC_CheckType"; break;
 1016   case Matcher::SwitchType: return "OPC_SwitchType"; break;
 1017   case Matcher::CheckChildType: return "OPC_CheckChildType"; break;
 1018   case Matcher::CheckInteger: return "OPC_CheckInteger"; break;
 1019   case Matcher::CheckChildInteger: return "OPC_CheckChildInteger"; break;
 1020   case Matcher::CheckCondCode: return "OPC_CheckCondCode"; break;
 1021   case Matcher::CheckChild2CondCode: return "OPC_CheckChild2CondCode"; break;
 1022   case Matcher::CheckValueType: return "OPC_CheckValueType"; break;
 1023   case Matcher::CheckComplexPat: return "OPC_CheckComplexPat"; break;
 1024   case Matcher::CheckAndImm: return "OPC_CheckAndImm"; break;
 1025   case Matcher::CheckOrImm: return "OPC_CheckOrImm"; break;
 1026   case Matcher::CheckFoldableChainNode:
 1028   case Matcher::CheckImmAllOnesV: return "OPC_CheckImmAllOnesV"; break;
 1029   case Matcher::CheckImmAllZerosV: return "OPC_CheckImmAllZerosV"; break;
 1030   case Matcher::EmitInteger: return "OPC_EmitInteger"; break;
 1031   case Matcher::EmitStringInteger: return "OPC_EmitStringInteger"; break;
 1032   case Matcher::EmitRegister: return "OPC_EmitRegister"; break;
 1033   case Matcher::EmitConvertToTarget: return "OPC_EmitConvertToTarget"; break;
 1034   case Matcher::EmitMergeInputChains: return "OPC_EmitMergeInputChains"; break;
 1035   case Matcher::EmitCopyToReg: return "OPC_EmitCopyToReg"; break;
 1036   case Matcher::EmitNode: return "OPC_EmitNode"; break;
 1037   case Matcher::MorphNodeTo: return "OPC_MorphNodeTo"; break;
 1038   case Matcher::EmitNodeXForm: return "OPC_EmitNodeXForm"; break;
 1039   case Matcher::CompleteMatch: return "OPC_CompleteMatch"; break;
 1045 void MatcherTableEmitter::EmitHistogram(const Matcher *M,
 1063 void llvm::EmitMatcherTable(const Matcher *TheMatcher,
utils/TableGen/DAGISelMatcherGen.cpp
   95     Matcher *TheMatcher;
   99     Matcher *CurPredicate;
  106     Matcher *GetMatcher() const { return TheMatcher; }
  108     void AddMatcher(Matcher *NewNode);
  188 void MatcherGen::AddMatcher(Matcher *NewNode) {
 1066 Matcher *llvm::ConvertPatternToMatcher(const PatternToMatch &Pattern,
utils/TableGen/DAGISelMatcherOpt.cpp
   24 static void ContractNodes(std::unique_ptr<Matcher> &MatcherPtr,
   27   Matcher *N = MatcherPtr.get();
   33       std::unique_ptr<Matcher> Child(Scope->takeChild(i));
   43     Matcher *New = nullptr;
  152     Matcher *CheckType = MatcherPtr.release();
  153     Matcher *CheckOpcode = CheckType->takeNext();
  154     Matcher *Tail = CheckOpcode->takeNext();
  167 static Matcher *FindNodeWithKind(Matcher *M, Matcher::KindTy Kind) {
  167 static Matcher *FindNodeWithKind(Matcher *M, Matcher::KindTy Kind) {
  167 static Matcher *FindNodeWithKind(Matcher *M, Matcher::KindTy Kind) {
  187 static void FactorNodes(std::unique_ptr<Matcher> &InputMatcherPtr) {
  190   std::unique_ptr<Matcher> *RebindableMatcherPtr = &InputMatcherPtr;
  193     Matcher *N = RebindableMatcherPtr->get();
  201   std::unique_ptr<Matcher> &MatcherPtr = *RebindableMatcherPtr;
  205   SmallVector<Matcher*, 32> OptionsToMatch;
  209     std::unique_ptr<Matcher> Child(Scope->takeChild(i));
  223   SmallVector<Matcher*, 32> NewOptionsToMatch;
  229     Matcher *Optn = OptionsToMatch[OptionIdx++];
  240     SmallVector<Matcher*, 8> EqualMatchers;
  257       Matcher *ScanMatcher = OptionsToMatch[Scan];
  281         Matcher *M2 = FindNodeWithKind(ScanMatcher, Optn->getKind());
  285           Matcher *MatcherWithoutM2 = ScanMatcher->unlinkNode(M2);
  316     Matcher *Shared = Optn;
  322       Matcher *Tmp = EqualMatchers[i]->takeNext();
  370                                                         Matcher::CheckType));
  394     SmallVector<std::pair<const SDNodeInfo*, Matcher*>, 8> Cases;
  410     SmallVector<std::pair<MVT::SimpleValueType, Matcher*>, 8> Cases;
  412       Matcher* M = FindNodeWithKind(NewOptionsToMatch[i], Matcher::CheckType);
  412       Matcher* M = FindNodeWithKind(NewOptionsToMatch[i], Matcher::CheckType);
  416       Matcher *MatcherWithoutCTM = NewOptionsToMatch[i]->unlinkNode(CTM);
  423         Matcher *PrevMatcher = Cases[Entry-1].second;
  430         Matcher *Entries[2] = { PrevMatcher, MatcherWithoutCTM };
  442         std::unique_ptr<Matcher> Scope(SM);
  467 llvm::OptimizeMatcher(std::unique_ptr<Matcher> &MatcherPtr,