[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