llvm-6502/include/llvm
Hal Finkel 04fe990190 Improve BasicAA CS-CS queries
BasicAA contains knowledge of certain intrinsics, such as memcpy and memset,
and uses that information to form more-accurate answers to CallSite vs. Loc
ModRef queries. Unfortunately, it did not use this information when answering
CallSite vs. CallSite queries.

Generically, when an intrinsic takes one or more pointers and the intrinsic is
marked only to read/write from its arguments, the offset/size is unknown. As a
result, the generic code that answers CallSite vs. CallSite (and CallSite vs.
Loc) queries in AA uses UnknownSize when forming Locs from an intrinsic's
arguments. While BasicAA's CallSite vs. Loc override could use more-accurate
size information for some intrinsics, it did not do the same for CallSite vs.
CallSite queries.

This change refactors the intrinsic-specific logic in BasicAA into a generic AA
query function: getArgLocation, which is overridden by BasicAA to supply the
intrinsic-specific knowledge, and used by AA's generic implementation. This
allows the intrinsic-specific knowledge to be used by both CallSite vs. Loc and
CallSite vs. CallSite queries, and simplifies the BasicAA implementation.

Currently, only one function, Mac's memset_pattern16, is handled by BasicAA
(all the rest are intrinsics). As a side-effect of this refactoring, BasicAA's
getModRefBehavior override now also returns OnlyAccessesArgumentPointees for
this function (which is an improvement).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212572 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-08 23:16:49 +00:00
..
ADT Revert "Refactor ARM subarchitecture parsing" 2014-07-08 10:06:16 +00:00
Analysis Improve BasicAA CS-CS queries 2014-07-08 23:16:49 +00:00
AsmParser
Bitcode Revert "Convert a few std::strings to StringRef." 2014-07-04 20:02:42 +00:00
CodeGen [SDAG] Build up a more rich set of APIs for querying build-vector SDAG 2014-07-08 07:19:55 +00:00
Config
DebugInfo
ExecutionEngine [RuntimeDyld] Add a framework for testing relocation logic in RuntimeDyld. 2014-06-27 20:20:57 +00:00
IR ARM: mark matching ARM intrinsics as MSBuiltin 2014-07-05 20:09:24 +00:00
IRReader Make a helper function static. No functionality change. 2014-07-05 00:39:08 +00:00
LineEditor
Linker IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
LTO Implement LTOModule on top of IRObjectFile. 2014-07-04 18:40:36 +00:00
MC This only needs a StringRef. 2014-07-06 14:17:29 +00:00
Object Fix the MSVC build following r212382 2014-07-06 10:54:41 +00:00
Option ArgList: use MakeArgList overloads in subclasses and clean up some calls. 2014-06-20 04:36:29 +00:00
ProfileData ProfileData: Fix copy-paste type in RawInstrProfReader 2014-06-18 18:20:44 +00:00
Support Mips.abiflags is a new implicitly generated section that will be present on all new modules. The section contains a versioned data structure which represents essentially information to allow a program loader to determine the requirements of the application. This patch implements mips.abiflags section and provides test cases for it. 2014-07-08 08:59:22 +00:00
TableGen Revert "Introduce a string_ostream string builder facilty" 2014-06-26 22:52:05 +00:00
Target Fix ppcf128 component access on little-endian systems 2014-07-03 15:06:47 +00:00
Transforms [ASan] Completely remove sanitizer blacklist file from instrumentation pass. 2014-07-08 00:50:49 +00:00
CMakeLists.txt
InitializePasses.h
LinkAllIR.h
LinkAllPasses.h
module.modulemap
module.modulemap.build
Pass.h
PassAnalysisSupport.h
PassInfo.h Remove pimpl class from PassRegistry. 2014-06-12 16:06:51 +00:00
PassManager.h
PassRegistry.h Remove pimpl class from PassRegistry. 2014-06-12 16:06:51 +00:00
PassSupport.h Move GlobalMerge from Transform to CodeGen. 2014-06-13 22:57:59 +00:00