@@ -2388,18 +2388,20 @@ void Verifier::verifyFunctionAttrs(FunctionType *FT, AttributeList Attrs,
23882388 CheckFailed (" 'vscale_range' maximum must be power-of-two value" , V);
23892389 }
23902390
2391- if (Attrs.hasFnAttr (" frame-pointer" )) {
2392- StringRef FP = Attrs. getFnAttr ( " frame-pointer " ) .getValueAsString ();
2391+ if (Attribute FPAttr = Attrs.getFnAttr (" frame-pointer" ); FPAttr. isValid ( )) {
2392+ StringRef FP = FPAttr .getValueAsString ();
23932393 if (FP != " all" && FP != " non-leaf" && FP != " none" && FP != " reserved" )
23942394 CheckFailed (" invalid value for 'frame-pointer' attribute: " + FP, V);
23952395 }
23962396
23972397 // Check EVEX512 feature.
2398- if (MaxParameterWidth >= 512 && Attrs.hasFnAttr (" target-features" ) &&
2399- TT.isX86 ()) {
2400- StringRef TF = Attrs.getFnAttr (" target-features" ).getValueAsString ();
2401- Check (!TF.contains (" +avx512f" ) || !TF.contains (" -evex512" ),
2402- " 512-bit vector arguments require 'evex512' for AVX512" , V);
2398+ if (TT.isX86 () && MaxParameterWidth >= 512 ) {
2399+ Attribute TargetFeaturesAttr = Attrs.getFnAttr (" target-features" );
2400+ if (TargetFeaturesAttr.isValid ()) {
2401+ StringRef TF = TargetFeaturesAttr.getValueAsString ();
2402+ Check (!TF.contains (" +avx512f" ) || !TF.contains (" -evex512" ),
2403+ " 512-bit vector arguments require 'evex512' for AVX512" , V);
2404+ }
24032405 }
24042406
24052407 checkUnsignedBaseTenFuncAttr (Attrs, " patchable-function-prefix" , V);
0 commit comments