runtime: fix sigprof frame counting

If sigtramp and sigtrampgo are both on stack, n -= framesToDiscard
is executed twice, which should actually run only once.

Change-Id: Iec53059be4e4e010bd91ced93f03f1210436e694
Reviewed-on: https://go-review.googlesource.com/c/159238
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/libgo/go/runtime/proc.go b/libgo/go/runtime/proc.go
index 05dd53d..b4fa88f 100644
--- a/libgo/go/runtime/proc.go
+++ b/libgo/go/runtime/proc.go
@@ -3542,14 +3542,13 @@
 		for i := 0; i < n; i++ {
 			if stklocs[i].function == "runtime.sigtrampgo" && i+2 < n {
 				framesToDiscard = i + 2
-				n -= framesToDiscard
 			}
 			if stklocs[i].function == "runtime.sigtramp" && i+2 < n {
 				framesToDiscard = i + 2
-				n -= framesToDiscard
 				break
 			}
 		}
+		n -= framesToDiscard
 		for i := 0; i < n; i++ {
 			stk[i] = stklocs[i+framesToDiscard].pc
 		}