mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +00:00
Eliminate MainTreeNode function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@550 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
974e73a086
commit
c2a2396e17
@ -24,18 +24,11 @@
|
||||
#ifndef LLVM_CODEGEN_INSTRFOREST_H
|
||||
#define LLVM_CODEGEN_INSTRFOREST_H
|
||||
|
||||
//************************** System Include Files **************************/
|
||||
|
||||
#include <hash_map>
|
||||
#include <hash_set>
|
||||
|
||||
//*************************** User Include Files ***************************/
|
||||
|
||||
#include "llvm/Support/NonCopyable.h"
|
||||
#include "llvm/Support/HashExtras.h"
|
||||
#include "llvm/Instruction.h"
|
||||
|
||||
//************************* Opaque Declarations ****************************/
|
||||
#include <hash_map>
|
||||
#include <hash_set>
|
||||
|
||||
class ConstPoolVal;
|
||||
class BasicBlock;
|
||||
@ -43,8 +36,6 @@ class Method;
|
||||
class InstrTreeNode;
|
||||
class InstrForest;
|
||||
|
||||
/******************** Exported Data Types and Constants ********************/
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// OpLabel values for special-case nodes created for instruction selection.
|
||||
// All op-labels not defined here are identical to the instruction
|
||||
@ -110,7 +101,7 @@ extern StateLabel burm_state (OpLabel op, StateLabel leftState,
|
||||
|
||||
extern StateLabel burm_rule (StateLabel state, int goalNT);
|
||||
|
||||
extern BasicTreeNode** burm_kids (BasicTreeNode* p, int eruleno,
|
||||
extern BasicTreeNode** burm_kids (BasicTreeNode* p, int eruleno,
|
||||
BasicTreeNode* kids[]);
|
||||
|
||||
extern void printcover (BasicTreeNode*, int, int);
|
||||
@ -119,8 +110,6 @@ extern int treecost (BasicTreeNode*, int, int);
|
||||
extern void printMatches (BasicTreeNode*);
|
||||
|
||||
|
||||
//*********************** Public Class Declarations ************************/
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// class InstrTreeNode
|
||||
//
|
||||
@ -128,12 +117,6 @@ extern void printMatches (BasicTreeNode*);
|
||||
// instruction selection via BURG.
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
inline InstrTreeNode*
|
||||
MainTreeNode(BasicTreeNode* node) {
|
||||
return node->treeNodePtr;
|
||||
}
|
||||
|
||||
|
||||
class InstrTreeNode : public NonCopyableV {
|
||||
public:
|
||||
enum InstrTreeNodeType { NTInstructionNode,
|
||||
@ -168,9 +151,9 @@ public:
|
||||
inline InstrTreeNode* rightChild () const {
|
||||
return (InstrTreeNode*)
|
||||
(basicNode.rightChild
|
||||
? (MainTreeNode(basicNode.rightChild)->getOpLabel() == VRegListOp
|
||||
? MainTreeNode(basicNode.rightChild)->leftChild()
|
||||
: MainTreeNode(basicNode.rightChild))
|
||||
? (basicNode.rightChild->treeNodePtr->getOpLabel() == VRegListOp
|
||||
? basicNode.rightChild->treeNodePtr->leftChild()
|
||||
: basicNode.rightChild->treeNodePtr)
|
||||
: NULL);
|
||||
}
|
||||
|
||||
|
@ -220,7 +220,7 @@ SelectInstructionsForTree(BasicTreeNode* treeRoot,
|
||||
//
|
||||
if (treeRoot->opLabel != VRegListOp)
|
||||
{
|
||||
InstructionNode* instrNode = (InstructionNode*) MainTreeNode(treeRoot);
|
||||
InstructionNode* instrNode = (InstructionNode*)treeRoot->treeNodePtr;
|
||||
assert(instrNode->getNodeType() == InstrTreeNode::NTInstructionNode);
|
||||
|
||||
unsigned N = GetInstructionsByRule(instrNode, ruleForNode, nts, Target,
|
||||
@ -259,7 +259,7 @@ SelectInstructionsForTree(BasicTreeNode* treeRoot,
|
||||
{
|
||||
assert(i < 2);
|
||||
InstrTreeNode::InstrTreeNodeType
|
||||
nodeType = MainTreeNode(kids[i])->getNodeType();
|
||||
nodeType = kids[i]->treeNodePtr->getNodeType();
|
||||
if (nodeType == InstrTreeNode::NTVRegListNode ||
|
||||
nodeType == InstrTreeNode::NTInstructionNode)
|
||||
{
|
||||
|
@ -153,7 +153,8 @@ ostream &operator<<(ostream &os, const MachineOperand &mop) {
|
||||
//
|
||||
// For the common case of 2- and 3-operand arithmetic/logical instructions,
|
||||
// set the m/c instr. operands directly from the VM instruction's operands.
|
||||
// Check whether the first or second operand is 0 and can use a dedicated "0" register.
|
||||
// Check whether the first or second operand is 0 and can use a dedicated "0"
|
||||
// register.
|
||||
// Check whether the second operand should use an immediate field or register.
|
||||
// (First and third operands are never immediates for such instructions.)
|
||||
//
|
||||
|
@ -220,7 +220,7 @@ SelectInstructionsForTree(BasicTreeNode* treeRoot,
|
||||
//
|
||||
if (treeRoot->opLabel != VRegListOp)
|
||||
{
|
||||
InstructionNode* instrNode = (InstructionNode*) MainTreeNode(treeRoot);
|
||||
InstructionNode* instrNode = (InstructionNode*)treeRoot->treeNodePtr;
|
||||
assert(instrNode->getNodeType() == InstrTreeNode::NTInstructionNode);
|
||||
|
||||
unsigned N = GetInstructionsByRule(instrNode, ruleForNode, nts, Target,
|
||||
@ -259,7 +259,7 @@ SelectInstructionsForTree(BasicTreeNode* treeRoot,
|
||||
{
|
||||
assert(i < 2);
|
||||
InstrTreeNode::InstrTreeNodeType
|
||||
nodeType = MainTreeNode(kids[i])->getNodeType();
|
||||
nodeType = kids[i]->treeNodePtr->getNodeType();
|
||||
if (nodeType == InstrTreeNode::NTVRegListNode ||
|
||||
nodeType == InstrTreeNode::NTInstructionNode)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user