runtime: use builtin memmove directly
We can use the intrinsic memmove directly, without going through
C.
Corresponding GCC backend change:
Index: gcc/go/go-gcc.cc
===================================================================
--- gcc/go/go-gcc.cc (revision 269825)
+++ gcc/go/go-gcc.cc (working copy)
@@ -604,6 +604,15 @@
NULL_TREE),
false, false);
+ // We use __builtin_memmove for copying data.
+ this->define_builtin(BUILT_IN_MEMMOVE, "__builtin_memmove", "memmove",
+ build_function_type_list(void_type_node,
+ ptr_type_node,
+ const_ptr_type_node,
+ size_type_node,
+ NULL_TREE),
+ false, false);
+
// Used by runtime/internal/sys.
this->define_builtin(BUILT_IN_CTZ, "__builtin_ctz", "ctz",
build_function_type_list(integer_type_node,
Change-Id: Idaccf0a85da1d176555f1bfb11e849706d619bd1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170004
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 files changed