diff options
author | Ian Lance Taylor <iant@golang.org> | 2019-01-18 19:04:36 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2019-01-18 19:04:36 +0000 |
commit | 4f4a855d82a889cebcfca150a7a43909bcb6a346 (patch) | |
tree | f12bae0781920fa34669fe30b6f4615a86d9fb80 /libgo/go/internal/bytealg | |
parent | 225220d668dafb8262db7012bced688acbe63b33 (diff) | |
download | gcc-4f4a855d82a889cebcfca150a7a43909bcb6a346.tar.gz |
libgo: update to Go1.12beta2
Reviewed-on: https://go-review.googlesource.com/c/158019
gotools/:
* Makefile.am (go_cmd_vet_files): Update for Go1.12beta2 release.
(GOTOOLS_TEST_TIMEOUT): Increase to 600.
(check-runtime): Export LD_LIBRARY_PATH before computing GOARCH
and GOOS.
(check-vet): Copy golang.org/x/tools into check-vet-dir.
* Makefile.in: Regenerate.
gcc/testsuite/:
* go.go-torture/execute/names-1.go: Stop using debug/xcoff, which
is no longer externally visible.
From-SVN: r268084
Diffstat (limited to 'libgo/go/internal/bytealg')
-rw-r--r-- | libgo/go/internal/bytealg/bytealg.c | 6 | ||||
-rw-r--r-- | libgo/go/internal/bytealg/bytealg.go | 11 | ||||
-rw-r--r-- | libgo/go/internal/bytealg/compare_generic.go | 28 | ||||
-rw-r--r-- | libgo/go/internal/bytealg/compare_native.go | 9 | ||||
-rw-r--r-- | libgo/go/internal/bytealg/count_generic.go | 2 | ||||
-rw-r--r-- | libgo/go/internal/bytealg/count_native.go | 2 | ||||
-rw-r--r-- | libgo/go/internal/bytealg/equal_native.go | 12 | ||||
-rw-r--r-- | libgo/go/internal/bytealg/indexbyte_generic.go | 22 |
8 files changed, 33 insertions, 59 deletions
diff --git a/libgo/go/internal/bytealg/bytealg.c b/libgo/go/internal/bytealg/bytealg.c index 1ee1ff61a06..c7c6cce8227 100644 --- a/libgo/go/internal/bytealg/bytealg.c +++ b/libgo/go/internal/bytealg/bytealg.c @@ -53,8 +53,10 @@ intgo Compare(struct __go_open_array a, struct __go_open_array b) int i; i = __builtin_memcmp(a.__values, b.__values, (size_t)(l)); - if (i != 0) { - return i; + if (i < 0) { + return -1; + } else if (i > 0) { + return 1; } } if (a.__count < b.__count) { diff --git a/libgo/go/internal/bytealg/bytealg.go b/libgo/go/internal/bytealg/bytealg.go index b91eb0075ba..e46ee7c4fba 100644 --- a/libgo/go/internal/bytealg/bytealg.go +++ b/libgo/go/internal/bytealg/bytealg.go @@ -13,11 +13,12 @@ import ( // Offsets into internal/cpu records for use in assembly. const ( - x86_HasSSE2 = unsafe.Offsetof(cpu.X86.HasSSE2) - x86_HasSSE42 = unsafe.Offsetof(cpu.X86.HasSSE42) - x86_HasAVX2 = unsafe.Offsetof(cpu.X86.HasAVX2) - x86_HasPOPCNT = unsafe.Offsetof(cpu.X86.HasPOPCNT) - s390x_HasVX = unsafe.Offsetof(cpu.S390X.HasVX) + offsetX86HasSSE2 = unsafe.Offsetof(cpu.X86.HasSSE2) + offsetX86HasSSE42 = unsafe.Offsetof(cpu.X86.HasSSE42) + offsetX86HasAVX2 = unsafe.Offsetof(cpu.X86.HasAVX2) + offsetX86HasPOPCNT = unsafe.Offsetof(cpu.X86.HasPOPCNT) + + offsetS390xHasVX = unsafe.Offsetof(cpu.S390X.HasVX) ) // MaxLen is the maximum length of the string to be searched for (argument b) in Index. diff --git a/libgo/go/internal/bytealg/compare_generic.go b/libgo/go/internal/bytealg/compare_generic.go index bb488330e4a..c72bf12ceb0 100644 --- a/libgo/go/internal/bytealg/compare_generic.go +++ b/libgo/go/internal/bytealg/compare_generic.go @@ -36,34 +36,6 @@ samebytes: return 0 } -//go:linkname bytes_Compare bytes.Compare -func bytes_Compare(a, b []byte) int { - l := len(a) - if len(b) < l { - l = len(b) - } - if l == 0 || &a[0] == &b[0] { - goto samebytes - } - for i := 0; i < l; i++ { - c1, c2 := a[i], b[i] - if c1 < c2 { - return -1 - } - if c1 > c2 { - return +1 - } - } -samebytes: - if len(a) < len(b) { - return -1 - } - if len(a) > len(b) { - return +1 - } - return 0 -} - //go:linkname runtime_cmpstring runtime.cmpstring func runtime_cmpstring(a, b string) int { l := len(a) diff --git a/libgo/go/internal/bytealg/compare_native.go b/libgo/go/internal/bytealg/compare_native.go index 2c317e29de8..844d6698cea 100644 --- a/libgo/go/internal/bytealg/compare_native.go +++ b/libgo/go/internal/bytealg/compare_native.go @@ -6,5 +6,14 @@ package bytealg +import _ "unsafe" // For go:linkname + //go:noescape func Compare(a, b []byte) int + +// The declaration below generates ABI wrappers for functions +// implemented in assembly in this package but declared in another +// package. + +//go:linkname abigen_runtime_cmpstring runtime.cmpstring +func abigen_runtime_cmpstring(a, b string) int diff --git a/libgo/go/internal/bytealg/count_generic.go b/libgo/go/internal/bytealg/count_generic.go index 5a0643011e4..e93ac133358 100644 --- a/libgo/go/internal/bytealg/count_generic.go +++ b/libgo/go/internal/bytealg/count_generic.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// -build !amd64,!arm64 +// -build !amd64,!arm64,!ppc64le,!ppc64 package bytealg diff --git a/libgo/go/internal/bytealg/count_native.go b/libgo/go/internal/bytealg/count_native.go index 5ea5c283851..bb622aec015 100644 --- a/libgo/go/internal/bytealg/count_native.go +++ b/libgo/go/internal/bytealg/count_native.go @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // +build ignore_for_gccgo -// +build amd64 arm64 +// +build amd64 arm64 ppc64le ppc64 package bytealg diff --git a/libgo/go/internal/bytealg/equal_native.go b/libgo/go/internal/bytealg/equal_native.go index b5c453086c9..995f0749d44 100644 --- a/libgo/go/internal/bytealg/equal_native.go +++ b/libgo/go/internal/bytealg/equal_native.go @@ -4,11 +4,23 @@ package bytealg +import "unsafe" + // Note: there's no equal_generic.go because every platform must implement at least memequal_varlen in assembly. //go:noescape func Equal(a, b []byte) bool +// The declarations below generate ABI wrappers for functions +// implemented in assembly in this package but declared in another +// package. + // The compiler generates calls to runtime.memequal and runtime.memequal_varlen. // In addition, the runtime calls runtime.memequal explicitly. // Those functions are implemented in this package. + +//go:linkname abigen_runtime_memequal runtime.memequal +func abigen_runtime_memequal(a, b unsafe.Pointer, size uintptr) bool + +//go:linkname abigen_runtime_memequal_varlen runtime.memequal_varlen +func abigen_runtime_memequal_varlen(a, b unsafe.Pointer) bool diff --git a/libgo/go/internal/bytealg/indexbyte_generic.go b/libgo/go/internal/bytealg/indexbyte_generic.go index 6e59fd1e72e..d39dfa87c34 100644 --- a/libgo/go/internal/bytealg/indexbyte_generic.go +++ b/libgo/go/internal/bytealg/indexbyte_generic.go @@ -7,8 +7,6 @@ package bytealg -import _ "unsafe" // for go:linkname - func IndexByte(b []byte, c byte) int { for i, x := range b { if x == c { @@ -26,23 +24,3 @@ func IndexByteString(s string, c byte) int { } return -1 } - -//go:linkname bytes_IndexByte bytes.IndexByte -func bytes_IndexByte(b []byte, c byte) int { - for i, x := range b { - if x == c { - return i - } - } - return -1 -} - -//go:linkname strings_IndexByte strings.IndexByte -func strings_IndexByte(s string, c byte) int { - for i := 0; i < len(s); i++ { - if s[i] == c { - return i - } - } - return -1 -} |