diff --git a/libgo/go/bytes/indexbyte.c b/libgo/go/bytes/indexbyte.c
index 1e0fef91f309c7cdbc1bec86922f7605eb4ddf39..a0a963e93f669fdeea2c38b5868dd1b4020c945e 100644
--- a/libgo/go/bytes/indexbyte.c
+++ b/libgo/go/bytes/indexbyte.c
@@ -8,11 +8,13 @@
 
 #include "array.h"
 
-/* This is in C so that the compiler can optimize it
-   appropriately.  */
+/* This is in C so that the compiler can optimize it appropriately.
+   We deliberately don't split the stack in case it does call the
+   library function, which shouldn't need much stack space.  */
 
 int IndexByte (struct __go_open_array, char)
-  asm ("libgo_bytes.bytes.IndexByte");
+  asm ("libgo_bytes.bytes.IndexByte")
+  __attribute__ ((no_split_stack));
 
 int
 IndexByte (struct __go_open_array s, char b)