diff options
author | John Hodge <tpg@mutabah.net> | 2016-12-11 22:32:12 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-12-11 22:32:12 +0800 |
commit | f54b532f00e183dc0250435acdff3beec5d7ae51 (patch) | |
tree | f7f13ae7ce5d9c8969d2923afdc57296671e5763 /src/mir/mir.cpp | |
parent | 577fe1d0c3d891ec1b3fd60db2a6675917c98be0 (diff) | |
download | mrust-f54b532f00e183dc0250435acdff3beec5d7ae51.tar.gz |
HIR Const Eval - Split into two passes to have correct types in literals
Diffstat (limited to 'src/mir/mir.cpp')
-rw-r--r-- | src/mir/mir.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/mir/mir.cpp b/src/mir/mir.cpp index 2dd911ec..d7ae41cc 100644 --- a/src/mir/mir.cpp +++ b/src/mir/mir.cpp @@ -104,7 +104,33 @@ namespace MIR { os << "Cast(" << e.val << " as " << e.type << ")"; ), (BinOp, - os << "BinOp(" << e.val_l << " " << static_cast<int>(e.op) << " " << e.val_r << ")"; + os << "BinOp(" << e.val_l << " "; + switch(e.op) + { + case ::MIR::eBinOp::ADD: os << "ADD"; break; + case ::MIR::eBinOp::SUB: os << "SUB"; break; + case ::MIR::eBinOp::MUL: os << "MUL"; break; + case ::MIR::eBinOp::DIV: os << "DIV"; break; + case ::MIR::eBinOp::MOD: os << "MOD"; break; + case ::MIR::eBinOp::ADD_OV: os << "ADD_OV"; break; + case ::MIR::eBinOp::SUB_OV: os << "SUB_OV"; break; + case ::MIR::eBinOp::MUL_OV: os << "MUL_OV"; break; + case ::MIR::eBinOp::DIV_OV: os << "DIV_OV"; break; + + case ::MIR::eBinOp::BIT_OR : os << "BIT_OR" ; break; + case ::MIR::eBinOp::BIT_AND: os << "BIT_AND"; break; + case ::MIR::eBinOp::BIT_XOR: os << "BIT_XOR"; break; + case ::MIR::eBinOp::BIT_SHL: os << "BIT_SHL"; break; + case ::MIR::eBinOp::BIT_SHR: os << "BIT_SHR"; break; + + case ::MIR::eBinOp::EQ: os << "EQ"; break; + case ::MIR::eBinOp::NE: os << "NE"; break; + case ::MIR::eBinOp::GT: os << "GT"; break; + case ::MIR::eBinOp::GE: os << "GE"; break; + case ::MIR::eBinOp::LT: os << "LT"; break; + case ::MIR::eBinOp::LE: os << "LE"; break; + } + os << " " << e.val_r << ")"; ), (UniOp, os << "UniOp(" << e.val << " " << static_cast<int>(e.op) << ")"; |