aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenFunction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp
index d773cdd..ac40aab 100644
--- a/clang/lib/CodeGen/CodeGenFunction.cpp
+++ b/clang/lib/CodeGen/CodeGenFunction.cpp
@@ -1115,9 +1115,15 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy,
Fn->removeFnAttr("zero-call-used-regs");
// Add vscale_range attribute if appropriate.
+ llvm::StringMap<bool> FeatureMap;
+ bool IsArmStreaming = false;
+ if (FD) {
+ getContext().getFunctionFeatureMap(FeatureMap, FD);
+ IsArmStreaming = IsArmStreamingFunction(FD, true);
+ }
std::optional<std::pair<unsigned, unsigned>> VScaleRange =
- getContext().getTargetInfo().getVScaleRange(
- getLangOpts(), FD ? IsArmStreamingFunction(FD, true) : false);
+ getContext().getTargetInfo().getVScaleRange(getLangOpts(), IsArmStreaming,
+ &FeatureMap);
if (VScaleRange) {
CurFn->addFnAttr(llvm::Attribute::getWithVScaleRangeArgs(
getLLVMContext(), VScaleRange->first, VScaleRange->second));