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

References

utils/TableGen/IntrinsicEmitter.cpp
  589   OS << "// Add parameter attributes that are not common to all intrinsics.\n";
  590   OS << "#ifdef GET_INTRINSIC_ATTRIBUTES\n";
  592     OS << "static AttributeList getAttributes(LLVMContext &C, " << TargetPrefix
  595     OS << "AttributeList Intrinsic::getAttributes(LLVMContext &C, ID id) {\n";
  615   OS << "  static const uint8_t IntrinsicsToAttributesMap[] = {\n";
  620     OS << "    " << UniqAttributes[&intrinsic] << ", // "
  623   OS << "  };\n\n";
  625   OS << "  AttributeList AS[" << maxArgAttrs + 1 << "];\n";
  626   OS << "  unsigned NumAttrs = 0;\n";
  627   OS << "  if (id != 0) {\n";
  628   OS << "    switch(IntrinsicsToAttributesMap[id - ";
  630     OS << "Intrinsic::num_intrinsics";
  632     OS << "1";
  633   OS << "]) {\n";
  634   OS << "    default: llvm_unreachable(\"Invalid attribute number\");\n";
  637     OS << "    case " << I->second << ": {\n";
  651         OS << "      const Attribute::AttrKind AttrParam" << attrIdx << "[]= {";
  658               OS << ",";
  659             OS << "Attribute::NoCapture";
  664               OS << ",";
  665             OS << "Attribute::NoAlias";
  670               OS << ",";
  671             OS << "Attribute::Returned";
  676               OS << ",";
  677             OS << "Attribute::ReadOnly";
  682               OS << ",";
  683             OS << "Attribute::WriteOnly";
  688               OS << ",";
  689             OS << "Attribute::ReadNone";
  694               OS << ',';
  695             OS << "Attribute::ImmArg";
  702         OS << "};\n";
  703         OS << "      AS[" << numAttrs++ << "] = AttributeList::get(C, "
  713       OS << "      const Attribute::AttrKind Atts[] = {";
  716         OS << "Attribute::NoUnwind";
  721           OS << ",";
  722         OS << "Attribute::NoReturn";
  727           OS << ",";
  728         OS << "Attribute::WillReturn";
  733           OS << ",";
  734         OS << "Attribute::Cold";
  739           OS << ",";
  740         OS << "Attribute::NoDuplicate";
  745           OS << ",";
  746         OS << "Attribute::Convergent";
  751           OS << ",";
  752         OS << "Attribute::Speculatable";
  761           OS << ",";
  762         OS << "Attribute::ReadNone";
  766           OS << ",";
  767         OS << "Attribute::ReadOnly,";
  768         OS << "Attribute::ArgMemOnly";
  772           OS << ",";
  773         OS << "Attribute::ReadOnly";
  777           OS << ",";
  778         OS << "Attribute::ReadOnly,";
  779         OS << "Attribute::InaccessibleMemOnly";
  783           OS << ",";
  784         OS << "Attribute::ReadOnly,";
  785         OS << "Attribute::InaccessibleMemOrArgMemOnly";
  789           OS << ",";
  790         OS << "Attribute::WriteOnly,";
  791         OS << "Attribute::ArgMemOnly";
  795           OS << ",";
  796         OS << "Attribute::WriteOnly";
  800           OS << ",";
  801         OS << "Attribute::WriteOnly,";
  802         OS << "Attribute::InaccessibleMemOnly";
  806           OS << ",";
  807         OS << "Attribute::WriteOnly,";
  808         OS << "Attribute::InaccessibleMemOrArgMemOnly";
  812           OS << ",";
  813         OS << "Attribute::ArgMemOnly";
  817           OS << ",";
  818         OS << "Attribute::InaccessibleMemOnly";
  822           OS << ",";
  823         OS << "Attribute::InaccessibleMemOrArgMemOnly";
  828       OS << "};\n";
  829       OS << "      AS[" << numAttrs++ << "] = AttributeList::get(C, "
  834       OS << "      NumAttrs = " << numAttrs << ";\n";
  835       OS << "      break;\n";
  836       OS << "      }\n";
  838       OS << "      return AttributeList();\n";
  839       OS << "      }\n";
  843   OS << "    }\n";
  844   OS << "  }\n";
  845   OS << "  return AttributeList::get(C, makeArrayRef(AS, NumAttrs));\n";
  846   OS << "}\n";
  847   OS << "#endif // GET_INTRINSIC_ATTRIBUTES\n\n";