about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--llvm_mode/split-compares-pass.so.cc11
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm_mode/split-compares-pass.so.cc b/llvm_mode/split-compares-pass.so.cc
index b6d16331..e97c2e7b 100644
--- a/llvm_mode/split-compares-pass.so.cc
+++ b/llvm_mode/split-compares-pass.so.cc
@@ -585,29 +585,32 @@ size_t SplitComparesTransform::splitFPCompares(Module &M) {
       m_e1 = BinaryOperator::Create(Instruction::And, t_e1, ConstantInt::get(t_e1->getType(), mask_exponent));
       signequal_bb->getInstList().insert(signequal_bb->getTerminator()->getIterator(), m_e0);
       signequal_bb->getInstList().insert(signequal_bb->getTerminator()->getIterator(), m_e1);
+    } else {
+      m_e0 = t_e0;
+      m_e1 = t_e1;
     }
     /* compare the exponents of the operands */
     Instruction *icmp_exponent_result;
     switch (FcmpInst->getPredicate()) {
       case CmpInst::FCMP_OEQ:
         icmp_exponent_result =
-            CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_EQ, t_e0, t_e1);
+            CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_EQ, m_e0, m_e1);
       break;
       case CmpInst::FCMP_ONE:
       case CmpInst::FCMP_UNE:
         icmp_exponent_result =
-            CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_NE, t_e0, t_e1);
+            CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_NE, m_e0, m_e1);
       break;
       case CmpInst::FCMP_OGT:
         Instruction *icmp_exponent;
         icmp_exponent =
-            CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_UGT, t_e0, t_e1);
+            CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_UGT, m_e0, m_e1);
         signequal_bb->getInstList().insert(signequal_bb->getTerminator()->getIterator(), icmp_exponent);
         icmp_exponent_result = BinaryOperator::Create(Instruction::Xor, icmp_exponent, t_s0);
       break;
       case CmpInst::FCMP_OLT:
         icmp_exponent =
-            CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULT, t_e0, t_e1);
+            CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULT, m_e0, m_e1);
         signequal_bb->getInstList().insert(signequal_bb->getTerminator()->getIterator(), icmp_exponent);
         icmp_exponent_result = BinaryOperator::Create(Instruction::Xor, icmp_exponent, t_s0);
       break;