llvm-mirror/unittests
Peter Collingbourne 54e8749794 WholeProgramDevirt: introduce.
This pass implements whole program optimization of virtual calls in cases
where we know (via bitset information) that the list of callees is fixed. This
includes the following:

- Single implementation devirtualization: if a virtual call has a single
  possible callee, replace all calls with a direct call to that callee.

- Virtual constant propagation: if the virtual function's return type is an
  integer <=64 bits and all possible callees are readnone, for each class and
  each list of constant arguments: evaluate the function, store the return
  value alongside the virtual table, and rewrite each virtual call as a load
  from the virtual table.

- Uniform return value optimization: if the conditions for virtual constant
  propagation hold and each function returns the same constant value, replace
  each virtual call with that constant.

- Unique return value optimization for i1 return values: if the conditions
  for virtual constant propagation hold and a single vtable's function
  returns 0, or a single vtable's function returns 1, replace each virtual
  call with a comparison of the vptr against that vtable's address.

Differential Revision: http://reviews.llvm.org/D16795

llvm-svn: 260312
2016-02-09 22:50:34 +00:00
..
ADT SmallPtrSetTest: More checks for the swap() testing 2016-01-29 03:34:36 +00:00
Analysis Factor out UnrollAnalyzer to Analysis, and add unit tests for it. 2016-02-08 23:03:59 +00:00
AsmParser Remove autoconf support 2016-01-26 21:29:08 +00:00
Bitcode Remove autoconf support 2016-01-26 21:29:08 +00:00
CodeGen Remove autoconf support 2016-01-26 21:29:08 +00:00
DebugInfo Remove autoconf support 2016-01-26 21:29:08 +00:00
ExecutionEngine [Unittest] Clean up formatting, NFC 2016-02-03 17:11:24 +00:00
IR Simplify this unittest. 2016-02-08 19:13:15 +00:00
LineEditor Remove autoconf support 2016-01-26 21:29:08 +00:00
Linker Remove autoconf support 2016-01-26 21:29:08 +00:00
MC [unittests] Move TargetRegistry test from Support to MC 2016-02-03 21:41:24 +00:00
Option Remove autoconf support 2016-01-26 21:29:08 +00:00
ProfileData Add comments to some tests 2016-02-09 05:47:08 +00:00
Support Use std::forward to make ErrorOr<T> constructible from a value that has a user-defined conversion to T. No functionality change intended. 2016-02-09 04:47:58 +00:00
Transforms WholeProgramDevirt: introduce. 2016-02-09 22:50:34 +00:00
CMakeLists.txt AsmParser: Require a terminating null character when creating memory buffer. 2015-05-20 20:41:27 +00:00