Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
lib/Bitcode/Reader/BitcodeReader.cpp
Show First 20 Lines • Show All 1,185 Lines • ▼ Show 20 Lines | static uint64_t getRawAttributeMask(Attribute::AttrKind Val) { | ||||
case Attribute::SwiftError: return 1ULL << 52; | case Attribute::SwiftError: return 1ULL << 52; | ||||
case Attribute::WriteOnly: return 1ULL << 53; | case Attribute::WriteOnly: return 1ULL << 53; | ||||
case Attribute::Speculatable: return 1ULL << 54; | case Attribute::Speculatable: return 1ULL << 54; | ||||
case Attribute::StrictFP: return 1ULL << 55; | case Attribute::StrictFP: return 1ULL << 55; | ||||
case Attribute::SanitizeHWAddress: return 1ULL << 56; | case Attribute::SanitizeHWAddress: return 1ULL << 56; | ||||
case Attribute::NoCfCheck: return 1ULL << 57; | case Attribute::NoCfCheck: return 1ULL << 57; | ||||
case Attribute::OptForFuzzing: return 1ULL << 58; | case Attribute::OptForFuzzing: return 1ULL << 58; | ||||
case Attribute::ShadowCallStack: return 1ULL << 59; | case Attribute::ShadowCallStack: return 1ULL << 59; | ||||
case Attribute::NoFree: return 1ULL << 60; | |||||
jdoerfert: I don't think you can do this. All existing attributes have to keep their "encoding" and new… | |||||
case Attribute::SpeculativeLoadHardening: | case Attribute::SpeculativeLoadHardening: | ||||
return 1ULL << 60; | |||||
case Attribute::ImmArg: | |||||
return 1ULL << 61; | return 1ULL << 61; | ||||
case Attribute::ImmArg: | |||||
return 1ULL << 62; | |||||
case Attribute::Dereferenceable: | case Attribute::Dereferenceable: | ||||
llvm_unreachable("dereferenceable attribute not supported in raw format"); | llvm_unreachable("dereferenceable attribute not supported in raw format"); | ||||
break; | break; | ||||
case Attribute::DereferenceableOrNull: | case Attribute::DereferenceableOrNull: | ||||
llvm_unreachable("dereferenceable_or_null attribute not supported in raw " | llvm_unreachable("dereferenceable_or_null attribute not supported in raw " | ||||
"format"); | "format"); | ||||
break; | break; | ||||
case Attribute::ArgMemOnly: | case Attribute::ArgMemOnly: | ||||
▲ Show 20 Lines • Show All 142 Lines • ▼ Show 20 Lines | static Attribute::AttrKind getAttrFromCode(uint64_t Code) { | ||||
case bitc::ATTR_KIND_NO_ALIAS: | case bitc::ATTR_KIND_NO_ALIAS: | ||||
return Attribute::NoAlias; | return Attribute::NoAlias; | ||||
case bitc::ATTR_KIND_NO_BUILTIN: | case bitc::ATTR_KIND_NO_BUILTIN: | ||||
return Attribute::NoBuiltin; | return Attribute::NoBuiltin; | ||||
case bitc::ATTR_KIND_NO_CAPTURE: | case bitc::ATTR_KIND_NO_CAPTURE: | ||||
return Attribute::NoCapture; | return Attribute::NoCapture; | ||||
case bitc::ATTR_KIND_NO_DUPLICATE: | case bitc::ATTR_KIND_NO_DUPLICATE: | ||||
return Attribute::NoDuplicate; | return Attribute::NoDuplicate; | ||||
case bitc::ATTR_KIND_NOFREE: | |||||
return Attribute::NoFree; | |||||
case bitc::ATTR_KIND_NO_IMPLICIT_FLOAT: | case bitc::ATTR_KIND_NO_IMPLICIT_FLOAT: | ||||
return Attribute::NoImplicitFloat; | return Attribute::NoImplicitFloat; | ||||
case bitc::ATTR_KIND_NO_INLINE: | case bitc::ATTR_KIND_NO_INLINE: | ||||
return Attribute::NoInline; | return Attribute::NoInline; | ||||
case bitc::ATTR_KIND_NO_RECURSE: | case bitc::ATTR_KIND_NO_RECURSE: | ||||
return Attribute::NoRecurse; | return Attribute::NoRecurse; | ||||
case bitc::ATTR_KIND_NON_LAZY_BIND: | case bitc::ATTR_KIND_NON_LAZY_BIND: | ||||
return Attribute::NonLazyBind; | return Attribute::NonLazyBind; | ||||
▲ Show 20 Lines • Show All 4,911 Lines • Show Last 20 Lines |
I don't think you can do this. All existing attributes have to keep their "encoding" and new ones get the next free number which has to match include/llvm/Bitcode/LLVMBitCodes.h.