diff --git a/modules/src/em_opt/Makefile b/modules/src/em_opt/Makefile index 43083c1a7..14b2ccb7e 100644 --- a/modules/src/em_opt/Makefile +++ b/modules/src/em_opt/Makefile @@ -44,16 +44,17 @@ GENFILES = Lpars.h Lpars.c parserdummy parser.c syntax.c dfadummy\ dfa.c dfa.c.new trans.h trans.h.new trans.c trans.c.new\ incalls.d incalls.r incalls.r.new pseudo.d -all: em_nopt $(LIBOPT) +all: em_nopt $(LIBOPT) em_opt.3 install: all $(INSTALL) lib/$(LIBOPT) + $(INSTALL) man/em_opt.3 + cp em_nopt.1 $(EMHOME)/man cp em_nopt $(BINDIR)/em_nopt -lint: lintparser lintnopt - cmp: all $(COMPARE) lib/$(LIBOPT) + $(COMPARE) man/em_opt.3 -cmp em_nopt $(BINDIR)/em_nopt pr: @@ -62,6 +63,8 @@ pr: opr: make pr | opr +lint: lintparser lintnopt + clean: rm -f O_*.o rm -f O_*.c @@ -103,6 +106,14 @@ dfadummy: patterns parser -rm /tmp/patts touch dfadummy +# How to build the lint library for the optimizer + +LLINT = nopt.c mkstrct.c aux.c dfa.c trans.c + +lintlib: dfadummy $(LLINT) + $(LINT) $(LINTFLAGS) $(LLINT) -Cemopt + mv llib-lemopt.ln $(EMHOME)/modules/lib + # How to build program to parse patterns table and build c files. PARSERLIB = $(EMHOME)/lib/em_data.a\ diff --git a/modules/src/em_opt/em_nopt.6 b/modules/src/em_opt/em_nopt.6 new file mode 100644 index 000000000..fcd33d6a4 --- /dev/null +++ b/modules/src/em_opt/em_nopt.6 @@ -0,0 +1,23 @@ +.TH EM_NOPT 6ACK "$Revision$" +.ad +.SH NAME +em_nopt \- EM peephole optimizer +.SH SYNOPSIS +~em/lib/em_nopt [ inputfile [ outputfile ] ] +.SH DESCRIPTION +Em_nopt reads a compact EM-program, inputfile or standard input, +and produces another compact EM program on outputfile or standard output +that is functionally equivalent, +but smaller. +This program is a faster replacement for the program em_opt but does not +perform some other functions that that program performed and were required +before running a codegenerator. These operations are now performed by the +front ends and the EM_CODE(3ACK) module. The old program is still required +for front ends that do not use the new mechanisms or for making a library +module. +Usually this program need not be run as the front end will perform the +equivalent optimizations using the library module em_opt(3). +.SH "SEE ALSO" +ack(1) em_opt(1) em_opt(3) +.SH AUTHOR +Bruce McKenzie diff --git a/modules/src/em_opt/em_opt.3 b/modules/src/em_opt/em_opt.3 new file mode 100644 index 000000000..92f5c43f2 --- /dev/null +++ b/modules/src/em_opt/em_opt.3 @@ -0,0 +1,109 @@ +.TH EM_OPT 3ACK "$Revision$" +.ad +.SH NAME +emopt \- EM code peephole optimizer interface for compilers +.SH SYNOPSIS +.nf +.B #define PEEPHOLE +.B #include +.PP +.B O_init(wsize, psize) +.B arith wsize, psize; +.PP +.B int O_open(filename) +.B O_close() +.B int O_busy() +.B char *filename; +.PP +.B O_magic() +.PP +.B O_df_dlb(l) +.B O_df_dnam(s) +.B O_df_ilb(l) +.B label l; char *s; +.PP +.B O_pro(s, l) +.B O_pro_narg(s) +.B O_end(l) +.B O_end_narg() +.B char *s; arith l; +.PP +.B O_exa_dlb(l) +.B O_exa_dnam(s) +.B O_exp(s) +.B O_ina_dlb(l) +.B O_ina_dnam(s) +.B O_inp(s) +.B char *s; label l; +.PP +.BI O_bss_ cstp () +.BI O_hol_ cstp () +.BI O_con_ cstp () +.BI O_rom_ cstp () +.PP +.B #include +.B O_mes_begin(ms) +.BI O_ cstp () +.B O_mes_end() +.B int ms; +.PP +.B O_exc(c1, c2) +.B arith c1, c2; +.PP +.BI O_ mnem () +.BI O_ mnem _dlb() +.BI O_ mnem _dnam() +.BI O_ mnem _narg() +.PP +.B O_insertpart(id) +.B int id; +.PP +.B O_beginpart(id) +.B int id; +.PP +.B O_endpart(id) +.B int id; +.fi +.SH DESCRIPTION +This package provides a procedural EM code peephole optimizer interface to be +used in compilers and other EM code producing programs. The interface +routines are identical to the EM_CODE(3) procedure interface except that all +names have been replaced by +.I O_xxx +. It is possible to convert +a program that is currently using the EM_CODE interface by defining PEEPHOLE +before including em.h which enables a series of macros to map all the +.I C_xxx +names to the corresponding +.I O_xxx +names. The module in turn calls +.I C_xxx +routines to output the optimized code. Hence it is possible to add peephole +optimization to any program that outputs EM code usng the EM_CODE module. +.PP +Details of the +.I O_xxx +routines may be obtained by refering to the description +of the corresponding +.I C_xxx +routine in EM_CODE(3). +.SH FILES +.nf +~em/modules/h/em.h +~em/modules/lib/libemopt.a +.fi +.SH MODULES +.nf +alloc(3), system(3), string(3) +.fi +.SH SEE ALSO +em_nopt(1) em_code(3), read_em(3), em_mes(3) +.SH DIAGNOSTICS +.I O_open +returns 1 if the open is successful and 0 if not. +.SH BUGS +It is not possible to indicate that the argument of +.B O_con_cst () +must be seen as an unsigned value. +.SH AUTHOR +Bruce McKenzie