diff options
-rw-r--r-- | src/passes/Print.cpp | 37 | ||||
-rw-r--r-- | test/lit/debug/full.wat | 30 | ||||
-rw-r--r-- | test/lit/debug/replace-keep.wat | 40 |
3 files changed, 60 insertions, 47 deletions
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp index c57ab29c3..4ca5f722b 100644 --- a/src/passes/Print.cpp +++ b/src/passes/Print.cpp @@ -48,13 +48,18 @@ static std::ostream& printStackIR(StackIR* ir, PrintSExpression&); namespace { -bool isFullForced() { +bool checkIsFullForced() { if (getenv("BINARYEN_PRINT_FULL")) { return std::stoi(getenv("BINARYEN_PRINT_FULL")) != 0; } return false; } +bool isFullForced() { + static bool full = checkIsFullForced(); + return full; +} + std::ostream& printMemoryName(Name name, std::ostream& o, Module* wasm) { if (!wasm || wasm->memories.size() > 1) { o << ' '; @@ -409,11 +414,12 @@ struct PrintExpressionContents Function* currFunction = nullptr; std::ostream& o; FeatureSet features; + bool full; PrintExpressionContents(PrintSExpression& parent) : parent(parent), wasm(parent.currModule), currFunction(parent.currFunction), o(parent.o), - features(wasm ? wasm->features : FeatureSet::All) {} + features(wasm ? wasm->features : FeatureSet::All), full(isFullForced()) {} std::ostream& printType(Type type) { return parent.printType(type); } @@ -517,6 +523,11 @@ struct PrintExpressionContents printMedium(o, "local.set "); } printLocal(curr->index, currFunction, o); + if (full && currFunction) { + o << " (; local type: "; + printType(currFunction->getLocalType(curr->index)); + o << " ;)"; + } } void visitGlobalGet(GlobalGet* curr) { printMedium(o, "global.get "); @@ -2463,12 +2474,12 @@ void PrintSExpression::printFullLine(Expression* expression) { if (!minify) { doIndent(o, indent); } + visit(expression); if (full) { - o << "["; + o << " (; "; printTypeOrName(expression->type, o, currModule); - o << "] "; + o << " ;)"; } - visit(expression); o << maybeNewLine; } @@ -2508,13 +2519,13 @@ void PrintSExpression::visitBlock(Block* curr) { printDebugLocation(curr); } stack.push_back(curr); + o << '('; + printExpressionContents(curr); if (full) { - o << "["; + o << " (; "; printTypeOrName(curr->type, o, currModule); - o << "]"; + o << " ;)"; } - o << '('; - printExpressionContents(curr); incIndent(); if (curr->list.size() > 0 && curr->list[0]->is<Block>()) { // recurse into the first element @@ -3370,11 +3381,13 @@ static std::ostream& printExpression(Expression* expression, print.currModule = wasm; if (full || isFullForced()) { print.setFull(true); - o << "["; - printTypeOrName(expression->type, o, wasm); - o << "] "; } print.visit(expression); + if (full || isFullForced()) { + o << " (; "; + printTypeOrName(expression->type, o, wasm); + o << " ;)"; + } return o; } diff --git a/test/lit/debug/full.wat b/test/lit/debug/full.wat index 3ea861611..3e0efca11 100644 --- a/test/lit/debug/full.wat +++ b/test/lit/debug/full.wat @@ -27,24 +27,24 @@ ;; NRML-NEXT: ) ;; NRML-NEXT: ) ;; FULL: (func $a - ;; FULL-NEXT: [none] ;;@ src.cpp:1:2 - ;; FULL-NEXT: [none](block $block - ;; FULL-NEXT: [none] ;;@ src.cpp:1:2 + ;; FULL-NEXT: ;;@ src.cpp:1:2 + ;; FULL-NEXT: (block $block (; none ;) + ;; FULL-NEXT: ;;@ src.cpp:1:2 ;; FULL-NEXT: (drop - ;; FULL-NEXT: [i32] ;;@ src.cpp:1:2 - ;; FULL-NEXT: (i32.const 0) - ;; FULL-NEXT: ) - ;; FULL-NEXT: [none] ;;@ src.cpp:3:4 + ;; FULL-NEXT: ;;@ src.cpp:1:2 + ;; FULL-NEXT: (i32.const 0) (; i32 ;) + ;; FULL-NEXT: ) (; none ;) + ;; FULL-NEXT: ;;@ src.cpp:3:4 ;; FULL-NEXT: (drop - ;; FULL-NEXT: [i32] ;;@ src.cpp:3:4 - ;; FULL-NEXT: (i32.const 1) - ;; FULL-NEXT: ) - ;; FULL-NEXT: [none] ;;@ src.cpp:3:4 + ;; FULL-NEXT: ;;@ src.cpp:3:4 + ;; FULL-NEXT: (i32.const 1) (; i32 ;) + ;; FULL-NEXT: ) (; none ;) + ;; FULL-NEXT: ;;@ src.cpp:3:4 ;; FULL-NEXT: (drop - ;; FULL-NEXT: [i32] ;;@ src.cpp:3:4 - ;; FULL-NEXT: (i32.const 2) - ;; FULL-NEXT: ) - ;; FULL-NEXT: ) ;; end block block + ;; FULL-NEXT: ;;@ src.cpp:3:4 + ;; FULL-NEXT: (i32.const 2) (; i32 ;) + ;; FULL-NEXT: ) (; none ;) + ;; FULL-NEXT: ) ;; end block block (; none ;) ;; FULL-NEXT: ) (func $a ;;@ src.cpp:1:2 diff --git a/test/lit/debug/replace-keep.wat b/test/lit/debug/replace-keep.wat index 4c073aeab..f8fc64f65 100644 --- a/test/lit/debug/replace-keep.wat +++ b/test/lit/debug/replace-keep.wat @@ -9,16 +9,16 @@ (module ;; CHECK: (func $test ;; CHECK-NEXT: (local $temp i32) - ;; CHECK-NEXT: [none] ;;@ src.cpp:200:2 - ;; CHECK-NEXT: [none](block - ;; CHECK-NEXT: [none] ;;@ src.cpp:200:2 - ;; CHECK-NEXT: (call $test) - ;; CHECK-NEXT: [none] ;;@ src.cpp:200:2 - ;; CHECK-NEXT: (local.set $temp - ;; CHECK-NEXT: [i32] ;;@ src.cpp:200:2 - ;; CHECK-NEXT: (i32.const 1) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) ;; end block + ;; CHECK-NEXT: ;;@ src.cpp:200:2 + ;; CHECK-NEXT: (block (; none ;) + ;; CHECK-NEXT: ;;@ src.cpp:200:2 + ;; CHECK-NEXT: (call $test) (; none ;) + ;; CHECK-NEXT: ;;@ src.cpp:200:2 + ;; CHECK-NEXT: (local.set $temp (; local type: i32 ;) + ;; CHECK-NEXT: ;;@ src.cpp:200:2 + ;; CHECK-NEXT: (i32.const 1) (; i32 ;) + ;; CHECK-NEXT: ) (; none ;) + ;; CHECK-NEXT: ) ;; end block (; none ;) ;; CHECK-NEXT: ) (func $test (local $temp i32) @@ -40,16 +40,16 @@ ;; CHECK: (func $test-no-trample ;; CHECK-NEXT: (local $temp i32) - ;; CHECK-NEXT: [none] ;;@ src.cpp:300:3 - ;; CHECK-NEXT: [none](block - ;; CHECK-NEXT: [none] ;;@ src.cpp:400:4 - ;; CHECK-NEXT: (call $test) - ;; CHECK-NEXT: [none] ;;@ src.cpp:200:2 - ;; CHECK-NEXT: (local.set $temp - ;; CHECK-NEXT: [i32] ;;@ src.cpp:500:5 - ;; CHECK-NEXT: (i32.const 1) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) ;; end block + ;; CHECK-NEXT: ;;@ src.cpp:300:3 + ;; CHECK-NEXT: (block (; none ;) + ;; CHECK-NEXT: ;;@ src.cpp:400:4 + ;; CHECK-NEXT: (call $test) (; none ;) + ;; CHECK-NEXT: ;;@ src.cpp:200:2 + ;; CHECK-NEXT: (local.set $temp (; local type: i32 ;) + ;; CHECK-NEXT: ;;@ src.cpp:500:5 + ;; CHECK-NEXT: (i32.const 1) (; i32 ;) + ;; CHECK-NEXT: ) (; none ;) + ;; CHECK-NEXT: ) ;; end block (; none ;) ;; CHECK-NEXT: ) (func $test-no-trample (local $temp i32) |