From 21d25d2bcd74a311ddfea970c028e0b8d5ea129f Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Mon, 4 Nov 2024 16:00:22 -0800 Subject: [ubsan] Suppression by type for `-fsanitize=enum` (#114754) Similar to #107332. --- clang/lib/CodeGen/CGExpr.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'clang/lib/CodeGen/CGExpr.cpp') diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index e90e8da3e9f1..3388a6df466d 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -1941,6 +1941,10 @@ bool CodeGenFunction::EmitScalarRangeCheck(llvm::Value *Value, QualType Ty, cast(Value->getType())->getBitWidth() == 1) return false; + if (NeedsEnumCheck && + getContext().isTypeIgnoredBySanitizer(SanitizerKind::Enum, Ty)) + return false; + llvm::APInt Min, End; if (!getRangeForType(*this, Ty, Min, End, /*StrictEnums=*/true, IsBool)) return true; -- cgit v1.2.3