Loss (?) of AA on function inlining


I have written a pass that utilizes an alias analysis to check if an instruction reads a memory location. Here’s that check in source code: https://github.com/eHammarstrom/llvm-dbds/blob/dbds/lib/Transforms/Scalar/BlockDuplicator.cpp#L640

This check seems to fail when not supplying -fno-inline-functions to MAKEOPT in LNT. This results in what seems like a massive memory leak. When passing the aforementioned flag all tests pass and we may measure performance.

When only running clang -O3 on small test cases I see that illegal optimizations are applied without the use of -fno-inline-functions – i.e. the previously mentioned check fails. The pass is statically linked to the function simplification pass here: https://github.com/eHammarstrom/llvm-dbds/blob/2ec7e32c8026f8ae2c8540e9040b3043e6d30429/lib/Transforms/IPO/PassManagerBuilder.cpp#L416

Why is the alias analysis seemingly lost on function inlining?