[llvm-commits] CVS: llvm/test/Programs/MultiSource/McCat-03-testtrie/Makefile charsequence.c charsequence.h main.c testtrie.in2 trie.c trie.h

Chris Lattner lattner at cs.uiuc.edu
Mon May 12 14:05:34 PDT 2003


Changes in directory llvm/test/Programs/MultiSource/McCat-03-testtrie:

Makefile added (r1.1)
charsequence.c added (r1.1)
charsequence.h added (r1.1)
main.c added (r1.1)
testtrie.in2 added (r1.1)
trie.c added (r1.1)
trie.h added (r1.1)

---
Log message:

Initial checkin


---
Diffs of the changes:

Index: llvm/test/Programs/MultiSource/McCat-03-testtrie/Makefile
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-03-testtrie/Makefile:1.1
*** /dev/null	Mon May 12 14:03:55 2003
--- llvm/test/Programs/MultiSource/McCat-03-testtrie/Makefile	Mon May 12 14:03:45 2003
***************
*** 0 ****
--- 1,7 ----
+ LEVEL = ../../../..
+ PROG = testtrie
+ LDFLAGS = -lm
+ RUN_OPTIONS += testtrie.in2
+ #INPUT_FILENAME = benchmark.in3
+ include ../Makefile.multisrc
+ 


Index: llvm/test/Programs/MultiSource/McCat-03-testtrie/charsequence.c
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-03-testtrie/charsequence.c:1.1
*** /dev/null	Mon May 12 14:03:55 2003
--- llvm/test/Programs/MultiSource/McCat-03-testtrie/charsequence.c	Mon May 12 14:03:45 2003
***************
*** 0 ****
--- 1,76 ----
+ 
+ /****
+     Copyright (C) 1996 McGill University.
+     Copyright (C) 1996 McCAT System Group.
+     Copyright (C) 1996 ACAPS Benchmark Administrator
+                        benadmin at acaps.cs.mcgill.ca
+ 
+     This program is free software; you can redistribute it and/or modify
+     it provided this copyright notice is maintained.
+ 
+     This program is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ ****/
+ 
+ /* dOPC - Assignment #1.
+    Lasse R. Nielsen (920666) and Ren\'{e} R. Hansen (920319) */
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include "charsequence.h"
+ 
+ /* Defines: */
+ 
+ #define DEBUG
+ #define TRUE   1
+ #define FALSE  0
+ #define TRIE_SIZE (sizeof(struct trie_s))
+ #define ERROR(s)  (fprintf(stderr,s))
+ 
+ void  charsequence_reset(charsequence *cs)
+ {
+   if(cs->buf!=NULL)free(cs->buf);
+   cs->buf=malloc(CHARSTREAM_STARTSIZE);
+   if(cs->buf==NULL)ERROR("OUT OF MEMORY");
+   cs->size=CHARSTREAM_STARTSIZE;
+   cs->pos=0;
+ }
+ 
+ void  charsequence_push(charsequence *cs,char c)
+ {
+   if(cs->size==0)
+     {
+       charsequence_reset(cs);
+     }
+   if(cs->pos==cs->size)
+     {
+       cs->size<<=1;
+       cs->buf=realloc(cs->buf,cs->size);
+       if(cs->buf==NULL)ERROR("OUT OF MEMORY");
+     }
+   cs->buf[cs->pos]=c;
+   cs->pos++;
+ }
+   
+ char charsequence_pop(charsequence *cs)
+ {
+   if(cs->pos==0)
+     {
+       ERROR("ATTEMPTED POP ON EMPTY SEQUENCE");
+     }
+   return cs->buf[(cs->pos)--];
+ }
+ 
+ char *charsequence_val(charsequence *cs)
+ {
+   char *ret;
+   ret=calloc(cs->pos+1,sizeof(char));
+   if(ret==NULL)ERROR("OUT OF MEMORY");/* check for allocation error */
+   strncpy(ret,cs->buf,cs->pos);
+   return ret;
+ }
+ 
+ 
+ 


Index: llvm/test/Programs/MultiSource/McCat-03-testtrie/charsequence.h
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-03-testtrie/charsequence.h:1.1
*** /dev/null	Mon May 12 14:03:55 2003
--- llvm/test/Programs/MultiSource/McCat-03-testtrie/charsequence.h	Mon May 12 14:03:45 2003
***************
*** 0 ****
--- 1,19 ----
+ #ifndef CHARSTREAM_H
+ #define CHARSTREAM_H
+ 
+ #define CHARSTREAM_STARTSIZE 16
+ #define CHARSTREAM_INIT {NULL,0,0}
+ 
+ /* typedefs */
+ typedef struct charsequence {
+   char *buf;
+   size_t size,pos;
+ } charsequence;
+ 
+ /* prototypes */
+ void  charsequence_reset(charsequence *);
+ void  charsequence_push(charsequence *,char);
+ char  charsequence_pop(charsequence *);
+ char *charsequence_val(charsequence *);
+ 
+ #endif


Index: llvm/test/Programs/MultiSource/McCat-03-testtrie/main.c
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-03-testtrie/main.c:1.1
*** /dev/null	Mon May 12 14:03:55 2003
--- llvm/test/Programs/MultiSource/McCat-03-testtrie/main.c	Mon May 12 14:03:45 2003
***************
*** 0 ****
--- 1,101 ----
+ 
+ /****
+     Copyright (C) 1996 McGill University.
+     Copyright (C) 1996 McCAT System Group.
+     Copyright (C) 1996 ACAPS Benchmark Administrator
+                        benadmin at acaps.cs.mcgill.ca
+ 
+     This program is free software; you can redistribute it and/or modify
+     it provided this copyright notice is maintained.
+ 
+     This program is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ ****/
+ 
+ /* dOPC - Assignment #1.
+    Lasse R. Nielsen (920666) and Ren\'{e} R. Hansen (920319) */
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <ctype.h>
+ #include "charsequence.h"
+ #include "trie.h"
+ 
+ #define FALSE 0
+ #define TRUE (!FALSE)
+ 
+ #define ISLOWER(c) (c >= 'a' && c <= 'z')
+ 
+ trie t;
+ 
+ void printit(int i, char *str)
+ {
+   printf("%5d : '%s'\n",i,str);
+ }
+ 
+ void addfile(trie t, FILE *f)
+ {
+   char c;
+   int wstate=FALSE; /* NOT reading word now */
+   charsequence cs=CHARSTREAM_INIT;
+ 
+   while(!feof(f))
+     {
+       c=tolower(getc(f));
+       if(wstate)
+ 	{
+ 	  if(ISLOWER(c))
+ 	    charsequence_push(&cs,c);
+ 	  else /* stop reading word */
+ 	    {
+ 	      char *str;
+ 	      str=charsequence_val(&cs);
+ 	      trie_insert(t,str);
+ 	      free(str);
+ 	      
+ 	      wstate=FALSE;
+ 	    }
+ 	}
+       else /* !wstate */
+ 	if(ISLOWER(c)) /* start reading word */
+ 	  {
+ 	    charsequence_reset(&cs);
+ 	    charsequence_push(&cs,c);
+ 	    wstate=TRUE;
+ 	  }
+       /* else, ignore it */
+     }
+ }
+ 
+ 
+ 
+ int main(int argc, char *argv[])
+ {
+   FILE *input;
+ 
+   t=trie_init();
+   if (argc==1)
+     addfile(t,stdin);
+   else
+     while(argc>1)
+       {
+ 	input=fopen(argv[1],"rb");
+ 	if(input==NULL)
+ 	  fprintf(stderr,"unable to open file '%s'\n",argv[1]);
+ 	else
+ 	  addfile(t,input);
+ 	argc--;argv++;
+       }
+   trie_scan(t,printit);
+   return 0; 
+ }
+   
+   
+   
+   
+   
+   
+   
+   
+ 


Index: llvm/test/Programs/MultiSource/McCat-03-testtrie/testtrie.in2
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-03-testtrie/testtrie.in2:1.1
*** /dev/null	Mon May 12 14:03:55 2003
--- llvm/test/Programs/MultiSource/McCat-03-testtrie/testtrie.in2	Mon May 12 14:03:45 2003
***************
*** 0 ****
--- 1,2772 ----
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ NNNNAAAAMMMMEEEE
+      gcc, g++ -	GNU project C and C++ Compiler (v2 preliminary)
+ 
+ SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
+      gcc [[[[_o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
+      g++ [[[[_o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
+ 
+ WWWWAAAARRRRNNNNIIIINNNNGGGG
+      The information in	this man page is an extract from the full
+      documentation  of	the GNU	C compiler, and	is limited to the
+      meaning of	the options.  This man page is	not  kept  up  to
+      date except when volunteers want to maintain it.
+ 
+      For complete and current documentation, refer  to	the  Info
+      file  `ggggcccccccc' or the	manual _U_s_i_n_g _a_n_d _P_o_r_t_i_n_g _G_N_U _C_C	(_f_o_r _v_e_r_-
+      _s_i_o_n _2._0).	 Both are  made	 from  the  Texinfo  source  file
+      ggggcccccccc....tttteeeexxxxiiiinnnnffffoooo.
+ 
+ DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
+      The C and C++ compilers are integrated.  Both process  input
+      files  through  one  or  more of four stages: preprocessing,
+      compilation, assembly, and	linking.   Source  filename  suf-
+      fixes  identify  the source language, but which name you use
+      for the compiler governs default assumptions:
+ 
+      ggggcccccccc  assumes preprocessed (....iiii) files are  C  and  assumes	C
+ 	  style	linking.
+ 
+      gggg++++++++  assumes preprocessed (....iiii) files are C++ and assumes C++
+ 	  style	linking.
+ 
+      Suffixes of source	file names indicate the	language and kind
+      of	processing to be done:
+ 
+      ....cccc	    C source; preprocess, compile, assemble
+      ....CCCC	    C++	source;	preprocess, compile, assemble
+      ....cccccccc     C++ source; preprocess, compile, assemble
+      ....ccccxxxxxxxx     C++ source; preprocess, compile, assemble
+      ....mmmm	    Objective-C	source;	preprocess, compile, assemble
+      ....iiii	    preprocessed C; compile, assemble
+      ....iiiiiiii     preprocessed C++; compile,	assemble
+      ....ssss	    Assembler source; assemble
+      ....SSSS	    Assembler source; preprocess, assemble
+      ....hhhh	    Preprocessor file; not usually named on command line
+ 
+      ??	    Other (unrecognized) files passed to linker.
+ 	  Common cases:
+      ....oooo	    Object file
+      ....aaaa	    Archive file
+ 
+      Linking is	always the last	stage unless you use one of the	----
+      cccc,	  ---- SSSS,	or  ----EEEE options to avoid	it (or unless compilation
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992			1
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      errors stop the whole process).  For the link stage, all  ....oooo
+      files  corresponding to source files, ----llll libraries, unrecog-
+      nized filenames (including	named  ....oooo  object  files  and  ....aaaa
+      archives) are passed to the linker	in command-line	order.
+ 
+ 
+ OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      Options must be separate: `----ddddrrrr' is	quite different	from `----	dddd
+      ----rrrr	'.
+ 
+      Most `----ffff' and `----WWWW'	options	have two contrary forms:  ---- ffff_n_a_m_e
+      and   ---- ffffnnnnoooo ---- _n_a_m_e	 (or ----WWWW_n_a_m_e and	----WWWWnnnnoooo----_n_a_m_e). Only the non-
+      default forms are shown here.
+ 
+      Here is a summary of  all	the  options,  grouped	by  type.
+      Explanations are in the following sections.
+ 
+ 
+      OOOOvvvveeeerrrraaaallllllll OOOOppppttttiiiioooonnnnssss
+ 	  -c -S	-E -o _f_i_l_e -pipe -v -x _l_a_n_g_u_a_g_e
+ 
+ 
+      LLLLaaaannnngggguuuuaaaaggggeeee OOOOppppttttiiiioooonnnnssss
+ 	  -ansi	-fall-virtual -fcond-mismatch -fdollars-in-
+ 	  identifiers -fenum-int-equiv -fno-asm	-fno-builtin -fno
+ 	  -strict-prototype -fsigned-bitfields -fsigned-char -
+ 	  fthis-is-variable -funsigned-bitfields -funsigned-char
+ 	  -fwritable-strings -traditional -traditional-cpp -
+ 	  trigraphs
+ 
+ 
+      WWWWaaaarrrrnnnniiiinnnngggg OOOOppppttttiiiioooonnnnssss
+ 	  -fsyntax-only	-pedantic -pedantic-errors -w -W -Wall -
+ 	  Waggregate-return -Wcast-align -Wcast-qual -Wcomment -
+ 	  Wconversion -Wenum-clash -Werror -Wformat -Wid-clash-
+ 	  _l_e_n -Wimplicit -Winline -Wmissing-prototypes -
+ 	  Wparentheses -Wpointer-arith -Wreturn-type -Wshadow -
+ 	  Wstrict-prototypes -Wswitch -Wtraditional -Wtrigraphs	-
+ 	  Wuninitialized -Wunused -Wwrite-strings
+ 
+ 
+      DDDDeeeebbbbuuuuggggggggiiiinnnngggg OOOOppppttttiiiioooonnnnssss
+ 	  -a -d_l_e_t_t_e_r_s -fpretend-float -g -gstabs -gdwarf -ggdb	-
+ 	  gsdb -p -pg -save-temps
+ 
+ 
+      OOOOppppttttiiiimmmmiiiizzzzaaaattttiiiioooonnnn OOOOppppttttiiiioooonnnnssss
+ 	  -fcaller-saves -fcse-follow-jumps -fdelayed-branch -
+ 	  felide-constructors -fexpensive-optimizations	-ffloat-
+ 	  store	-fforce-addr -fforce-mem -finline -finline-
+ 	  functions -fkeep-inline-functions -fmemoize-lookups -
+ 	  fno-default-inline -fno-defer-pop -fno-function-cse -
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992			2
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  fomit-frame-pointer -frerun-cse-after-loop -fschedule-
+ 	  insns	-fschedule-insns2 -fstrength-reduce -fthread-
+ 	  jumps	-funroll-all-loops -funroll-loops -O -O2
+ 
+ 
+      PPPPrrrreeeepppprrrroooocccceeeessssssssoooorrrr OOOOppppttttiiiioooonnnnssss
+ 	  -C -dD -dM -dN -D_m_a_c_r_o[=_d_e_f_n]	-E -H -i _f_i_l_e -M -MD -MM
+ 	  -MMD -nostdinc -P -U_m_a_c_r_o -undef
+ 
+ 
+      LLLLiiiinnnnkkkkeeeerrrr OOOOppppttttiiiioooonnnnssss
+ 	  -l_l_i_b_r_a_r_y -nostdlib -static
+ 
+ 
+      DDDDiiiirrrreeeeccccttttoooorrrryyyy OOOOppppttttiiiioooonnnnssss
+ 	  -B_p_r_e_f_i_x -I_d_i_r -I- -L_d_i_r
+ 
+ 
+      TTTTaaaarrrrggggeeeetttt OOOOppppttttiiiioooonnnnssss
+ 	  -b  _m_a_c_h_i_n_e -V _v_e_r_s_i_o_n
+ 
+ 
+      MMMMaaaacccchhhhiiiinnnneeee DDDDeeeeppppeeeennnnddddeeeennnntttt OOOOppppttttiiiioooonnnnssss
+ 	  _M_6_8_0_x_0 _O_p_t_i_o_n_s
+ 	  -m68000 -m68020 -m68881 -mbitfield -mc68000 -mc68020 -
+ 	  mfpa -mnobitfield -mrtd -mshort -msoft-float
+ 
+ 	  _V_A_X _O_p_t_i_o_n_s
+ 	  -mg -mgnu -munix
+ 
+ 	  _S_P_A_R_C	_O_p_t_i_o_n_s
+ 	  -mfpu	-mno-epilogue
+ 
+ 	  _C_o_n_v_e_x _O_p_t_i_o_n_s
+ 	  -margcount -mc1 -mc2 -mnoargcount
+ 
+ 	  _A_M_D_2_9_K _O_p_t_i_o_n_s
+ 	  -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge -
+ 	  mnbw -mnodw -msmall -mstack-check -muser-registers
+ 
+ 	  _M_8_8_K _O_p_t_i_o_n_s
+ 	  -mbig-pic -mcheck-zero-division -mhandle-large-shift -
+ 	  midentify-revision -mno-check-zero-division -mno-ocs-
+ 	  debug-info -mno-ocs-frame-position -mno-optimize-arg-
+ 	  area -mno-underscores	-mocs-debug-info -mocs-frame-
+ 	  position -moptimize-arg-area -mshort-data-_n_u_m	-msvr3 -
+ 	  msvr4	-mtrap-large-shift -muse-div-instruction -
+ 	  mversion-03.00 -mwarn-passed-structs
+ 
+ 	  _R_S_6_0_0_0 _O_p_t_i_o_n_s
+ 	  -mfp-in-toc -mno-fop-in-toc
+ 
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992			3
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  _R_T _O_p_t_i_o_n_s
+ 	  -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs -
+ 	  mfull-fp-blocks -mhc-struct-return -min-line-mul -
+ 	  mminimum-fp-blocks -mnohc-struct-return
+ 
+ 	  _M_I_P_S _O_p_t_i_o_n_s
+ 	  -mcpu=_c_p_u _t_y_p_e -mips2	-mips3 -mint64 -mlong64	-
+ 	  mlonglong128 -mmips-as -mgas -mrnames	-mno-rnames -
+ 	  mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy	-mno-
+ 	  memcpy -mno-mips-tfile -mmips-tfile -msoft-float -mhard
+ 	  -float -mabicalls -mno-abicalls -mhalf-pic -mno-half-
+ 	  pic -G _n_u_m
+ 
+ 	  _i_3_8_6 _O_p_t_i_o_n_s
+ 	  -m486	-mno486	-msoft-float
+ 
+ 
+      CCCCooooddddeeee GGGGeeeennnneeeerrrraaaattttiiiioooonnnn OOOOppppttttiiiioooonnnnssss
+ 	  +e_N -fcall-saved-_r_e_g -fcall-used-_r_e_g -ffixed-_r_e_g -fno-
+ 	  common -fno-gnu-binutils -fnonnull-objects -fpcc-struct
+ 	  -return -fpic	-fPIC -fshared-data -fshort-enums -fshort
+ 	  -double -fvolatile
+ 
+ 
+ OOOOVVVVEEEERRRRAAAALLLLLLLL	OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      ----xxxx	_l_a_n_g_u_a_g_e
+ 	  Specify explicitly the _l_a_n_g_u_a_g_e for the following input
+ 	  files	(rather	than choosing a	default	based on the file
+ 	  name suffix) .  This option applies  to  all	following
+ 	  input	 files	until  the  next  ` ----xxxx'	option.	 Possible
+ 	  values of _l_a_n_g_u_a_g_e are `cccc', `oooobbbbjjjjeeeeccccttttiiiivvvveeee----cccc', `cccc---- hhhheeeeaaaaddddeeeerrrr',
+ 	  `cccc++++++++',  `ccccpppppppp----oooouuuuttttppppuuuutttt',	`aaaasssssssseeeemmmmbbbblllleeeerrrr', and `aaaasssssssseeeemmmmbbbblllleeeerrrr----wwwwiiiitttthhhh----
+ 	  ccccpppppppp'.
+ 
+      ----xxxx	nnnnoooonnnneeee
+ 	  Turn off any specification of	a language, so that  sub-
+ 	  sequent  files are handled according to their	file name
+ 	  suffixes (as they are	if `----xxxx'	 has  not  been	 used  at
+ 	  all).
+ 
+      If	you want only some of the four stages  (preprocess,  com-
+      pile,  assemble,  link),  you can use `----xxxx'	(or filename suf-
+      fixes) to tell ggggcccccccc	where to start,	and one	of the options `----
+      cccc',  ` ---- SSSS', or `----EEEE' to say where ggggcccccccc is to stop.	Note that
+      some combinations (for example, `----xxxx ccccpppppppp----oooouuuuttttppppuuuutttt ----EEEE') instruct
+      ggggcccccccc to do nothing at all.
+ 
+      ----cccc	   Compile or assemble the source files, but do	not link.
+ 	  The  compiler	output is an object file corresponding to
+ 	  each source file.
+ 
+ 	  By default, GCC makes	the object file	name for a source
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992			4
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  file	by  replacing  the suffix `....cccc',	`....iiii', `....ssss', etc.,
+ 	  with `....oooo'.  Use ----oooo to	select another name.
+ 
+ 	  GCC ignores any unrecognized input files (those that do
+ 	  not  require	compilation  or	assembly) with the ----cccc op-
+ 	  tion.
+ 
+      ----SSSS	   Stop	after the stage	of compilation proper; do not as-
+ 	  semble.   The	output is an assembler code file for each
+ 	  non-assembler	input file specified.
+ 
+ 	  By default, GCC makes	the assembler  file  name  for	a
+ 	  source  file	by replacing the suffix	`....cccc', `....iiii', etc.,
+ 	  with `....ssss'.  Use ----oooo to	select another name.
+ 
+ 
+ 	  GCC ignores any input	files that don't require compila-
+ 	  tion.
+ 
+      ----EEEE	   Stop	after the preprocessing	stage;	do  not	 run  the
+ 	  compiler  proper.   The  output  is preprocessed source
+ 	  code,	which is sent to the standard output.
+ 
+ 	  GCC ignores input files which	don't require preprocess-
+ 	  ing.
+ 
+      ----oooo	_f_i_l_e
+ 	   Place output	in file	_f_i_l_e.  This applies regardless to
+ 	  whatever sort	of output GCC is producing, whether it be
+ 	  an executable	file, an object	file, an  assembler  file
+ 	  or preprocessed C code.
+ 
+ 	  Since	only one output	file can be  specified,	 it  does
+ 	  not make sense to use	`----oooo' when compiling more than one
+ 	  input	file, unless you are producing an executable file
+ 	  as output.
+ 
+ 	  If you do not	specify	`----oooo', the default is  to  put  an
+ 	  executable   file  in	 `aaaa....oooouuuutttt',  the	object	file  for
+ 	  `_s_o_u_r_c_e._s_u_f_f_i_x' in `_s_o_u_r_c_e.o', its  assembler	 file  in
+ 	  `_s_o_u_r_c_e.s',  and  all	preprocessed C source on standard
+ 	  output.
+ 
+      ----vvvv	   Print (on standard error output) the	commands executed
+ 	  to  run the stages of	compilation.  Also print the ver-
+ 	  sion number of the compiler driver program and  of  the
+ 	  preprocessor and the compiler	proper.
+ 
+      ----ppppiiiippppeeee
+ 	  Use pipes rather than	temporary files	for communication
+ 	  between  the various stages of compilation.  This fails
+ 	  to work on some systems where	the assembler cannot read
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992			5
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  from a pipe; but the GNU assembler has no trouble.
+ 
+ LLLLAAAANNNNGGGGUUUUAAAAGGGGEEEE OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      The following options control the dialect of C that the com-
+      piler accepts:
+ 
+      ----aaaannnnssssiiii
+ 	  _S_u_p_p_o_r_t _a_l_l _A_N_S_I _s_t_a_n_d_a_r_d _C _p_r_o_g_r_a_m_s.
+ 
+ 	  _T_h_i_s _t_u_r_n_s _o_f_f _c_e_r_t_a_i_n _f_e_a_t_u_r_e_s _o_f _G_N_U _C _t_h_a_t	 _a_r_e  _i_n_-
+ 	  _c_o_m_p_a_t_i_b_l_e  _w_i_t_h  ANSI  C,  such as the aaaassssmmmm, iiiinnnnlllliiiinnnneeee and
+ 	  ttttyyyyppppeeeeooooffff keywords, and predefined macros such as uuuunnnniiiixxxx and
+ 	  vvvvaaaaxxxx that identify the	type of	system you are using.  It
+ 	  also enables the undesirable and rarely used ANSI  tri-
+ 	  graph	feature, and makes the preprocessor accept `$$$$' as
+ 	  part of identifiers.
+ 
+ 	  The alternate	keywords  ________aaaassssmmmm________,  ________eeeexxxxtttteeeennnnssssiiiioooonnnn________,  ________iiiinnnn----
+ 	  lllliiiinnnneeee________ and ________ttttyyyyppppeeeeooooffff________	continue to work despite `----aaaannnnssssiiii'.
+ 	  You would not	want to	use them in an ANSI C program, of
+ 	  course,  but	it  is useful to put them in header files
+ 	  that might be	included in compilations  done	with  `	----
+ 	  aaaannnnssssiiii'.   Alternate  predefined  macros such as ________uuuunnnniiiixxxx________
+ 	  and ________vvvvaaaaxxxx________ are also available,  with	 or  without  `	----
+ 	  aaaannnnssssiiii'.
+ 
+ 	  The `----aaaannnnssssiiii' option does not cause non-ANSI programs  to
+ 	  be rejected gratuitously.  For that, `----ppppeeeeddddaaaannnnttttiiiicccc' is re-
+ 	  quired in addition to	`----aaaannnnssssiiii'.
+ 
+ 	  The preprocessor  predefines	a  macro  ________SSSSTTTTRRRRIIIICCCCTTTT____AAAANNNNSSSSIIII________
+ 	  when you use the `----aaaannnnssssiiii' option.  Some header	files may
+ 	  notice this macro and	refrain	 from  declaring  certain
+ 	  functions  or	 defining  certain  macros  that the ANSI
+ 	  standard doesn't call	for; this is to	avoid interfering
+ 	  with	any programs that might	use these names	for other
+ 	  things.
+ 
+      ----ffffnnnnoooo----aaaassssmmmm
+ 	  Do not recognize aaaassssmmmm,	iiiinnnnlllliiiinnnneeee or ttttyyyyppppeeeeooooffff  as  a	 keyword.
+ 	  These	 words	may then be used as identifiers.  You can
+ 	  use ________aaaassssmmmm________, ________iiiinnnnlllliiiinnnneeee________ and  ________ttttyyyyppppeeeeooooffff________  instead.   `	----
+ 	  aaaannnnssssiiii'	implies	`----ffffnnnnoooo----aaaassssmmmm'.
+ 
+      ----ffffnnnnoooo----bbbbuuuuiiiillllttttiiiinnnn
+ 	  (_I_g_n_o_r_e_d _f_o_r _C++.) Don't  recognize  non-ANSI	 built-in
+ 	  functions.   ` ---- aaaannnnssssiiii' also has this effect. Currently,
+ 	  the only function affected is	aaaallllllllooooccccaaaa.
+ 
+      ----ffffnnnnoooo----ssssttttrrrriiiicccctttt----pppprrrroooottttoooottttyyyyppppeeee
+ 	  (_C++ _o_n_l_y.)  Consider	the declaration	iiiinnnntttt ffffoooooooo	(((())));;;;.   In
+ 	  C++,	this  means  that the function ffffoooooooo takes no argu-
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992			6
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  ments.
+ 	   In ANSI C, this is declared iiiinnnntttt ffffoooooooo((((vvvvooooiiiidddd))));;;;.	With  the
+ 	  flag	`----ffffnnnnoooo----ssssttttrrrriiiicccctttt----pppprrrroooottttoooottttyyyyppppeeee', declaring functions with
+ 	  no arguments is equivalent to	 declaring  its	 argument
+ 	  list	to be untyped, i.e., iiiinnnntttt ffffoooooooo (((())));;;; is equivalent to
+ 	  saying iiiinnnntttt ffffoooooooo ((((............))));;;;.
+ 
+      ----ttttrrrriiiiggggrrrraaaapppphhhhssss
+ 	  Support ANSI C trigraphs.  The `----aaaannnnssssiiii' option	implies	`
+ 	  ----ttttrrrriiiiggggrrrraaaapppphhhhssss'.
+ 
+      ----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll
+ 	  Attempt to support some aspects of traditional  C  com-
+ 	  pilers.   For	details, see the GNU C Manual; the dupli-
+ 	  cate list here has been deleted so that  we  won't  get
+ 	  complaints when it is	out of date.
+ 
+ 	  But one note about C++ programs only (not C).	 `----ttttrrrraaaaddddiiii----
+ 	  ttttiiiioooonnnnaaaallll'  has	one additional effect for C++: assignment
+ 	  to tttthhhhiiiissss is permitted.	 This is the same as  the  effect
+ 	  of `----fffftttthhhhiiiissss----iiiissss----vvvvaaaarrrriiiiaaaabbbblllleeee'.
+ 
+      ----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll----ccccpppppppp
+ 	  Attempt  to  support	some  aspects  of  traditional	C
+ 	  preprocessors.   This	 includes the items that specifi-
+ 	  cally	mention	the preprocessor above,	but none  of  the
+ 	  other	effects	of `----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll'.
+ 
+      ----ffffddddoooollllllllaaaarrrrssss----iiiinnnn----iiiiddddeeeennnnttttiiiiffffiiiieeeerrrrssss
+ 	  (_C++ _o_n_l_y.)  Permit the  use	of  `$$$$'	 in  identifiers.
+ 	  (For	GNU C, this is the default, and	you can	forbid it
+ 	  with `----aaaannnnssssiiii'.)  Traditional C	allowed	the character `$$$$'
+ 	  to form part of identifiers; by default, GNU C also al-
+ 	  lows this.  However, ANSI C forbids `$$$$' in identifiers,
+ 	  and  GNU  C++	 also forbids it by default on most plat-
+ 	  forms	(though	on some	platforms it's enabled by default
+ 	  for GNU C++ as well).
+ 
+      ----ffffeeeennnnuuuummmm----iiiinnnntttt----eeeeqqqquuuuiiiivvvv
+ 	  (_C++ _o_n_l_y.)  Normally	GNU C++	allows conversion of eeeennnnuuuummmm
+ 	  to  iiiinnnntttt, but not the other way around.  Use this option
+ 	  if you want GNU C++ to allow conversion of iiiinnnntttt to  eeeennnnuuuummmm
+ 	  as well.
+ 
+      ----ffffaaaallllllll----vvvviiiirrrrttttuuuuaaaallll
+ 	  (_C++ _o_n_l_y.)  When you	use the	` ---- ffffaaaallllllll ---- vvvviiiirrrrttttuuuuaaaallll',  all
+ 	  member  functions (except for	constructor functions and
+ 	  new/delete member operators) declared	in the same class
+ 	  with	a  ``method-call'' operator method are treated as
+ 	  virtual functions of the given class.	 In  effect,  all
+ 	  of these methods become ``implicitly virtual.''
+ 
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992			7
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  This does _n_o_t	mean that all calls to these methods will
+ 	  be  made  through  the  internal table of virtual func-
+ 	  tions.  There	are some circumstances under which it  is
+ 	  obvious  that	a call to a given virtual function can be
+ 	  made directly, and in	these cases the	 calls	still  go
+ 	  direct.
+ 
+ 	  The effect of	making all methods of a	class with a  de-
+ 	  clared `ooooppppeeeerrrraaaattttoooorrrr---->>>>(((())))(((())))' implicitly virtual using `----ffffaaaallllllll
+ 	  ----vvvviiiirrrrttttuuuuaaaallll' extends also to all	 non-constructor  methods
+ 	  of any class derived from such a class.
+ 
+      ----ffffccccoooonnnndddd----mmmmiiiissssmmmmaaaattttcccchhhh
+ 	  Allow	conditional expressions	with mismatched	types  in
+ 	  the  second  and third arguments.  The value of such an
+ 	  expression is	void.
+ 
+      ----fffftttthhhhiiiissss----iiiissss----vvvvaaaarrrriiiiaaaabbbblllleeee
+ 	  (_C++ _o_n_l_y.)  The  incorporation  of  user-defined  free
+ 	  store	 management  into C++ has made assignment to tttthhhhiiiissss
+ 	  an anachronism.  Therefore, by default GNU  C++  treats
+ 	  the  type of tttthhhhiiiissss in a member	function of ccccllllaaaassssssss XXXX to be
+ 	  XXXX ****ccccoooonnnnsssstttt.  In	other words, it	is illegal to  assign  to
+ 	  tttthhhhiiiissss	within	a  class  member  function.  However, for
+ 	  backwards  compatibility,  you  can  invoke	the   old
+ 	  behavior by using `----fffftttthhhhiiiissss----iiiissss----vvvvaaaarrrriiiiaaaabbbblllleeee'.
+ 
+      ----ffffuuuunnnnssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr
+ 	  Let the type cccchhhhaaaarrrr be unsigned, like uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr.
+ 
+ 	  Each kind of machine has a default for what cccchhhhaaaarrrr should
+ 	  be.  It is either like uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr by default or like
+ 	  ssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr by default.
+ 
+ 	  Ideally, a portable program should  always  use  ssssiiiiggggnnnneeeedddd
+ 	  cccchhhhaaaarrrr or uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr	when it	depends	on the signedness
+ 	  of an	object.	 But many programs have	been  written  to
+ 	  use plain cccchhhhaaaarrrr and expect it to be signed, or	expect it
+ 	  to be	unsigned, depending on	the  machines  they  were
+ 	  written  for.	  This	option,	 and its inverse, let you
+ 	  make such a program work with	the opposite default.
+ 
+ 	  The type cccchhhhaaaarrrr	is always a distinct type  from	 each  of
+ 	  ssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr and uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr, even though its behavior
+ 	  is always just like one of those two.
+ 
+ 
+      ----ffffssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr
+ 	  Let the type cccchhhhaaaarrrr be signed, like ssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr.
+ 
+ 	  Note that this is equivalent to `----ffffnnnnoooo----uuuunnnnssssiiiiggggnnnneeeedddd ---- cccchhhhaaaarrrr',
+ 	  which	is the negative	form of	`----ffffuuuunnnnssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr'.  Like-
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992			8
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  wise,	`----ffffnnnnoooo----ssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr' is equivalent to `----ffffuuuunnnnssssiiiiggggnnnneeeedddd	----
+ 	  cccchhhhaaaarrrr'.
+ 
+      ----ffffssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
+ 
+      ----ffffuuuunnnnssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
+ 
+      ----ffffnnnnoooo----ssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
+ 
+      ----ffffnnnnoooo----uuuunnnnssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
+ 	  These	options	control	whether	a bitfield is  signed  or
+ 	  unsigned,  when  declared  with no explicit `ssssiiiiggggnnnneeeedddd' or
+ 	  `uuuunnnnssssiiiiggggnnnneeeedddd' qualifier.	 By default, such a  bitfield  is
+ 	  signed,  because  this is consistent:	the basic integer
+ 	  types	such as	iiiinnnntttt are	signed types.
+ 
+ 	  However, when	you specify `----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll', bitfields are
+ 	  all unsigned no matter what.
+ 
+      ----ffffwwwwrrrriiiittttaaaabbbblllleeee----ssssttttrrrriiiinnnnggggssss
+ 	  Store	string constants in the	writable data segment and
+ 	  don't	 uniquize  them.   This	is for compatibility with
+ 	  old programs which assume they can  write  into  string
+ 	  constants.  `----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll' also has this effect.
+ 
+ 	  Writing into string  constants  is  a	 very  bad  idea;
+ 	  ``constants''	should be constant.
+ 
+ PPPPRRRREEEEPPPPRRRROOOOCCCCEEEESSSSSSSSOOOORRRR OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      These options control the C preprocessor, which  is  run  on
+      each C source file	before actual compilation.
+ 
+      If	you use	the `----EEEE' option, GCC does nothing except  prepro-
+      cessing.	Some  of  these	 options make sense only together
+      with `----EEEE' because they cause the preprocessor output  to  be
+      unsuitable	for actual compilation.
+ 
+      ----iiii	_f_i_l_e
+ 	   Process _f_i_l_e	as input, discarding the  resulting  out-
+ 	  put, before processing the regular input file.  Because
+ 	  the output generated from _f_i_l_e is discarded,	the  only
+ 	  effect  of  `	----iiii _f_i_l_e' is to make the	macros defined in
+ 	  _f_i_l_e available for use in the	main input.  The  prepro-
+ 	  cessor  evaluates any	`----DDDD' and `----UUUU' options on the com-
+ 	  mand line before processing `----iiii' _f_i_l_e.
+ 
+      ----nnnnoooossssttttddddiiiinnnncccc
+ 	  Do not  search  the  standard	 system	 directories  for
+ 	  header  files.  Only the directories you have	specified
+ 	  with `----IIII' options (and the current  directory,  if  ap-
+ 	  propriate) are searched.
+ 
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992			9
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  By using both	`----nnnnoooossssttttddddiiiinnnncccc' and	`----IIII---- ',	you can	limit the
+ 	  include-file	search file to only those directories you
+ 	  specify explicitly.
+ 
+      ----uuuunnnnddddeeeeffff
+ 	  Do not predefine any	nonstandard  macros.   (Including
+ 	  architecture flags).
+ 
+      ----EEEE	   Run only the	C preprocessor.	  Preprocess  all  the	C
+ 	  source  files	specified and output the results to stan-
+ 	  dard output or to the	specified output file.
+ 
+      ----CCCC	   Tell	the preprocessor not to	discard	 comments.   Used
+ 	  with the `----EEEE'	option.
+ 
+      ----PPPP	   Tell	the preprocessor not  to  generate  `####lllliiiinnnneeee'  com-
+ 	  mands.  Used with the	`----EEEE' option.
+ 
+      ----MMMM	   Tell	the preprocessor to output a  rule  suitable  for
+ 	  mmmmaaaakkkkeeee	describing  the	dependencies of	each object file.
+ 	  For each source  file,  the  preprocessor  outputs  one
+ 	  mmmmaaaakkkkeeee-rule whose target is the	object file name for that
+ 	  source file and whose	dependencies are  all  the  files
+ 	  `####iiiinnnncccclllluuuuddddeeee'd  in  it.	This rule may be a single line or
+ 	  may be continued with	`\\\\'-newline if it is  long.   The
+ 	  list	of rules is printed on standard	output instead of
+ 	  the preprocessed C program.
+ 
+ 	  `----MMMM' implies `----EEEE'.
+ 
+      ----MMMMMMMM   Like	`----MMMM' but the output mentions only the user header
+ 	  files	 included  with	 `####iiiinnnncccclllluuuuddddeeee _f_i_l_e"'.  System header
+ 	  files	included with `####iiiinnnncccclllluuuuddddeeee	<<<<_f_i_l_e>'	are omitted.
+ 
+      ----MMMMDDDD   Like	`----MMMM' but the dependency	information is written to
+ 	  files	 with  names  made by replacing	`....cccc' with `....dddd' at
+ 	  the end of the input file names.  This is  in	 addition
+ 	  to compiling the file	as specified-`----MMMMDDDD' does	not inhi-
+ 	  bit ordinary compilation the way `----MMMM'	does.
+ 
+ 	  The Mach utility `mmmmdddd'	can be used  to	 merge	the  `....dddd'
+ 	  files	 into a	single dependency file suitable	for using
+ 	  with the `mmmmaaaakkkkeeee' command.
+ 
+      ----MMMMMMMMDDDD  Like	`----MMMMDDDD' except mention only user header files,  not
+ 	  system header	files.
+ 
+      ----HHHH	   Print the name of each header file used,  in	 addition
+ 	  to other normal activities.
+ 
+      ----DDDD_m_a_c_r_o
+ 	  Define macro _m_a_c_r_o with the string `1111' as  its  defini-
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       10
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  tion.
+ 
+      ----DDDD_m_a_c_r_o====_d_e_f_n
+ 	  Define macro _m_a_c_r_o as	_d_e_f_n.	 All instances of `----DDDD' on
+ 	  the  command line are	processed before any `----UUUU' or `----iiii'
+ 	  options.
+ 
+      ----UUUU_m_a_c_r_o
+ 	  Undefine macro _m_a_c_r_o.	 `----UUUU' options are evaluated after
+ 	  all `----DDDD' options, but	before any `----iiii'	options.
+ 
+      ----ddddMMMM   Tell	the preprocessor to output only	 a  list  of  the
+ 	  macro	 definitions  that  are	 in  effect at the end of
+ 	  preprocessing.  Used with the	`----EEEE' option.
+ 
+      ----ddddDDDD   Tell	the preprocessing to pass all  macro  definitions
+ 	  into	the  output, in	their proper sequence in the rest
+ 	  of the output.
+ 
+      ----ddddNNNN   Like	`----ddddDDDD' except that the macro  arguments	and  con-
+ 	  tents	 are omitted.  Only `####ddddeeeeffffiiiinnnneeee _n_a_m_e' is included in
+ 	  the output.
+ 
+ LLLLIIIINNNNKKKKEEEERRRR OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      These options come	into play when the compiler links  object
+      files  into an executable output file.  They are meaningless
+      if	the compiler is	not doing a link step.
+ 
+      _o_b_j_e_c_t-_f_i_l_e-_n_a_m_e
+ 	  A file name that does	not end	in a  special  recognized
+ 	  suffix is considered to name an object file or library.
+ 	  (Object files	are distinguished from libraries  by  the
+ 	  linker  according to the file	contents.)  If GCC does	a
+ 	  link step, these object files	are used as input to  the
+ 	  linker.
+ 
+      ----llll_l_i_b_r_a_r_y
+ 	   Use the library named _l_i_b_r_a_r_y when linking.
+ 
+ 	  The linker searches a	standard list of directories  for
+ 	  the	library,   which   is	actually   a  file  named
+ 	  `lllliiiibbbb_l_i_b_r_a_r_y.a'.  The linker then uses	this file  as  if
+ 	  it had been specified	precisely by name.
+ 
+ 	  The directories searched include several standard  sys-
+ 	  tem directories plus any that	you specify with `----LLLL'.
+ 
+ 	  Normally the files found this	way are	 library  files	-
+ 	  archive  files  whose	 members  are  object files.  The
+ 	  linker handles an archive file by scanning  through  it
+ 	  for  members which define symbols that have so far been
+ 	  referenced but not defined.	However,  if  the  linker
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       11
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  finds	 an  ordinary  object file rather than a library,
+ 	  the object file is linked in the  usual  fashion.   The
+ 	  only difference between using	an `----llll'	option and speci-
+ 	  fying	a file name is that `----llll' surrounds  _l_i_b_r_a_r_y  with
+ 	  `lllliiiibbbb'	and `....aaaa' and searches several directories.
+ 
+      ----nnnnoooossssttttddddlllliiiibbbb
+ 	  Don't	use the	standard  system  libraries  and  startup
+ 	  files	when linking.  Only the	files you specify will be
+ 	  passed to the	linker.
+ 
+      ----ssssttttaaaattttiiiicccc
+ 	  On systems that support dynamic linking, this	 prevents
+ 	  linking  with	 the shared libraries.	On other systems,
+ 	  this option has no effect.
+ 
+ DDDDIIIIRRRREEEECCCCTTTTOOOORRRRYYYY OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      These options  specify  directories  to  search  for  header
+      files, for	libraries and for parts	of the compiler:
+ 
+      ----IIII_d_i_r
+ 	   Append  directory  _d_i_r  to  the  list  of  directories
+ 	  searched for include files.
+ 
+      ----IIII----    Any	directories you	specify	with `----IIII' options  before
+ 	  the  ` ---- IIII ---- ' option	are searched only for the case of
+ 	  `####iiiinnnncccclllluuuuddddeeee """"_f_i_l_e""""'; they are not searched for	`####iiiinnnncccclllluuuuddddeeee
+ 	  <<<<_f_i_l_e>'.
+ 
+ 	  If additional	directories are	specified with `---- IIII'  op-
+ 	  tions	 after the `----IIII----	', these directories are searched
+ 	  for all `####iiiinnnncccclllluuuuddddeeee' directives.  (Ordinarily _a_l_l  ` ---- IIII'
+ 	  directories are used this way.)
+ 
+ 	  In addition, the `----IIII----	' option inhibits the use of  the
+ 	  current  directory  (where  the current input	file came
+ 	  from)	as  the	 first	search	directory  for	`####iiiinnnncccclllluuuuddddeeee
+ 	  """"_f_i_l_e""""'.  There is no	way to override	this effect of `----
+ 	  IIII---- '.	 With `----IIII....' you	can specify searching the  direc-
+ 	  tory	which  was current when	the compiler was invoked.
+ 	  That is not exactly the same as what	the  preprocessor
+ 	  does by default, but it is often satisfactory.
+ 
+ 	  `----IIII---- ' does not inhibit the use of the standard  system
+ 	  directories for header files.	 Thus, `----IIII---- ' and `----nnnnoooosssstttt----
+ 	  ddddiiiinnnncccc'	are independent.
+ 
+      ----LLLL_d_i_r
+ 	   Add directory _d_i_r to	the list  of  directories  to  be
+ 	  searched for `----llll'.
+ 
+      ----BBBB_p_r_e_f_i_x
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       12
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	   This	option specifies where to find	the  executables,
+ 	  libraries and	data files of the compiler itself.
+ 
+ 	  The compiler driver program runs one	or  more  of  the
+ 	  subprograms `ccccpppppppp', `cccccccc1111' (or,	for C++, `cccccccc1111pppplllluuuussss'), `aaaassss'
+ 	  and `lllldddd'.  It	tries _p_r_e_f_i_x as	a prefix for each program
+ 	  it	tries	 to    run,   both   with   and	  without
+ 	  `_m_a_c_h_i_n_e/_v_e_r_s_i_o_n/'.
+ 
+ 	  For each subprogram to  be  run,  the	 compiler  driver
+ 	  first	 tries	the `----BBBB' prefix, if any.  If that name is
+ 	  not found, or	if `----BBBB'	was  not  specified,  the  driver
+ 	  tries	 two standard prefixes,	which are `////uuuussssrrrr////lllliiiibbbb////ggggcccccccc////'
+ 	  and `////uuuussssrrrr////llllooooccccaaaallll////lllliiiibbbb////ggggcccccccc----lllliiiibbbb////'.   If  neither	of  those
+ 	  results  in  a  file	name  that is found, the compiler
+ 	  driver searches for the unmodified program name,  using
+ 	  the  directories  specified  in your `PPPPAAAATTTTHHHH' environment
+ 	  variable.
+ 
+ 	  The run-time support file `lllliiiibbbbggggcccccccc....aaaa' is  also	 searched
+ 	  for  using  the  ` ----BBBB' prefix, if needed.  If	it is not
+ 	  found	there, the two standard	prefixes above are tried,
+ 	  and  that  is	all.  The file is left out of the link if
+ 	  it is	not found by those means.  Most	of the	time,  on
+ 	  most machines, `lllliiiibbbbggggcccccccc....aaaa' is not actually necessary.
+ 
+ 	  You can get a	similar	result from the	environment vari-
+ 	  able	GGGGCCCCCCCC____EEEEXXXXEEEECCCC____PPPPRRRREEEEFFFFIIIIXXXX;  if  it is defined, its value is
+ 	  used as a prefix in the same way.  If	both the `----BBBB' op-
+ 	  tion	and the	GGGGCCCCCCCC____EEEEXXXXEEEECCCC____PPPPRRRREEEEFFFFIIIIXXXX	variable are present, the
+ 	  `----BBBB' option is used first and	the environment	 variable
+ 	  value	second.
+ 
+ WWWWAAAARRRRNNNNIIIINNNNGGGG	OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      Warnings are diagnostic messages that  report  constructions
+      which  are	 not  inherently erroneous but which are risky or
+      suggest there may have been an error.
+ 
+      These options control the amount and kinds	of warnings  pro-
+      duced by GNU CC:
+ 
+      ----ffffssssyyyynnnnttttaaaaxxxx----oooonnnnllllyyyy
+ 	  Check	the code for syntax errors, but	 don't	emit  any
+ 	  output.
+ 
+      ----wwww	   Inhibit all warning messages.
+ 
+      ----ppppeeeeddddaaaannnnttttiiiicccc
+ 	  Issue	all the	warnings demanded by strict ANSI standard
+ 	  C; reject all	programs that use forbidden extensions.
+ 
+ 	  Valid	ANSI standard C	programs should	compile	 properly
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       13
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  with or without this option (though a	rare few will re-
+ 	  quire	`----aaaannnnssssiiii').  However, without this option,  certain
+ 	  GNU extensions and traditional C features are	supported
+ 	  as well.  With this option, they are	rejected.   There
+ 	  is  no  reason  to  _u_s_e  this	option;	it exists only to
+ 	  satisfy pedants.
+ 
+ 	  `----ppppeeeeddddaaaannnnttttiiiicccc' does not cause warning messages for use  of
+ 	  the  alternate  keywords whose names begin and end with
+ 	  `________'.	 Pedantic warnings are also disabled in	 the  ex-
+ 	  pression  that  follows  ________eeeexxxxtttteeeennnnssssiiiioooonnnn________.   However, only
+ 	  system header	files should use these escape routes; ap-
+ 	  plication programs should avoid them.
+ 
+      ----ppppeeeeddddaaaannnnttttiiiicccc----eeeerrrrrrrroooorrrrssss
+ 	  Like `----ppppeeeeddddaaaannnnttttiiiicccc', except that	errors are produced rath-
+ 	  er than warnings.
+ 
+      ----WWWW	   Print extra warning messages	for these events:
+ 
+ 	+o  A nonvolatile automatic variable might be changed by	a
+ 	  call	to  lllloooonnnnggggjjjjmmmmpppp.  These warnings are possible only in
+ 	  optimizing compilation.
+ 
+ 	  The compiler sees only the calls to sssseeeettttjjjjmmmmpppp.  It  cannot
+ 	  know	where  lllloooonnnnggggjjjjmmmmpppp	will be	called;	in fact, a signal
+ 	  handler could	call it	at any point in	the code.   As	a
+ 	  result,  you	may  get  a warning even when there is in
+ 	  fact no problem  because  lllloooonnnnggggjjjjmmmmpppp  cannot  in	 fact  be
+ 	  called at the	place which would cause	a problem.
+ 
+ 	+o  A function can return either	with or	without	a  value.
+ 	  (Falling off the end of the function body is considered
+ 	  returning without a value.)  For example, this function
+ 	  would	evoke such a warning:
+ 
+ 	  foo (a)
+ 	  {
+ 	    if (a > 0)
+ 	      return a;
+ 	  }
+ 
+ 
+ 	  Spurious warnings can	occur because  GNU  CC	does  not
+ 	  realize  that	 certain  functions  (including	aaaabbbboooorrrrtttt and
+ 	  lllloooonnnnggggjjjjmmmmpppp) will	never return.
+ 
+ 	+o  An expression-statement contains no side effects.
+ 
+ 	+o  An unsigned value is	compared against zero with `>>>>' or
+ 	  `<<<<===='.
+ 
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       14
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      ----WWWWiiiimmmmpppplllliiiicccciiiitttt
+ 	  Warn whenever	a function or parameter	is implicitly de-
+ 	  clared.
+ 
+      ----WWWWrrrreeeettttuuuurrrrnnnn----ttttyyyyppppeeee
+ 	  Warn whenever	a function is defined with a  return-type
+ 	  that	defaults  to  iiiinnnntttt.   Also  warn	 about any rrrreeeettttuuuurrrrnnnn
+ 	  statement with no  return-value  in  a  function  whose
+ 	  return-type is not vvvvooooiiiidddd.
+ 
+      ----WWWWuuuunnnnuuuusssseeeedddd
+ 	  Warn whenever	a local	variable is unused aside from its
+ 	  declaration, whenever	a function is declared static but
+ 	  never	defined, and  whenever	a  statement  computes	a
+ 	  result that is explicitly not	used.
+ 
+      ----WWWWsssswwwwiiiittttcccchhhh
+ 	  Warn whenever	 a  sssswwwwiiiittttcccchhhh  statement  has  an	index  of
+ 	  enumeral  type  and lacks a ccccaaaasssseeee for one or more of the
+ 	  named	codes of that enumeration.  (The  presence  of	a
+ 	  ddddeeeeffffaaaauuuulllltttt label	prevents this warning.)	 ccccaaaasssseeee labels out-
+ 	  side the enumeration range also provoke  warnings  when
+ 	  this option is used.
+ 
+      ----WWWWccccoooommmmmmmmeeeennnntttt
+ 	  Warn whenever	a comment-start	sequence `////****' appears  in
+ 	  a comment.
+ 
+      ----WWWWttttrrrriiiiggggrrrraaaapppphhhhssss
+ 	  Warn if any trigraphs	are  encountered  (assuming  they
+ 	  are enabled).
+ 
+      ----WWWWffffoooorrrrmmmmaaaatttt
+ 	  Check	calls to pppprrrriiiinnnnttttffff	and ssssccccaaaannnnffff,  etc.,  to  make  sure
+ 	  that	the  arguments supplied	have types appropriate to
+ 	  the format string specified.
+ 
+      ----WWWWuuuunnnniiiinnnniiiittttiiiiaaaalllliiiizzzzeeeedddd
+ 	  An automatic variable	is used	without	first being  ini-
+ 	  tialized.
+ 
+ 	  These	warnings are possible only in optimizing compila-
+ 	  tion,	 because  they require data flow information that
+ 	  is computed only when	optimizing.  If	you don't specify
+ 	  `----OOOO',	you simply won't get these warnings.
+ 
+ 	  These	warnings occur only for	variables that are candi-
+ 	  dates	 for register allocation.  Therefore, they do not
+ 	  occur	for a variable	that  is  declared  vvvvoooollllaaaattttiiiilllleeee,  or
+ 	  whose	 address is taken, or whose size is other than 1,
+ 	  2, 4 or 8 bytes.  Also, they do not  occur  for  struc-
+ 	  tures,  unions  or arrays, even when they are	in regis-
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       15
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  ters.
+ 
+ 	  Note that there may be no warning about a variable that
+ 	  is  used  only  to compute a value that itself is never
+ 	  used,	because	such computations may be deleted by  data
+ 	  flow analysis	before the warnings are	printed.
+ 
+ 	  These	warnings are made optional because GNU CC is  not
+ 	  smart	 enough	to see all the reasons why the code might
+ 	  be correct despite appearing to have an error.  Here is
+ 	  one example of how this can happen:
+ 
+ 
+ 	  {
+ 	    int	x;
+ 	    switch (y)
+ 	      {
+ 	      case 1: x	= 1;
+ 		break;
+ 	      case 2: x	= 4;
+ 		break;
+ 	      case 3: x	= 5;
+ 	      }
+ 	    foo	(x);
+ 	  }
+ 
+ 
+ 
+ 	  If the value of yyyy is always 1, 2 or 3, then xxxx	is always
+ 	  initialized,	but  GNU  CC  doesn't know this.  Here is
+ 	  another common case:
+ 
+ 
+ 	  {
+ 	    int	save_y;
+ 	    if (change_y) save_y = y, y	= new_y;
+ 	    ...
+ 	    if (change_y) y = save_y;
+ 	  }
+ 
+ 
+ 
+ 	  This has no bug because ssssaaaavvvveeee____yyyy is used only  if  it  is
+ 	  set.
+ 
+ 	  Some spurious	warnings can be	avoided	if you declare as
+ 	  vvvvoooollllaaaattttiiiilllleeee all the functions you use that never	return.
+ 
+      ----WWWWppppaaaarrrreeeennnntttthhhheeeesssseeeessss
+ 	  Warn if parentheses are omitted in certain contexts.
+ 
+      ----WWWWaaaallllllll
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       16
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  All of the above `----WWWW'	options	combined.  These are  all
+ 	  the  options	which  pertain to usage	that we	recommend
+ 	  avoiding and that we believe is easy to avoid, even  in
+ 	  conjunction with macros.
+ 
+      The remaining `----WWWW............' options are not implied by `----WWWWaaaallllllll' be-
+      cause they	warn about constructions that we consider reason-
+      able to use, on occasion, in clean	programs.
+ 
+      ----WWWWttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll
+ 	  Warn about certain constructs	that  behave  differently
+ 	  in traditional and ANSI C.
+ 
+ 	+o  Macro arguments occurring within string  constants  in
+ 	  the macro body.  These would substitute the argument in
+ 	  traditional C, but are part of the constant in ANSI C.
+ 
+ 	+o  A function declared external	in  one	 block	and  then
+ 	  used after the end of	the block.
+ 
+ 	+o  A sssswwwwiiiittttcccchhhh statement has an operand of	type lllloooonnnngggg.
+ 
+      ----WWWWsssshhhhaaaaddddoooowwww
+ 	  Warn whenever	a local	variable  shadows  another  local
+ 	  variable.
+ 
+      ----WWWWiiiidddd----ccccllllaaaasssshhhh----_l_e_n
+ 	   Warn	whenever two distinct identifiers  match  in  the
+ 	  first	_l_e_n characters.	 This may help you prepare a pro-
+ 	  gram that will compile with  certain	obsolete,  brain-
+ 	  damaged compilers.
+ 
+      ----WWWWppppooooiiiinnnntttteeeerrrr----aaaarrrriiiitttthhhh
+ 	  Warn about anything that depends on the ``size  of''	a
+ 	  function  type or of vvvvooooiiiidddd.  GNU C assigns these types	a
+ 	  size of 1, for convenience in	calculations with vvvvooooiiiidddd	****
+ 	  pointers and pointers	to functions.
+ 
+      ----WWWWccccaaaasssstttt----qqqquuuuaaaallll
+ 	  Warn whenever	a pointer is cast so as	to remove a  type
+ 	  qualifier from the target type.  For example,	warn if	a
+ 	  ccccoooonnnnsssstttt	cccchhhhaaaarrrr **** is cast to an ordinary cccchhhhaaaarrrr ****.
+ 
+      ----WWWWccccaaaasssstttt----aaaalllliiiiggggnnnn
+ 	  Warn whenever	a pointer is cast such that the	 required
+ 	  alignment  of	 the  target  is increased.  For example,
+ 	  warn if a cccchhhhaaaarrrr **** is cast to an iiiinnnntttt **** on machines  where
+ 	  integers  can	 only  be  accessed  at	two- or	four-byte
+ 	  boundaries.
+ 
+      ----WWWWwwwwrrrriiiitttteeee----ssssttttrrrriiiinnnnggggssss
+ 	  Give string constants	the type  ccccoooonnnnsssstttt	 cccchhhhaaaarrrr[[[[_l_e_n_g_t_h]  so
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       17
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  that copying the address of one into a non-ccccoooonnnnsssstttt cccchhhhaaaarrrr	****
+ 	  pointer will get a warning.  These warnings  will  help
+ 	  you  find  at	 compile  time code that can try to write
+ 	  into a string	constant, but only if you have been  very
+ 	  careful  about  using	 ccccoooonnnnsssstttt in declarations and proto-
+ 	  types.  Otherwise, it	will just be a nuisance; this  is
+ 	  why we did not make `----WWWWaaaallllllll' request these warnings.
+ 
+      ----WWWWccccoooonnnnvvvveeeerrrrssssiiiioooonnnn
+ 	  Warn if a prototype causes a type  conversion	 that  is
+ 	  different  from  what	would happen to	the same argument
+ 	  in the absence of a prototype.  This	includes  conver-
+ 	  sions	 of  fixed  point to floating and vice versa, and
+ 	  conversions changing the width or signedness of a fixed
+ 	  point	argument except	when the same as the default pro-
+ 	  motion.
+ 
+      ----WWWWaaaaggggggggrrrreeeeggggaaaatttteeee----rrrreeeettttuuuurrrrnnnn
+ 	  Warn if any functions	that return structures or  unions
+ 	  are defined or called.  (In languages	where you can re-
+ 	  turn an array, this also elicits a warning.)
+ 
+      ----WWWWssssttttrrrriiiicccctttt----pppprrrroooottttoooottttyyyyppppeeeessss
+ 	  Warn if a  function  is  declared  or	 defined  without
+ 	  specifying  the argument types.  (An old-style function
+ 	  definition is	permitted without a warning  if	 preceded
+ 	  by a declaration which specifies the argument	types.)
+ 
+      ----WWWWmmmmiiiissssssssiiiinnnngggg----pppprrrroooottttoooottttyyyyppppeeeessss
+ 	  Warn if a global function is defined without a previous
+ 	  prototype  declaration.  This	warning	is issued even if
+ 	  the definition itself	provides a prototype.  The aim is
+ 	  to  detect global functions that fail	to be declared in
+ 	  header files.
+ 
+      ----WWWWeeeennnnuuuummmm----ccccllllaaaasssshhhh
+ 	  (_C++ _o_n_l_y.)  Warn  when  converting  between	different
+ 	  enumeration types.
+ 
+      ----WWWWoooovvvveeeerrrrllllooooaaaaddddeeeedddd----vvvviiiirrrrttttuuuuaaaallll
+ 	  (_C++ _o_n_l_y.) In a derived class, the definitions of vir-
+ 	  tual	functions must match the type signature	of a vir-
+ 	  tual function	declared in the	base class.  Use this op-
+ 	  tion	to request warnings when a derived class declares
+ 	  a function that may be an erroneous attempt to define	a
+ 	  virtual  function:  that  is,	warn when a function with
+ 	  the same name	as a virtual function in the base  class,
+ 	  but with a type signature that doesn't match any virtu-
+ 	  al functions from the	base class.
+ 
+      ----WWWWiiiinnnnlllliiiinnnneeee
+ 	  Warn if a function can not be	inlined,  and  either  it
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       18
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  was  declared	as inline, or else the ----ffffiiiinnnnlllliiiinnnneeee----ffffuuuunnnnccccttttiiiioooonnnnssss
+ 	  option was given.
+ 
+      ----WWWWeeeerrrrrrrroooorrrr
+ 	  Treat	warnings as errors; abort compilation  after  any
+ 	  warning.
+ 
+ DDDDEEEEBBBBUUUUGGGGGGGGIIIINNNNGGGG OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      GNU CC has	various	special	options	that are used for  debug-
+      ging either your program or GCC:
+ 
+       ----	gggg    Produce  debugging	 information  in  the	operating
+ 	  system's  native format (for DBX or SDB or DWARF).  GDB
+ 	  also can work	with this debugging information.  On most
+ 	  systems  that	use DBX	format,	`----gggg' enables use of extra
+ 	  debugging information	that only GDB  can  use;  if  you
+ 	  want	to  control  for certain whether to generate this
+ 	  information, use `----ggggggggddddbbbb' or `----ggggddddbbbbxxxx'.
+ 
+ 	  Unlike most other C compilers, GNU CC	allows you to use
+ 	  ` ----gggg'	with `----OOOO'.  The	shortcuts taken	by optimized code
+ 	  may occasionally produce surprising results: some vari-
+ 	  ables	 you  declared may not exist at	all; flow of con-
+ 	  trol may briefly move	where you did not expect it; some
+ 	  statements  may  not	be  executed because they compute
+ 	  constant results or their values were	already	at  hand;
+ 	  some statements may execute in different places because
+ 	  they were moved out of loops.
+ 
+ 	  Nevertheless it proves possible to debug optimized out-
+ 	  put.	This makes it reasonable to use	the optimizer for
+ 	  programs that	might have bugs.
+ 
+ 	  The following	options	are useful when	GNU CC is config-
+ 	  ured and compiled with the capability	for more than one
+ 	  debugging format.
+ 
+      ----ggggggggddddbbbb
+ 	  Produce debugging information	in DBX format (if that is
+ 	  supported), including	GDB extensions.
+ 
+      ----ggggddddbbbbxxxx
+ 	  Produce debugging information	in DBX format (if that is
+ 	  supported), without GDB extensions.
+ 
+      ----ggggssssddddbbbb
+ 	  Produce debugging information	in SDB format (if that is
+ 	  supported).
+ 
+      ----ggggddddwwwwaaaarrrrffff
+ 	  Produce debugging information	in DWARF format	(if  that
+ 	  is supported).
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       19
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      ----gggg_l_e_v_e_l
+      ----ggggggggddddbbbb_l_e_v_e_l
+      ----ggggddddbbbbxxxx_l_e_v_e_l
+      ----ggggssssddddbbbb_l_e_v_e_l
+ 
+      ----ggggddddwwwwaaaarrrrffff_l_e_v_e_l
+ 	  Request debugging information	and  also  use	_l_e_v_e_l  to
+ 	  specify how much information.	 The default level is 2.
+ 
+ 	  Level	1 produces minimal information,	enough for making
+ 	  backtraces  in parts of the program that you don't plan
+ 	  to debug.  This includes descriptions	of functions  and
+ 	  external  variables,	but  no	 information  about local
+ 	  variables and	no line	numbers.
+ 
+      ----pppp	   Generate extra code to write	profile	information suit-
+ 	  able for the analysis	program	pppprrrrooooffff.
+ 
+      ----ppppgggg   Generate extra code to write	profile	information suit-
+ 	  able for the analysis	program	ggggpppprrrrooooffff.
+ 
+      ----aaaa	   Generate extra code to write	profile	 information  for
+ 	  basic	 blocks,  which	 will  record the number of times
+ 	  each basic block  is	executed.   This  data	could  be
+ 	  analyzed  by	a program like ttttccccoooovvvv.  Note, however, that
+ 	  the format of	the data is not	what ttttccccoooovvvv expects.  Even-
+ 	  tually  GNU  ggggpppprrrrooooffff  should  be extended to process this
+ 	  data.
+ 
+      ----dddd_l_e_t_t_e_r_s
+ 	   Says	to make	debugging  dumps  during  compilation  at
+ 	  times	specified by _l_e_t_t_e_r_s.  This is used for	debugging
+ 	  the compiler.	 The file names	for most of the	dumps are
+ 	  made	by appending a word to the source file name (e.g.
+ 	  `ffffoooooooo....cccc....rrrrttttllll' or `ffffoooooooo....cccc....jjjjuuuummmmpppp').
+ 
+      ----ddddMMMM   Dump	all macro definitions, at the end of  preprocess-
+ 	  ing, and write no output.
+ 
+      ----ddddNNNN   Dump	all macro names, at the	end of preprocessing.
+ 
+      ----ddddDDDD   Dump	all macro definitions, at the end of  preprocess-
+ 	  ing, in addition to normal output.
+ 
+      ----ddddyyyy   Dump	debugging information during parsing, to standard
+ 	  error.
+ 
+      ----ddddrrrr   Dump	after RTL generation, to `_f_i_l_e.rtl'.
+ 
+      ----ddddxxxx   Just	generate RTL for a function instead of	compiling
+ 	  it.  Usually used with `rrrr'.
+ 
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       20
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      ----ddddjjjj   Dump	after first jump optimization, to `_f_i_l_e.jump'.
+ 
+      ----ddddssss   Dump	after CSE (including the jump  optimization  that
+ 	  sometimes follows CSE), to `_f_i_l_e.cse'.
+ 
+      ----ddddLLLL   Dump	after loop optimization, to `_f_i_l_e.loop'.
+ 
+      ----ddddtttt   Dump	after the second CSE pass (including the jump op-
+ 	  timization that sometimes follows CSE), to `_f_i_l_e.cse2'.
+ 
+      ----ddddffff   Dump	after flow analysis, to	`_f_i_l_e.flow'.
+ 
+      ----ddddcccc   Dump	after instruction combination, to `_f_i_l_e.combine'.
+ 
+      ----ddddSSSS   Dump	after the first	instruction scheduling	pass,  to
+ 	  `_f_i_l_e.sched'.
+ 
+      ----ddddllll   Dump	after local register allocation, to `_f_i_l_e.lreg'.
+ 
+      ----ddddgggg   Dump	after global register allocation, to `_f_i_l_e.greg'.
+ 
+      ----ddddRRRR   Dump	after the second instruction scheduling	pass,  to
+ 	  `_f_i_l_e.sched2'.
+ 
+      ----ddddJJJJ   Dump	after last jump	optimization, to `_f_i_l_e.jump2'.
+ 
+      ----dddddddd   Dump	after delayed branch scheduling, to `_f_i_l_e.dbr'.
+ 
+      ----ddddkkkk   Dump	after conversion  from	registers  to  stack,  to
+ 	  `_f_i_l_e.stack'.
+ 
+      ----ddddmmmm   Print statistics on memory usage, at	the  end  of  the
+ 	  run, to standard error.
+ 
+      ----ddddpppp   Annotate the	assembler output with a	comment	 indicat-
+ 	  ing which pattern and	alternative was	used.
+ 
+      ----ffffpppprrrreeeetttteeeennnndddd----ffffllllooooaaaatttt
+ 	  When running a cross-compiler, pretend that the  target
+ 	  machine uses the same	floating point format as the host
+ 	  machine.  This causes	incorrect output  of  the  actual
+ 	  floating constants, but the actual instruction sequence
+ 	  will probably	be the same as GNU  CC	would  make  when
+ 	  running on the target	machine.
+ 
+      ----ssssaaaavvvveeee----tttteeeemmmmppppssss
+ 	  Store	the usual ``temporary''	intermediate  files  per-
+ 	  manently;  place them	in the current directory and name
+ 	  them based on	the source file.  Thus,	compiling `ffffoooooooo....cccc'
+ 	  with `----cccc ----ssssaaaavvvveeee----tttteeeemmmmppppssss'	would produce files `ffffoooooooo....ccccpppppppp' and
+ 	  `ffffoooooooo....ssss', as well as `ffffoooooooo....oooo'.
+ 
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       21
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ OOOOPPPPTTTTIIIIMMMMIIIIZZZZAAAATTTTIIIIOOOONNNN OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      These options control various sorts of optimizations:
+ 
+      ----OOOO	   Optimize.  Optimizing compilation takes somewhat  more
+ 	  time,	and a lot more memory for a large function.
+ 
+ 	  Without `----OOOO',	the compiler's goal is to reduce the cost
+ 	  of  compilation  and	to make	debugging produce the ex-
+ 	  pected results.  Statements  are  independent:  if  you
+ 	  stop	the program with a breakpoint between statements,
+ 	  you can then assign a	new  value  to	any  variable  or
+ 	  change  the  program	counter	to any other statement in
+ 	  the function and get exactly the results you would  ex-
+ 	  pect from the	source code.
+ 
+ 	  Without `----OOOO',	only variables declared	rrrreeeeggggiiiisssstttteeeerrrr are  al-
+ 	  located in registers.	 The resulting compiled	code is	a
+ 	  little worse than produced by	PCC without `----OOOO'.
+ 
+ 	  With `----OOOO', the compiler tries	to reduce code	size  and
+ 	  execution time.
+ 
+ 	  When you specify `----OOOO', `----fffftttthhhhrrrreeeeaaaadddd----jjjjuuuummmmppppssss' and `----ffffddddeeeellllaaaayyyyeeeedddd----
+ 	  bbbbrrrraaaannnncccchhhh'  are	turned	on.  On	some machines other flags
+ 	  may also be turned on.
+ 
+      ----OOOO2222   Highly optimize.  As	compared to ` ----	OOOO',  this  option
+ 	  will increase	both compilation time and the performance
+ 	  of the generated code.
+ 
+ 	  All `----ffff_f_l_a_g'	options	 that  control	optimization  are
+ 	  turned  on  when  you	 specify `----OOOO2222',	except `----ffffuuuunnnnrrrroooollllllll----
+ 	  llllooooooooppppssss' and `----ffffuuuunnnnrrrroooollllllll----aaaallllllll----llllooooooooppppssss'.
+ 
+      Options of	the form ` ---- ffff_f_l_a_g'  specify  machine-independent
+      flags.   Most  flags  have	both positive and negative forms;
+      the negative form of `----ffffffffoooooooo' would	be `----ffffnnnnoooo----ffffoooooooo'.	The  fol-
+      lowing list shows only one	form-the one which is not the de-
+      fault.  You can figure out	the other form by either removing
+      `nnnnoooo---- ' or adding it.
+ 
+      ----ffffffffllllooooaaaatttt----ssssttttoooorrrreeee
+ 	  Do not store floating	 point	variables  in  registers.
+ 	  This	prevents undesirable excess precision on machines
+ 	  such as the 68000 where the floating registers (of  the
+ 	  68881) keep more precision than a ddddoooouuuubbbblllleeee is supposed to
+ 	  have.
+ 
+ 	  For most programs, the excess	precision does only good,
+ 	  but  a  few  programs	rely on	the precise definition of
+ 	  IEEE floating	point.	Use `----ffffffffllllooooaaaatttt----ssssttttoooorrrreeee' for	such pro-
+ 	  grams.
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       22
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      ----ffffmmmmeeeemmmmooooiiiizzzzeeee----llllooooooookkkkuuuuppppssss
+ 
+      ----ffffssssaaaavvvveeee----mmmmeeeemmmmooooiiiizzzzeeeedddd
+ 	  (_C++ _o_n_l_y.)  These flags are used to get  the	 compiler
+ 	  to  compile programs faster using heuristics.	 They are
+ 	  not on by default since they are only	 effective  about
+ 	  half	the  time.   The  other	half of	the time programs
+ 	  compile more slowly (and take	more memory).
+ 
+ 	  The first time the compiler must  build  a  call  to	a
+ 	  member  function  (or	 reference  to a data member), it
+ 	  must (1) determine whether the class implements  member
+ 	  functions  of	that name; (2) resolve which member func-
+ 	  tion to call (which involves figuring	out what sorts of
+ 	  type	conversions  need  to be made);	and (3)	check the
+ 	  visibility of	the member function to the  caller.   All
+ 	  of  this  adds up to slower compilation.  Normally, the
+ 	  second time a	call is	made to	that member function  (or
+ 	  reference  to	that data member), it must go through the
+ 	  same lengthy process again.  This means that code  like
+ 	  this
+ 
+ 	    cout << "This " << p << " has " << n << " legs.\n";
+ 
+ 	  makes	six passes through all three steps.  By	 using	a
+ 	  software  cache,  a  ``hit'' significantly reduces this
+ 	  cost.	 Unfortunately,	using the cache	introduces anoth-
+ 	  er  layer  of	mechanisms which must be implemented, and
+ 	  so incurs its	own overhead.  `----ffffmmmmeeeemmmmooooiiiizzzzeeee ---- llllooooooookkkkuuuuppppssss'  en-
+ 	  ables	the software cache.
+ 
+ 	  Because access privileges (visibility) to  members  and
+ 	  member  functions  may differ	from one function context
+ 	  to the next, gggg++++++++ may need to flush the cache.	With  the
+ 	  ` ---- ffffmmmmeeeemmmmooooiiiizzzzeeee ----llllooooooookkkkuuuuppppssss' flag, the cache is flushed after
+ 	  every	function that is compiled.  The	`-fsave-memoized'
+ 	  flag enables the same	software cache,	but when the com-
+ 	  piler	determines that	the context of the last	 function
+ 	  compiled  would yield	the same access	privileges of the
+ 	  next function	to compile, it preserves the cache.  This
+ 	  is most helpful when defining	many member functions for
+ 	  the same class: with the exception of	member	functions
+ 	  which	 are  friends of other classes,	each member func-
+ 	  tion has exactly the same access  privileges	as  every
+ 	  other, and the cache need not	be flushed.
+ 
+      ----ffffnnnnoooo----ddddeeeeffffaaaauuuulllltttt----iiiinnnnlllliiiinnnneeee
+ 	  (_C++ _o_n_l_y.)  If `----ffffddddeeeeffffaaaauuuulllltttt ---- iiiinnnnlllliiiinnnneeee'	is  enabled  then
+ 	  member  functions  defined  inside class scope are com-
+ 	  piled	inline by default; i.e., you don't  need  to  add
+ 	  `iiiinnnnlllliiiinnnneeee'  in front of	the member function name.  By po-
+ 	  pular	demand,	this option is now the default.	 To  keep
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       23
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  GNU C++ from inlining	these member functions,	specify	`
+ 	  ----ffffnnnnoooo----ddddeeeeffffaaaauuuulllltttt----iiiinnnnlllliiiinnnneeee'.
+ 
+      ----ffffnnnnoooo----ddddeeeeffffeeeerrrr----ppppoooopppp
+ 	  Always pop the arguments to each function call as  soon
+ 	  as  that function returns.  For machines which must pop
+ 	  arguments after a function call, the compiler	 normally
+ 	  lets	arguments  accumulate  on  the	stack for several
+ 	  function calls and pops them all at once.
+ 
+      ----ffffffffoooorrrrcccceeee----mmmmeeeemmmm
+ 	  Force	memory operands	to be copied into  registers  be-
+ 	  fore doing arithmetic	on them.  This may produce better
+ 	  code by making all memory references	potential  common
+ 	  subexpressions.   When  they	are not	common subexpres-
+ 	  sions, instruction  combination  should  eliminate  the
+ 	  separate  register-load.   I	am  interested in hearing
+ 	  about	the difference this makes.
+ 
+      ----ffffffffoooorrrrcccceeee----aaaaddddddddrrrr
+ 	  Force	memory address constants to be copied into regis-
+ 	  ters before doing arithmetic on them.	 This may produce
+ 	  better code just as `----ffffffffoooorrrrcccceeee----mmmmeeeemmmm' may.  I am interested
+ 	  in hearing about the difference this makes.
+ 
+      ----ffffoooommmmiiiitttt----ffffrrrraaaammmmeeee----ppppooooiiiinnnntttteeeerrrr
+ 	  Don't	keep the frame pointer in a  register  for  func-
+ 	  tions	 that  don't  need one.	 This avoids the instruc-
+ 	  tions	to save, set up	and restore  frame  pointers;  it
+ 	  also	makes  an  extra register available in many func-
+ 	  tions.  _I_t _a_l_s_o  _m_a_k_e_s  _d_e_b_u_g_g_i_n_g  _i_m_p_o_s_s_i_b_l_e	 _o_n  most
+ 	  machines.
+ 
+ 	  On some machines, such as the	Vax, this flag has no ef-
+ 	  fect,	 because  the standard calling sequence	automati-
+ 	  cally	handles	the frame pointer and nothing is saved by
+ 	  pretending  it  doesn't exist.  The machine-description
+ 	  macro	FFFFRRRRAAAAMMMMEEEE____PPPPOOOOIIIINNNNTTTTEEEERRRR____RRRREEEEQQQQUUUUIIIIRRRREEEEDDDD controls	whether	a  target
+ 	  machine supports this	flag.
+ 
+      ----ffffiiiinnnnlllliiiinnnneeee
+ 	  Pay attention	the iiiinnnnlllliiiinnnneeee keyword.  Normally  the  nega-
+ 	  tion	of  this option	`----ffffnnnnoooo----iiiinnnnlllliiiinnnneeee' is used to keep the
+ 	  compiler from	expanding any functions	inline.	 However,
+ 	  the  opposite	 effect	 may  be desirable when	compiling
+ 	  with `----gggg', since `----gggg'	normally  turns	 off  all  inline
+ 	  function expansion.
+ 
+      ----ffffiiiinnnnlllliiiinnnneeee----ffffuuuunnnnccccttttiiiioooonnnnssss
+ 	  Integrate all	simple functions into their callers.  The
+ 	  compiler heuristically decides which functions are sim-
+ 	  ple enough to	be worth integrating in	this way.
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       24
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  If all calls to a given function  are	 integrated,  and
+ 	  the function is declared ssssttttaaaattttiiiicccc, then	GCC normally does
+ 	  not output the function as assembler code  in	 its  own
+ 	  right.
+ 
+      ----ffffccccaaaalllllllleeeerrrr----ssssaaaavvvveeeessss
+ 	  Enable values	to be allocated	in registers that will be
+ 	  clobbered by function	calls, by emitting extra instruc-
+ 	  tions	to save	and restore  the  registers  around  such
+ 	  calls.   Such	 allocation is done only when it seems to
+ 	  result in better code	than would otherwise be	produced.
+ 
+ 	  This option is enabled by default on certain	machines,
+ 	  usually those	which have no call-preserved registers to
+ 	  use instead.
+ 
+      ----ffffkkkkeeeeeeeepppp----iiiinnnnlllliiiinnnneeee----ffffuuuunnnnccccttttiiiioooonnnnssss
+ 	  Even if all calls to a given function	 are  integrated,
+ 	  and  the function is declared	ssssttttaaaattttiiiicccc,	nevertheless out-
+ 	  put a	separate run-time callable version of  the  func-
+ 	  tion.
+ 
+      ----ffffnnnnoooo----ffffuuuunnnnccccttttiiiioooonnnn----ccccsssseeee
+ 	  Do not put function addresses	in registers;  make  each
+ 	  instruction  that calls a constant function contain the
+ 	  function's address explicitly.
+ 
+ 	  This option results in less efficient	 code,	but  some
+ 	  strange  hacks  that	alter the assembler output may be
+ 	  confused by the optimizations	performed when	this  op-
+ 	  tion is not used.
+ 
+      The following options control specific optimizations.  The	`
+      ---- OOOO2222'  option  turns on all of these optimizations	except `----
+      ffffuuuunnnnrrrroooollllllll----llllooooooooppppssss' and	`----ffffuuuunnnnrrrroooollllllll----aaaallllllll----llllooooooooppppssss'.
+ 
+      The `----OOOO' option usually turns on the `----fffftttthhhhrrrreeeeaaaadddd----jjjjuuuummmmppppssss' and `----
+      ffffddddeeeellllaaaayyyyeeeedddd ----	bbbbrrrraaaannnncccchhhh'	options, but specific machines may change
+      the default optimizations.
+ 
+      You can use the following	flags  in  the	rare  cases  when
+      ``fine-tuning'' of	optimizations to be performed is desired.
+ 
+      ----ffffssssttttrrrreeeennnnggggtttthhhh----rrrreeeedddduuuucccceeee
+ 	  Perform the optimizations of	loop  strength	reduction
+ 	  and elimination of iteration variables.
+ 
+      ----fffftttthhhhrrrreeeeaaaadddd----jjjjuuuummmmppppssss
+ 	  Perform optimizations	where we check to see if  a  jump
+ 	  branches  to	a  location where another comparison sub-
+ 	  sumed	by the first is	found.	If so, the  first  branch
+ 	  is  redirected  to either the	destination of the second
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       25
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  branch or a point immediately	following  it,	depending
+ 	  on whether the condition is known to be true or false.
+ 
+      ----ffffuuuunnnnrrrroooollllllll----llllooooooooppppssss
+ 	  Perform the optimization of loop  unrolling.	 This  is
+ 	  only	done  for loops	whose number of	iterations can be
+ 	  determined at	compile	time or	run time.
+ 
+      ----ffffuuuunnnnrrrroooollllllll----aaaallllllll----llllooooooooppppssss
+ 	  Perform the optimization of loop  unrolling.	 This  is
+ 	  done	for  all  loops.  This usually makes programs run
+ 	  more slowly.
+ 
+      ----ffffccccsssseeee----ffffoooolllllllloooowwww----jjjjuuuummmmppppssss
+ 	  In common subexpression elimination, scan through  jump
+ 	  instructions in certain cases.  This is not as powerful
+ 	  as completely	global CSE, but	not as slow either.
+ 
+      ----ffffrrrreeeerrrruuuunnnn----ccccsssseeee----aaaafffftttteeeerrrr----lllloooooooopppp
+ 	  Re-run common	subexpression elimination after	loop  op-
+ 	  timizations has been performed.
+ 
+      ----ffffeeeelllliiiiddddeeee----ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
+ 	  (_C++ _o_n_l_y.)  Use this	option to instruct  the	 compiler
+ 	  to  be  smarter  about  when it can elide constructors.
+ 	  Without this flag, GNU C++ and cfront	both generate ef-
+ 	  fectively the	same code for:
+ 
+ 	  A foo	();
+ 	  A x (foo ());	  // x initialized by `foo ()',	no ctor	called
+ 	  A y =	foo ();	  // call to `foo ()' heads to temporary,
+ 			  // y is initialized from the temporary.
+ 
+ 	  Note the difference!	With this flag,	GNU C++	 initial-
+ 	  izes `yyyy' directly from the call to ffffoooooooo (((()))) without going
+ 	  through a temporary.
+ 
+      ----ffffeeeexxxxppppeeeennnnssssiiiivvvveeee----ooooppppttttiiiimmmmiiiizzzzaaaattttiiiioooonnnnssss
+ 	  Perform a number of minor optimizations that are  rela-
+ 	  tively expensive.
+ 
+      ----ffffddddeeeellllaaaayyyyeeeedddd----bbbbrrrraaaannnncccchhhh
+ 	  If supported for the target machine, attempt to reorder
+ 	  instructions	to  exploit  instruction  slots	available
+ 	  after	delayed	branch instructions.
+ 
+      ----ffffsssscccchhhheeeedddduuuulllleeee----iiiinnnnssssnnnnssss
+ 	  If supported for the target machine, attempt to reorder
+ 	  instructions	to  eliminate execution	stalls due to re-
+ 	  quired data being  unavailable.   This  helps	 machines
+ 	  that	have  slow floating point or memory load instruc-
+ 	  tions	by allowing other instructions to be issued until
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       26
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  the result of	the load or floating point instruction is
+ 	  required.
+ 
+      ----ffffsssscccchhhheeeedddduuuulllleeee----iiiinnnnssssnnnnssss2222
+ 	  Similar to `----ffffsssscccchhhheeeedddduuuulllleeee----iiiinnnnssssnnnnssss', but  requests	an  addi-
+ 	  tional  pass	of  instruction	scheduling after register
+ 	  allocation has been done.  This is especially	useful on
+ 	  machines  with  a  relatively	small number of	registers
+ 	  and where memory load	instructions take more	than  one
+ 	  cycle.
+ 
+ TTTTAAAARRRRGGGGEEEETTTT OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      By	default, GNU CC	 compiles  code	 for  the  same	 type  of
+      machine  that  you	 are  using.  However, it can also be in-
+      stalled as	a cross-compiler, to compile for some other  type
+      of	 machine.   In	fact, several different	configurations of
+      GNU CC, for different target machines, can	be installed side
+      by	 side.	 Then  you specify which one to	use with the `----bbbb'
+      option.
+ 
+      In	addition, older	and newer versions of GNU CC can  be  in-
+      stalled  side  by	side.	One of them (probably the newest)
+      will be the default, but  you  may	 sometimes  wish  to  use
+      another.
+ 
+      ----bbbb	_m_a_c_h_i_n_e
+ 	   The argument	_m_a_c_h_i_n_e	specifies the target machine  for
+ 	  compilation.	 This  is  useful when you have	installed
+ 	  GNU CC as a cross-compiler.
+ 
+ 	  The value to use for _m_a_c_h_i_n_e is the same as was  speci-
+ 	  fied	as  the	machine	type when configuring GNU CC as	a
+ 	  cross-compiler.  For example,	if a  cross-compiler  was
+ 	  configured  with  `ccccoooonnnnffffiiiigggguuuurrrreeee i386v', meaning to compile
+ 	  for an 80386 running System V, then you would	specify	`
+ 	  ----bbbb iiii333388886666vvvv' to run that	cross compiler.
+ 
+ 	  When you do not specify `----bbbb',	it normally means to com-
+ 	  pile for the same type of machine that you are using.
+ 
+      ----VVVV	_v_e_r_s_i_o_n
+ 	   The argument	_v_e_r_s_i_o_n	specifies which	version	of GNU CC
+ 	  to  run.  This is useful when	multiple versions are in-
+ 	  stalled.  For	example, _v_e_r_s_i_o_n might be `2222....0000',  meaning
+ 	  to run GNU CC	version	2.0.
+ 
+ 	  The default version, when you	do not specify `---- VVVV',  is
+ 	  controlled  by  the way GNU CC is installed.	Normally,
+ 	  it will be a version that is	recommended  for  general
+ 	  use.
+ 
+ 
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       27
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ MMMMAAAACCCCHHHHIIIINNNNEEEE	DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNTTTT OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      Each of the target	machine	types can have	its  own  special
+      options,  starting	 with  ` ---- mmmm',	to  choose  among various
+      hardware models or	configurations - for  example,	68010  vs
+      68020,  floating  coprocessor  or	none.  A single	installed
+      version of	the compiler can compile for any model or  confi-
+      guration, according to the	options	specified.
+ 
+      These are the `----mmmm'	options	defined	for the	68000 series:
+ 
+      ----mmmm66668888000022220000
+ 
+      ----mmmmcccc66668888000022220000
+ 	  Generate output for a	 68020	(rather	 than  a  68000).
+ 	  This is the default if you use the unmodified	sources.
+ 
+      ----mmmm66668888000000000000
+ 
+      ----mmmmcccc66668888000000000000
+ 	  Generate output for a	68000 (rather than a 68020).
+ 
+      ----mmmm66668888888888881111
+ 	  Generate  output  containing	68881  instructions   for
+ 	  floating point.  This	is the default if you use the un-
+ 	  modified sources.
+ 
+      ----mmmmffffppppaaaa
+ 	  Generate output containing  Sun  FPA	instructions  for
+ 	  floating point.
+ 
+      ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
+ 	  Generate output containing library calls  for	 floating
+ 	  point.   _W_A_R_N_I_N_G:  the requisite libraries are not part
+ 	  of GNU CC.  Normally the facilities  of  the	machine's
+ 	  usual	 C  compiler  are  used,  but  this can't be done
+ 	  directly in cross-compilation.  You must make	your  own
+ 	  arrangements	to provide suitable library functions for
+ 	  cross-compilation.
+ 
+      ----mmmmsssshhhhoooorrrrtttt
+ 	  Consider type	iiiinnnntttt to be 16 bits wide,	like sssshhhhoooorrrrtttt iiiinnnntttt.
+ 
+      ----mmmmnnnnoooobbbbiiiittttffffiiiieeeelllldddd
+ 	  Do not use the bit-field instructions.  `---- mmmm66668888000000000000'  im-
+ 	  plies	`----mmmmnnnnoooobbbbiiiittttffffiiiieeeelllldddd'.
+ 
+      ----mmmmbbbbiiiittttffffiiiieeeelllldddd
+ 	  Do use the bit-field instructions.  `----mmmm66668888000022220000'	implies	`
+ 	  ---- mmmmbbbbiiiittttffffiiiieeeelllldddd'.	 This is the default if	you use	the unmo-
+ 	  dified sources.
+ 
+      ----mmmmrrrrttttdddd
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       28
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  Use a	different function-calling convention,	in  which
+ 	  functions  that take a fixed number of arguments return
+ 	  with the rrrrttttdddd instruction, which  pops	 their	arguments
+ 	  while	 returning.   This  saves  one instruction in the
+ 	  caller since there is	no  need  to  pop  the	arguments
+ 	  there.
+ 
+ 	  This calling convention is incompatible  with	 the  one
+ 	  normally used	on Unix, so you	cannot use it if you need
+ 	  to call libraries compiled with the Unix compiler.
+ 
+ 	  Also,	you must  provide  function  prototypes	 for  all
+ 	  functions  that take variable	numbers	of arguments (in-
+ 	  cluding pppprrrriiiinnnnttttffff); otherwise incorrect code will be  gen-
+ 	  erated for calls to those functions.
+ 
+ 	  In addition, seriously incorrect code	 will  result  if
+ 	  you  call a function with too	many arguments.	 (Normal-
+ 	  ly, extra arguments are harmlessly ignored.)
+ 
+ 	  The rrrrttttdddd instruction is supported by the 68010	and 68020
+ 	  processors, but not by the 68000.
+ 
+      These `----mmmm'	options	are defined for	the Vax:
+ 
+      ----mmmmuuuunnnniiiixxxx
+ 	  Do not output	certain	jump instructions (aaaaoooobbbblllleeeeqqqq and  so
+ 	  on)  that  the Unix assembler	for the	Vax cannot handle
+ 	  across long ranges.
+ 
+      ----mmmmggggnnnnuuuu
+ 	  Do output those jump instructions,  on  the  assumption
+ 	  that you will	assemble with the GNU assembler.
+ 
+      ----mmmmgggg   Output code for g-format floating  point  numbers  in-
+ 	  stead	of d-format.
+ 
+      These `----mmmm'	switches are supported on the Sparc:
+ 
+      ----mmmmffffppppuuuu
+ 	  Generate output containing floating point instructions.
+ 	  This is the default if you use the unmodified	sources.
+ 
+      ----mmmmnnnnoooo----eeeeppppiiiilllloooogggguuuueeee
+ 	  Generate separate return instructions	for rrrreeeettttuuuurrrrnnnn state-
+ 	  ments.   This	 has both advantages and disadvantages;	I
+ 	  don't	recall what they are.
+ 
+      These `----mmmm'	options	are defined for	the Convex:
+ 
+      ----mmmmcccc1111  Generate output for a C1.  This is  the  default  when
+ 	  the compiler is configured for a C1.
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       29
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      ----mmmmcccc2222  Generate output for a C2.  This is  the  default  when
+ 	  the compiler is configured for a C2.
+ 
+      ----mmmmaaaarrrrggggccccoooouuuunnnntttt
+ 	  Generate code	which puts an argument count in	the  word
+ 	  preceding  each argument list.  Some nonportable Convex
+ 	  and Vax programs need	this word.  (Debuggers don't, ex-
+ 	  cept for functions with variable-length argument lists;
+ 	  this info is in the symbol table.)
+ 
+      ----mmmmnnnnooooaaaarrrrggggccccoooouuuunnnntttt
+ 	  Omit the argument count word.	 This is the  default  if
+ 	  you use the unmodified sources.
+ 
+      These `----mmmm'	options	are defined for	the AMD	Am29000:
+ 
+      ----mmmmddddwwww  Generate code that assumes the DW bit  is  set,  i.e.,
+ 	  that byte and	halfword operations are	directly support-
+ 	  ed by	the hardware.  This is the default.
+ 
+      ----mmmmnnnnooooddddwwww
+ 	  Generate code	that assumes the DW bit	is not set.
+ 
+      ----mmmmbbbbwwww  Generate code that assumes the  system  supports  byte
+ 	  and halfword write operations.  This is the default.
+ 
+      ----mmmmnnnnbbbbwwww
+ 	  Generate code	that assumes the systems does not support
+ 	  byte	and  halfword  write operations.  This implies `----
+ 	  mmmmnnnnooooddddwwww'.
+ 
+      ----mmmmssssmmmmaaaallllllll
+ 	  Use a	small memory model that	assumes	that all function
+ 	  addresses  are either	within a single	256 KB segment or
+ 	  at an	absolute address of less than 256K.  This  allows
+ 	  the  ccccaaaallllllll  instruction  to  be used instead of a ccccoooonnnnsssstttt,
+ 	  ccccoooonnnnsssstttthhhh, ccccaaaalllllllliiii	sequence.
+ 
+      ----mmmmllllaaaarrrrggggeeee
+ 	  Do not assume	that the ccccaaaallllllll instruction  can	be  used;
+ 	  this is the default.
+ 
+      ----mmmm22229999000055550000
+ 	  Generate code	for the	Am29050.
+ 
+      ----mmmm22229999000000000000
+ 	  Generate code	for the	Am29000.  This is the default.
+ 
+      ----mmmmkkkkeeeerrrrnnnneeeellll----rrrreeeeggggiiiisssstttteeeerrrrssss
+ 	  Generate references to registers ggggrrrr66664444----ggggrrrr99995555  instead  of
+ 	  ggggrrrr99996666----ggggrrrr111122227777.	This  option  can  be used when	compiling
+ 	  kernel code that wants a set of global  registers  dis-
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       30
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  joint	from that used by user-mode code.
+ 
+ 	  Note that when this option is	used, register names in	`
+ 	  ----ffff' flags must use the normal, user-mode, names.
+ 
+      ----mmmmuuuusssseeeerrrr----rrrreeeeggggiiiisssstttteeeerrrrssss
+ 	  Use the normal set  of  global  registers,  ggggrrrr99996666----ggggrrrr111122227777.
+ 	  This is the default.
+ 
+      ----mmmmssssttttaaaacccckkkk----cccchhhheeeecccckkkk
+ 	  Insert a call	to ________mmmmsssspppp____cccchhhheeeecccckkkk after each  stack  adjust-
+ 	  ment.	 This is often used for	kernel code.
+ 
+      These `----mmmm'	options	are defined for	 Motorola  88K	architec-
+      tures:
+ 
+      ----mmmmbbbbiiiigggg----ppppiiiicccc
+ 	  Emit position-independent code,  suitable  for  dynamic
+ 	  linking,  even  if  branches	need large displacements.
+ 	  Equivalent to	the general-use	 option	 ` ---- ffffPPPPIIIICCCC'.   The
+ 	  general-use  option  ` ---- ffffppppiiiicccc', by contrast, only emits
+ 	  valid	88k code if all	branches involve small	displace-
+ 	  ments.  GCC  does not	emit position-independent code by
+ 	  default.
+ 
+      ----mmmmiiiiddddeeeennnnttttiiiiffffyyyy----rrrreeeevvvviiiissssiiiioooonnnn
+ 	  Include an iiiiddddeeeennnntttt  directive  in  the	assembler  output
+ 	  recording  the source	file name, compiler name and ver-
+ 	  sion,	timestamp, and compilation flags used.
+ 
+      ----mmmmnnnnoooo----uuuunnnnddddeeeerrrrssssccccoooorrrreeeessss
+ 	  In assembler output, emit symbol names  without  adding
+ 	  an  underscore character at the beginning of each name.
+ 	  The default is to use	an underscore as prefix	 on  each
+ 	  name.
+ 
+      ----mmmmnnnnoooo----cccchhhheeeecccckkkk----zzzzeeeerrrroooo----ddddiiiivvvviiiissssiiiioooonnnn
+ 
+      ----mmmmcccchhhheeeecccckkkk----zzzzeeeerrrroooo----ddddiiiivvvviiiissssiiiioooonnnn
+ 	  Early	models of the 88K architecture had problems  with
+ 	  division  by	zero;  in particular, many of them didn't
+ 	  trap.	 Use these options to avoid including (or to  in-
+ 	  clude	explicitly) additional code to detect division by
+ 	  zero and signal an exception.	 All  GCC  configurations
+ 	  for the 88K use `----mmmmcccchhhheeeecccckkkk----zzzzeeeerrrroooo----ddddiiiivvvviiiissssiiiioooonnnn' by default.
+ 
+      ----mmmmooooccccssss----ddddeeeebbbbuuuugggg----iiiinnnnffffoooo
+ 
+      ----mmmmnnnnoooo----ooooccccssss----ddddeeeebbbbuuuugggg----iiiinnnnffffoooo
+ 	  Include  (or	omit)  additional  debugging  information
+ 	  (about registers used	in each	stack frame) as	specified
+ 	  in the 88Open	Object Compatibility  Standard,	 ``OCS''.
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       31
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  This	extra  information is not needed by GDB.  The de-
+ 	  fault	for DG/UX, SVr4, and Delta 88 SVr3.2  is  to  in-
+ 	  clude	 this  information; other 88k configurations omit
+ 	  this information by default.
+ 
+      ----mmmmooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn
+ 
+      ----mmmmnnnnoooo----ooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn
+ 	  Force	(or do not require) register values to be  stored
+ 	  in  a	particular place in stack frames, as specified in
+ 	  OCS.	The DG/UX, Delta88 SVr3.2, and BCS configurations
+ 	  use  ` ---- mmmmooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn'; other 88k configurations
+ 	  have the default `----mmmmnnnnoooo----ooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn'.
+ 
+      ----mmmmooooppppttttiiiimmmmiiiizzzzeeee----aaaarrrrgggg----aaaarrrreeeeaaaa
+ 
+      ----mmmmnnnnoooo----ooooppppttttiiiimmmmiiiizzzzeeee----aaaarrrrgggg----aaaarrrreeeeaaaa
+ 	  Control  how	to  store  function  arguments	in  stack
+ 	  frames.   ` ----	mmmmooooppppttttiiiimmmmiiiizzzzeeee ----aaaarrrrgggg----aaaarrrreeeeaaaa' saves space, but may
+ 	  break	some debuggers (not GDB).  `----mmmmnnnnoooo----ooooppppttttiiiimmmmiiiizzzzeeee ---- aaaarrrrgggg	----
+ 	  aaaarrrreeeeaaaa'	 conforms  better  to standards.   By default GCC
+ 	  does not optimize the	argument area.
+ 
+      ----mmmmsssshhhhoooorrrrtttt----ddddaaaattttaaaa----_n_u_m
+ 	   _n_u_m Generate	smaller	data references	 by  making  them
+ 	  relative  to	rrrr0000,  which allows loading a value using	a
+ 	  single instruction (rather than the  usual  two).   You
+ 	  control  which data references are affected by specify-
+ 	  ing _n_u_m with this option.  For example, if you  specify
+ 	  ` ---- mmmmsssshhhhoooorrrrtttt----ddddaaaattttaaaa----555511112222',	then the data references affected
+ 	  are those involving  displacements  of  less	than  512
+ 	  bytes.   ` ---- mmmmsssshhhhoooorrrrtttt----ddddaaaattttaaaa---- _n_u_m' is not	effective for _n_u_m
+ 	  greater than 64K.
+ 
+      ----mmmmssssvvvvrrrr4444
+ 
+      ----mmmmssssvvvvrrrr3333
+ 	  Turn on (`----mmmmssssvvvvrrrr4444') or	off (`----	mmmmssssvvvvrrrr3333')	 compiler  exten-
+ 	  sions	 related to System V release 4 (SVr4).	This con-
+ 	  trols	the following:
+ 
+ 	+o  Which variant of the	assembler syntax to  emit  (which
+ 	  you can select independently using `----mmmmvvvveeeerrrrssssiiiioooonnnn00003333....00000000').
+ 
+ 	+o  `----mmmmssssvvvvrrrr4444' makes the C	preprocessor  recognize	 `####pppprrrraaaaggggmmmmaaaa
+ 	  wwwweeeeaaaakkkk'
+ 
+ 	+o  `----mmmmssssvvvvrrrr4444' makes GCC issue additional declaration direc-
+ 	  tives	used in	SVr4.
+ 
+      `----mmmmssssvvvvrrrr3333' is the default for all m88K  configurations  except
+      the SVr4 configuration.
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       32
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      ----mmmmttttrrrraaaapppp----llllaaaarrrrggggeeee----sssshhhhiiiifffftttt
+ 
+      ----mmmmhhhhaaaannnnddddlllleeee----llllaaaarrrrggggeeee----sssshhhhiiiifffftttt
+ 	  Include code to detect bit-shifts of more than 31 bits;
+ 	  respectively,	 trap  such shifts or emit code	to handle
+ 	  them properly.  By default GCC makes no special  provi-
+ 	  sion for large bit shifts.
+ 
+      ----mmmmuuuusssseeee----ddddiiiivvvv----iiiinnnnssssttttrrrruuuuccccttttiiiioooonnnn
+ 	  Very early models of the 88K architecture didn't have	a
+ 	  divide  instruction,	so GCC avoids that instruction by
+ 	  default.  Use	this option to specify that it's safe  to
+ 	  use the divide instruction.
+ 
+      ----mmmmvvvveeeerrrrssssiiiioooonnnn----00003333....00000000
+ 	  Use alternative assembler syntax for the assembler ver-
+ 	  sion	corresponding  to  SVr4, but without enabling the
+ 	  other	features triggered by `----ssssvvvvrrrr4444'.	This  is  implied
+ 	  by  `	----ssssvvvvrrrr4444',	is the default for the SVr4 configuration
+ 	  of GCC, and is permitted  by	the  DG/UX  configuration
+ 	  only if `----ssssvvvvrrrr4444' is also specified.  The Delta	88 SVr3.2
+ 	  configuration	ignores	this option.
+ 
+      ----mmmmwwwwaaaarrrrnnnn----ppppaaaasssssssseeeedddd----ssssttttrrrruuuuccccttttssss
+ 	  Warn when a function passes a	struct as an argument  or
+ 	  result.   Structure-passing  conventions  have  changed
+ 	  during the evolution of the C	language, and  are  often
+ 	  the  source  of  portability problems.  By default, GCC
+ 	  issues no such warning.
+ 
+      These options are defined for the IBM RS6000:
+ 
+ 
+      ----mmmmffffpppp----iiiinnnn----ttttoooocccc
+ 
+      ----mmmmnnnnoooo----ffffpppp----iiiinnnn----ttttoooocccc
+ 	  Control whether or not floating-point	constants  go  in
+ 	  the  Table  of  Contents  (TOC),  a table of all global
+ 	  variable and function	addresses.  By default	GCC  puts
+ 	  floating-point constants there; if the TOC overflows,	`
+ 	  ----mmmmnnnnoooo----ffffpppp----iiiinnnn----ttttoooocccc' will reduce the size of the TOC,  which
+ 	  may avoid the	overflow.
+ 
+ 
+      These `----mmmm'	options	are defined for	the IBM	RT PC:
+ 
+      ----mmmmiiiinnnn----lllliiiinnnneeee----mmmmuuuullll
+ 	  Use an in-line code sequence	for  integer  multiplies.
+ 	  This is the default.
+ 
+      ----mmmmccccaaaallllllll----lllliiiibbbb----mmmmuuuullll
+ 	  Call llllmmmmuuuullll$$$$$$$$ for integer multiples.
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       33
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      ----mmmmffffuuuullllllll----ffffpppp----bbbblllloooocccckkkkssss
+ 	  Generate full-size floating point data blocks,  includ-
+ 	  ing  the minimum amount of scratch space recommended by
+ 	  IBM.	This is	the default.
+ 
+      ----mmmmmmmmiiiinnnniiiimmmmuuuummmm----ffffpppp----bbbblllloooocccckkkkssss
+ 	  Do not include extra scratch space  in  floating  point
+ 	  data	blocks.	 This results in smaller code, but slower
+ 	  execution, since scratch space must be allocated dynam-
+ 	  ically.
+ 
+      ----mmmmffffpppp----aaaarrrrgggg----iiiinnnn----ffffpppprrrreeeeggggssss
+ 	  Use a	calling	sequence incompatible with the	IBM  cal-
+ 	  ling	convention  in which floating point arguments are
+ 	  passed  in  floating	point	registers.    Note   that
+ 	  vvvvaaaarrrraaaarrrrggggssss....hhhh  and  ssssttttddddaaaarrrrggggssss....hhhh  will  not work with floating
+ 	  point	operands if this option	is specified.
+ 
+      ----mmmmffffpppp----aaaarrrrgggg----iiiinnnn----ggggrrrreeeeggggssss
+ 	  Use the normal calling convention  for  floating  point
+ 	  arguments.  This is the default.
+ 
+      ----mmmmhhhhcccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
+ 	  Return structures of more  than  one	word  in  memory,
+ 	  rather than in a register.  This provides compatibility
+ 	  with the MetaWare HighC (hc) compiler.  Use  ` ---- ffffppppcccccccc	----
+ 	  ssssttttrrrruuuucccctttt ---- rrrreeeettttuuuurrrrnnnn'  for	compatibility with the Portable	C
+ 	  Compiler (pcc).
+ 
+      ----mmmmnnnnoooohhhhcccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
+ 	  Return some structures of more than one word in  regis-
+ 	  ters,	 when convenient.  This	is the default.	 For com-
+ 	  patibility with the IBM-supplied compilers, use  either
+ 	  `----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn'	or `----mmmmhhhhcccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn'.
+ 
+      These `----mmmm'	options	are defined for	the MIPS family	 of  com-
+      puters:
+ 
+      ----mmmmccccppppuuuu====_c_p_u-_t_y_p_e
+ 	  Assume the defaults for the machine type _c_p_u-_t_y_p_e  when
+ 	  scheduling  instructions.   The default _c_p_u-_t_y_p_e is ddddeeee----
+ 	  ffffaaaauuuulllltttt, which picks the longest cycles	times for any  of
+ 	  the  machines, in order that the code	run at reasonable
+ 	  rates	on all MIPS cpu's.  Other  choices  for	 _c_p_u-_t_y_p_e
+ 	  are  rrrr2222000000000000,  rrrr3333000000000000,  rrrr4444000000000000, and rrrr6666000000000000.  While	picking	a
+ 	  specific _c_p_u-_t_y_p_e will  schedule  things  appropriately
+ 	  for  that  particular	 chip, the compiler will not gen-
+ 	  erate	any code that does not meet level 1 of	the  MIPS
+ 	  ISA  (instruction  set architecture) without the ----mmmmiiiippppssss2222
+ 	  or ----mmmmiiiippppssss3333 switches being used.
+ 
+      ----mmmmiiiippppssss2222
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       34
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  Issue	instructions from level	2 of the MIPS ISA (branch
+ 	  likely, square root instructions).  The ----mmmmccccppppuuuu====rrrr4444000000000000 or
+ 	  ----mmmmccccppppuuuu====rrrr6666000000000000 switch must be used in conjunction with	----
+ 	  mmmmiiiippppssss2222.
+ 
+      ----mmmmiiiippppssss3333
+ 	  Issue	instructions from level	3 of the MIPS ISA (64 bit
+ 	  instructions).   The ----mmmmccccppppuuuu====rrrr4444000000000000 switch must be used in
+ 	  conjunction with ----mmmmiiiippppssss2222.
+ 
+      ----mmmmiiiinnnntttt66664444
+ 
+      ----mmmmlllloooonnnngggg66664444
+ 
+      ----mmmmlllloooonnnngggglllloooonnnngggg111122228888
+ 	  These	options	don't work at present.
+ 
+      ----mmmmmmmmiiiippppssss----aaaassss
+ 	  Generate code	for the	MIPS assembler,	and invoke mmmmiiiippppssss	----
+ 	  ttttffffiiiilllleeee	to add normal debug information.  This is the de-
+ 	  fault	for all	platforms except for the OSF/1	reference
+ 	  platform,  using the OSF/rose	object format.	If any of
+ 	  the ----ggggggggddddbbbb, ----ggggssssttttaaaabbbbssss, or ----ggggssssttttaaaabbbbssss++++ switches are used,  the
+ 	  mmmmiiiippppssss ---- ttttffffiiiilllleeee	program	will encapsulate the stabs within
+ 	  MIPS ECOFF.
+ 
+      ----mmmmggggaaaassss
+ 	  Generate code	for the	GNU assembler.	This is	 the  de-
+ 	  fault	 on  the  OSF/1	 reference  platform,  using  the
+ 	  OSF/rose object format.
+ 
+      ----mmmmrrrrnnnnaaaammmmeeeessss
+ 
+      ----mmmmnnnnoooo----rrrrnnnnaaaammmmeeeessss
+ 	  The ----mmmmrrrrnnnnaaaammmmeeeessss switch says to output code using	the  MIPS
+ 	  software  names  for	the  registers,	 instead  of  the
+ 	  hardware names (ie, aaaa0000 instead of $$$$4444).  The GNU  assem-
+ 	  bler does not	support	the ----mmmmrrrrnnnnaaaammmmeeeessss switch, and the MIPS
+ 	  assembler will be instructed to run the MIPS C  prepro-
+ 	  cessor over the source file.	The ----mmmmnnnnoooo----rrrrnnnnaaaammmmeeeessss	switch is
+ 	  default.
+ 
+      ----mmmmggggppppoooopppptttt
+ 
+      ----mmmmnnnnoooo----ggggppppoooopppptttt
+ 	  The ----mmmmggggppppoooopppptttt switch says to write all of  the	data  de-
+ 	  clarations before the	instructions in	the text section,
+ 	  to all the MIPS assembler to generate	one  word  memory
+ 	  references  instead of using two words for short global
+ 	  or static data items.	 This is on by default if optimi-
+ 	  zation is selected.
+ 
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       35
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      ----mmmmssssttttaaaattttssss
+ 
+      ----mmmmnnnnoooo----ssssttttaaaattttssss
+ 	  For each non-inline function processed,  the	 ---- mmmmssssttttaaaattttssss
+ 	  switch  causes  the  compiler	 to  emit one line to the
+ 	  standard error file to print statistics about	the  pro-
+ 	  gram (number of registers saved, stack size, etc.).
+ 
+      ----mmmmmmmmeeeemmmmccccppppyyyy
+ 
+      ----mmmmnnnnoooo----mmmmeeeemmmmccccppppyyyy
+ 	  The ----mmmmmmmmeeeemmmmccccppppyyyy switch makes all	block moves call the  ap-
+ 	  propriate  string function (mmmmeeeemmmmccccppppyyyy or	bbbbccccooooppppyyyy) instead of
+ 	  possibly generating inline code.
+ 
+      ----mmmmmmmmiiiippppssss----ttttffffiiiilllleeee
+ 
+      ----mmmmnnnnoooo----mmmmiiiippppssss----ttttffffiiiilllleeee
+ 	  The ----mmmmnnnnoooo----mmmmiiiippppssss----ttttffffiiiilllleeee  switch  causes  the  compiler  not
+ 	  postprocess  the  object  file with the mmmmiiiippppssss----ttttffffiiiilllleeee pro-
+ 	  gram,	after the MIPS assembler has generated it to  add
+ 	  debug	support.  If mmmmiiiippppssss----ttttffffiiiilllleeee	is not run, then no local
+ 	  variables will be available to the debugger.	In  addi-
+ 	  tion,	ssssttttaaaaggggeeee2222 and ssssttttaaaaggggeeee3333 objects will have the	temporary
+ 	  file names passed to the assembler embedded in the  ob-
+ 	  ject file, which means the objects will not compare the
+ 	  same.
+ 
+      ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
+ 	  Generate output containing library calls  for	 floating
+ 	  point.   _W_A_R_N_I_N_G:  the requisite libraries are not part
+ 	  of GNU CC.  Normally the facilities  of  the	machine's
+ 	  usual	 C  compiler  are  used,  but  this can't be done
+ 	  directly in cross-compilation.  You must make	your  own
+ 	  arrangements	to provide suitable library functions for
+ 	  cross-compilation.
+ 
+      ----mmmmhhhhaaaarrrrdddd----ffffllllooooaaaatttt
+ 	  Generate output containing floating point instructions.
+ 	  This is the default if you use the unmodified	sources.
+ 
+      ----mmmmffffpppp66664444
+ 	  Assume that the FFFFRRRR bit in the	status word  is	 on,  and
+ 	  that	there are 32 64-bit floating point registers, in-
+ 	  stead	of 32 32-bit floating point registers.	You  must
+ 	  also specify the ----mmmmccccppppuuuu====rrrr4444000000000000 and ----mmmmiiiippppssss3333 switches.
+ 
+      ----mmmmffffpppp33332222
+ 	  Assume that there are	32 32-bit floating  point  regis-
+ 	  ters.	 This is the default.
+ 
+      ----mmmmaaaabbbbiiiiccccaaaallllllllssss
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       36
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  The ----mmmmaaaabbbbiiiiccccaaaallllllllssss  switch  says	to  emit  the  ....aaaabbbbiiiiccccaaaallllllllssss,
+ 	  ....ccccppppllllooooaaaadddd,  and	 ....ccccpppprrrreeeessssttttoooorrrreeee  pseudo  operations	that some
+ 	  System V.4 ports use for position independent	code.
+ 
+      ----mmmmhhhhaaaallllffff----ppppiiiicccc
+ 
+      ----mmmmnnnnoooo----hhhhaaaallllffff----ppppiiiicccc
+ 	  The ----mmmmhhhhaaaallllffff----ppppiiiicccc switch	says to	put  pointers  to  extern
+ 	  references  into  the	 data  section	and load them up,
+ 	  rather than put the references  in  the  text	 section.
+ 	  This option does not work at present.	 ----GGGG_n_u_m Put global
+ 	  and static items less	than or	equal to _n_u_m  bytes  into
+ 	  the  small  data  or bss sections instead of the normal
+ 	  data or bss section.	This allows the	assembler to emit
+ 	  one  word  memory  reference	instructions based on the
+ 	  global pointer (ggggpppp or	$$$$22228888), instead of the  normal  two
+ 	  words	 used.	By default, _n_u_m	is 8 when the MIPS assem-
+ 	  bler is used,	and 0 when the	GNU  assembler	is  used.
+ 	  The	---- GGGG_n_u_m switch is also passed to	the assembler and
+ 	  linker.  All modules should be compiled with the same	----
+ 	  GGGG_n_u_m value.
+ 
+ CCCCOOOODDDDEEEE GGGGEEEENNNNEEEERRRRAAAATTTTIIIIOOOONNNN	OOOOPPPPTTTTIIIIOOOONNNNSSSS
+      These machine-independent options control the interface con-
+      ventions used in code generation.
+ 
+      Most of them begin	with `-f'.  These options have both posi-
+      tive  and negative	forms; the negative form of `----ffffffffoooooooo' would
+      be	`----ffffnnnnoooo----ffffoooooooo'.  In	the table below, only one of the forms is
+      listed-the	one which is not the default.  You can figure out
+      the other form by either removing `nnnnoooo---- ' or adding	it.
+ 
+      ++++eeee_N  (_C++ _o_n_l_y.) control whether  virtual	function  defini-
+ 	  tions	 in classes are	used to	generate code, or only to
+ 	  define interfaces for	their callers.	These options are
+ 	  provided  for	 compatibility with cfront 1.x usage; the
+ 	  recommended GNU C++ usage is to use  ####pppprrrraaaaggggmmmmaaaa	iiiinnnntttteeeerrrrffffaaaacccceeee
+ 	  and ####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn, instead.
+ 
+ 	  With `++++eeee0000', virtual function definitions in classes are
+ 	  declared extern; the declaration is used only	as an in-
+ 	  terface specification, not to	 generate  code	 for  the
+ 	  virtual functions (in	this compilation).
+ 
+ 	  With `++++eeee1111', gggg++++++++ actually generates the code  implement-
+ 	  ing  virtual	functions  defined in the code,	and makes
+ 	  them publicly	visible.
+ 
+      ----ffffnnnnoooonnnnnnnnuuuullllllll----oooobbbbjjjjeeeeccccttttssss
+ 	  (_C++ _o_n_l_y.)  Normally, GNU C++ makes	conservative  as-
+ 	  sumptions  about  objects  reached  through references.
+ 	  For example, the compiler must check that  `aaaa'  is  not
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       37
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  null in code like the	following:
+ 	      obj &a = g ();
+ 	      a.f (2);
+ 	  Checking that	references of  this  sort  have	 non-null
+ 	  values requires extra	code, however, and it is unneces-
+ 	  sary for many	programs.  You can use ` ---- ffffnnnnoooonnnnnnnnuuuullllllll ---- oooobbbb----
+ 	  jjjjeeeeccccttttssss'  to  omit  the	 checks	for null, if your program
+ 	  doesn't require the default checking.
+ 
+      ----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
+ 	  Use the same convention for returning	ssssttttrrrruuuucccctttt and  uuuunnnniiiioooonnnn
+ 	  values  that	is  used  by the usual C compiler on your
+ 	  system.  This	convention is less  efficient  for  small
+ 	  structures,  and  on many machines it	fails to be reen-
+ 	  trant; but it	has the	advantage of allowing intercalla-
+ 	  bility between GCC-compiled code and PCC-compiled code.
+ 
+      ----ffffsssshhhhoooorrrrtttt----eeeennnnuuuummmmssss
+ 	  Allocate to an eeeennnnuuuummmm type only	as many	bytes as it needs
+ 	  for the declared range of possible values.  Specifical-
+ 	  ly, the eeeennnnuuuummmm type will be equivalent	to  the	 smallest
+ 	  integer type which has enough	room.
+ 
+      ----ffffsssshhhhoooorrrrtttt----ddddoooouuuubbbblllleeee
+ 	  Use the same size for	ddddoooouuuubbbblllleeee as for ffffllllooooaaaatttt .
+ 
+      ----ffffsssshhhhaaaarrrreeeedddd----ddddaaaattttaaaa
+ 	  Requests that	the data and non-ccccoooonnnnsssstttt variables of  this
+ 	  compilation  be  shared  data	rather than private data.
+ 	  The distinction makes	sense only on  certain	operating
+ 	  systems,  where shared data is shared	between	processes
+ 	  running the same program, while private data exists  in
+ 	  one copy per process.
+ 
+      ----ffffnnnnoooo----ccccoooommmmmmmmoooonnnn
+ 	  Allocate even	uninitialized global variables in the bss
+ 	  section of the object	file, rather than generating them
+ 	  as common blocks.  This has the effect that if the same
+ 	  variable  is declared	(without eeeexxxxtttteeeerrrrnnnn) in two	different
+ 	  compilations,	you will get an	error when you link them.
+ 	  The  only reason this	might be useful	is if you wish to
+ 	  verify that the program  will	 work  on  other  systems
+ 	  which	always work this way.
+ 
+      ----ffffvvvvoooollllaaaattttiiiilllleeee
+ 	  Consider all memory references through pointers  to  be
+ 	  volatile.
+ 
+      ----ffffppppiiiicccc
+ 	  If  supported	 for  the   target   machines,	 generate
+ 	  position-independent code, suitable for use in a shared
+ 	  library.
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       38
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      ----ffffPPPPIIIICCCC
+ 	  If supported for the	target	machine,  emit	position-
+ 	  independent code, suitable for dynamic linking, even if
+ 	  branches need	large displacements.
+ 
+      ----ffffffffiiiixxxxeeeedddd----_r_e_g
+ 	   Treat the register named _r_e_g	as a fixed register; gen-
+ 	  erated code should never refer to it (except perhaps as
+ 	  a stack pointer, frame pointer or in some  other  fixed
+ 	  role).
+ 
+ 	  _r_e_g must be the name of a register.  The register names
+ 	  accepted  are	 machine-specific  and are defined in the
+ 	  RRRREEEEGGGGIIIISSSSTTTTEEEERRRR____NNNNAAAAMMMMEEEESSSS macro in the machine  description  macro
+ 	  file.
+ 
+ 	  This flag does not have a  negative  form,  because  it
+ 	  specifies a three-way	choice.
+ 
+      ----ffffccccaaaallllllll----uuuusssseeeedddd----_r_e_g
+ 	   Treat the register named _r_e_g	as an allocatable  regis-
+ 	  ter that is clobbered	by function calls.  It may be al-
+ 	  located for temporaries or variables that do	not  live
+ 	  across  a  call.   Functions compiled	this way will not
+ 	  save and restore the register	_r_e_g.
+ 
+ 	  Use of this flag for a register that has a  fixed  per-
+ 	  vasive  role	in the machine's execution model, such as
+ 	  the stack pointer or frame pointer, will produce disas-
+ 	  trous	results.
+ 
+ 	  This flag does not have a  negative  form,  because  it
+ 	  specifies a three-way	choice.
+ 
+      ----ffffccccaaaallllllll----ssssaaaavvvveeeedddd----_r_e_g
+ 	   Treat the register named _r_e_g	as an allocatable  regis-
+ 	  ter  saved  by functions.  It	may be allocated even for
+ 	  temporaries or  variables  that  live	 across	 a  call.
+ 	  Functions  compiled  this way	will save and restore the
+ 	  register _r_e_g if they use it.
+ 
+ 	  Use of this flag for a register that has a  fixed  per-
+ 	  vasive  role	in the machine's execution model, such as
+ 	  the stack pointer or frame pointer, will produce disas-
+ 	  trous	results.
+ 
+ 	  A different sort of disaster will result from	 the  use
+ 	  of  this  flag  for a	register in which function values
+ 	  may be returned.
+ 
+ 	  This flag does not have a  negative  form,  because  it
+ 	  specifies a three-way	choice.
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       39
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+      ----ffffggggnnnnuuuu----bbbbiiiinnnnuuuuttttiiiillllssss
+ 
+      ----ffffnnnnoooo----ggggnnnnuuuu----bbbbiiiinnnnuuuuttttiiiillllssss
+ 	  (_C++ _o_n_l_y.)  `----ffffggggnnnnuuuu----bbbbiiiinnnnuuuuttttiiiillllssss ' (the default  for  most,
+ 	  but not all, platforms) makes	GNU C++	emit extra infor-
+ 	  mation  for  static  initialization  and  finalization.
+ 	  This information has to be passed from the assembler to
+ 	  the GNU linker.  Some	assemblers won't pass this infor-
+ 	  mation;  you	must either use	GNU aaaassss or specify the op-
+ 	  tion `----ffffnnnnoooo----ggggnnnnuuuu----bbbbiiiinnnnuuuuttttiiiillllssss'.
+ 
+ 	  With `----ffffnnnnoooo----ggggnnnnuuuu----bbbbiiiinnnnuuuuttttiiiillllssss', you	must use the program ccccoooollll----
+ 	  lllleeeecccctttt (part of	the GCC	distribution) for linking.
+ 
+ PPPPRRRRAAAAGGGGMMMMAAAASSSS
+      Two `####pppprrrraaaaggggmmmmaaaa' directives are supported for	GNU C++, to  per-
+      mit using the same	header file for	two purposes: as a defin-
+      ition of interfaces to a given object class, and as the full
+      definition	of the contents	of that	object class.
+ 
+      ####pppprrrraaaaggggmmmmaaaa iiiinnnntttteeeerrrrffffaaaacccceeee
+ 	  (_C++ _o_n_l_y.) Use this directive in header files that de-
+ 	  fine	object	classes, to save space in most of the ob-
+ 	  ject files that use  those  classes.	 Normally,  local
+ 	  copies  of certain information (backup copies	of inline
+ 	  member functions, debugging information, and the inter-
+ 	  nal  tables  that  implement virtual functions) must be
+ 	  kept in each object file that	 includes  class  defini-
+ 	  tions.   You can use this pragma to avoid such duplica-
+ 	  tion.	 When a	header file  containing	 `####pppprrrraaaaggggmmmmaaaa  iiiinnnntttteeeerrrr----
+ 	  ffffaaaacccceeee'	 is included in	a compilation, this auxiliary in-
+ 	  formation will not be	generated (unless the main  input
+ 	  source file itself uses `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn').  In-
+ 	  stead, the object files will contain references  to  be
+ 	  resolved at link time.
+ 
+      ####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn
+ 
+      ####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn """"_o_b_j_e_c_t_s....hhhh""""
+ 	  (_C++ _o_n_l_y.) Use this pragma in a main	input file,  when
+ 	  you  want  full output from included header files to be
+ 	  generated (and made globally	visible).   The	 included
+ 	  header  file,	 in turn, should use `####pppprrrraaaaggggmmmmaaaa iiiinnnntttteeeerrrrffffaaaacccceeee'.
+ 	  Backup copies	of inline member functions, debugging in-
+ 	  formation,  and  the	internal tables	used to	implement
+ 	  virtual functions are	all generated  in  implementation
+ 	  files.
+ 
+ 	  If you use `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn' with  no	argument,
+ 	  it applies to	an include file	with the same basename as
+ 	  your	source	file;  for  example,  in   `aaaallllllllccccllllaaaassssssss....cccccccc',
+ 	  `####pppprrrraaaaggggmmmmaaaa  iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn'  by	 itself	 is equivalent to
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       40
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ 	  `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn """"aaaallllllllccccllllaaaassssssss....hhhh""""'.  Use the  string
+ 	  argument  if	you  want a single implementation file to
+ 	  include code from multiple header files.
+ 
+ 	  There	is no way to split up the contents  of	a  single
+ 	  header file into multiple implementation files.
+ 
+ FFFFIIIILLLLEEEESSSS
+      file.c		C source file
+      file.h		C header (preprocessor)	file
+      file.i		preprocessed C source file
+      file.C		C++ source file
+      file.cc		C++ source file
+      file.cxx		C++ source file
+      file.m		Objective-C source file
+      file.s		assembly language file
+      file.o		object file
+      a.out		link edited output
+      _T_M_P_D_I_R/cc*		 temporary files
+      _L_I_B_D_I_R/cpp		preprocessor
+      _L_I_B_D_I_R/cc1		compiler for C
+      _L_I_B_D_I_R/cc1plus	compiler for C++
+      _L_I_B_D_I_R/collect	linker front end needed	on some	machines
+      _L_I_B_D_I_R/libgcc.a	GCC subroutine library
+      /lib/crt[01n].o	start-up routine
+      _L_I_B_D_I_R/ccrt0	additional start-up routine for	C++
+      /lib/libc.a	standard C library, see	_i_n_t_r_o(3)
+      /usr/include	standard directory for ####iiiinnnncccclllluuuuddddeeee	files
+      _L_I_B_D_I_R/include	standard gcc directory for ####iiiinnnncccclllluuuuddddeeee files
+      _L_I_B_D_I_R/g++-include	  additional g++ directory for ####iiiinnnncccclllluuuuddddeeee
+ 
+      _L_I_B_D_I_R is usually ////uuuussssrrrr////llllooooccccaaaallll////lllliiiibbbb////_m_a_c_h_i_n_e/_v_e_r_s_i_o_n.
+      _T_M_P_D_I_R comes from the environment variable	 TTTTMMMMPPPPDDDDIIIIRRRR	 (default
+      ////uuuussssrrrr////ttttmmmmpppp if available, else ////ttttmmmmpppp).
+ 
+ SSSSEEEEEEEE AAAALLLLSSSSOOOO
+      cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
+      `ggggcccccccc', `ccccpppppppp', `aaaassss',````ld'''',,,, and `ggggddddbbbb'	entries	in iiiinnnnffffoooo.
+      _U_s_i_n_g _a_n_d _P_o_r_t_i_n_g _G_N_U  _C_C	(_f_o_r  _v_e_r_s_i_o_n  _2._0),  Richard  M.
+      Stallman,	November  1990;	 _T_h_e  _C	 _P_r_e_p_r_o_c_e_s_s_o_r, Richard M.
+      Stallman, July 1990; _U_s_i_n_g	_G_D_B: _A _G_u_i_d_e _t_o	_t_h_e  _G_N_U  _S_o_u_r_c_e-
+      _L_e_v_e_l _D_e_b_u_g_g_e_r, Richard M.	Stallman and Roland H. Pesch, De-
+      cember 1991; _U_s_i_n_g	_a_s: _t_h_e	_G_N_U _A_s_s_e_m_b_l_e_r, Dean  Elsner,  Jay
+      Fenlason  &  friends, March 1991; _g_l_d: _t_h_e	_G_N_U _l_i_n_k_e_r, Steve
+      Chamberlain and Roland Pesch, April 1991.
+ 
+ 
+ BBBBUUUUGGGGSSSS
+      Report bugs to bbbbuuuugggg----ggggcccccccc@@@@pppprrrreeeepppp....aaaaiiii....mmmmiiiitttt....eeeedddduuuu.  Bugs tend	 actually
+      to	 be  fixed  if they can	be isolated, so	it is in your in-
+      terest to report them in such a way that they can be  easily
+      reproduced.
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       41
+ 
+ 
+ 
+ 
+ 
+ 
+ GCC(1)			    GNU	Tools			   GCC(1)
+ 
+ 
+ 
+ CCCCOOOOPPPPYYYYIIIINNNNGGGG
+      Copyright (c) 1991	Free Software Foundation, Inc.
+ 
+      Permission	is granted to make and distribute verbatim copies
+      of	 this  manual provided the copyright notice and	this per-
+      mission notice are	preserved on all copies.
+ 
+      Permission	is granted to copy and distribute  modified  ver-
+      sions of this manual under	the conditions for verbatim copy-
+      ing, provided that	the entire resulting derived work is dis-
+      tributed under the	terms of a permission notice identical to
+      this one.
+ 
+      Permission	is granted to copy and distribute translations of
+      this  manual  into	 another language, under the above condi-
+      tions for modified	versions, except that this permission no-
+      tice  may	be  included in	translations approved by the Free
+      Software Foundation instead of in the original English.
+ 
+ AAAAUUUUTTTTHHHHOOOORRRRSSSS
+      See the GNU CC Manual for the contributors	to GNU CC.
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ GNU Tools	     Last change: 28may1992		       42
+ 
+ 
+ 


Index: llvm/test/Programs/MultiSource/McCat-03-testtrie/trie.c
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-03-testtrie/trie.c:1.1
*** /dev/null	Mon May 12 14:03:55 2003
--- llvm/test/Programs/MultiSource/McCat-03-testtrie/trie.c	Mon May 12 14:03:45 2003
***************
*** 0 ****
--- 1,119 ----
+ 
+ /****
+     Copyright (C) 1996 McGill University.
+     Copyright (C) 1996 McCAT System Group.
+     Copyright (C) 1996 ACAPS Benchmark Administrator
+                        benadmin at acaps.cs.mcgill.ca
+ 
+     This program is free software; you can redistribute it and/or modify
+     it provided this copyright notice is maintained.
+ 
+     This program is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ ****/
+ 
+ /* dOPC - Assignment #1.
+    Lasse R. Nielsen (920666) and Ren\'{e} R. Hansen (920319) */
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <ctype.h>
+ #include "trie.h"
+ #include "charsequence.h"
+ 
+ /* Defines: */
+ 
+ #define DEBUG
+ #define TRUE   1
+ #define FALSE  0
+ #define TRIE_SIZE (sizeof(struct trie_s))
+ #define ERROR(s)  (fprintf(stderr,s))
+ 
+ #define index2char(i) (i+'a')
+ /*
+ char index2char(int i)
+ {
+   return (i+'a');
+ }
+ */
+ 
+ #define char2index(c) (tolower(c)-'a')
+ /*
+ int char2index(char c)
+ {
+   return (tolower(c)-'a');
+ }
+ */
+ 
+ /* Initialize an empty trie */
+ trie  trie_init(void)
+ {
+   trie  t;
+ 
+   if((t = calloc(1,TRIE_SIZE)) == NULL)
+     {
+       ERROR("Out of memory");
+       exit(1);
+     }
+ 
+   return t;
+ }
+ 
+ 
+ /* Insert a string, s, in a trie, t, and return the updated trie */
+ trie  trie_insert(trie t, string s)
+ {
+   if(t == NULL)
+     t = trie_init();
+   
+   if(s[0] == '\0')			/* We've found the end */
+     t->number++;
+   else
+     t->next[char2index(s[0])] = trie_insert(t->next[char2index(s[0])], s+1);
+ 
+   return t;
+ }
+ 
+ 
+ /* Looks up a string, s, in a trie, t, and returns the number of occ. */
+ int   trie_lookup(trie t, string s)
+ {
+   if(t == NULL)
+     return 0;				/* Didn't find it */
+   
+   if(s[0] == '\0')			/* At the end */
+     return (t->next[char2index(s[0])])->number;
+   else
+     return (trie_lookup(t->next[char2index(s[0])], s+1));
+ }
+ 
+ 
+ charsequence trie_scan_buffer=CHARSTREAM_INIT; /* reset,push,pop,val */
+ 
+ /* performs function f on all words in trie */
+ void trie_scan(trie t,void f(int,char*))
+ {
+  char *str;
+  int i;
+   if (t!=NULL)
+     {
+       if (t->number!=0)
+ 	{
+ 	  str=charsequence_val(&trie_scan_buffer);
+ 	  f(t->number,str );
+ 	  free(str);
+ 	}
+       for(i=0;i<TRIEWIDTH;i++)
+ 	if(t->next[i]!=NULL)
+ 	  { 
+ 	    charsequence_push(&trie_scan_buffer,index2char(i));
+ 	    trie_scan(t->next[i],f);
+ 	    charsequence_pop(&trie_scan_buffer);
+ 	  }
+     }
+ }
+ 
+ 
+ 
+ 


Index: llvm/test/Programs/MultiSource/McCat-03-testtrie/trie.h
diff -c /dev/null llvm/test/Programs/MultiSource/McCat-03-testtrie/trie.h:1.1
*** /dev/null	Mon May 12 14:03:55 2003
--- llvm/test/Programs/MultiSource/McCat-03-testtrie/trie.h	Mon May 12 14:03:45 2003
***************
*** 0 ****
--- 1,24 ----
+ #ifndef TRIE_H
+ #define TRIE_H
+ 
+ 
+ #define TRIEWIDTH ('z'-'a'+1)
+ 
+ /* Typedefs: */
+ typedef struct trie_s {
+   struct trie_s *next[TRIEWIDTH];
+   int number;
+ } * trie;
+ 
+ typedef char * string;
+ 
+ /* Prototypes: */
+ char index2char (int i);
+ int char2index (char c);
+ trie trie_init (void);
+ trie trie_insert (trie t, string s);
+ int trie_lookup (trie t, string s);
+ void trie_scan (trie t, void f (int, char *));
+ 
+ 
+ #endif





More information about the llvm-commits mailing list