6 #ifndef JLM_LLVM_IR_ATTRIBUTE_HPP
7 #define JLM_LLVM_IR_ATTRIBUTE_HPP
154 [[nodiscard]]
const std::string &
160 [[nodiscard]]
const std::string &
210 [[nodiscard]] uint64_t
245 std::shared_ptr<const jlm::rvsdg::Type>
type_;
259 return std::hash<jlm::llvm::Attribute::kind>()(attribute.kind());
269 auto kindHash = std::hash<jlm::llvm::Attribute::kind>()(attribute.kind());
270 auto valueHash = std::hash<uint64_t>()(attribute.value());
281 auto kindHash = std::hash<std::string>()(attribute.kind());
282 auto valueHash = std::hash<std::string>()(attribute.value());
293 auto kindHash = std::hash<jlm::llvm::Attribute::kind>()(attribute.kind());
294 auto typeHash = attribute.type().ComputeHash();
365 return !(*
this == other);
void InsertTypeAttribute(const TypeAttribute &attribute)
void InsertStringAttribute(const StringAttribute &attribute)
EnumAttributeHashSet EnumAttributes_
IntAttributeHashSet IntAttributes_
StringAttributeHashSet StringAttributes_
EnumAttributeRange EnumAttributes() const
TypeAttributeHashSet TypeAttributes_
void InsertEnumAttribute(const EnumAttribute &attribute)
StringAttributeRange StringAttributes() const
TypeAttributeRange TypeAttributes() const
IntAttributeRange IntAttributes() const
bool operator==(const AttributeSet &other) const noexcept
bool operator!=(const AttributeSet &other) const noexcept
void InsertIntAttribute(const IntAttribute &attribute)
virtual bool operator==(const Attribute &) const =0
@ None
No attributes have been set.
@ EndAttrKinds
Sentinel value useful for loops.
@ SpeculativeLoadHardening
@ CoroDestroyOnlyWhenComplete
@ DisableSanitizerInstrumentation
virtual ~Attribute() noexcept
~EnumAttribute() noexcept override
const Attribute::kind & kind() const noexcept
bool operator==(const Attribute &) const override
~IntAttribute() noexcept override
bool operator==(const Attribute &) const override
uint64_t value() const noexcept
const std::string & value() const noexcept
bool operator==(const Attribute &) const override
~StringAttribute() noexcept override
const std::string & kind() const noexcept
std::shared_ptr< const jlm::rvsdg::Type > type_
bool operator==(const Attribute &) const override
const jlm::rvsdg::Type & type() const noexcept
~TypeAttribute() noexcept override
bool insert(ItemType item)
Global memory state passed between functions.
std::size_t CombineHashes(std::size_t hash, Args... args)
std::size_t operator()(const jlm::llvm::EnumAttribute &attribute) const noexcept
std::size_t operator()(const jlm::llvm::IntAttribute &attribute) const noexcept
std::size_t operator()(const jlm::llvm::StringAttribute &attribute) const noexcept
std::size_t operator()(const jlm::llvm::TypeAttribute &attribute) const noexcept