All libcalls should be considered to be GC-leaf functions.
authorDaniel Neilson <dneilson@azul.com>
Thu, 27 Jul 2017 16:49:39 +0000 (16:49 +0000)
committerDaniel Neilson <dneilson@azul.com>
Thu, 27 Jul 2017 16:49:39 +0000 (16:49 +0000)
commit2574d7cbf635076825ea7953b12b75593ba41024
treefcc36834152304e66c0762fbe4b5184c96a49bf9
parentef5bbd61dac4abab34df4e79f6b3f5d167e7df04
All libcalls should be considered to be GC-leaf functions.

Summary:
It is possible for some passes to materialize a call to a libcall (ex: ldexp, exp2, etc),
but these passes will not mark the call as a gc-leaf-function. All libcalls are
actually gc-leaf-functions, so we change llvm::callsGCLeafFunction() to tell us that
available libcalls are equivalent to gc-leaf-function calls.

Reviewers: sanjoy, anna, reames

Reviewed By: anna

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D35840

llvm-svn: 309291
llvm/include/llvm/Transforms/Utils/Local.h
llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp
llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
llvm/lib/Transforms/Utils/Local.cpp
llvm/test/Transforms/PlaceSafepoints/libcall.ll [new file with mode: 0644]
llvm/test/Transforms/RewriteStatepointsForGC/libcall.ll [new file with mode: 0644]