Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
210 lines (118 sloc) 5.8 KB
Version 0.9-0
* To differentiate between StringType and generic pointers, we add metadata to the module
for the return type of a Function. (Will add more support for parameters, etc.)
* show() method for the different SEXPType objects displays their class to differentiate
them. Same for StringType.
*
Version 0.8-0
* getSuccessor(), getNumSuccessors() deal with ReturnInst correctly.
* moveAfter() generic and method for Block
Version 0.7-0
* insertAtEnd() function to put a instruction at the end of a block. The instruction should
probably be a terminator.
* .llvm() has a .duplicate argument that allows the caller to control which arguments are
explicitly duplicated before the call. .llvm() guesses based on readonly variables and is
conservative otherwise, leading potentially to unnecessary copies.
* getMetadata(module) method to get all the metadata elements in the Modue.
* Constructors for additional Pass objects -
createAgressiveDCEPass(), reateDeadCodeEliminationPass(), createDeadStoreEliminationPass()
* Function[[ name ]] method
* getNULLPointer() function
* createConstant() with a type converts the value to that.
* getValue() and methods for different types of Constant types.
* getNULLPointer() used, for example, when initializing
global variables that are pointers.
* getCondition() for BranchInst objects.
* isInBounds() and isInBounds()<-
* byVal() and byVal()<-
* Better error handling for parserIR()
* Update enum definitions for 3.4
* Minor changes for LLVM 3.4 (fields in TargetOptions that were removed)
Version 0.6-0
* added generatePTX() to convert Module to PTX code. See Rnvvm and libNVVM
for other an additional approach.
* added support specifying address space when creating pointer types
* added CreateFPTrunc() and CreateTrunc()
* added llvmDump() to examine instructions in IR form
* added setMetadata(), getMetadata() and getNumOperands() & getOperands()
* eraseFromParent(), removeFromParent()
* insertBefore(), insertAfter(), moveBefore()
* isa() for Instruction classes.
* More support for raw and formatted ostreams
* setDataLayout() method for Module.
Version 0.5-0
* show() methods for Module, Function, Type to make the
objects more informative when displayed.
* export getBlocks() function.
* sapply() method for iterating over a block
* get function attributes
* Set and get attributes on parameters
* Access parameters as Argument objects, e.g. fun[[1]]
* createLocalVariable() allows the instruction to be inserted
before the terminator of the current block.
* Added llvmShutdown(), llvmStartMultiThreaded(), llvmStopMultiThreaded()
* Methods for getContext().
* Methods for setAlignment() for Store, Load and Alloca instructions.
* Errors verifying a module are reported as a regular error
and not printed on the console.
* Retrieve global variable arrays as R objects.
* createStructGEP() function.
* ExecutionEngine() supports specifying optimization level.
* createGlobalVariable() initializes array types with constantAggregateZero.
* constantAggregateZero() function.
* llvmAddSymbol() also accepts the names and resolves the
corresponding symbols itself. So we can mix symbols and
strings as arguments.
* <Removed> Put a typeName attribute on the type external pointers to
be able to identify them in R. This unfortunately causes identical()
on the external pointers fail in some cases in sameType().
* Export *SXPType variables representing the type definitions
for different R types, i.e. logical, integer, numeric, ...,
ANY/SEXP. Removes the need to call getSEXPType('typeName')
* getLLVMTargets() returns the names of the available targets
for code generation.
* New interfaces to IRBuilder methods.
* Types for representing SEXP types in routines.
* Ability to pass R objects (SEXPs) to and from routines.
* Support for passing a value to a routine expecting a Float.
* changed .llvm() to alias .llvmCallFunction() rather than
run() to avoid the overhead of method dispatch.
* Support for intrinsics.
Version 0.4-2
* Support for building from the LLVM subversion repository
for version 3.2 of LLVM. See FAQ.xml.
Version 0.4-1
* ArrayType, VectorType, StructType.
* Methods for Instruction class. (Machine generated)
* Compiles and installs with LLVM 3.1.
* parseIR() function allows us to parse IR code and so we
could create the code via strings.
Version 0.4-0
* Added getDescription() and method for Type and getTypeID(),
getScalarType().
* Added createFPToSI() and createSIToFP().
Version 0.3-0
* The package automatically calls InitializeNativeTarget()
unless the R option Rllvm.autoInitialize is set to FALSE
before the package is loaded.
* Added getTerminator(), getInsertBlock()
* Implemented getting logical constants for TRUE and FALSE.
Version 0.2-1
* Method for Optimize referred to a free variable rather than
a parameter.
* Added getModuleFunctions(), getBlocks(), getPassManager()
Version 0.2-0
* The Optimize function and methods are now extended and
apply to the code via creating a FunctionPassManager and
invoking its run() method (in C++ for now).
This can work on modules or individual functions.
* getModuleFunctions() allows us to get the list of functions
in a module.
* showModule() returns the content as a string, but can also
write on the console/stdout().
We might make it possible to write to a connection in the
future.
* Additional examples in experiments/ that show constant
folding, avoiding temporary variables.
Version 0.1-0
* Addition to configuration to check suitable version of llvm available on the machine.