From bee6b04dc12e50a33eb382b2c12276b91ae32493 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 14 Jul 2019 10:18:23 +0800 Subject: MIR Optimise - Don't evaluate U128 inv --- src/mir/optimise.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mir/optimise.cpp b/src/mir/optimise.cpp index 540c92a4..a1db0ddb 100644 --- a/src/mir/optimise.cpp +++ b/src/mir/optimise.cpp @@ -2488,6 +2488,7 @@ bool MIR_Optimise_ConstPropagte(::MIR::TypeResolve& state, ::MIR::Function& fcn) TU_MATCHA( (val), (ve), (Uint, auto val = ve.v; + replace = true; switch(ve.t) { case ::HIR::CoreType::U8: val = (~val) & 0xFF; break; @@ -2498,17 +2499,17 @@ bool MIR_Optimise_ConstPropagte(::MIR::TypeResolve& state, ::MIR::Function& fcn) val = ~val; break; case ::HIR::CoreType::U128: - val = ~val; + replace = false; break; case ::HIR::CoreType::Char: MIR_BUG(state, "Invalid use of ! on char"); break; default: // Invalid type for Uint literal + replace = false; break; } new_value = ::MIR::Constant::make_Uint({ val, ve.t }); - replace = true; ), (Int, // Is ! valid on Int? -- cgit v1.2.3