If the ncg table uses reglap, then regvar($1, reg_float) would have two sizes of registers. An error from ncgg would happen if regvar() was in a token that allows only one size. Now one can pick a size with regvar_w() for word size or regvar_d() for double-word size. Add regvar_d and regvar_w as keywords in ncgg. Modify EX_REGVAR to include the register size. In ncg, add some checks for the register size. In tables without reglap, regvar() works as before, and ncg ignores the register size in EX_REGVAR.
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			768 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			768 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| # $Id$
 | |
| #
 | |
| ADDR	ADDR
 | |
| COERCIONS	COERCIONS
 | |
| INSTRUCTIONS	INSTRUCTIONS
 | |
| INT	INT
 | |
| MOVES	MOVES
 | |
| PATTERNS	PATTERNS
 | |
| PROPERTIES	PROPERTIES
 | |
| REGISTERS	REGISTERS
 | |
| SETS	SETS
 | |
| SIZEFACTOR	SIZEFACTOR
 | |
| STACK	STACK
 | |
| STACKINGRULES	STACKINGRULES
 | |
| TESTS	TESTS
 | |
| TIMEFACTOR	TIMEFACTOR
 | |
| TOKENS	TOKENS
 | |
| call	CALL
 | |
| cost	COST
 | |
| defined	DEFINED
 | |
| exact	EXACT
 | |
| example	EXAMPLE
 | |
| fallthrough	FALLTHROUGH
 | |
| from	FROM
 | |
| gen	GEN
 | |
| highw	HIGHW
 | |
| inreg	INREG
 | |
| is_rom	ISROM
 | |
| kills	KILLS
 | |
| labeldef	LABELDEF
 | |
| leaving	LEAVING
 | |
| loww	LOWW
 | |
| move	MOVE
 | |
| pat	PAT
 | |
| proc	PROC
 | |
| reg_any	REG_ANY
 | |
| reg_float	REG_FLOAT
 | |
| reg_loop	REG_LOOP
 | |
| reg_pointer	REG_POINTER
 | |
| regvar	REGVAR
 | |
| regvar_d	REGVAR_D
 | |
| regvar_w	REGVAR_W
 | |
| return	RETURN
 | |
| reusing	REUSING
 | |
| rom	ROM
 | |
| samesign	SAMESIGN
 | |
| sfit	SFIT
 | |
| topeltsize	TOPELTSIZE
 | |
| test	TEST
 | |
| to	TO
 | |
| ufit	UFIT
 | |
| uses	USES
 | |
| with	WITH
 | |
| yields	YIELDS
 |