runtime: disable split stacks for runtime_printf function under Clang
commit6b204f796d985a7983f9dd4b37098435814583b9
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 29 May 2014 00:03:30 +0000 (29 00:03 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 29 May 2014 00:03:30 +0000 (29 00:03 +0000)
tree4d779d266d02877f0745ae648992e2b0bc6c2c4e
parentde8b47de2e5ffc6bdbba5bf14024a843af5d9012
runtime: disable split stacks for runtime_printf function under Clang

LLVM's code generator does not currently support split stacks for vararg
functions, so we disable split stacks for the only function that uses this
feature under Clang. This appears to be OK as long as:
- this function only calls non-inlined, internal-linkage (hence no dynamic
  loader) functions compiled with split stacks (i.e. go_vprintf), which can
  allocate more stack space as required;
- this function itself does not occupy more than BACKOFF bytes of stack space
  (see libgcc/config/i386/morestack.S).
These conditions are currently known to be satisfied by Clang on x86-32 and
x86-64. Note that signal handlers receive slightly less stack space than they
would normally do if they happen to be called while this function is being
run. If this turns out to be a problem we could consider increasing BACKOFF.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211037 138bc75d-0d04-0410-961f-82ee72b054a4
libgo/runtime/print.c