diff --git a/src/analysis/lattices/tuple.h b/src/analysis/lattices/tuple.h index f031f6aae49..d63d81f47f0 100644 --- a/src/analysis/lattices/tuple.h +++ b/src/analysis/lattices/tuple.h @@ -79,17 +79,17 @@ template struct Tuple { WASM_UNREACHABLE("unexpected comparison"); } - bool joinImpl(Element& joinee, - const Element& joiner, - std::index_sequence<>) const noexcept { + int joinImpl(Element& joinee, + const Element& joiner, + std::index_sequence<>) const noexcept { // Base case: there is nothing left to join. return false; } template - bool joinImpl(Element& joinee, - const Element& joiner, - std::index_sequence) const noexcept { + int joinImpl(Element& joinee, + const Element& joiner, + std::index_sequence) const noexcept { // Recursive case: join the current element and recurse to the next // elements. return std::get(lattices).join(std::get(joinee), @@ -97,21 +97,21 @@ template struct Tuple { joinImpl(joinee, joiner, std::index_sequence{}); } - bool meetImpl(Element& meetee, - const Element& meeter, - std::index_sequence<>) const noexcept { + int meetImpl(Element& meetee, + const Element& meeter, + std::index_sequence<>) const noexcept { // Base case: there is nothing left to mee. return false; } template - bool meetImpl(Element& meetee, - const Element& meeter, - std::index_sequence) const noexcept { + int meetImpl(Element& meetee, + const Element& meeter, + std::index_sequence) const noexcept { // Recursive case: meet the current element and recurse to the next // elements. - return std::get(lattices).meet(std::get(meetee), - std::get(meeter)) | + return (std::get(lattices).meet(std::get(meetee), + std::get(meeter))) | meetImpl(meetee, meeter, std::index_sequence{}); }