mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Make class comment visible in Doxygen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28436 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		| @@ -6,34 +6,7 @@ | |||||||
| // the University of Illinois Open Source License. See LICENSE.TXT for details. | // the University of Illinois Open Source License. See LICENSE.TXT for details. | ||||||
| // | // | ||||||
| //===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||||
| // |  | ||||||
| // The MachineFrameInfo class represents an abstract stack frame until |  | ||||||
| // prolog/epilog code is inserted.  This class is key to allowing stack frame |  | ||||||
| // representation optimizations, such as frame pointer elimination.  It also |  | ||||||
| // allows more mundane (but still important) optimizations, such as reordering |  | ||||||
| // of abstract objects on the stack frame. |  | ||||||
| // |  | ||||||
| // To support this, the class assigns unique integer identifiers to stack |  | ||||||
| // objects requested clients.  These identifiers are negative integers for fixed |  | ||||||
| // stack objects (such as arguments passed on the stack) or positive for objects |  | ||||||
| // that may be reordered.  Instructions which refer to stack objects use a |  | ||||||
| // special MO_FrameIndex operand to represent these frame indexes. |  | ||||||
| // |  | ||||||
| // Because this class keeps track of all references to the stack frame, it knows |  | ||||||
| // when a variable sized object is allocated on the stack.  This is the sole |  | ||||||
| // condition which prevents frame pointer elimination, which is an important |  | ||||||
| // optimization on register-poor architectures.  Because original variable sized |  | ||||||
| // alloca's in the source program are the only source of variable sized stack |  | ||||||
| // objects, it is safe to decide whether there will be any variable sized |  | ||||||
| // objects before all stack objects are known (for example, register allocator |  | ||||||
| // spill code never needs variable sized objects). |  | ||||||
| // |  | ||||||
| // When prolog/epilog code emission is performed, the final stack frame is built |  | ||||||
| // and the machine instructions are modified to refer to the actual stack |  | ||||||
| // offsets of the object, eliminating all MO_FrameIndex operands from the |  | ||||||
| // program. |  | ||||||
| // |  | ||||||
| //===----------------------------------------------------------------------===// |  | ||||||
|  |  | ||||||
| #ifndef LLVM_CODEGEN_MACHINEFRAMEINFO_H | #ifndef LLVM_CODEGEN_MACHINEFRAMEINFO_H | ||||||
| #define LLVM_CODEGEN_MACHINEFRAMEINFO_H | #define LLVM_CODEGEN_MACHINEFRAMEINFO_H | ||||||
| @@ -47,6 +20,36 @@ class Type; | |||||||
| class MachineDebugInfo; | class MachineDebugInfo; | ||||||
| class MachineFunction; | class MachineFunction; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /// The MachineFrameInfo class represents an abstract stack frame until | ||||||
|  | /// prolog/epilog code is inserted.  This class is key to allowing stack frame | ||||||
|  | /// representation optimizations, such as frame pointer elimination.  It also | ||||||
|  | /// allows more mundane (but still important) optimizations, such as reordering | ||||||
|  | /// of abstract objects on the stack frame. | ||||||
|  | /// | ||||||
|  | /// To support this, the class assigns unique integer identifiers to stack | ||||||
|  | /// objects requested clients.  These identifiers are negative integers for | ||||||
|  | /// fixed stack objects (such as arguments passed on the stack) or positive | ||||||
|  | /// for objects that may be reordered.  Instructions which refer to stack | ||||||
|  | /// objects use a special MO_FrameIndex operand to represent these frame | ||||||
|  | /// indexes. | ||||||
|  | /// | ||||||
|  | /// Because this class keeps track of all references to the stack frame, it | ||||||
|  | /// knows when a variable sized object is allocated on the stack.  This is the | ||||||
|  | /// sole condition which prevents frame pointer elimination, which is an | ||||||
|  | /// important optimization on register-poor architectures.  Because original | ||||||
|  | /// variable sized alloca's in the source program are the only source of | ||||||
|  | /// variable sized stack objects, it is safe to decide whether there will be | ||||||
|  | /// any variable sized objects before all stack objects are known (for | ||||||
|  | /// example, register allocator spill code never needs variable sized | ||||||
|  | /// objects). | ||||||
|  | /// | ||||||
|  | /// When prolog/epilog code emission is performed, the final stack frame is | ||||||
|  | /// built and the machine instructions are modified to refer to the actual | ||||||
|  | /// stack offsets of the object, eliminating all MO_FrameIndex operands from | ||||||
|  | /// the program. | ||||||
|  | /// | ||||||
|  | /// @brief Abstract Stack Frame Information | ||||||
| class MachineFrameInfo { | class MachineFrameInfo { | ||||||
|  |  | ||||||
|   // StackObject - Represent a single object allocated on the stack. |   // StackObject - Represent a single object allocated on the stack. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user