mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-26 13:49:56 +00:00
[LLVM-C] Improve Bindings to The Internalize Pass
Summary: Adds a binding to the internalize pass that allows the caller to pass a function pointer that acts as the visibility-preservation predicate. Previously, one could only pass an unsigned value (not LLVMBool?) that directed the pass to consider "main" or not. Reviewers: whitequark, deadalnix, harlanhaskins Reviewed By: whitequark, harlanhaskins Subscribers: kren1, hiraditya, llvm-commits, harlanhaskins Tags: #llvm Differential Revision: https://reviews.llvm.org/D62456 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@366777 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b08d3b0692
commit
2622ae5029
@ -67,6 +67,21 @@ void LLVMAddIPSCCPPass(LLVMPassManagerRef PM);
|
||||
/** See llvm::createInternalizePass function. */
|
||||
void LLVMAddInternalizePass(LLVMPassManagerRef, unsigned AllButMain);
|
||||
|
||||
/**
|
||||
* Create and add the internalize pass to the given pass manager with the
|
||||
* provided preservation callback.
|
||||
*
|
||||
* The context parameter is forwarded to the callback on each invocation.
|
||||
* As such, it is the responsibility of the caller to extend its lifetime
|
||||
* until execution of this pass has finished.
|
||||
*
|
||||
* @see llvm::createInternalizePass function.
|
||||
*/
|
||||
void LLVMAddInternalizePassWithMustPreservePredicate(
|
||||
LLVMPassManagerRef PM,
|
||||
void *Context,
|
||||
LLVMBool (*MustPreserve)(LLVMValueRef, void *));
|
||||
|
||||
/** See llvm::createStripDeadPrototypesPass function. */
|
||||
void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM);
|
||||
|
||||
|
@ -121,6 +121,15 @@ void LLVMAddInternalizePass(LLVMPassManagerRef PM, unsigned AllButMain) {
|
||||
unwrap(PM)->add(createInternalizePass(PreserveMain));
|
||||
}
|
||||
|
||||
void LLVMAddInternalizePassWithMustPreservePredicate(
|
||||
LLVMPassManagerRef PM,
|
||||
void *Context,
|
||||
LLVMBool (*Pred)(LLVMValueRef, void *)) {
|
||||
unwrap(PM)->add(createInternalizePass([=](const GlobalValue &GV) {
|
||||
return Pred(wrap(&GV), Context) == 0 ? false : true;
|
||||
}));
|
||||
}
|
||||
|
||||
void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createStripDeadPrototypesPass());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user