LLVM API Documentation
#include <LibCallSemantics.h>
Classes | |
struct | LocationMRInfo |
Public Types | |
enum | { DoesOnly, DoesNot } |
Public Attributes | |
const char * | Name |
Name - This is the name of the libcall this describes. | |
AliasAnalysis::ModRefResult | UniversalBehavior |
TODO: Constant folding function: Constant* vector -> Constant*. | |
enum llvm::LibCallFunctionInfo:: { ... } | DetailsType |
const LocationMRInfo * | LocationDetails |
LibCallFunctionInfo - Each record in the array of FunctionInfo structs records the behavior of one libcall that is known by the optimizer. This captures things like the side effects of the call. Side effects are modeled both universally (in the readnone/readonly) sense, but also potentially against a set of abstract locations defined by the optimizer. This allows an optimizer to define that some libcall (e.g. sqrt) is side-effect free except that it might modify errno (thus, the call is not* universally readonly). Or it might say that the side effects are unknown other than to say that errno is not modified.
Definition at line 64 of file LibCallSemantics.h.
anonymous enum |
DetailsType - Indicate the sense of the LocationDetails array. This controls how the LocationDetails array is interpreted.
Definition at line 87 of file LibCallSemantics.h.
enum { ... } llvm::LibCallFunctionInfo::DetailsType |
DetailsType - Indicate the sense of the LocationDetails array. This controls how the LocationDetails array is interpreted.
LocationDetails - This is a pointer to an array of LocationMRInfo structs which indicates the behavior of the libcall w.r.t. specific locations. For example, if this libcall is known to only modify 'errno', it would have a LocationDetails array with the errno ID and 'mod' in it. See the DetailsType field for how this is interpreted.
In the "DoesOnly" case, this information is 'may' information for: there is no guarantee that the specified side effect actually does happen, just that it could. In the "DoesNot" case, this is 'must not' info.
If this pointer is null, no details are known.
Definition at line 119 of file LibCallSemantics.h.
Name - This is the name of the libcall this describes.
Definition at line 66 of file LibCallSemantics.h.
TODO: Constant folding function: Constant* vector -> Constant*.
UniversalBehavior - This captures the absolute mod/ref behavior without any specific context knowledge. For example, if the function is known to be readonly, this would be set to 'ref'. If known to be readnone, this is set to NoModRef.
Definition at line 74 of file LibCallSemantics.h.