summaryrefslogtreecommitdiffstats
path: root/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/SparcV9/InstrSelection/InstrForest.cpp')
-rw-r--r--lib/Target/SparcV9/InstrSelection/InstrForest.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/Target/SparcV9/InstrSelection/InstrForest.cpp b/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
index d7edf15..c24c35b 100644
--- a/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
+++ b/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
@@ -73,10 +73,15 @@ InstructionNode::InstructionNode(Instruction* I)
{
opLabel = opLabel + 100; // load/getElem with index vector
}
+ else if (opLabel == Instruction::Xor &&
+ BinaryOperator::isNot(I))
+ {
+ opLabel = (I->getType() == Type::BoolTy)? NotOp // boolean Not operator
+ : BNotOp; // bitwise Not operator
+ }
else if (opLabel == Instruction::And ||
opLabel == Instruction::Or ||
- opLabel == Instruction::Xor ||
- opLabel == Instruction::Not)
+ opLabel == Instruction::Xor)
{
// Distinguish bitwise operators from logical operators!
if (I->getType() != Type::BoolTy)