added stackheight message handling
authoreck <none@none>
Wed, 18 Jul 1990 14:53:19 +0000 (14:53 +0000)
committereck <none@none>
Wed, 18 Jul 1990 14:53:19 +0000 (14:53 +0000)
28 files changed:
mach/arm/ncg/Makefile
mach/i386/ncg/Makefile
mach/i80/ncg/Makefile
mach/i86/ncg/Makefile
mach/m68020/ncg/Makefile
mach/m68k2/ncg/Makefile
mach/m68k4/ncg/Makefile
mach/moon3/ncg/Makefile
mach/ns/ncg/Makefile
mach/pdp/ncg/Makefile
mach/proto/ncg/Makefile
mach/proto/ncg/codegen.c
mach/proto/ncg/compute.c
mach/proto/ncg/fillem.c
mach/proto/ncg/gencode.c
mach/proto/ncg/label.c [new file with mode: 0644]
mach/proto/ncg/label.h [new file with mode: 0644]
mach/proto/ncg/nextem.c
mach/proto/ncg/param.h
util/ncgg/cgg.y
util/ncgg/coerc.c
util/ncgg/emlookup.c
util/ncgg/extern.h
util/ncgg/iocc.c
util/ncgg/keywords
util/ncgg/output.c
util/ncgg/param.h
util/ncgg/pseudo.h

index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index 3f0ce1a..5d0c991 100644 (file)
@@ -16,11 +16,11 @@ CDIR=$(EMHOME)/mach/proto/ncg
 CGG=$(EMHOME)/lib/ncgg
 CPP=$(EMHOME)/lib/cpp
 CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
-       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
-       $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
-       $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
-OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
-       move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
+       $(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
+       $(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
+       $(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
+OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
+       main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
 
 all:   tables.c
        make "EMHOME="$(EMHOME) cg
@@ -43,6 +43,8 @@ gencode.o: $(CDIR)/gencode.c
        $(CC) -c $(CFLAGS) $(CDIR)/gencode.c
 glosym.o: $(CDIR)/glosym.c
        $(CC) -c $(CFLAGS) $(CDIR)/glosym.c
+label.o: $(CDIR)/label.c
+       $(CC) -c $(CFLAGS) $(CDIR)/label.c
 main.o: $(CDIR)/main.c
        $(CC) -c $(CFLAGS) $(CDIR)/main.c
 move.o: $(CDIR)/move.c
@@ -97,6 +99,7 @@ compute.o:    $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
 compute.o:     $(CDIR)/data.h
 compute.o:     $(CDIR)/extern.h
 compute.o:     $(CDIR)/glosym.h
+compute.o:     $(CDIR)/label.h
 compute.o:     $(CDIR)/param.h
 compute.o:     $(CDIR)/result.h
 compute.o:     tables.h
@@ -130,6 +133,10 @@ glosym.o:  $(CDIR)/glosym.h
 glosym.o:      $(CDIR)/param.h
 glosym.o:      tables.h
 glosym.o:      $(CDIR)/types.h
+label.o:       $(CDIR)/label.h
+label.o:       $(CDIR)/param.h
+label.o:       tables.h
+label.o:       $(CDIR)/types.h
 main.o:                $(CDIR)/param.h
 main.o:                tables.h
 move.o:                $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
index e7c64ef..e1a159b 100644 (file)
@@ -849,6 +849,19 @@ normalfailed:      if (stackpad!=tokpatlen) {
        level--;
 #endif
        return(totalcost);
+#ifdef USE_SHC
+    case DO_LABDEF: {
+       int index;
+
+       DEBUG("LABDEF");
+       if (toplevel) {
+               getint(index,codep);
+               printlabel(index);
+       }
+
+       break;
+    }
+#endif
        }
        }
     doreturn:
index 466ad00..eea2922 100644 (file)
@@ -11,6 +11,10 @@ static char rcsid[] = "$Header$";
 #include "result.h"
 #include "glosym.h"
 #include "extern.h"
+#ifdef USE_SHC
+#include <stdio.h>
+#include "label.h"
+#endif
 
 /*
  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
@@ -72,6 +76,10 @@ char opdesc[] = {
        LLDEF|RLDEF,            /* EX_XOR */
        LLDEF|RLDEF,            /* EX_AND */
        0,                      /* EX_ISROM */
+#ifdef USE_SHC
+       0,                      /* EX_STACKHEIGHT */
+       0,                      /* EX_FALLTHROUGH */
+#endif
 };
 
 string salloc(),strcpy(),strcat();
@@ -376,5 +384,27 @@ result_t compute(node) register node_p node; {
        assert(leaf1.e_typ == EV_INT);
                result.e_v.e_con = -leaf1.e_v.e_con;
                return(result);
+#ifdef USE_SHC
+       case EX_STACKHEIGHT:                    /* Hans, new */
+           { register label_p lbl;
+
+               lbl = get_label(saveemp[node->ex_lnode].em_u.em_ioper);
+               if (lbl != NULL) {
+                   result.e_v.e_con = lbl->lb_height;
+               } else {
+                   result.e_v.e_con = 0;
+               }
+               return(result);
+           }
+       case EX_FALLTHROUGH:                    /* Hans, new */
+           { register label_p lbl;
+
+               lbl = get_label(saveemp[node->ex_lnode].em_u.em_ioper);
+               if (lbl != NULL) {
+                   result.e_v.e_con = lbl->lb_fallthrough;
+               } else result.e_v.e_con = 0;
+               return(result);
+           }
+#endif
        }
 }
index 5a6a882..c5aa71c 100644 (file)
@@ -127,6 +127,13 @@ fillemlines() {
                        error("unknown instruction byte");
                case sp_ilb1:
                case sp_ilb2:
+#ifdef USE_SHC
+                       lp->em_instr = op_lab;
+                       lp->em_optyp = OPSYMBOL;
+                       lp->em_soper = strarg(t);
+                       lp->em_u.em_loper = argval;
+                       return;
+#endif
                case sp_fpseu:
                case sp_dlb1:
                case sp_dlb2:
@@ -169,6 +176,11 @@ fillemlines() {
                        continue;
                case PAR_B:
                        t = sp_ilb2;
+#ifdef USE_SHC
+                       lp->em_optyp = OPSYMBOL;
+                       lp->em_u.em_loper = argval;
+                       lp->em_soper = strarg(t);
+#endif
                        break;
                case PAR_D:
                        assert(t == sp_cstx);
@@ -201,6 +213,7 @@ dopseudo() {
                error("No table entry for %d",emlines[0].em_instr);
        nextispseu=0;
        switch(savetab1) {
+#ifndef USE_SHC
        case sp_ilb1:
        case sp_ilb2:
                swtxt();
@@ -215,6 +228,7 @@ dopseudo() {
                }
 #endif
                return;
+#endif
        case sp_dlb1:
        case sp_dlb2:
        case sp_dnam:
@@ -296,6 +310,16 @@ dopseudo() {
                                fatal("bad pointer size");
                        if ( getarg(any_ptyp)!=sp_cend )
                                fatal("too many parameters");
+#ifdef USE_SHC
+               } else if (argval == ms_sth) {
+                       int lbl, height, flthr;
+                       getarg(ptyp(sp_cst2)); lbl = argval;
+                       getarg(ptyp(sp_cst2)); height = argval;
+                       getarg(ptyp(sp_cst2)); flthr = argval;
+                       if ( getarg(any_ptyp)!=sp_cend )
+                               fatal("too many parameters");
+                       add_label(lbl,height, flthr);
+#endif
 #ifdef REGVARS
                } else if (argval == ms_gto) {
                        getarg(ptyp(sp_cend));
@@ -365,6 +389,9 @@ dopseudo() {
                break;
        case ps_end:
                getarg(cst_ptyp | ptyp(sp_cend));
+#ifdef USE_SHC
+               kill_labels();
+#endif
                cleanregs();
 #ifdef REGVARS
                unlinkregs();
index c33f492..270ee18 100644 (file)
@@ -11,6 +11,9 @@ static char rcsid[] = "$Header$";
 #include "data.h"
 #include "result.h"
 #include "extern.h"
+#ifdef USE_SHC
+#include "mach.h"
+#endif
 
 /*
  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
@@ -139,3 +142,11 @@ prtoken(tp,leadingchar) token_p tp; {
                }
        }
 }
+
+#ifdef USE_SHC
+printlabel(labnum)
+int labnum;
+{
+       newilb(dollar[labnum].e_v.e_addr.ea_str);
+}
+#endif
diff --git a/mach/proto/ncg/label.c b/mach/proto/ncg/label.c
new file mode 100644 (file)
index 0000000..7a0c21f
--- /dev/null
@@ -0,0 +1,48 @@
+#include "tables.h"
+#ifdef USE_SHC
+#include <stdio.h>
+#include "types.h"
+#include "param.h"
+#include "label.h"
+
+static label_p label_list = NULL;
+extern char *myalloc();
+
+add_label(num, height, flth)
+{
+       register label_p lbl = NULL;
+
+       if (height <= 0) return;
+       if (flth != TRUE && flth != FALSE)
+           fatal("incorrect value for fallthrough");
+
+       lbl = (label_p) myalloc(sizeof(label_t));
+       lbl->lb_next = label_list;
+       lbl->lb_number = num;
+       lbl->lb_height = height;
+       lbl->lb_fallthrough = flth;
+       label_list = lbl;
+}
+
+label_p get_label(num)
+register word num;
+{
+       register label_p tmp = label_list;
+
+       while (tmp != NULL) {
+               if (tmp->lb_number == num) return tmp;
+               tmp = tmp->lb_next;
+       }
+       return NULL;
+}
+
+kill_labels()
+{
+       label_p tmp;
+
+       while((tmp = label_list) != NULL) {
+           label_list = label_list->lb_next;
+           myfree((char *)tmp);
+       }
+}
+#endif
diff --git a/mach/proto/ncg/label.h b/mach/proto/ncg/label.h
new file mode 100644 (file)
index 0000000..3eed673
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * This file contains the structures that hold information about the labels.
+ * The height and the fallthrough functions of the table. 
+ *
+ * Author: Hans van Eck. 
+ */
+
+typedef struct label *label_p;
+
+typedef struct label {
+       label_p lb_next;
+       word    lb_number;
+       int     lb_height;
+       short   lb_fallthrough;
+    } label_t;
+
+extern label_p get_label();
index 9753148..0603a1d 100644 (file)
@@ -64,7 +64,12 @@ byte *trypat(bp,len) register byte *bp; {
        if (Debug) {
                fprintf(stderr,"Matched:");
                for (i=0;i<patlen;i++) {
-                       fprintf(stderr," %3.3s",em_mnem[emp[i].em_instr-sp_fmnem]);
+#ifdef USE_SHC
+                       if (emp[i].em_instr == op_lab)
+                               fprintf(stderr," lab");
+                       else
+#endif
+                               fprintf(stderr," %3.3s",em_mnem[emp[i].em_instr-sp_fmnem]);
                        if (emp[i].em_soper)
                                fprintf(stderr," %s",emp[i].em_soper);
                }
index 222c03c..e9e6197 100644 (file)
@@ -15,6 +15,8 @@
 
 #define MAXROM 3
 
+#define op_lab  (sp_lmnem+1)
+
 /*
  * Tunable constants
  */
index 4b49b6d..83a1b0a 100644 (file)
@@ -38,7 +38,7 @@ int Xstackflag=0; /* set in coercions, moves, and tests. %1 means something
                   */
 
 struct varinfo *gen_inst(),*gen_move(),*gen_test(),*gen_preturn(),*gen_tlab();
-struct varinfo *make_erase();
+struct varinfo *gen_label(), *make_erase();
 expr_t make_expr(),ident_expr(),subreg_expr(),tokm_expr(),all_expr();
 expr_t perc_ident_expr(),sum_expr(),regvar_expr();
 
@@ -71,6 +71,7 @@ iocc_t iops[20];
 %token TESTS
 %token STACKINGRULES COERCIONS
 %token INSTRUCTIONS
+%token STACKHEIGHT FALLTHROUGH LABELDEF
 %token PROC CALL EXAMPLE
 %token FROM TO
 %token TEST MOVE STACK RETURN
@@ -844,6 +845,8 @@ gen_instruction
                { $$ = gen_move($2,$4); }
        | TEST tokeninstance
                { $$ = gen_test($2);}
+       | LABELDEF emarg
+               { $$ = gen_label($2-1); use_shc++; }
        | RETURN
                { $$ = gen_preturn(); }
        ;
@@ -1009,6 +1012,10 @@ expr
                { $$ = make_expr(TYPBOOL,EX_DEFINED,i_expr($3),0); }
        | SAMESIGN '(' expr ',' expr ')'
                { $$ = make_expr(TYPBOOL,EX_SAMESIGN,i_expr($3),i_expr($5)); }
+       | STACKHEIGHT '(' emarg ')'
+               { $$ = make_expr(TYPINT,EX_STACKHEIGHT,$3-1,0); }
+       | FALLTHROUGH '(' emarg ')'
+               { $$ = make_expr(TYPBOOL,EX_FALLTHROUGH,$3-1,0); }
        | SFIT '(' expr ',' expr ')'
                { $$ = make_expr(TYPBOOL,EX_SFIT,i_expr($3),i_expr($5)); }
        | UFIT '(' expr ',' expr ')'
index 42277cd..d5c6972 100644 (file)
@@ -110,6 +110,15 @@ struct varinfo *gen_test(from) iocc_t from; {
        return(vp);
 }
 
+struct varinfo *gen_label(arg) int arg; {
+       register struct varinfo *vp;
+
+       NEW(vp,struct varinfo);
+       vp->vi_int[0] = INSLABDEF;
+       vp->vi_int[1] = arg;
+       return(vp);
+}
+
 struct varinfo *gen_preturn() {
        register struct varinfo *vp;
 
index 704068a..63372af 100644 (file)
@@ -25,6 +25,7 @@ initemhash() {
 
        for(i=0;i<=sp_lmnem-sp_fmnem;i++)
                enter(em_mnem[i],i+sp_fmnem);
+       enter("lab", op_lab);
 }
 
 unsigned emhash(name) register char *name; {
index 3620ebd..28d426c 100644 (file)
@@ -36,6 +36,7 @@ extern int maxmembers;
 extern int regclass;
 extern int maxtokensize;
 extern int nprocargs, maxprocargs;
+extern int use_shc;
 
 extern char *mystrcpy();
 extern char *myalloc();
index 5dcb761..47631e6 100644 (file)
@@ -206,6 +206,3 @@ instalookup(insta,filled) inst_t insta; {
        l_instances[i] = insta;
        return(i);
 }
-
-       
-                               
index ea51833..828f4c5 100644 (file)
@@ -20,12 +20,14 @@ 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
@@ -41,6 +43,7 @@ reusing       REUSING
 rom    ROM
 samesign       SAMESIGN
 sfit   SFIT
+stackheight    STACKHEIGHT
 test   TEST
 to     TO
 ufit   UFIT
index 97c5b82..8d12196 100644 (file)
@@ -11,6 +11,7 @@ int   code_in_c=1;    /* put code in "tables.c" */
 int    tabledebug=0;   /* do not generate code for table debugging */
 #endif
 int    verbose=0;      /* print all statistics */
+int    use_shc;        /* use stackheight information */
 char   *c_file=        "tables.c";
 char   *h_file=        "tables.H";
 char   *cd_file=       "code";
@@ -592,6 +593,8 @@ outdefs() {
        }
        if (tabledebug)
                cdef("TABLEDEBUG",1);
+       if (use_shc)
+               cdef("USE_SHC",1);
 }
 
 outars() {
@@ -826,6 +829,12 @@ varinfo *kills,*allocates,*generates,*yields,*leaving;
                        codeint(vp->vi_int[1]);
                        codenl();
                        break;
+               case INSLABDEF:
+                       cocono = 0;
+                       code8(DO_LABDEF);
+                       codeint(vp->vi_int[1]);
+                       codenl();
+                       break;
                }
        }
        codecoco(cocono);
index a82e5c2..49994b8 100644 (file)
@@ -48,3 +48,6 @@
 
 #define NEXT(n,max,string) (n<max? n++ : tabovf(string))
 #define NEW(x,y) x=(y*)myalloc(sizeof(*(x)))
+
+#include <em_spec.h>
+#define op_lab (sp_lmnem + 1)
index 390bf03..aadd9e4 100644 (file)
@@ -11,3 +11,4 @@
 #define INSSETCC       (-5)
 #define INSERASE       (-6)
 #define INSREMOVE      (-7)
+#define INSLABDEF      (-8)