mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
* Clean up InstrForest
* Fix ins sel problem, test case: void "foo" (int *%x, int *%y) begin seteq int *%x, %y ret void end git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@552 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -540,12 +540,11 @@ ChooseFcmpInstruction(const InstructionNode* instrNode)
|
||||
MachineOpCode opCode = INVALID_OPCODE;
|
||||
|
||||
Value* operand = ((InstrTreeNode*) instrNode->leftChild())->getValue();
|
||||
switch(operand->getType()->getPrimitiveID())
|
||||
{
|
||||
case Type::FloatTyID: opCode = FCMPS; break;
|
||||
case Type::DoubleTyID: opCode = FCMPD; break;
|
||||
default: assert(0 && "Invalid type for FCMP instruction"); break;
|
||||
}
|
||||
switch(operand->getType()->getPrimitiveID()) {
|
||||
case Type::FloatTyID: opCode = FCMPS; break;
|
||||
case Type::DoubleTyID: opCode = FCMPD; break;
|
||||
default: assert(0 && "Invalid type for FCMP instruction"); break;
|
||||
}
|
||||
|
||||
return opCode;
|
||||
}
|
||||
@@ -1700,7 +1699,8 @@ GetInstructionsByRule(InstructionNode* subtreeRoot,
|
||||
int valueToMove;
|
||||
MachineOpCode movOpCode;
|
||||
|
||||
if (subtreeRoot->leftChild()->getValue()->getType()->isIntegral())
|
||||
if (subtreeRoot->leftChild()->getValue()->getType()->isIntegral() ||
|
||||
subtreeRoot->leftChild()->getValue()->getType()->isPointerType())
|
||||
{
|
||||
// integer condition: destination should be %g0 or integer register
|
||||
// if result must be saved but condition is not SetEQ then we need
|
||||
|
Reference in New Issue
Block a user