darling-libobjc2/opts
2012-09-20 13:05:13 +00:00
..
ClassIMPCache.cpp Update optimisation to work with LLVM trunk, remove the Makefile and use CMake for building the passes (out of tree builds are now easier). 2012-08-17 13:18:16 +00:00
ClassLookupCache.cpp Small improvements to class lookup cache pass. 2012-09-20 13:05:13 +00:00
ClassMethodInliner.cpp Update optimisation to work with LLVM trunk, remove the Makefile and use CMake for building the passes (out of tree builds are now easier). 2012-08-17 13:18:16 +00:00
CMakeLists.txt Add CMake minimum version. 2012-09-19 12:30:54 +00:00
COPYING Added LLVM optimisation passes for libobjc2. 2010-03-13 18:43:56 +00:00
IMPCacher.cpp Update optimisation to work with LLVM trunk, remove the Makefile and use CMake for building the passes (out of tree builds are now easier). 2012-08-17 13:18:16 +00:00
IMPCacher.h Add missing file. 2011-11-19 12:24:16 +00:00
IvarPass.cpp Don't remove ivar offset variables, even if we aren't using them. 2012-09-19 12:30:18 +00:00
LLVMCompat.h Update optimisation to work with LLVM trunk, remove the Makefile and use CMake for building the passes (out of tree builds are now easier). 2012-08-17 13:18:16 +00:00
LoopIMPCachePass.cpp Update optimisation to work with LLVM trunk, remove the Makefile and use CMake for building the passes (out of tree builds are now easier). 2012-08-17 13:18:16 +00:00
ObjectiveCOpts.cpp Register LLVM passes with the new API. 2011-08-16 14:00:26 +00:00
ObjectiveCOpts.h Get the libobjc2 optimisations building again with LLVM trunk. 2011-08-16 12:58:44 +00:00
README Added LLVM optimisation passes for libobjc2. 2010-03-13 18:43:56 +00:00
TypeFeedback.cpp Update optimisation to work with LLVM trunk, remove the Makefile and use CMake for building the passes (out of tree builds are now easier). 2012-08-17 13:18:16 +00:00
TypeFeedbackDrivenInliner.cpp Update optimisation to work with LLVM trunk, remove the Makefile and use CMake for building the passes (out of tree builds are now easier). 2012-08-17 13:18:16 +00:00
TypeInfoProvider.h Update optimisation to work with LLVM trunk, remove the Makefile and use CMake for building the passes (out of tree builds are now easier). 2012-08-17 13:18:16 +00:00

GNUstep Runtime Optimisations
=============================

This directory contains LLVM optimisations specific to libobjc2.  To build
them, you must copy this directory to llvm/lib/Transforms/GNURuntime (where
llvm is the root of your llvm checkout).

Running GNU make will then create GNUObjCRuntime.so.  This library can be
passed to opt to run optimisations on bitcode generated with clang or
LanguageKit.

Non-Fragile Ivar Pass
---------------------

Running `opt -gnu-nonfragile-ivar` will invoke the non-fragile instance
variable lowering pass.  This will turn non-fragile instance variable accesses,
which go via one or two indirection layers, into more fragile ones.  If a class
and all of its superclasses are present in the module then this pass will turn
indirect instance variable accesses into hard-coded ones.

For this pass to be most useful, it should be run as a link-time optimisation.

Type Feedback
-------------

Running `opt -gnu-objc-type-feedback` enables type feedback.  Objective-C
message lookups will be replaced by calls to the profiling version in the
runtime library.  The generated data can then be used for future optimisations
(speculative inlining, polymorphic inline caching, and so on), which have not
yet been written.