mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-14 14:18:32 +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