diff options
author | Robert Widmann <devteam.codafi@gmail.com> | 2019-07-23 04:56:44 +0000 |
---|---|---|
committer | Robert Widmann <devteam.codafi@gmail.com> | 2019-07-23 04:56:44 +0000 |
commit | fcf3c55a8cd2b00c54bc08652f8b8ad517abab43 (patch) | |
tree | 4628c7ee4732f43b0ba493e66055972cdcdc787a /llvm/lib/Transforms/IPO/IPO.cpp | |
parent | 30f12a42474f5b8f0409f5aabd3c335fd415b926 (diff) | |
download | bcm5719-llvm-fcf3c55a8cd2b00c54bc08652f8b8ad517abab43.tar.gz bcm5719-llvm-fcf3c55a8cd2b00c54bc08652f8b8ad517abab43.zip |
[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
llvm-svn: 366777
Diffstat (limited to 'llvm/lib/Transforms/IPO/IPO.cpp')
-rw-r--r-- | llvm/lib/Transforms/IPO/IPO.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/IPO.cpp b/llvm/lib/Transforms/IPO/IPO.cpp index 34db75dd8b0..465ffbd9055 100644 --- a/llvm/lib/Transforms/IPO/IPO.cpp +++ b/llvm/lib/Transforms/IPO/IPO.cpp @@ -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()); } |