[PATCH] D62456: [LLVM-C] Improve Bindings to The Internalize Pass
Robert Widmann via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat May 25 16:37:01 PDT 2019
CodaFi updated this revision to Diff 201429.
CodaFi added a comment.
Document the lifetime of the context parameter
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D62456/new/
https://reviews.llvm.org/D62456
Files:
llvm/include/llvm-c/Transforms/IPO.h
llvm/lib/Transforms/IPO/IPO.cpp
Index: llvm/lib/Transforms/IPO/IPO.cpp
===================================================================
--- llvm/lib/Transforms/IPO/IPO.cpp
+++ llvm/lib/Transforms/IPO/IPO.cpp
@@ -120,6 +120,15 @@
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());
}
Index: llvm/include/llvm-c/Transforms/IPO.h
===================================================================
--- llvm/include/llvm-c/Transforms/IPO.h
+++ llvm/include/llvm-c/Transforms/IPO.h
@@ -67,6 +67,21 @@
/** 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);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D62456.201429.patch
Type: text/x-patch
Size: 1660 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190525/ba03f5d2/attachment.bin>
More information about the llvm-commits
mailing list