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)