sjs@ctt.bellcore.com (Stan Switzer) (09/13/88)
Sperry (now Unisys, once Univac) has a language called PLUS. The language had few redeeming features, but one of them was the way it handled access to critical data. One could declare a variable type LOCK, which produced a cell for test-and-set locking (using either a spin-lock or queued). When you declared critical data, you specified a LOCKED(lockcell) attribute. Legitimate access to locked data was between "LOCK cell", and "UNLOCK cell" statements. The optimizer then knew not only which variables had volatile access, but also where the volitility occurred. This allowed the optimizer to make aggressive but (in theory) correct optimizations even in this kind of code. Stan Switzer sjs@ctt.bellcore.com or bellcore!ctt!sjs -- Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.EDU Plausible paths are { decvax | harvard | yale | bbn}!ima Please send responses to the originator of the message -- I cannot forward mail accidentally sent back to compilers. Meta-mail to ima!compilers-request