mirror of
https://github.com/golang/go
synced 2024-11-08 19:26:14 -07:00
fd788a86b6
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 <khr@golang.org> Reviewed-by: David Chase <drchase@google.com>
23 lines
504 B
Go
23 lines
504 B
Go
// 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
|
|
}
|