mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-18 10:24:45 +00:00
[CallGraph] Teach the CallGraph about non-leaf intrinsics.
Summary: Currently intrinsics don't affect the creation of the call graph. This is not accurate with respect to statepoint and patchpoint intrinsics -- these do call (or invoke) LLVM level functions. This change fixes this inconsistency by adding a call to the external node for call sites that call these non-leaf intrinsics. This coupled with the fact that these intrinsics also escape the function pointer they call gives us a conservatively correct call graph. Reviewers: reames, chandlerc, atrick, pgavlin Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10526 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240039 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -846,6 +846,18 @@ bool Intrinsic::isOverloaded(ID id) {
|
||||
#undef GET_INTRINSIC_OVERLOAD_TABLE
|
||||
}
|
||||
|
||||
bool Intrinsic::isLeaf(ID id) {
|
||||
switch (id) {
|
||||
default:
|
||||
return true;
|
||||
|
||||
case Intrinsic::experimental_gc_statepoint:
|
||||
case Intrinsic::experimental_patchpoint_void:
|
||||
case Intrinsic::experimental_patchpoint_i64:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// This defines the "Intrinsic::getAttributes(ID id)" method.
|
||||
#define GET_INTRINSIC_ATTRIBUTES
|
||||
#include "llvm/IR/Intrinsics.gen"
|
||||
|
Reference in New Issue
Block a user