reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
75 OS << "#ifdef GET_ATTR_COMPAT_FUNC\n"; 76 OS << "#undef GET_ATTR_COMPAT_FUNC\n"; 78 OS << "struct EnumAttr {\n"; 79 OS << " static bool isSet(const Function &Fn,\n"; 80 OS << " Attribute::AttrKind Kind) {\n"; 81 OS << " return Fn.hasFnAttribute(Kind);\n"; 82 OS << " }\n\n"; 83 OS << " static void set(Function &Fn,\n"; 84 OS << " Attribute::AttrKind Kind, bool Val) {\n"; 85 OS << " if (Val)\n"; 86 OS << " Fn.addFnAttr(Kind);\n"; 87 OS << " else\n"; 88 OS << " Fn.removeFnAttr(Kind);\n"; 89 OS << " }\n"; 90 OS << "};\n\n"; 92 OS << "struct StrBoolAttr {\n"; 93 OS << " static bool isSet(const Function &Fn,\n"; 94 OS << " StringRef Kind) {\n"; 95 OS << " auto A = Fn.getFnAttribute(Kind);\n"; 96 OS << " return A.getValueAsString().equals(\"true\");\n"; 97 OS << " }\n\n"; 98 OS << " static void set(Function &Fn,\n"; 99 OS << " StringRef Kind, bool Val) {\n"; 100 OS << " Fn.addFnAttr(Kind, Val ? \"true\" : \"false\");\n"; 101 OS << " }\n"; 102 OS << "};\n\n"; 104 printEnumAttrClasses(OS ,Records.getAllDerivedDefinitions("EnumAttr")); 105 printStrBoolAttrClasses(OS , Records.getAllDerivedDefinitions("StrBoolAttr")); 107 OS << "static inline bool hasCompatibleFnAttrs(const Function &Caller,\n" 109 OS << " bool Ret = true;\n\n"; 116 OS << " Ret &= " << FuncName << "(Caller, Callee);\n"; 119 OS << "\n"; 120 OS << " return Ret;\n"; 121 OS << "}\n\n"; 125 OS << "static inline void mergeFnAttrs(Function &Caller,\n" 130 OS << " " << FuncName << "(Caller, Callee);\n"; 133 OS << "}\n\n"; 135 OS << "#endif\n";