[PATCH] Top-Down FunctionAttrs propagation for noalias, dereferenceable and nonnull inference

Nick Lewycky nlewycky at google.com
Mon Jul 21 19:31:24 PDT 2014

On 21 July 2014 17:08, hfinkel at anl.gov <hfinkel at anl.gov> wrote:

> Use isDereferenceablePointer (which checks things like argument's
> dereferenceable attribute) in addition to using isSafeToLoadUnconditionally
> (which is mostly useful for its local instruction scan). Also fixed up one
> of the test cases.

The iteration order of the functions within an SCC is non-deterministic and
may result in different attributes being added depending on pointer
comparison. Consider the case of two leaf functions sharing the same
parent, then add call edges between those two "leaf" functions. The df
iteration may visit either of those two first, and if one of them depends
on the attributes on the other, but the other does not, then you have an
order dependence.


> http://reviews.llvm.org/D4609
> Files:
>   include/llvm-c/Transforms/IPO.h
>   include/llvm/InitializePasses.h
>   include/llvm/LinkAllPasses.h
>   include/llvm/Transforms/IPO.h
>   lib/LTO/LTOCodeGenerator.cpp
>   lib/Transforms/IPO/CMakeLists.txt
>   lib/Transforms/IPO/FunctionAttrsTD.cpp
>   lib/Transforms/IPO/IPO.cpp
>   lib/Transforms/IPO/PassManagerBuilder.cpp
>   test/Transforms/FunctionAttrsTD/large-agg.ll
>   test/Transforms/FunctionAttrsTD/malloc.ll
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140721/fa872cbf/attachment.html>

More information about the llvm-commits mailing list