From fd788a86b6427ef7ec1f25d4d4f0412bc883ccaf Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Mon, 22 Apr 2019 18:21:37 -0700 Subject: cmd/compile: always mark atColumn1 results as statements In 31618, we end up comparing the is-stmt-ness of positions to repurpose real instructions as inline marks. If the is-stmt-ness doesn't match, we end up not being able to remove the inline mark. Always use statement-full positions to do the matching, so we always find a match if there is one. Also always use positions that are statements for inline marks. Fixes #31618 Change-Id: Idaf39bdb32fa45238d5cd52973cadf4504f947d5 Reviewed-on: https://go-review.googlesource.com/c/go/+/173324 Run-TryBot: Keith Randall Reviewed-by: David Chase --- test/codegen/issue31618.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 test/codegen/issue31618.go (limited to 'test/codegen') diff --git a/test/codegen/issue31618.go b/test/codegen/issue31618.go new file mode 100644 index 0000000000..8effe2995b --- /dev/null +++ b/test/codegen/issue31618.go @@ -0,0 +1,22 @@ +// asmcheck + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package codegen + +// Make sure we remove both inline marks in the following code. +// Both +5 and +6 should map to real instructions, which can +// be used as inline marks instead of explicit nops. +func f(x int) int { + // amd64:-"XCHGL" + x = g(x) + 5 + // amd64:-"XCHGL" + x = g(x) + 6 + return x +} + +func g(x int) int { + return x >> 3 +} -- cgit v1.3-5-g9baa