Fix bug in Logic Operator conversion

This commit is contained in:
Sofia 2025-07-09 19:00:03 +03:00
parent 974647b401
commit 8afb2c2572
3 changed files with 6 additions and 6 deletions

View File

@ -359,12 +359,12 @@ impl CmpPredicate {
use LLVMIntPredicate::*;
match (self, signed) {
(LT, true) => LLVMIntSLT,
(GT, true) => LLVMIntSGT,
(LE, true) => LLVMIntSLE,
(GT, true) => LLVMIntSGT,
(GE, true) => LLVMIntSGE,
(LT, false) => LLVMIntULT,
(GT, false) => LLVMIntUGT,
(LE, false) => LLVMIntULE,
(GT, false) => LLVMIntUGT,
(GE, false) => LLVMIntUGE,
(EQ, _) => LLVMIntEQ,
(NE, _) => LLVMIntNE,

View File

@ -1,12 +1,12 @@
// Main
fn main() -> bool {
return 1 == fibonacci(3);
return 2 == fibonacci(3);
}
// Fibonacci
fn fibonacci(value: u16) -> u16 {
if value < 3 {
if value <= 2 {
return 1;
}
return 5 + fibonacci(value - 2);
return fibonacci(value - 1) + fibonacci(value - 2);
}

View File

@ -291,7 +291,7 @@ impl mir::LogicOperator {
match self {
mir::LogicOperator::LT => CmpPredicate::LT,
mir::LogicOperator::GT => CmpPredicate::GT,
mir::LogicOperator::LE => CmpPredicate::LT,
mir::LogicOperator::LE => CmpPredicate::LE,
mir::LogicOperator::GE => CmpPredicate::GE,
mir::LogicOperator::EQ => CmpPredicate::EQ,
mir::LogicOperator::NE => CmpPredicate::NE,