X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=lib%2FTarget%2FWebAssembly%2FWebAssemblyCFGStackify.cpp;h=e9671ee07e69c668e717844c4df8d01848b6dbcc;hp=6ac53662359db1b52186c96514a9c900cd41c46b;hb=005cc9c500af4fc7a3dbaa61439dd5bf8c0471cf;hpb=75759ab3e9255fe5f716e4a71ca1ee56901dedf8 diff --git a/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp b/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp index 6ac53662359..e9671ee07e6 100644 --- a/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp +++ b/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp @@ -320,11 +320,12 @@ static void PlaceBlockMarker(MachineBasicBlock &MBB, MachineFunction &MF, // the BLOCK needs to be above the LOOP. InsertPos = Header->begin(); } else { - // Otherwise, insert the BLOCK as late in Header as we can, but before any - // existing BLOCKs. + // Otherwise, insert the BLOCK as late in Header as we can, but before the + // beginning of the local expression tree and any nested BLOCKs. InsertPos = Header->getFirstTerminator(); while (InsertPos != Header->begin() && - prev(InsertPos)->getOpcode() == WebAssembly::BLOCK) + prev(InsertPos)->definesRegister(WebAssembly::EXPR_STACK) && + prev(InsertPos)->getOpcode() != WebAssembly::LOOP) --InsertPos; }