diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index 262e7022099d7..f1b12d94a2bbd 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -2388,18 +2388,20 @@ void Verifier::verifyFunctionAttrs(FunctionType *FT, AttributeList Attrs, CheckFailed("'vscale_range' maximum must be power-of-two value", V); } - if (Attrs.hasFnAttr("frame-pointer")) { - StringRef FP = Attrs.getFnAttr("frame-pointer").getValueAsString(); + if (Attribute FPAttr = Attrs.getFnAttr("frame-pointer"); FPAttr.isValid()) { + StringRef FP = FPAttr.getValueAsString(); if (FP != "all" && FP != "non-leaf" && FP != "none" && FP != "reserved") CheckFailed("invalid value for 'frame-pointer' attribute: " + FP, V); } // Check EVEX512 feature. - if (MaxParameterWidth >= 512 && Attrs.hasFnAttr("target-features") && - TT.isX86()) { - StringRef TF = Attrs.getFnAttr("target-features").getValueAsString(); - Check(!TF.contains("+avx512f") || !TF.contains("-evex512"), - "512-bit vector arguments require 'evex512' for AVX512", V); + if (TT.isX86() && MaxParameterWidth >= 512) { + Attribute TargetFeaturesAttr = Attrs.getFnAttr("target-features"); + if (TargetFeaturesAttr.isValid()) { + StringRef TF = TargetFeaturesAttr.getValueAsString(); + Check(!TF.contains("+avx512f") || !TF.contains("-evex512"), + "512-bit vector arguments require 'evex512' for AVX512", V); + } } checkUnsignedBaseTenFuncAttr(Attrs, "patchable-function-prefix", V);