You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
theraven 81131acfbc Fix LLVM trunk compatibility. 15 years ago
..
COPYING Added LLVM optimisation passes for libobjc2. 16 years ago
ClassIMPCache.cpp Some tweaks to optimisation order. 15 years ago
ClassLookupCache.cpp Some tweaks to optimisation order. 15 years ago
ClassMethodInliner.cpp Some tweaks to optimisation order. 15 years ago
IMPCacher.cpp Ooops. Accidentally left the bit that actually did the optimisation commented out. 15 years ago
IMPCacher.h Added unfinished inliner that uses type feedback info to inline instance methods. 16 years ago
IvarPass.cpp Fix non-fragile ivar short-circuiting (i.e. hard-code the CORRECT ivar addresses, don't make foo and foobar have the same offset). 15 years ago
LLVMCompat.h Fix LLVM trunk compatibility. 15 years ago
LoopIMPCachePass.cpp Some tweaks to optimisation order. 15 years ago
Makefile Fix LLVM trunk compatibility. 15 years ago
ObjectiveCOpts.cpp Fixed some bugs with the optimisation passes and introduced support for automatically running them (requires LLVM 3 + a patch that is not yet in trunk, but should be soon). 15 years ago
ObjectiveCOpts.h Fixed some bugs with the optimisation passes and introduced support for automatically running them (requires LLVM 3 + a patch that is not yet in trunk, but should be soon). 15 years ago
README Added LLVM optimisation passes for libobjc2. 16 years ago
TypeFeedback.cpp Fix LLVM trunk compatibility. 15 years ago
TypeFeedbackDrivenInliner.cpp Allowed LLVM optimisations to build against both LLVM 2.9 and LLVM 3.0. 15 years ago
TypeInfoProvider.h Added missing files. 16 years ago

README

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.