[PATCH] D28834: Improve what can be promoted in LICM.

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 17 16:42:09 PST 2017

efriedma added inline comments.

Comment at: lib/Transforms/Scalar/LICM.cpp:1014-1015
+    // even though its not captured by the enclosing function. Standard allocation
+    // functions like malloc, calloc, and operator new return values which can
+    // be assumed not to have previously escaped.
+    Value *Object = GetUnderlyingObject(SomePtr, MDL);
Is there an existing testcase which covers this?

Comment at: lib/Transforms/Scalar/LICM.cpp:1018
+    if (!isa<AllocaInst>(Object) &&
+        (!isAllocLikeFn(Object, TLI) || PointerMayBeCaptured(Object, true, true)))
       return false;
Can we avoid calling PointerMayBeCaptured twice?  (We perform a similar check later in this function.)

Comment at: test/Transforms/LICM/scalar-promote-unwind.ll:173
+  ret void
It would be more useful to have a testcase which doesn't leak memory.


More information about the llvm-commits mailing list