llvm-project/llvm/lib
Hal Finkel ff0bcb60c9 Convert noalias parameter attributes into noalias metadata during inlining
This functionality is currently turned off by default.

Part of the motivation for introducing scoped-noalias metadata is to enable the
preservation of noalias parameter attribute information after inlining.
Sometimes this can be inferred from the code in the caller after inlining, but
often we simply lose valuable information.

The overall process if fairly simple:
 1. Create a new unqiue scope domain.
 2. For each (used) noalias parameter, create a new alias scope.
 3. For each pointer, collect the underlying objects. Add a noalias scope for
    each noalias parameter from which we're not derived (and has not been
    captured prior to that point).
 4. Add an alias.scope for each noalias parameter from which we might be
    derived (or has been captured before that point).

Note that the capture checks apply only if one of the underlying objects is not
an identified function-local object.

llvm-svn: 213949
2014-07-25 15:50:08 +00:00
..
Analysis Simplify and improve scoped-noalias metadata semantics 2014-07-25 15:50:02 +00:00
AsmParser AsmParser: remove deprecated LLIR support 2014-07-23 18:09:31 +00:00
Bitcode IPO: Add use-list-order verifier 2014-07-25 14:49:26 +00:00
CodeGen [SDAG] Don't insert the VRBase into a mapping from SDValues when the def 2014-07-25 09:19:18 +00:00
DebugInfo Revert "Introduce a string_ostream string builder facilty" 2014-06-26 22:52:05 +00:00
ExecutionEngine Remove dead code. 2014-07-24 16:02:28 +00:00
IR Simplify and improve scoped-noalias metadata semantics 2014-07-25 15:50:02 +00:00
IRReader Update the MemoryBuffer API to use ErrorOr. 2014-07-06 17:43:13 +00:00
LTO AArch64: remove arm64 triple enumerator. 2014-07-23 12:32:47 +00:00
LineEditor [CMake] Use LINK_LIBS instead of target_link_libraries(). 2014-02-26 06:41:29 +00:00
Linker Include <tuple> to make buildbots happy 2014-06-27 18:38:12 +00:00
MC Use the same .eh_frame encoding for 32bit PPC as on i386. 2014-07-24 19:25:16 +00:00
Object AArch64: remove arm64 triple enumerator. 2014-07-23 12:32:47 +00:00
Option Generic: add range-adapter for option parsing. 2014-07-09 13:03:37 +00:00
ProfileData Fix a warning in CoverageMappingReader.cpp 2014-07-25 02:51:57 +00:00
Support Windows: Don't wildcard expand /? or -? 2014-07-24 21:09:45 +00:00
TableGen [TableGen] Allow shift operators to take bits<n> 2014-07-17 17:04:27 +00:00
Target [ARM] Emit ABI_PCS_R9_use build attribute. 2014-07-25 14:03:14 +00:00
Transforms Convert noalias parameter attributes into noalias metadata during inlining 2014-07-25 15:50:08 +00:00
CMakeLists.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
LLVMBuild.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
Makefile ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00