Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/include/llvm/IR/Attributes.td
Show First 20 Lines • Show All 179 Lines • ▼ Show 20 Lines | |||||
def SanitizeThread : EnumAttr<"sanitize_thread">; | def SanitizeThread : EnumAttr<"sanitize_thread">; | ||||
/// MemorySanitizer is on. | /// MemorySanitizer is on. | ||||
def SanitizeMemory : EnumAttr<"sanitize_memory">; | def SanitizeMemory : EnumAttr<"sanitize_memory">; | ||||
/// HWAddressSanitizer is on. | /// HWAddressSanitizer is on. | ||||
def SanitizeHWAddress : EnumAttr<"sanitize_hwaddress">; | def SanitizeHWAddress : EnumAttr<"sanitize_hwaddress">; | ||||
/// MemTagSanitizer is on. | |||||
def SanitizeMemTag : EnumAttr<"sanitize_memtag">; | |||||
/// Speculative Load Hardening is enabled. | /// Speculative Load Hardening is enabled. | ||||
/// | /// | ||||
/// Note that this uses the default compatibility (always compatible during | /// Note that this uses the default compatibility (always compatible during | ||||
/// inlining) and a conservative merge strategy where inlining an attributed | /// inlining) and a conservative merge strategy where inlining an attributed | ||||
/// body will add the attribute to the caller. This ensures that code carrying | /// body will add the attribute to the caller. This ensures that code carrying | ||||
/// this attribute will always be lowered with hardening enabled. | /// this attribute will always be lowered with hardening enabled. | ||||
def SpeculativeLoadHardening : EnumAttr<"speculative_load_hardening">; | def SpeculativeLoadHardening : EnumAttr<"speculative_load_hardening">; | ||||
Show All 32 Lines | class CompatRule<string F> { | ||||
// caller and callee are incompatible, and true otherwise. | // caller and callee are incompatible, and true otherwise. | ||||
string CompatFunc = F; | string CompatFunc = F; | ||||
} | } | ||||
def : CompatRule<"isEqual<SanitizeAddressAttr>">; | def : CompatRule<"isEqual<SanitizeAddressAttr>">; | ||||
def : CompatRule<"isEqual<SanitizeThreadAttr>">; | def : CompatRule<"isEqual<SanitizeThreadAttr>">; | ||||
def : CompatRule<"isEqual<SanitizeMemoryAttr>">; | def : CompatRule<"isEqual<SanitizeMemoryAttr>">; | ||||
def : CompatRule<"isEqual<SanitizeHWAddressAttr>">; | def : CompatRule<"isEqual<SanitizeHWAddressAttr>">; | ||||
def : CompatRule<"isEqual<SanitizeMemTagAttr>">; | |||||
def : CompatRule<"isEqual<SafeStackAttr>">; | def : CompatRule<"isEqual<SafeStackAttr>">; | ||||
def : CompatRule<"isEqual<ShadowCallStackAttr>">; | def : CompatRule<"isEqual<ShadowCallStackAttr>">; | ||||
class MergeRule<string F> { | class MergeRule<string F> { | ||||
// The name of the function called to merge the attributes of the caller and | // The name of the function called to merge the attributes of the caller and | ||||
// callee. The function's signature must match | // callee. The function's signature must match | ||||
// "void(Function&, const Function &)", where the first parameter is the | // "void(Function&, const Function &)", where the first parameter is the | ||||
// reference to the caller and the second parameter is the reference to the | // reference to the caller and the second parameter is the reference to the | ||||
Show All 17 Lines |