Version 0.5.0 - April 12, 2007 TAJ * Added passes for simple data dependence tests, privatization, induction variable recognition and substitution, and reduction variable recognition. * Added a -openmp flag that will cause OpenMP directives to appear in the output based on the above analyses. Version 0.4.2 - November 7, 2005 Sang-Ik * Parser now uses CharLiteral properly TAJ * Removed /treewalk. Added /treewalker. (Further preparation for C++...eventually.) * Version bump Version 0.4.1 - April 12, 2005 TAJ * Most of the changes in this release are to prepare for releasing the external C and C++ parsers. * antlr.jar is no longer required if an external parser is used. The problem was solved by using the ClassLoader to dynamically load the Antlr C lexer and parser. Previously, static references in TranslationUnit.java were enough to cause the JVM to load antlr.jar as soon as a TranslationUnit constructor was called, despite the constructor itself not refering to any Antlr class. We do not understand why we need the workaround with the class loader (i.e., if code using Antlr.jar is never executed when using the external parser, why does the JVM load it?) so if anyone knows, please email us. * TranslationUnit.java looks much, much nicer. * TranslationUnit spawns threads to handle redirection of stream I/O * There are no longer separate treewalk and cctreewalk directories. Everything is now in treewalk and I've removed cctreewalk. I did this because there were more duplicate classes than different classes in those directories. It still compiles and runs the same. * I replaced DumpParser [Long Fei's code] with something I wrote called DagParser, which is better for the following reasons - It doesn't use StringTokenizer, which is basically deprecated. "StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code." - It divides the work into a scanner thread that fills a token buffer and a parser thread that reads the buffer. This makes the code easier to understand and should be faster when parsing larger dag files. - Less sensitive to whitespace, so the output format of the separate parser could change a little without us having to modify Cetus. - There is no special handling necessary for nested quotes in strings, so that removed a lot of code. (There is a way to split it with regex.) * Revised the manual slightly. Still needs a lot of work. * Version bump. Sang-Ik * Specifiers for Java * Small bugs in Declarator * Made ANTLR parser use derived Declarator classes. Declarator class should disappear soon. * ANTLR C parser fixes; only remaining issue is character literals are represented as strings. The problem is that ANTLR returns 'a' as the 3-character string "\'a\'" and we can't just take the middle character because it could be an escape code like \t. Version 0.4.0 - February 28, 2005 TAJ * Switched to Java 1.5 * Fixed multiple declarator in typedef problem. Previously only the first declarator was put in the table. Now it is fixed to include all. Sang-Ik * Added option to expand user header files Version 0.3.3 - October 15, 2004 TAJ * Added a -skip-procedures flag to cause passes to skip a certain list of procedures. * Added a -verbosity flag to control how much status information the compiler prints while it is transforming the program. * Fixed some printing problems concerning spacing of specifiers. * FunctionCall.getProcedure now uses the symbol table and is much, much more efficient. * FunctionCall.getReturnType now returns the correct list of specifiers when the function returns a pointer. * SingleCall pass no longer tries to save the result of a void function into a temporary variable. * Improved analysis: Can now query CallGraph about recursive calls. * Improved transform: LoopsToSubroutines now attempts to handle return statements inside loops (provided the SingleReturn pass has been run). * New transform: RemoveUselessSpecifiers Sang-Ik * Fixed Antlr C parser problem with labeled statements. It was duplicating the statement in the IR. Version 0.3.2 - September 15, 2004 TAJ * SingleReturn now handles functions with old C-style implicit int return value * LoopsToSubroutines now passes as pointers values redefined within the loop. Also passes structures as pointers. * LoopsToSubroutines no longer passes global variables into the subroutines (they're already available). * Changed toString methods so they use print on an internal buffer. This keeps print and toString consistent even if a pass writer changes the print method of an object or class. * Began overriding hashCode methods for classes which override equals. This is necessary for objects to be held in sets (like HashSet). * DepthFirstIterator was backwards; it was starting with the last child instead of the first since Stack.addAll pushes everything in order...oops. Fixed. Does not appear to have broken any passes. * More verify methods. * Cleanup of ControlFlowGraph. Still needs work. * Removed unnecessary import directives Ayon * New analysis: DataFlow Version 0.3.1 - August 31, 2004 TAJ * Major improvements to symbol table * Reorganization of Declarator class -- we will be moving to the new subclasses of Declarator and most of the Declarator constructors are now deprecated. This should happen next release. * Improved transforms: SingleCall, SingleDeclarator, SingleReturn * New transforms: LoopsToSubroutines * New exceptions: DuplicateSymbolException, NotAChildException, NotAnOrphanException * Created an automated test suite; small for now * Updated manual: Better info on iterators, fixed broken links * Small wording change to license for purposes of clarity. Ayon * New analysis: CallGraph, ControlFlowGraph Version 0.3 - August 11, 2004 TAJ, Sang-Ik, Long Fei * First public release