******************************************************************************** ******************************************************************************** ******************************************************************************** To: spin-comp@thistle.cs.washington.edu Subject: Weekly Report Date: Fri, 22 Aug 1997 12:01:31 PDT From: Brian Grant Summary: Markus is primarily still debugging the BTA. He also incorporated the computation of discordant variables. The port to the new BTA is still in progress, but close to completion. Brian has also been simplifying the work-list design to solve a number of persistent problems. Matthai completed the discordant-variables helper for the BTA and worked on some problems with the merger. For next week: Markus: compute demotions, get BTA working for small multi-unit example Brian: finish port to new BTA and get small multi-unit example working Matthai:fix branch patching in merger, annotation for static loads It will be tight, but multiple units running with the new BTA by Sept. 1 is still possible. ***************************************************************************** Markus: I integrated Matthai's discordant info and am still debugging the BTA. I wrote a couple of routines to print out the BTA information for debugging purposes. I am currently chasing a bug that causes a crash in Multiflows live temps analysis, probably I corrupt that information somewhere. As the crash site does not seem to be directly related to the problem I am single-stepping the BTA to see where the info might get corrupted. ***************************************************************************** Matthai: I spent my time doing four main things last week: 1)Writing the discordant vars analysis 2)Fixing bugs in the merger, and in the compiler/merger interface. Specifically: -The merger assumed wrongly that labels are emitted before tags at a given program point. -The interface did not account for the case where the conditional branch at the end of a block is codegened as a conditional branch/uncond branch pair. The fix for this requires a small hack in the mflow code-generator. 3)I took a close look at the front end to add the "static" keyword. The code was a bit hairy, but Charlie seems to have munged it during the 64-bit migration. I will talk to him on monday 10:00am before making the changes. 4)Writing the interpreter example. Next week, I expect to add the static annotation and stress/debug the backend further (as more examples work). ***************************************************************************** Brian: Multiple units are still not working. The main problems have been: -- Maintaining the correspondence between setup and template blocks -- Phase ordering (I lose information after I perform some transformations) -- Incorrect code written pre-PEPM and even pre-merger (so the input and output for my phase had not yet been specified in enough detail, and I didn't understand exactly what should be done) -- I simplified the design of the work-list mechanism that I conceived initially, but it could (and should, at least until it works) be simpler still; I've been having trouble with placement of pops from the work-list and parameter passing (some loads & stores aren't placed where I expeced) While porting to the new BTA, I'm working on: 1) Fixing inconsistencies in the setup/template correspondence and ensuring access to info I need (e.g., BTA information for blocks I create and move around) 2) Simplifying the work-list mechanism, parameter passing, GE linkage, etc. as much as possible (which means more loads and stores, at least for now) 3) Formulating a new, sufficiently detailed spec of what my code is supposed to do and produce for the merger I expect to be largely done with #2 today. #1 will be a gradual process. #3 will be important in the long run in order for me/us to have confidence in my code (which is now more than 10k lines) and I should finish it over the next week or so. The port to the new BTA should also be done in the next couple of days. What remains undone is computing the context (and debugging). Splitting multiple divisions and lazy branch successors will be put off for a little while. If all goes well, I may also try to put in support for Matthai's cache. --Brian ******************************************************************************** ******************************************************************************** ******************************************************************************** To: spin-comp@cs Subject: Weekly Report Date: Fri, 29 Aug 1997 17:03:08 PDT From: Brian Grant Well, we didn't get the system fully working. The new BTA isn't quite there yet and Brian's major overhaul was even more major than originally planned. Also, changes still need to be made to both the merger and Brian's code in the compiler in order to correctly patch inter-unit branches. Next week: new BTA, branch patching (multiple units!), "static" annotation Markus: Markus is now debugging the output of the BTA. He spent quite a bit of time tracking down a bug in which he was overwriting the middle of some struct through an unrelated, uninitialized pointer. He also added the computation of the "demotions", which indicate where formerly run-time-constant temps must be initialized with their last static values. He is also working on his generals writeup. Matthai: Matthai added more support to the merger to remove static branches from the template code and patch unconditional branches inserted on fall-through paths following conditional branches (both branches need to be recorded for patching). He also worked with Brian on the new spec for the compiler and compiler/merger interface. He has begun adding support for annotating static loads (with help from Charlie). Brian: Brian has essentially finished the major overhaul of his code, has sketched out a rough spec with Matthai, and is proceeding to tackle inter-unit branch patching and cache lookups (which are intrinsically related). The port to the new BTA is again lower priority (relative to getting multiple units working with the old BTA) because it isn't ready yet. ******************************************************************************** ******************************************************************************** ******************************************************************************** To: spin-comp@thistle.cs.washington.edu Subject: update on back-end progress, demotions Date: Wed, 24 Sep 1997 13:42:56 PDT From: Brian Grant Last Friday I estimated that one more day would be required on back-end-related issues. It turned out that two days (Monday and Tuesday) were required to make the back end robust. Most of the problems related to the mechanisms for blocking code motion that we don't want (we currently use both trace boundaries and constraint edges) and for placing tags that identify code for the merger. In fact, most of the problems were with the latter. These problems seem to be under control now. Matthai is working on the one thing that remains to be done, which is to modify the merger (actually, creating a prepass to the merger) to be able to find and emit spill code that is inserted between basic blocks in the template code. This can happen when spill code is inserted on an edge from a conditional branch to a merge. There have also been recurring problems with demotions (propagating static values to later dynamic uses). I believe that I am now handling demotions properly, if in a non-optimal way (if a demotion should only occur on one outgoing edge of a branch, I actually insert the store/load before the branch). However, the BTA still doesn't compute the demotions correctly in many cases (doesn't compute some that is should, computes some that it shouldn't). As I mentioned in my previous message, there are problems with my code with respect to loop unrolling other than demotions and the induction- variable splitting (e.g., holes in the wrong places), and I'll be working on those problems. --Brian