From 9c5bd032b56ba746e8791810a0ab2b31b39ec560 Mon Sep 17 00:00:00 2001
From: Nathan VanBenschoten <nvanbenschoten@gmail.com>
Date: Thu, 6 Jan 2022 14:32:55 -0500
Subject: [PATCH 1/2] [dnm] code movement

---
 gcassert_test.go   | 22 +++++++++++-----------
 testdata/inline.go |  7 ++++++-
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/gcassert_test.go b/gcassert_test.go
index 19b6bb5..5c997aa 100644
--- a/gcassert_test.go
+++ b/gcassert_test.go
@@ -54,12 +54,12 @@ func TestParseDirectives(t *testing.T) {
 			19: {directives: []assertDirective{bce, inline}},
 		},
 		"testdata/inline.go": {
-			45: {directives: []assertDirective{inline}},
-			49: {directives: []assertDirective{inline}},
-			51: {directives: []assertDirective{inline}},
-			55: {directives: []assertDirective{inline}},
-			57: {directives: []assertDirective{inline}},
-			58: {directives: []assertDirective{inline}},
+			46: {directives: []assertDirective{inline}},
+			50: {directives: []assertDirective{inline}},
+			52: {directives: []assertDirective{inline}},
+			56: {directives: []assertDirective{inline}},
+			59: {directives: []assertDirective{inline}},
+			63: {directives: []assertDirective{inline}},
 		},
 		"testdata/noescape.go": {
 			21: {directives: []assertDirective{noescape}},
@@ -90,11 +90,11 @@ testdata/noescape.go:44:	: a escapes to heap:
 testdata/bce.go:8:	fmt.Println(ints[5]): Found IsInBounds
 testdata/bce.go:17:	sum += notInlinable(ints[i]): call was not inlined
 testdata/bce.go:19:	sum += notInlinable(ints[i]): call was not inlined
-testdata/inline.go:45:	alwaysInlined(3): call was not inlined
-testdata/inline.go:51:	sum += notInlinable(i): call was not inlined
-testdata/inline.go:55:	sum += 1: call was not inlined
-testdata/inline.go:58:	test(0).neverInlinedMethod(10): call was not inlined
-testdata/inline.go:60:	otherpkg.A{}.NeverInlined(sum): call was not inlined
+testdata/inline.go:46:	alwaysInlined(3): call was not inlined
+testdata/inline.go:52:	sum += notInlinable(i): call was not inlined
+testdata/inline.go:56:	sum += 1: call was not inlined
+testdata/inline.go:63:	test(0).neverInlinedMethod(10): call was not inlined
+testdata/inline.go:65:	otherpkg.A{}.NeverInlined(sum): call was not inlined
 `
 	assert.Equal(t, expectedOutput, w.String())
 }
diff --git a/testdata/inline.go b/testdata/inline.go
index 4b4be57..0455bab 100644
--- a/testdata/inline.go
+++ b/testdata/inline.go
@@ -2,6 +2,7 @@ package gcassert
 
 import (
 	"fmt"
+	"math/bits"
 
 	"github.com/jordanlewis/gcassert/testdata/otherpkg"
 )
@@ -54,7 +55,11 @@ func caller() {
 	// This assertion should fail as there's nothing to inline.
 	sum += 1 //gcassert:inline
 
-	sum += test(0).alwaysInlinedMethod()
+	if bits.UintSize == 64 {
+		sum += test(0).alwaysInlinedMethod()
+	} else {
+		// placeholder
+	}
 	sum += test(0).neverInlinedMethod(10)
 
 	otherpkg.A{}.NeverInlined(sum)

From d7d9b3176b8477c2f770d826f4b565781b357424 Mon Sep 17 00:00:00 2001
From: Nathan VanBenschoten <nvanbenschoten@gmail.com>
Date: Thu, 6 Jan 2022 14:33:36 -0500
Subject: [PATCH 2/2] [dnm] demonstrate problem

---
 gcassert_test.go   | 2 ++
 testdata/inline.go | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/gcassert_test.go b/gcassert_test.go
index 5c997aa..bd75bc7 100644
--- a/gcassert_test.go
+++ b/gcassert_test.go
@@ -59,6 +59,7 @@ func TestParseDirectives(t *testing.T) {
 			52: {directives: []assertDirective{inline}},
 			56: {directives: []assertDirective{inline}},
 			59: {directives: []assertDirective{inline}},
+			61: {directives: []assertDirective{inline}},
 			63: {directives: []assertDirective{inline}},
 		},
 		"testdata/noescape.go": {
@@ -93,6 +94,7 @@ testdata/bce.go:19:	sum += notInlinable(ints[i]): call was not inlined
 testdata/inline.go:46:	alwaysInlined(3): call was not inlined
 testdata/inline.go:52:	sum += notInlinable(i): call was not inlined
 testdata/inline.go:56:	sum += 1: call was not inlined
+testdata/inline.go:61:	test(0).alwaysInlinedMethod(): call was not inlined
 testdata/inline.go:63:	test(0).neverInlinedMethod(10): call was not inlined
 testdata/inline.go:65:	otherpkg.A{}.NeverInlined(sum): call was not inlined
 `
diff --git a/testdata/inline.go b/testdata/inline.go
index 0455bab..04d913d 100644
--- a/testdata/inline.go
+++ b/testdata/inline.go
@@ -58,7 +58,7 @@ func caller() {
 	if bits.UintSize == 64 {
 		sum += test(0).alwaysInlinedMethod()
 	} else {
-		// placeholder
+		sum -= test(0).alwaysInlinedMethod()
 	}
 	sum += test(0).neverInlinedMethod(10)