LTO: Simplify caching interface.
authorPeter Collingbourne <peter@pcc.me.uk>
Fri, 23 Sep 2016 21:33:43 +0000 (21:33 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Fri, 23 Sep 2016 21:33:43 +0000 (21:33 +0000)
commit80186a57d66c4374aea9118045d8489dcdb6071b
tree757a092ded2644d8663928ae9e30c04f29bb8723
parent6951707943c771422c4e22ee8b7cd653642272ce
LTO: Simplify caching interface.

The NativeObjectOutput class has a design problem: it mixes up the caching
policy with the interface for output streams, which makes the client-side
code hard to follow and would for example make it harder to replace the
cache implementation in an arbitrary client.

This change separates the two aspects by moving the caching policy
to a separate field in Config, replacing NativeObjectOutput with a
NativeObjectStream class which only deals with streams and does not need to
be overridden by most clients and introducing an AddFile callback for adding
files (e.g. from the cache) to the link.

Differential Revision: https://reviews.llvm.org/D24622

llvm-svn: 282299
llvm/include/llvm/LTO/Caching.h
llvm/include/llvm/LTO/Config.h
llvm/include/llvm/LTO/LTO.h
llvm/include/llvm/LTO/LTOBackend.h
llvm/lib/LTO/Caching.cpp
llvm/lib/LTO/LTO.cpp
llvm/lib/LTO/LTOBackend.cpp
llvm/tools/gold/gold-plugin.cpp
llvm/tools/llvm-lto2/llvm-lto2.cpp