diff options
author | 2016-04-28 13:57:08 -0700 | |
---|---|---|
committer | 2016-04-28 13:57:08 -0700 | |
commit | 40d1e2f8c7a85b7c0522d11d6e3d0c6a18bc9721 (patch) | |
tree | e19334d23d57e3a72d8e3431c409eaa48187ed50 /.hgignore | |
parent | 3ec81fc00f447ce47df079c66450c680155ceeb4 (diff) |
Eliminate mutual recursion in igamma{,c}_impl::Run.
Presently, igammac_impl::Run calls igamma_impl::Run, which in turn calls
igammac_impl::Run.
This isn't actually mutual recursion; the calls are guarded such that we never
get into a loop. Nonetheless, it's a stretch for clang to prove this. As a
result, clang emits a recursive call in both igammac_impl::Run and
igamma_impl::Run.
That this is suboptimal code is bad enough, but it's particularly bad when
compiling for CUDA/nvptx. nvptx allows recursion, but only begrudgingly: If
you have recursive calls in a kernel, it's on you to manually specify the
kernel's stack size. Otherwise, ptxas will dump a warning, make a guess, and
who knows if it's right.
This change explicitly eliminates the mutual recursion in igammac_impl::Run and
igamma_impl::Run.
Diffstat (limited to '.hgignore')
0 files changed, 0 insertions, 0 deletions