summaryrefslogtreecommitdiff
path: root/src/mir/mir.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-12-11 22:32:12 +0800
committerJohn Hodge <tpg@mutabah.net>2016-12-11 22:32:12 +0800
commitf54b532f00e183dc0250435acdff3beec5d7ae51 (patch)
treef7f13ae7ce5d9c8969d2923afdc57296671e5763 /src/mir/mir.cpp
parent577fe1d0c3d891ec1b3fd60db2a6675917c98be0 (diff)
downloadmrust-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.cpp28
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) << ")";