summaryrefslogtreecommitdiff
path: root/src/mir/mir.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mir/mir.cpp')
-rw-r--r--src/mir/mir.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mir/mir.cpp b/src/mir/mir.cpp
index 6ae5808b..30d94a3d 100644
--- a/src/mir/mir.cpp
+++ b/src/mir/mir.cpp
@@ -444,6 +444,32 @@ namespace MIR {
return os;
}
+ ::std::ostream& operator<<(::std::ostream& os, const Statement& x)
+ {
+ TU_MATCHA( (x), (e),
+ (Assign,
+ os << e.dst << " = " << e.src;
+ ),
+ (Asm,
+ os << "(";
+ for(const auto& spec : e.outputs)
+ os << "\"" << spec.first << "\" : " << spec.second << ", ";
+ os << ") = asm!(\"\", input=( ";
+ for(const auto& spec : e.inputs)
+ os << "\"" << spec.first << "\" : " << spec.second << ", ";
+ os << "), clobbers=[" << e.clobbers << "], flags=[" << e.flags << "])";
+ ),
+ (SetDropFlag,
+ ),
+ (Drop,
+ os << "drop(" << e.slot;
+ if(e.kind == ::MIR::eDropKind::SHALLOW)
+ os << " SHALLOW";
+ os << ")";
+ )
+ )
+ return os;
+ }
}
::MIR::LValue MIR::LValue::clone() const