diff options
author | John Hodge <tpg@ucc.asn.au> | 2019-07-14 10:18:23 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2019-07-14 10:18:23 +0800 |
commit | bee6b04dc12e50a33eb382b2c12276b91ae32493 (patch) | |
tree | 3f3c0dd848184b1db2fa8f61113d22760693a194 | |
parent | 74aa547702e780c388ae73f32fcd509bff7ab93f (diff) | |
download | mrust-bee6b04dc12e50a33eb382b2c12276b91ae32493.tar.gz |
MIR Optimise - Don't evaluate U128 inv
-rw-r--r-- | src/mir/optimise.cpp | 5 |
1 files 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? |