Differential D44329 Diff 139182 llvm/trunk/lib/Target/WebAssembly/InstPrinter/WebAssemblyInstPrinter.cpp
Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/lib/Target/WebAssembly/InstPrinter/WebAssemblyInstPrinter.cpp
Show First 20 Lines • Show All 76 Lines • ▼ Show 20 Lines | case WebAssembly::LOOP: { | ||||
printAnnotation(OS, "label" + utostr(ControlFlowCounter) + ':'); | printAnnotation(OS, "label" + utostr(ControlFlowCounter) + ':'); | ||||
ControlFlowStack.push_back(std::make_pair(ControlFlowCounter++, true)); | ControlFlowStack.push_back(std::make_pair(ControlFlowCounter++, true)); | ||||
break; | break; | ||||
} | } | ||||
case WebAssembly::BLOCK: | case WebAssembly::BLOCK: | ||||
ControlFlowStack.push_back(std::make_pair(ControlFlowCounter++, false)); | ControlFlowStack.push_back(std::make_pair(ControlFlowCounter++, false)); | ||||
break; | break; | ||||
case WebAssembly::END_LOOP: | case WebAssembly::END_LOOP: | ||||
ControlFlowStack.pop_back(); | // Have to guard against an empty stack, in case of mismatched pairs | ||||
// in assembly parsing. | |||||
if (!ControlFlowStack.empty()) ControlFlowStack.pop_back(); | |||||
break; | break; | ||||
case WebAssembly::END_BLOCK: | case WebAssembly::END_BLOCK: | ||||
printAnnotation( | if (!ControlFlowStack.empty()) printAnnotation( | ||||
OS, "label" + utostr(ControlFlowStack.pop_back_val().first) + ':'); | OS, "label" + utostr(ControlFlowStack.pop_back_val().first) + ':'); | ||||
break; | break; | ||||
} | } | ||||
// Annotate any control flow label references. | // Annotate any control flow label references. | ||||
unsigned NumFixedOperands = Desc.NumOperands; | unsigned NumFixedOperands = Desc.NumOperands; | ||||
SmallSet<uint64_t, 8> Printed; | SmallSet<uint64_t, 8> Printed; | ||||
for (unsigned i = 0, e = MI->getNumOperands(); i < e; ++i) { | for (unsigned i = 0, e = MI->getNumOperands(); i < e; ++i) { | ||||
▲ Show 20 Lines • Show All 167 Lines • Show Last 20 Lines |