LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PseudoSourceValue.h
Go to the documentation of this file.
1 //===-- llvm/CodeGen/PseudoSourceValue.h ------------------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains the declaration of the PseudoSourceValue class.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
15 #define LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
16 
17 #include "llvm/IR/Value.h"
18 
19 namespace llvm {
20  class MachineFrameInfo;
21  class raw_ostream;
22 
23  /// PseudoSourceValue - Special value supplied for machine level alias
24  /// analysis. It indicates that a memory access references the functions
25  /// stack frame (e.g., a spill slot), below the stack frame (e.g., argument
26  /// space), or constant pool.
27  class PseudoSourceValue : public Value {
28  private:
29  /// printCustom - Implement printing for PseudoSourceValue. This is called
30  /// from Value::print or Value's operator<<.
31  ///
32  virtual void printCustom(raw_ostream &O) const;
33 
34  public:
35  explicit PseudoSourceValue(enum ValueTy Subclass = PseudoSourceValueVal);
36 
37  /// isConstant - Test whether the memory pointed to by this
38  /// PseudoSourceValue has a constant value.
39  ///
40  virtual bool isConstant(const MachineFrameInfo *) const;
41 
42  /// isAliased - Test whether the memory pointed to by this
43  /// PseudoSourceValue may also be pointed to by an LLVM IR Value.
44  virtual bool isAliased(const MachineFrameInfo *) const;
45 
46  /// mayAlias - Return true if the memory pointed to by this
47  /// PseudoSourceValue can ever alias an LLVM IR Value.
48  virtual bool mayAlias(const MachineFrameInfo *) const;
49 
50  /// classof - Methods for support type inquiry through isa, cast, and
51  /// dyn_cast:
52  ///
53  static inline bool classof(const Value *V) {
54  return V->getValueID() == PseudoSourceValueVal ||
56  }
57 
58  /// A pseudo source value referencing a fixed stack frame entry,
59  /// e.g., a spill slot.
60  static const PseudoSourceValue *getFixedStack(int FI);
61 
62  /// A pseudo source value referencing the area below the stack frame of
63  /// a function, e.g., the argument space.
64  static const PseudoSourceValue *getStack();
65 
66  /// A pseudo source value referencing the global offset table
67  /// (or something the like).
68  static const PseudoSourceValue *getGOT();
69 
70  /// A pseudo source value referencing the constant pool. Since constant
71  /// pools are constant, this doesn't need to identify a specific constant
72  /// pool entry.
73  static const PseudoSourceValue *getConstantPool();
74 
75  /// A pseudo source value referencing a jump table. Since jump tables are
76  /// constant, this doesn't need to identify a specific jump table.
77  static const PseudoSourceValue *getJumpTable();
78  };
79 
80  /// FixedStackPseudoSourceValue - A specialized PseudoSourceValue
81  /// for holding FixedStack values, which must include a frame
82  /// index.
84  const int FI;
85  public:
86  explicit FixedStackPseudoSourceValue(int fi) :
88 
89  /// classof - Methods for support type inquiry through isa, cast, and
90  /// dyn_cast:
91  ///
92  static inline bool classof(const Value *V) {
94  }
95 
96  virtual bool isConstant(const MachineFrameInfo *MFI) const;
97 
98  virtual bool isAliased(const MachineFrameInfo *MFI) const;
99 
100  virtual bool mayAlias(const MachineFrameInfo *) const;
101 
102  virtual void printCustom(raw_ostream &OS) const;
103 
104  int getFrameIndex() const { return FI; }
105  };
106 } // End llvm namespace
107 
108 #endif
static bool classof(const Value *V)
static const PseudoSourceValue * getConstantPool()
virtual void printCustom(raw_ostream &OS) const
static const PseudoSourceValue * getJumpTable()
static bool classof(const Value *V)
virtual bool mayAlias(const MachineFrameInfo *) const
Abstract Stack Frame Information.
static const PseudoSourceValue * getFixedStack(int FI)
virtual bool mayAlias(const MachineFrameInfo *) const
virtual bool isConstant(const MachineFrameInfo *) const
unsigned getValueID() const
Definition: Value.h:233
virtual bool isConstant(const MachineFrameInfo *MFI) const
virtual bool isAliased(const MachineFrameInfo *MFI) const
static const PseudoSourceValue * getGOT()
static const PseudoSourceValue * getStack()
LLVM Value Representation.
Definition: Value.h:66
PseudoSourceValue(enum ValueTy Subclass=PseudoSourceValueVal)
virtual bool isAliased(const MachineFrameInfo *) const