@@ -754,6 +754,7 @@ enum AttributeKindCod | ||
ATTR_KIND_CORO_O | ||
ATTR_KIND_DEAD_O | ||
ATTR_KIND_RANGE = 92, | ||
+ ATTR_KIND_SANITI | ||
}; | ||
enum ComdatSelectionK |
@@ -285,6 +285,9 @@ def SanitizeHWAddres | ||
/// MemTagSanitizer is on. | ||
def SanitizeMemTag : EnumAttr<"saniti | ||
+/// NumericalStabili | ||
+def SanitizeNumerica | ||
+ | ||
/// Speculative Load Hardening is enabled. | ||
/// | ||
/// Note that this uses the default compatibility (always compatible during | ||
@@ -372,6 +375,7 @@ def : CompatRule<"isEq | ||
def : CompatRule<"isEq | ||
def : CompatRule<"isEq | ||
def : CompatRule<"isEq | ||
+def : CompatRule<"isEq | ||
def : CompatRule<"isEq | ||
def : CompatRule<"isEq | ||
def : CompatRule<"isEq |
@@ -2128,6 +2128,8 @@ static Attribute::AttrK | ||
return Attribute::Sanit | ||
case bitc::ATTR_KIND_ | ||
return Attribute::Sanit | ||
+ case bitc::ATTR_KIND_ | ||
+ return Attribute::Sanit | ||
case bitc::ATTR_KIND_ | ||
return Attribute::Specu | ||
case bitc::ATTR_KIND_ |
@@ -828,6 +828,8 @@ static uint64_t getAttrKindEncod | ||
return bitc::ATTR_KIND_ | ||
case Attribute::Sanit | ||
return bitc::ATTR_KIND_ | ||
+ case Attribute::Sanit | ||
+ return bitc::ATTR_KIND_ | ||
case Attribute::Specu | ||
return bitc::ATTR_KIND_ | ||
case Attribute::Swift |
@@ -954,6 +954,7 @@ Function *CodeExtractor:: | ||
case Attribute::Shado | ||
case Attribute::Sanit | ||
case Attribute::Sanit | ||
+ case Attribute::Sanit | ||
case Attribute::Sanit | ||
case Attribute::Sanit | ||
case Attribute::Sanit |
@@ -1564,7 +1564,7 @@ exit: | ||
; CHECK: select <2 x i1> <i1 true, i1 false>, <2 x i8> <i8 2, i8 3>, <2 x i8> <i8 3, i8 2> | ||
call void @f.nobuiltin() builtin | ||
- ; CHECK: call void @f.nobuiltin() #51 | ||
+ ; CHECK: call void @f.nobuiltin() #52 | ||
call fastcc noalias ptr @f.noalias() noinline | ||
; CHECK: call fastcc noalias ptr @f.noalias() #12 | ||
@@ -1988,6 +1988,8 @@ declare void @f.nosanitize_bo | ||
declare void @f.allockind() allockind("alloc | ||
; CHECK: declare void @f.allockind() #50 | ||
+declare void @f.sanitize_nume | ||
+; CHECK: declare void @f.sanitize_nume | ||
; CHECK: declare nofpclass(snan) float @nofpclass_snan( | ||
declare nofpclass(snan) float @nofpclass_snan( | ||
@@ -2110,7 +2112,8 @@ define float @nofpclass_calls | ||
; CHECK: attributes #48 = { allocsize(1,0) } | ||
; CHECK: attributes #49 = { nosanitize_bound | ||
; CHECK: attributes #50 = { allockind("alloc | ||
-; CHECK: attributes #51 = { builtin } | ||
+; CHECK: attributes #51 = { sanitize_numeric | ||
+; CHECK: attributes #52 = { builtin } | ||
;; Metadata | ||