LLVM 20.0.0git
Statepoint.cpp
Go to the documentation of this file.
1//===-- IR/Statepoint.cpp -- gc.statepoint utilities --- -----------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file contains some utility functions to help recognize gc.statepoint
10// intrinsics.
11//
12//===----------------------------------------------------------------------===//
13
14#include "llvm/IR/Statepoint.h"
15
16using namespace llvm;
17
19 return Attr.hasAttribute("statepoint-id") ||
20 Attr.hasAttribute("statepoint-num-patch-bytes");
21}
22
26
27 Attribute AttrID = AS.getFnAttr("statepoint-id");
28 uint64_t StatepointID;
29 if (AttrID.isStringAttribute())
30 if (!AttrID.getValueAsString().getAsInteger(10, StatepointID))
31 Result.StatepointID = StatepointID;
32
33 uint32_t NumPatchBytes;
34 Attribute AttrNumPatchBytes = AS.getFnAttr("statepoint-num-patch-bytes");
35 if (AttrNumPatchBytes.isStringAttribute())
36 if (!AttrNumPatchBytes.getValueAsString().getAsInteger(10, NumPatchBytes))
37 Result.NumPatchBytes = NumPatchBytes;
38
39 return Result;
40}
Attribute getFnAttr(Attribute::AttrKind Kind) const
Return the attribute object that exists for the function.
Definition: Attributes.h:888
bool isStringAttribute() const
Return true if the attribute is a string (target-dependent) attribute.
Definition: Attributes.cpp:348
StringRef getValueAsString() const
Return the attribute's value as a string.
Definition: Attributes.cpp:392
bool hasAttribute(AttrKind Val) const
Return true if the attribute is present.
Definition: Attributes.cpp:418
bool getAsInteger(unsigned Radix, T &Result) const
Parse the current string as an integer of the specified radix.
Definition: StringRef.h:470
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
StatepointDirectives parseStatepointDirectivesFromAttrs(AttributeList AS)
Parse out statepoint directives from the function attributes present in AS.
Definition: Statepoint.cpp:24
bool isStatepointDirectiveAttr(Attribute Attr)
Return true if the Attr is an attribute that is a statepoint directive.
Definition: Statepoint.cpp:18
Call sites that get wrapped by a gc.statepoint (currently only in RewriteStatepointsForGC and potenti...
Definition: Statepoint.h:235