diff --git a/libyul/optimiser/ConditionalSimplifier.cpp b/libyul/optimiser/ConditionalSimplifier.cpp index 858ac8999..54d30a4e4 100644 --- a/libyul/optimiser/ConditionalSimplifier.cpp +++ b/libyul/optimiser/ConditionalSimplifier.cpp @@ -79,9 +79,9 @@ void ConditionalSimplifier::operator()(Block& _block) {Identifier{location, condition}}, make_unique(Literal{ location, - LiteralKind::Number, - "0"_yulstring, - {} + LiteralKind::Boolean, + "false"_yulstring, + m_dialect.boolType }) } ); diff --git a/test/libyul/yulOptimizerTests/conditionalSimplifier/add_correct_type.yul b/test/libyul/yulOptimizerTests/conditionalSimplifier/add_correct_type.yul new file mode 100644 index 000000000..f0b46072f --- /dev/null +++ b/test/libyul/yulOptimizerTests/conditionalSimplifier/add_correct_type.yul @@ -0,0 +1,18 @@ +{ + let y:bool := false + for {} true { } { + if y { break } + } +} +// ==== +// dialect: yul +// step: conditionalSimplifier +// ---- +// { +// let y:bool := false +// for { } true { } +// { +// if y { break } +// y := false +// } +// } diff --git a/test/libyul/yulOptimizerTests/conditionalSimplifier/add_correct_type_wasm.yul b/test/libyul/yulOptimizerTests/conditionalSimplifier/add_correct_type_wasm.yul new file mode 100644 index 000000000..ab523246e --- /dev/null +++ b/test/libyul/yulOptimizerTests/conditionalSimplifier/add_correct_type_wasm.yul @@ -0,0 +1,18 @@ +{ + let y:i32 := 0:i32 + for {} true { } { + if y { break } + } +} +// ==== +// dialect: ewasm +// step: conditionalSimplifier +// ---- +// { +// let y:i32 := 0:i32 +// for { } true { } +// { +// if y { break } +// y := false +// } +// } diff --git a/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_after_if_break.yul b/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_after_if_break.yul index 00c46fcdf..12d673f20 100644 --- a/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_after_if_break.yul +++ b/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_after_if_break.yul @@ -12,6 +12,6 @@ // for { } and(y, 8) { pop(y) } // { // if y { break } -// y := 0 +// y := false // } // } diff --git a/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_after_if_continue.yul b/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_after_if_continue.yul index 1e6b0828a..d9457139b 100644 --- a/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_after_if_continue.yul +++ b/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_after_if_continue.yul @@ -12,6 +12,6 @@ // for { } and(y, 8) { pop(y) } // { // if y { continue } -// y := 0 +// y := false // } // } diff --git a/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_before_for_condition.yul b/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_before_for_condition.yul index e936287db..d274af31f 100644 --- a/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_before_for_condition.yul +++ b/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_before_for_condition.yul @@ -14,9 +14,9 @@ // let x := mload(0) // let y := mload(0) // if x { revert(0, 0) } -// x := 0 +// x := false // if y { revert(0, 0) } -// y := 0 +// y := false // for { } and(x, y) { } // { x := 2 } // } diff --git a/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_before_for_post.yul b/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_before_for_post.yul index c541590bd..9a1f757fe 100644 --- a/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_before_for_post.yul +++ b/test/libyul/yulOptimizerTests/conditionalSimplifier/clear_before_for_post.yul @@ -16,7 +16,7 @@ // for { } x { sstore(1, x) } // { // if x { continue } -// x := 0 +// x := false // sstore(0, x) // } // sstore(0, x) diff --git a/test/libyul/yulOptimizerTests/conditionalSimplifier/no_opt_if_break_is_not_last.yul b/test/libyul/yulOptimizerTests/conditionalSimplifier/no_opt_if_break_is_not_last.yul index 101407783..35a5c7c4d 100644 --- a/test/libyul/yulOptimizerTests/conditionalSimplifier/no_opt_if_break_is_not_last.yul +++ b/test/libyul/yulOptimizerTests/conditionalSimplifier/no_opt_if_break_is_not_last.yul @@ -26,7 +26,7 @@ // sstore(7, 8) // break // } -// x := 0 +// x := false // sstore(10, x) // } // } diff --git a/test/libyul/yulOptimizerTests/conditionalSimplifier/opt_after_terminating_if.yul b/test/libyul/yulOptimizerTests/conditionalSimplifier/opt_after_terminating_if.yul index ca8bbba87..f2bdd4eaa 100644 --- a/test/libyul/yulOptimizerTests/conditionalSimplifier/opt_after_terminating_if.yul +++ b/test/libyul/yulOptimizerTests/conditionalSimplifier/opt_after_terminating_if.yul @@ -13,6 +13,6 @@ // sstore(0, x) // revert(0, 0) // } -// x := 0 +// x := false // sstore(1, x) // } diff --git a/test/libyul/yulOptimizerTests/fullSuite/clear_after_if_continue.yul b/test/libyul/yulOptimizerTests/fullSuite/clear_after_if_continue.yul index a9cdb84e0..082b6d5c4 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/clear_after_if_continue.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/clear_after_if_continue.yul @@ -24,7 +24,7 @@ // } // { // if y { continue } -// sstore(1, 0) +// sstore(1, false) // } // if y { revert(0, 0) } // }