From 91f69c675de947e169ebec60b68a752e3ccc6912 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Fri, 26 Feb 2016 16:32:01 -0800 Subject: [PATCH] [dev.ssa] cmd/compile: with -N, don't put JMPs after calls plive doesn't like the fact that we put JMPs right after CALL ops to select{send,recv}. Fixes SSA -N build. Change-Id: I9b3c9e5293196094fd5a6206dd2f99784951f7a9 Reviewed-on: https://go-review.googlesource.com/19982 Run-TryBot: Keith Randall TryBot-Result: Gobot Gobot Reviewed-by: David Chase --- src/cmd/compile/internal/gc/ssa.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index a64bdd07bd..9847806110 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -3597,10 +3597,11 @@ func genssa(f *ssa.Func, ptxt *obj.Prog, gcargs, gclocals *Sym) { } // Emit control flow instructions for block var next *ssa.Block - if i < len(f.Blocks)-1 && Debug['N'] == 0 { + if i < len(f.Blocks)-1 && (Debug['N'] == 0 || b.Kind == ssa.BlockCall) { // If -N, leave next==nil so every block with successors - // ends in a JMP. Helps keep line numbers for otherwise - // empty blocks. + // ends in a JMP (except call blocks - plive doesn't like + // select{send,recv} followed by a JMP call). Helps keep + // line numbers for otherwise empty blocks. next = f.Blocks[i+1] } x := Pc -- 2.48.1