  (**************************************************************) 
  (*   This module was generated by BEG V1.84        *)
  (*        GMD Forschunsstelle an der Universitaet Karlsruhe   *)
  (*        Vincenz-Priessnitz-Str. 1 76131 Karlsruhe Germany   *)
  (**************************************************************)
 DEFINITION MODULE RegAlloc;
 FROM IR IMPORT  Expression;
 FROM IR IMPORT MaxPscArity, Register, RegisterSet, MaxScratch;
 IMPORT IR;

(*++++++ start insertion IpTypes ++++++*)

IMPORT CgBase;
FROM Strings	IMPORT	String;


(*------ end   insertion IpTypes ------*)
(******* empty insertion IpRegAlloc_d *******)
 
 TYPE  Action        = (aLr, aRestore);
	Spilllocation = CARDINAL;
 	AllocIndex    = [1..4096];
       AllocDescr    = RECORD 
 	    reg           : Register;
           actionafter   : BOOLEAN;  (* he 08/91 *)
 	    spilllocation : Spilllocation;
           regmove       : Register;  (* he 08/91 *)
 	    op            : ARRAY [1..MaxPscArity] OF Register;
	    scr           : ARRAY [1..MaxScratch] OF Register;
 	    num           : [0..MaxPscArity];
 	    a             : ARRAY [1..MaxPscArity] OF RECORD
 	       CASE action : Action OF
              |   aLr     : regto, regfrom  : Register;
 	       |   aRestore: reg             : Register;
     		             spilllocation   : Spilllocation;
 	       END;
 	    END;
 	 END;
 VAR    ai         : AllocIndex;
        allocation : ARRAY AllocIndex OF AllocDescr;
        UsedReg    : RegisterSet;

 PROCEDURE  RegAllo ( e : Expression; av : RegisterSet );
 
 PROCEDURE  PrintAllocation (i : AllocIndex);
 END RegAlloc.
