Only in .: ABOUT-GCC-NLS
Only in .: ABOUT-NLS
Only in .: aclocal.m4
Only in .: BUGS
Only in .: build-make
diff -dupr ./builtins.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/builtins.c
--- ./builtins.c	2003-02-05 17:45:13.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/builtins.c	2001-03-12 23:29:35.000000000 +0100
@@ -2627,6 +2627,28 @@ expand_builtin (exp, target, subtarget, 
     case BUILT_IN_EXPECT:
       return expand_builtin_expect (arglist, target);
 
+#ifdef SGI_MONGOOSE
+    case BUILT_IN_LOCK_TEST_AND_SET:
+    case BUILT_IN_LOCK_RELEASE:
+    case BUILT_IN_COMPARE_AND_SWAP:
+    case BUILT_IN_SYNCHRONIZE:
+    case BUILT_IN_ROUND_F2LL:
+    case BUILT_IN_ROUND_D2LL:
+    case BUILT_IN_ROUND_ED2LL:
+    case BUILT_IN_CAST_I2F:
+    case BUILT_IN_CAST_F2I:
+    case BUILT_IN_CAST_LL2D:
+    case BUILT_IN_CAST_D2LL:
+    case BUILT_IN_GETF_EXP:
+    case BUILT_IN_GETF_SIG:
+    case BUILT_IN_SETF_EXP:
+    case BUILT_IN_SETF_SIG:
+    case BUILT_IN_FMERGE_NS:
+    case BUILT_IN_FMERGE_S:
+    case BUILT_IN_FMERGE_SE:
+      break;
+#endif /* SGI_MONGOOSE */
+
     default:			/* just do library call, if unknown builtin */
       error ("built-in function `%s' not currently supported",
 	     IDENTIFIER_POINTER (DECL_NAME (fndecl)));
@@ -2636,3 +2658,12 @@ expand_builtin (exp, target, subtarget, 
      to be called normally.  */
   return expand_call (exp, target, ignore);
 }
+
+#ifdef SGI_MONGOOSE
+tree
+c_strlen_exported (src)
+     tree src;
+{
+  return c_strlen(src);
+}
+#endif /* SGI_MONGOOSE */
diff -dupr ./builtins.def /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/builtins.def
--- ./builtins.def	2003-02-05 17:00:03.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/builtins.def	2001-03-12 23:29:35.000000000 +0100
@@ -86,3 +86,28 @@ DEF_BUILTIN(BUILT_IN_NEW)
 DEF_BUILTIN(BUILT_IN_VEC_NEW)
 DEF_BUILTIN(BUILT_IN_DELETE)
 DEF_BUILTIN(BUILT_IN_VEC_DELETE)
+
+#ifdef SGI_MONGOOSE
+DEF_BUILTIN(BUILT_IN_LOCK_TEST_AND_SET)
+DEF_BUILTIN(BUILT_IN_LOCK_RELEASE)
+DEF_BUILTIN(BUILT_IN_COMPARE_AND_SWAP)
+DEF_BUILTIN(BUILT_IN_SYNCHRONIZE)
+
+DEF_BUILTIN(BUILT_IN_ROUND_F2LL)
+DEF_BUILTIN(BUILT_IN_ROUND_D2LL)
+DEF_BUILTIN(BUILT_IN_ROUND_ED2LL)
+
+DEF_BUILTIN(BUILT_IN_CAST_I2F)
+DEF_BUILTIN(BUILT_IN_CAST_F2I)
+DEF_BUILTIN(BUILT_IN_CAST_LL2D)
+DEF_BUILTIN(BUILT_IN_CAST_D2LL)
+
+DEF_BUILTIN(BUILT_IN_GETF_EXP)
+DEF_BUILTIN(BUILT_IN_GETF_SIG)
+DEF_BUILTIN(BUILT_IN_SETF_EXP)
+DEF_BUILTIN(BUILT_IN_SETF_SIG)
+
+DEF_BUILTIN(BUILT_IN_FMERGE_NS)
+DEF_BUILTIN(BUILT_IN_FMERGE_S)
+DEF_BUILTIN(BUILT_IN_FMERGE_SE)
+#endif /* SGI_MONGOOSE */
diff -dupr ./calls.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/calls.c
--- ./calls.c	2003-02-05 17:45:13.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/calls.c	2001-03-12 23:29:35.000000000 +0100
@@ -1763,9 +1763,13 @@ try_to_integrate (fndecl, actparms, targ
 
   before_call = get_last_insn ();
 
+#ifdef SGI_MONGOOSE
+  temp = (rtx) (HOST_WIDE_INT) -1;
+#else
   temp = expand_inline_function (fndecl, actparms, target,
 				 ignore, type,
 				 structure_value_addr);
+#endif /* SGI_MONGOOSE */
 
   /* If inlining succeeded, return.  */
   if (temp != (rtx) (HOST_WIDE_INT) - 1)
diff -dupr ./c-common.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-common.c
--- ./c-common.c	2003-02-05 17:45:13.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-common.c	2001-03-12 23:29:35.000000000 +0100
@@ -145,7 +145,11 @@ enum attrs {A_PACKED, A_NOCOMMON, A_COMM
 	    A_NO_CHECK_MEMORY_USAGE, A_NO_INSTRUMENT_FUNCTION,
 	    A_CONSTRUCTOR, A_DESTRUCTOR, A_MODE, A_SECTION, A_ALIGNED,
 	    A_UNUSED, A_FORMAT, A_FORMAT_ARG, A_WEAK, A_ALIAS, A_MALLOC,
-	    A_NO_LIMIT_STACK, A_PURE};
+	    A_NO_LIMIT_STACK, A_PURE,
+#ifdef SGI_MONGOOSE
+	    A_SYSCALL_LINKAGE, A_WIDEN_RETVAL
+#endif /* SGI_MONGOOSE */
+};
 
 enum format_type { printf_format_type, scanf_format_type,
 		   strftime_format_type };
@@ -458,6 +462,11 @@ init_attributes ()
   add_attribute (A_MALLOC, "malloc", 0, 0, 1);
   add_attribute (A_NO_LIMIT_STACK, "no_stack_limit", 0, 0, 1);
   add_attribute (A_PURE, "pure", 0, 0, 1);
+#ifdef SGI_MONGOOSE
+  add_attribute (A_SYSCALL_LINKAGE, "syscall_linkage", 0, 0, 1);
+  add_attribute (A_SYSCALL_LINKAGE, "readonlyargs", 0, 0, 1);
+  add_attribute (A_WIDEN_RETVAL, "widenretval", 0, 0, 1);
+#endif /* SGI_MONGOOSE */
 }
 
 /* Default implementation of valid_lang_attribute, below.  By default, there
@@ -1047,6 +1056,70 @@ decl_attributes (node, attributes, prefi
 	  else
 	    DECL_NO_LIMIT_STACK (decl) = 1;
 	  break;
+
+#ifdef SGI_MONGOOSE
+	case A_SYSCALL_LINKAGE:
+	  {
+	    int arg_num;
+	    tree argument;
+
+	    if (TREE_CODE (decl) != FUNCTION_DECL)
+	      {
+		error_with_decl (decl,
+			 "argument format specified for non-function `%s'");
+		continue;
+	      }
+	    argument = TYPE_ARG_TYPES (type);
+
+	    /* check that no args are fp */
+	    for (argument = TYPE_ARG_TYPES(type); argument; 
+		argument = TREE_CHAIN(argument)) 
+	    {
+		if (FLOAT_TYPE_P (TREE_VALUE (argument)))
+		  {
+		    warning ("readonlyargs/syscall_linkage won't work when floating point args");
+		    continue;
+		  }
+	    }
+	    DECL_SYSCALL_LINKAGE (decl) = 1;
+	  }
+	  break;
+
+	case A_WIDEN_RETVAL:
+	  {
+	    int arg_num;
+	    tree argument;
+
+	    if (TREE_CODE (decl) != FUNCTION_DECL)
+	      {
+		error_with_decl (decl,
+			 "argument format specified for non-function `%s'");
+		continue;
+	      }
+
+	    /* ignore functions returing void or pointers */
+	    if ((TREE_CODE (TREE_TYPE (type)) == VOID_TYPE) ||
+		 POINTER_TYPE_P (TREE_TYPE (type)))
+	      {
+		continue;
+	      }
+
+	    /* check that return is of integral type */
+	    if (!INTEGRAL_TYPE_P (TREE_TYPE (type)))
+	      {
+		warning ("widenretval won't work for non integral returns");
+		continue;
+	      }
+
+	    /* check that return is of integral type of size < 8*/
+	    if (!(TYPE_PRECISION(TREE_TYPE (type)) < TYPE_PRECISION(long_long_integer_type_node)))
+	      {
+		continue;
+	      }
+	    DECL_WIDEN_RETVAL (decl) = 1;
+	  }
+	  break;
+#endif /* SGI_MONGOOSE */
 	}
     }
 }
diff -dupr ./c-decl.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-decl.c
--- ./c-decl.c	2003-02-05 17:44:21.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-decl.c	2001-03-12 23:29:35.000000000 +0100
@@ -39,6 +39,10 @@ Boston, MA 02111-1307, USA.  */
 #include "defaults.h"
 #include "ggc.h"
 #include "tm_p.h"
+#ifdef SGI_MONGOOSE
+#include "wfe_decl.h"
+extern ST * Create_ST_For_Tree (tree);
+#endif /* SGI_MONGOOSE */
 
 #if USE_CPPLIB
 #include "cpplib.h"
@@ -1866,6 +1870,10 @@ duplicate_decls (newdecl, olddecl, diffe
 	    |= DECL_NO_CHECK_MEMORY_USAGE (olddecl);
 	  DECL_NO_LIMIT_STACK (newdecl)
 	    |= DECL_NO_LIMIT_STACK (olddecl);
+#ifdef SGI_MONGOOSE
+	  DECL_SYSCALL_LINKAGE(newdecl) |= DECL_SYSCALL_LINKAGE(olddecl);
+	  DECL_WIDEN_RETVAL(newdecl) |= DECL_WIDEN_RETVAL(olddecl);
+#endif /* SGI_MONGOOSE */
 	}
     }
   /* If cannot merge, then use the new type and qualifiers,
@@ -1904,6 +1912,10 @@ duplicate_decls (newdecl, olddecl, diffe
     }
   else
     {
+#ifdef SGI_MONGOOSE
+      if (TREE_CODE(olddecl) == VAR_DECL && DECL_ST(olddecl))
+        WFE_Resolve_Duplicate_Decls (olddecl, newdecl);
+#endif /* SGI_MONGOOSE */
       TREE_STATIC (olddecl) = TREE_STATIC (newdecl);
       TREE_PUBLIC (olddecl) = TREE_PUBLIC (newdecl);
     }
@@ -1966,6 +1978,11 @@ duplicate_decls (newdecl, olddecl, diffe
 	DECL_IGNORED_P (newdecl) = 1;
       else
 	TREE_ASM_WRITTEN (newdecl) = DECL_IGNORED_P (newdecl) = 1;
+#ifdef SGI_MONGOOSE
+      if (DECL_ST(olddecl) == 0)
+        DECL_ST(olddecl) = Create_ST_For_Tree (olddecl);
+      DECL_ST(newdecl) = DECL_ST(olddecl);
+#endif /* SGI_MONGOOSE */
       return 0;
     }
 
@@ -1973,11 +1990,21 @@ duplicate_decls (newdecl, olddecl, diffe
      But preserve OLDDECL's DECL_UID.  */
   {
     register unsigned olddecl_uid = DECL_UID (olddecl);
+#ifdef SGI_MONGOOSE
+    ST* st  = DECL_ST(olddecl);
+    ST* st2 = DECL_ST2(olddecl);
+#endif /* SGI_MONGOOSE */
 
     bcopy ((char *) newdecl + sizeof (struct tree_common),
 	   (char *) olddecl + sizeof (struct tree_common),
 	   sizeof (struct tree_decl) - sizeof (struct tree_common));
     DECL_UID (olddecl) = olddecl_uid;
+#ifdef SGI_MONGOOSE
+    DECL_ST (olddecl) = st;
+    DECL_ST (newdecl) = st;
+    DECL_ST2 (olddecl) = st2;
+    DECL_ST2 (newdecl) = st2;
+#endif /* SGI_MONGOOSE */
   }
 
   /* NEWDECL contains the merged attribute lists.
@@ -3114,6 +3141,111 @@ init_decl_processing ()
 							   endlink)))),
      BUILT_IN_EH_RETURN, BUILT_IN_NORMAL, NULL_PTR);
 
+#ifdef SGI_MONGOOSE
+  builtin_function ("__lock_test_and_set",
+                    build_function_type (char_type_node, NULL_TREE),
+                    BUILT_IN_LOCK_TEST_AND_SET, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__lock_release",
+                    build_function_type (void_type_node, NULL_TREE),
+                    BUILT_IN_LOCK_RELEASE, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__compare_and_swap",
+                    build_function_type (boolean_type_node, NULL_TREE),
+                    BUILT_IN_COMPARE_AND_SWAP, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__synchronize",
+                    build_function_type (void_type_node, NULL_TREE),
+                    BUILT_IN_SYNCHRONIZE, BUILT_IN_NORMAL, NULL_PTR);
+
+  builtin_function ("__builtin_round_f2ll",
+                    build_function_type (long_long_integer_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    float_type_node,
+                                                    endlink)),
+                    BUILT_IN_ROUND_F2LL, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_round_d2ll",
+                    build_function_type (long_long_integer_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    double_type_node,
+                                                    endlink)),
+                    BUILT_IN_ROUND_D2LL, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_round_ed2ll",
+                    build_function_type (long_long_integer_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    long_double_type_node,
+                                                    endlink)),
+                    BUILT_IN_ROUND_ED2LL, BUILT_IN_NORMAL, NULL_PTR);
+
+  builtin_function ("__builtin_cast_i2f",
+                    build_function_type (float_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    integer_type_node,
+                                                    endlink)),
+                    BUILT_IN_CAST_I2F, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_cast_f2i",
+                    build_function_type (integer_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    float_type_node,
+                                                    endlink)),
+                    BUILT_IN_CAST_F2I, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_cast_ll2d",
+                    build_function_type (double_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    long_long_integer_type_node,
+                                               endlink)),
+                    BUILT_IN_CAST_LL2D, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_cast_d2ll",
+                    build_function_type (long_long_integer_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    double_type_node,
+                                                    endlink)),
+                    BUILT_IN_CAST_D2LL, BUILT_IN_NORMAL, NULL_PTR);
+
+  builtin_function ("__builtin_getf_exp",
+                    build_function_type (long_long_integer_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    long_double_type_node,
+                                                    endlink)),
+                    BUILT_IN_GETF_EXP, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_getf_sig",
+                    build_function_type (long_long_integer_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    long_double_type_node,
+                                                    endlink)),
+                    BUILT_IN_GETF_SIG, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_setf_exp",
+                    build_function_type (long_double_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    long_long_integer_type_node,
+                                                    endlink)),
+                    BUILT_IN_SETF_EXP, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_setf_sig",
+                    build_function_type (long_double_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    long_long_integer_type_node,
+                                                    endlink)),
+                    BUILT_IN_SETF_SIG, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_fmerge_ns",
+                    build_function_type (long_double_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    long_double_type_node,
+                                                    tree_cons (NULL_TREE,
+                                                               long_double_type_node,                                                               endlink))),
+                    BUILT_IN_FMERGE_NS, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_fmerge_s",
+                    build_function_type (long_double_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    long_double_type_node,
+                                                    tree_cons (NULL_TREE,
+                                                               long_double_type_node,                                                               endlink))),
+                    BUILT_IN_FMERGE_S, BUILT_IN_NORMAL, NULL_PTR);
+  builtin_function ("__builtin_fmerge_se",
+                    build_function_type (long_double_type_node,
+                                         tree_cons (NULL_TREE,
+                                                    long_double_type_node,
+                                                    tree_cons (NULL_TREE,
+                                                               long_double_type_node,                                                               endlink))),
+                    BUILT_IN_FMERGE_SE, BUILT_IN_NORMAL, NULL_PTR);
+#endif /* SGI_MONGOOSE */
+
   pedantic_lvalues = pedantic;
 
   /* Create the global bindings for __FUNCTION__ and __PRETTY_FUNCTION__.  */
@@ -3654,6 +3786,17 @@ finish_decl (decl, init, asmspec_tree)
 	}
     }
 
+#ifdef SGI_MONGOOSE
+  if (TREE_CODE (decl) != FUNCTION_DECL
+      && TREE_CODE (decl) != PARM_DECL
+      && DECL_INITIAL (decl) != 0
+      && DECL_INITIAL (decl) != error_mark_node)
+    {
+      dump_parse_tree ("c-decl init", decl);
+      WFE_Initialize_Decl (decl);
+    }
+#endif /* SGI_MONGOOSE */
+
   if (TREE_CODE (decl) == TYPE_DECL)
     {
       /* This is a no-op in c-lang.c or something real in objc-actions.c.  */
@@ -3661,6 +3804,10 @@ finish_decl (decl, init, asmspec_tree)
       rest_of_decl_compilation (decl, NULL_PTR, DECL_CONTEXT (decl) == 0, 0);
     }
 
+#ifdef SGI_MONGOOSE
+  WFE_Decl (decl);
+#endif /* SGI_MONGOOSE */
+
   /* At the end of a declaration, throw away any variable type sizes
      of types defined inside that declaration.  There is no use
      computing them in the following function definition.  */
@@ -5573,7 +5720,9 @@ finish_enum (enumtype, values, attribute
 	  DECL_SIZE_UNIT (enu) = TYPE_SIZE_UNIT (enumtype);
 	  DECL_ALIGN (enu) = TYPE_ALIGN (enumtype);
 	  DECL_MODE (enu) = TYPE_MODE (enumtype);
+#ifndef SGI_MONGOOSE
 	  DECL_INITIAL (enu) = convert (enumtype, DECL_INITIAL (enu));
+#endif /* SGI_MONGOOSE */
 
 	  TREE_PURPOSE (pair) = DECL_NAME (enu);
 	  TREE_VALUE (pair) = DECL_INITIAL (enu);
@@ -6338,6 +6487,11 @@ store_parm_decls ()
       && strcmp (IDENTIFIER_POINTER (DECL_NAME (fndecl)), "main") == 0
       && DECL_CONTEXT (fndecl) == NULL_TREE)
     expand_main_function ();
+
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("store_parm_decls", fndecl);
+  WFE_Start_Function (fndecl);
+#endif /* SGI_MONGOOSE */
 }
 
 /* SPECPARMS is an identifier list--a chain of TREE_LIST nodes
@@ -6639,6 +6793,10 @@ finish_function (nested)
 	 pop_c_function_context and then reset via pop_function_context.  */
       current_function_decl = NULL;
     }
+
+#ifdef SGI_MONGOOSE
+   WFE_Finish_Function();
+#endif /* SGI_MONGOOSE */
 }
 
 /* Save and restore the variables in this file and elsewhere
diff -dupr ./c-gperf.h /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-gperf.h
--- ./c-gperf.h	2003-02-05 17:22:01.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-gperf.h	2001-03-12 23:29:35.000000000 +0100
@@ -1,5 +1,5 @@
-/* C code produced by gperf version 2.7.1 (19981006 egcs) */
-/* Command-line: gperf -L C -F , 0, 0 -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$ /work/src/gcc/gcc/c-parse.gperf  */
+/* C code produced by gperf version 2.7 */
+/* Command-line: gperf -L C -F , 0, 0 -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$ ../../src/gcc/c-parse.gperf  */
 /* Command-line: gperf -L C -F ', 0, 0' -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf  */ 
 struct resword { const char *name; short token; enum rid rid; };
 #ifdef __GNUC__
Only in ./ch: actions.c
Only in ./ch: actions.h
Only in ./ch: ChangeLog
Only in ./ch: chill.brochure
Only in ./ch: chill.in
Only in ./ch: chill.texi
Only in ./ch: ch-tree.def
Only in ./ch: ch-tree.h
Only in ./ch: config-lang.in
Only in ./ch: configure
Only in ./ch: convert.c
Only in ./ch: CVS
Only in ./ch: decl.c
Only in ./ch: except.c
Only in ./ch: expr.c
Only in ./ch: gperf
Only in ./ch: grant.c
Only in ./ch: hash.h
Only in ./ch: inout.c
Only in ./ch: lang.c
Only in ./ch: lang-specs.h
Only in ./ch: lex.c
Only in ./ch: lex.h
Only in ./ch: loop.c
Only in ./ch: Makefile.in
Only in ./ch: Make-lang.in
Only in ./ch: nloop.c
Only in ./ch: parse.c
Only in ./ch: parse.h
Only in ./ch: README
Only in ./ch: satisfy.c
Only in ./ch: tasking.c
Only in ./ch: tasking.h
Only in ./ch: timing.c
Only in ./ch: tree.c
Only in ./ch: typeck.c
Only in ./ch: xtypeck.c
Only in .: ChangeLog
Only in .: ChangeLog.0
Only in .: ChangeLog.1
Only in .: ChangeLog.lib
diff -dupr ./c-lex.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-lex.c
--- ./c-lex.c	2003-02-05 17:41:05.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-lex.c	2001-03-12 23:29:35.000000000 +0100
@@ -35,6 +35,9 @@ Boston, MA 02111-1307, USA.  */
 #include "intl.h"
 #include "ggc.h"
 #include "tm_p.h"
+#ifdef SGI_MONGOOSE
+#include "wfe_dst.h"
+#endif /* SGI_MONGOOSE */
 
 /* MULTIBYTE_CHARS support only works for native compilers.
    ??? Ideally what we want is to model widechar support after
@@ -695,6 +698,7 @@ check_newline ()
 	      goto skipline;
 	    }
 
+#ifndef SGI_MONGOOSE
 	  if (! flag_no_ident)
 	    {
 #ifdef ASM_OUTPUT_IDENT
@@ -702,6 +706,7 @@ check_newline ()
 				TREE_STRING_POINTER (yylval.ttype));
 #endif
 	    }
+#endif /* SGI_MONGOOSE */
 
 	  /* Skip the rest of this line.  */
 	  goto skipline;
@@ -768,6 +773,10 @@ linenum:
   if (main_input_filename == 0)
     main_input_filename = input_filename;
 
+#ifdef SGI_MONGOOSE
+      WFE_Set_Line_And_File (lineno, input_filename);
+#endif /* SGI_MONGOOSE */
+
   old_lineno = lineno;
   action = act_none;
   action_number = 0;
Only in ./config: 1750a
Only in ./config: a29k
Only in ./config: alpha
Only in ./config: arc
Only in ./config: arm
Only in ./config: avr
Only in ./config: c4x
Only in ./config: clipper
Only in ./config: convex
Only in ./config: CVS
Only in ./config: d30v
Only in ./config: dsp16xx
Only in ./config: elxsi
Only in /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/config: float-d10v.h
Only in ./config: float-sparc.h
Only in ./config: float-vax.h
Only in ./config: fr30
Only in ./config: fx80
Only in ./config: gmicro
Only in ./config: h8300
Only in ./config: i370
Only in ./config/i386: CVS
diff -dupr ./config/i386/dgux.h /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/config/i386/dgux.h
--- ./config/i386/dgux.h	2003-02-05 17:41:14.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/config/i386/dgux.h	2001-03-12 23:29:36.000000000 +0100
@@ -26,7 +26,7 @@ Boston, MA 02111-1307, USA.  */
 #include "i386/sysv4.h"
 
 #ifndef VERSION_INFO2
-#define VERSION_INFO2   "$Revision: 1.9 $"
+#define VERSION_INFO2   "$Revision: 1.2 $"
 #endif
 
 #ifndef VERSION_STRING
Only in ./config: i860
Only in ./config: i960
Only in ./config/ia64: CVS
diff -dupr ./config/ia64/ia64.h /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/config/ia64/ia64.h
--- ./config/ia64/ia64.h	2003-02-05 17:45:19.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/config/ia64/ia64.h	2001-03-12 23:37:23.000000000 +0100
@@ -2301,6 +2301,62 @@ do {									\
 /* A C initializer containing the assembler's names for the machine registers,
    each one as a C string constant.  */
 
+#ifdef SGI_MONGOOSE
+
+/* out registers go backwards from r127 */
+
+#define REGISTER_NAMES \
+{									\
+  /* General registers.  */						\
+  "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",		\
+  "r10", "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19",	\
+  "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29",	\
+  "r30", "r31",								\
+  /* Local registers.  */						\
+  "loc0", "loc1", "loc2", "loc3", "loc4", "loc5", "loc6", "loc7",	\
+  "loc8", "loc9", "loc10","loc11","loc12","loc13","loc14","loc15",	\
+  "loc16","loc17","loc18","loc19","loc20","loc21","loc22","loc23",	\
+  "loc24","loc25","loc26","loc27","loc28","loc29","loc30","loc31",	\
+  "loc32","loc33","loc34","loc35","loc36","loc37","loc38","loc39",	\
+  "loc40","loc41","loc42","loc43","loc44","loc45","loc46","loc47",	\
+  "loc48","loc49","loc50","loc51","loc52","loc53","loc54","loc55",	\
+  "loc56","loc57","loc58","loc59","loc60","loc61","loc62","loc63",	\
+  "loc64","loc65","loc66","loc67","loc68","loc69","loc70","loc71",	\
+  "loc72","loc73","loc74","loc75","loc76","loc77","loc78","loc79",	\
+  /* Input registers.  */						\
+  "in0",  "in1",  "in2",  "in3",  "in4",  "in5",  "in6",  "in7",	\
+  /* Output registers.  */						\
+  "out7", "out6", "out5", "out4", "out3", "out2", "out1", "out0",	\
+  /* Floating-point registers.  */					\
+  "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9",		\
+  "f10", "f11", "f12", "f13", "f14", "f15", "f16", "f17", "f18", "f19",	\
+  "f20", "f21", "f22", "f23", "f24", "f25", "f26", "f27", "f28", "f29",	\
+  "f30", "f31", "f32", "f33", "f34", "f35", "f36", "f37", "f38", "f39",	\
+  "f40", "f41", "f42", "f43", "f44", "f45", "f46", "f47", "f48", "f49",	\
+  "f50", "f51", "f52", "f53", "f54", "f55", "f56", "f57", "f58", "f59",	\
+  "f60", "f61", "f62", "f63", "f64", "f65", "f66", "f67", "f68", "f69",	\
+  "f70", "f71", "f72", "f73", "f74", "f75", "f76", "f77", "f78", "f79",	\
+  "f80", "f81", "f82", "f83", "f84", "f85", "f86", "f87", "f88", "f89",	\
+  "f90", "f91", "f92", "f93", "f94", "f95", "f96", "f97", "f98", "f99",	\
+  "f100","f101","f102","f103","f104","f105","f106","f107","f108","f109",\
+  "f110","f111","f112","f113","f114","f115","f116","f117","f118","f119",\
+  "f120","f121","f122","f123","f124","f125","f126","f127",		\
+  /* Predicate registers.  */						\
+  "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9",		\
+  "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19",	\
+  "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29",	\
+  "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39",	\
+  "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49",	\
+  "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59",	\
+  "p60", "p61", "p62", "p63",						\
+  /* Branch registers.  */						\
+  "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7",			\
+  /* Frame pointer.  Return address.  */				\
+  "fp", "ra"								\
+}
+
+#else
+
 #define REGISTER_NAMES \
 {									\
   /* General registers.  */						\
@@ -2351,6 +2407,8 @@ do {									\
   "fp", "ra"								\
 }
 
+#endif /* SGI_MONGOOSE */
+
 /* If defined, a C initializer for an array of structures containing a name and
    a register number.  This macro defines additional names for hard registers,
    thus allowing the `asm' option in declarations to refer to registers using
Only in ./config: m32r
Only in ./config: m68k
Only in ./config: m88k
Only in ./config: mcore
Only in ./config: mips
Only in ./config: mn10200
Only in ./config: mn10300
Only in ./config: msdos
Only in ./config: ns32k
Only in ./config: pa
Only in ./config: pdp11
Only in ./config: pj
Only in ./config: pyr
Only in ./config: README
Only in ./config: romp
Only in ./config: rs6000
Only in ./config: rtems.h
Only in ./config: sh
Only in ./config: sparc
Only in ./config: spur
Only in ./config: tahoe
Only in ./config: v850
Only in ./config: vax
Only in ./config: we32k
Only in ./config: winnt
Only in .: config.guess
Only in .: config.in
Only in .: configure
Only in .: configure.bat
Only in .: configure.frag
Only in .: configure.in
Only in .: configure.lang
Only in .: contrib.texi
Only in .: COPYING
Only in .: COPYING.LIB
Only in ./cp: call.c
Only in ./cp: cfns.gperf
Only in ./cp: cfns.h
Only in ./cp: ChangeLog
Only in ./cp: ChangeLog.1
Only in ./cp: ChangeLog.egcs
Only in ./cp: class.c
Only in ./cp: config-lang.in
Only in ./cp: cp-tree.def
Only in ./cp: cp-tree.h
Only in ./cp: CVS
Only in ./cp: cvt.c
Only in ./cp: decl2.c
Only in ./cp: decl.c
Only in ./cp: decl.h
Only in ./cp: dump.c
Only in ./cp: errfn.c
Only in ./cp: error.c
Only in ./cp: except.c
Only in ./cp: exception.cc
Only in ./cp: expr.c
Only in ./cp: friend.c
Only in ./cp: g++.1
Only in ./cp: g++spec.c
Only in ./cp: gxx.gperf
Only in ./cp: gxxint.texi
Only in ./cp: hash.h
Only in ./cp: inc
Only in ./cp: init.c
Only in ./cp: input.c
Only in ./cp: ir.texi
Only in ./cp: lang-specs.h
Only in ./cp: lex.c
Only in ./cp: lex.h
Only in ./cp: Makefile.in
Only in ./cp: Make-lang.in
Only in ./cp: method.c
Only in ./cp: mpw-config.in
Only in ./cp: mpw-make.sed
Only in ./cp: new1.cc
Only in ./cp: new2.cc
Only in ./cp: new.cc
Only in ./cp: NEWS
Only in ./cp: operators.def
Only in ./cp: optimize.c
Only in ./cp: parse.c
Only in ./cp: parse.h
Only in ./cp: parse.y
Only in ./cp: pt.c
Only in ./cp: ptree.c
Only in ./cp: repo.c
Only in ./cp: rtti.c
Only in ./cp: search.c
Only in ./cp: semantics.c
Only in ./cp: spew.c
Only in ./cp: tinfo2.cc
Only in ./cp: tinfo.cc
Only in ./cp: tinfo.h
Only in ./cp: tree.c
Only in ./cp: typeck2.c
Only in ./cp: typeck.c
Only in ./cp: vec.cc
Only in ./cp: xref.c
diff -dupr ./c-parse.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-parse.c
--- ./c-parse.c	2003-02-05 17:41:05.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-parse.c	2001-03-12 23:29:35.000000000 +0100
@@ -1274,7 +1274,7 @@ static const short yycheck[] = {    38,
     48,    49,    50,    51,    52,    53,    54,    55,    56,    57
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/share/misc/bison.simple"
+#line 3 "/usr/share/bison.simple"
 /* This file comes from bison-1.28.  */
 
 /* Skeleton output parser for bison,
@@ -1488,7 +1488,7 @@ __yy_memcpy (char *to, char *from, unsig
 #endif
 #endif
 
-#line 217 "/usr/share/misc/bison.simple"
+#line 217 "/usr/share/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -3835,7 +3835,7 @@ case 407:
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/share/misc/bison.simple"
+#line 543 "/usr/share/bison.simple"
 
   yyvsp -= yylen;
   yyssp -= yylen;
Only in .: c-parse.gperf
Only in .: c-parse.in
Only in .: c-parse.y
Only in .: cpp.1
Only in .: cpp.texi
Only in .: cross-make
Only in .: cstamp-h.in
diff -dupr ./c-typeck.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-typeck.c
--- ./c-typeck.c	2003-02-05 17:44:22.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/c-typeck.c	2001-03-12 23:29:35.000000000 +0100
@@ -4940,6 +4940,12 @@ finish_init ()
 {
   struct initializer_stack *p = initializer_stack;
 
+#ifdef SGI_MONGOOSE
+  if (constructor_incremental) {
+        WFE_Finish_Aggregate_Init ();
+  }
+#endif /* SGI_MONGOOSE */
+
   /* Output subconstants (string constants, usually)
      that were referenced within this initializer and saved up.
      Must do this if and only if we called defer_addressed_constants.  */
@@ -4988,6 +4994,9 @@ really_start_incremental_init (type)
   if (type == 0)
     type = TREE_TYPE (constructor_decl);
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("really_start_incremental_init", constructor_decl);
+#endif /* SGI_MONGOOSE */
   /* Turn off constructor_incremental if type is a struct with bitfields.
      Do this before the first push, so that the corrected value
      is available in finish_init.  */
@@ -5078,6 +5087,9 @@ push_init_level (implicit)
 {
   struct constructor_stack *p;
 
+#ifdef SGI_MONGOOSE
+   dump_parse_tree ("push_init_level", NULL);
+#endif /* SGI_MONGOOSE */
   /* If we've exhausted any levels that didn't have braces,
      pop them now.  */
   while (constructor_stack->implicit)
@@ -5236,7 +5248,12 @@ static void
 check_init_type_bitfields (type)
      tree type;
 {
+#ifdef SGI_MONGOOSE
+  if (TREE_CODE (type) == RECORD_TYPE ||
+      TREE_CODE (type) == UNION_TYPE)
+#else
   if (TREE_CODE (type) == RECORD_TYPE)
+#endif /* SGI_MONGOOSE */
     {
       tree tail;
       for (tail = TYPE_FIELDS (type); tail;
@@ -5283,6 +5300,9 @@ pop_init_level (implicit)
   HOST_WIDE_INT size = 0;
   tree constructor = 0;
 
+#ifdef SGI_MONGOOSE
+   dump_parse_tree ("pop_init_level", NULL);
+#endif /* SGI_MONGOOSE */
   if (implicit == 0)
     {
       /* When we come to an explicit close brace,
@@ -5817,6 +5837,9 @@ output_init_element (value, type, field,
 {
   int duplicate = 0;
 
+#ifdef SGI_MONGOOSE
+   dump_parse_tree ("output_init_element", value);
+#endif /* SGI_MONGOOSE */
   if (TREE_CODE (TREE_TYPE (value)) == FUNCTION_TYPE
       || (TREE_CODE (TREE_TYPE (value)) == ARRAY_TYPE
 	  && !(TREE_CODE (value) == STRING_CST
@@ -6534,6 +6557,9 @@ c_expand_return (retval)
       if (warn_return_type && valtype != 0 && TREE_CODE (valtype) != VOID_TYPE)
 	warning ("`return' with no value, in function returning non-void");
       expand_null_return ();
+#ifdef SGI_MONGOOSE
+      WFE_Null_Return ();
+#endif /* SGI_MONGOOSE */
     }
   else if (valtype == 0 || TREE_CODE (valtype) == VOID_TYPE)
     {
Only in .: CVS
Only in .: .cvsignore
Only in .: dostage2
Only in .: dostage3
diff -dupr ./emit-rtl.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/emit-rtl.c
--- ./emit-rtl.c	2003-02-05 17:45:15.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/emit-rtl.c	2001-03-12 23:29:40.000000000 +0100
@@ -956,11 +956,13 @@ gen_realpart (mode, x)
 {
   if (GET_CODE (x) == CONCAT && GET_MODE (XEXP (x, 0)) == mode)
     return XEXP (x, 0);
+#ifndef SGI_MONGOOSE
   else if (WORDS_BIG_ENDIAN
 	   && GET_MODE_BITSIZE (mode) < BITS_PER_WORD
 	   && REG_P (x)
 	   && REGNO (x) < FIRST_PSEUDO_REGISTER)
     fatal ("Unable to access real part of complex value in a hard register on this target");
+#endif /* SGI_MONGOOSE */
   else if (WORDS_BIG_ENDIAN)
     return gen_highpart (mode, x);
   else
@@ -1047,7 +1049,11 @@ gen_lowpart (mode, x)
   else if (GET_CODE (x) == ADDRESSOF)
     return gen_lowpart (mode, force_reg (GET_MODE (x), x));
   else
+#ifdef SGI_MONGOOSE
+    return gen_rtx_CONST_DOUBLE (mode, NULL_RTX, 0, 0);
+#else
     abort ();
+#endif /* SGI_MONGOOSE */
 }
 
 /* Like `gen_lowpart', but refer to the most significant part. 
@@ -1135,7 +1141,11 @@ gen_highpart (mode, x)
 	return gen_rtx_SUBREG (mode, x, word);
     }
   else
+#ifdef SGI_MONGOOSE
+    return gen_rtx_CONST_DOUBLE (mode, NULL_RTX, 0, 0);
+#else
     abort ();
+#endif /* SGI_MONGOOSE */
 }
 
 /* Return 1 iff X, assumed to be a SUBREG,
Only in .: exgettext
diff -dupr ./expmed.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/expmed.c
--- ./expmed.c	2003-02-05 17:41:08.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/expmed.c	2001-03-12 23:29:40.000000000 +0100
@@ -813,6 +813,11 @@ store_split_bit_field (op0, bitsize, bit
   else
     unit = MIN (align, BITS_PER_WORD);
 
+#ifdef SGI_MONGOOSE
+  if (unit == 0)
+    return;
+#endif /* SGI_MONGOOSE */
+
   /* If VALUE is a constant other than a CONST_INT, get it into a register in
      WORD_MODE.  If we can do this using gen_lowpart_common, do so.  Note
      that VALUE might be a floating-point constant.  */
Only in .: extend.texi
Only in ./f: ansify.c
Only in ./f: assert.j
Only in ./f: bad.c
Only in ./f: bad.def
Only in ./f: bad.h
Only in ./f: bit.c
Only in ./f: bit.h
Only in ./f: bld.c
Only in ./f: bld.h
Only in ./f: bld-op.def
Only in ./f: BUGS
Only in ./f: bugs0.texi
Only in ./f: bugs.texi
Only in ./f: ChangeLog
Only in ./f: ChangeLog.0
Only in ./f: com.c
Only in ./f: com.h
Only in ./f: com-rt.def
Only in ./f: config.j
Only in ./f: config-lang.in
Only in ./f: convert.j
Only in ./f: CVS
Only in ./f: data.c
Only in ./f: data.h
Only in ./f: equiv.c
Only in ./f: equiv.h
Only in ./f: expr.c
Only in ./f: expr.h
Only in ./f: ffe.texi
Only in ./f: fini.c
Only in ./f: flags.j
Only in ./f: g77.1
Only in ./f: g77install.texi
Only in ./f: g77spec.c
Only in ./f: g77.texi
Only in ./f: ggc.j
Only in ./f: glimits.j
Only in ./f: global.c
Only in ./f: global.h
Only in ./f: hconfig.j
Only in ./f: implic.c
Only in ./f: implic.h
Only in ./f: info-b.def
Only in ./f: info.c
Only in ./f: info.h
Only in ./f: info-k.def
Only in ./f: info-w.def
Only in ./f: input.j
Only in ./f: INSTALL
Only in ./f: install0.texi
Only in ./f: intdoc.c
Only in ./f: intdoc.in
Only in ./f: intdoc.texi
Only in ./f: intrin.c
Only in ./f: intrin.def
Only in ./f: intrin.h
Only in ./f: lab.c
Only in ./f: lab.h
Only in ./f: lang-specs.h
Only in ./f: lex.c
Only in ./f: lex.h
Only in ./f: Makefile.in
Only in ./f: Make-lang.in
Only in ./f: malloc.c
Only in ./f: malloc.h
Only in ./f: name.c
Only in ./f: name.h
Only in ./f: NEWS
Only in ./f: news0.texi
Only in ./f: news.texi
Only in ./f: output.j
Only in ./f: parse.c
Only in ./f: proj.c
Only in ./f: proj.h
Only in ./f: README
Only in ./f: RELEASE-PREP
Only in ./f: root.texi
Only in ./f: rtl.j
Only in ./f: src.c
Only in ./f: src.h
Only in ./f: sta.c
Only in ./f: sta.h
Only in ./f: stb.c
Only in ./f: stb.h
Only in ./f: st.c
Only in ./f: stc.c
Only in ./f: stc.h
Only in ./f: std.c
Only in ./f: std.h
Only in ./f: ste.c
Only in ./f: ste.h
Only in ./f: st.h
Only in ./f: storag.c
Only in ./f: storag.h
Only in ./f: stp.c
Only in ./f: stp.h
Only in ./f: str-1t.fin
Only in ./f: str-2t.fin
Only in ./f: str.c
Only in ./f: str-fo.fin
Only in ./f: str.h
Only in ./f: str-io.fin
Only in ./f: str-nq.fin
Only in ./f: str-op.fin
Only in ./f: str-ot.fin
Only in ./f: sts.c
Only in ./f: sts.h
Only in ./f: stt.c
Only in ./f: stt.h
Only in ./f: stu.c
Only in ./f: stu.h
Only in ./f: stv.c
Only in ./f: stv.h
Only in ./f: stw.c
Only in ./f: stw.h
Only in ./f: symbol.c
Only in ./f: symbol.def
Only in ./f: symbol.h
Only in ./f: system.j
Only in ./f: target.c
Only in ./f: target.h
Only in ./f: tconfig.j
Only in ./f: tm.j
Only in ./f: top.c
Only in ./f: top.h
Only in ./f: toplev.j
Only in ./f: tree.j
Only in ./f: type.c
Only in ./f: type.h
Only in ./f: version.c
Only in ./f: version.h
Only in ./f: where.c
Only in ./f: where.h
Only in .: fixinc
Only in .: fixproto
diff -dupr ./flags.h /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/flags.h
--- ./flags.h	2003-02-05 17:38:42.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/flags.h	2001-03-12 23:29:40.000000000 +0100
@@ -461,6 +461,16 @@ extern int flag_debug_asm;
    -fno-gnu-linker says that collect will be used.  */
 extern int flag_gnu_linker;
 
+#ifdef SGI_MONGOOSE
+
+/* -dC causes asm operand constraints that aren't valid or supported
+   for the target machine to force the entire containing asm statement
+   to be discarded. This is a temporary hack. RK 990428 */
+
+extern int flag_bad_asm_constraint_kills_stmt;
+
+#endif /* SGI_MONGOOSE */
+
 /* Tag all structures with __attribute__(packed) */
 extern int flag_pack_struct;
 
Only in .: FSFChangeLog
Only in .: FSFChangeLog.10
Only in .: FSFChangeLog.11
diff -dupr ./function.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/function.c
--- ./function.c	2003-02-05 17:48:01.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/function.c	2001-03-12 23:29:40.000000000 +0100
@@ -2582,6 +2582,7 @@ optimize_bit_field (body, insn, equiv_me
      rtx insn;
      rtx *equiv_mem;
 {
+#ifndef SGI_MONGOOSE
   register rtx bitfield;
   int destflag;
   rtx seq = 0;
@@ -2724,6 +2725,7 @@ optimize_bit_field (body, insn, equiv_me
 	    emit_insns_before (seq, insn);
 	}
     }
+#endif /* SGI_MONGOOSE */
 }
 
 /* These routines are responsible for converting virtual register references
@@ -6413,6 +6415,10 @@ expand_function_end (filename, line, end
   static rtx initial_trampoline;
 #endif
 
+#ifdef SGI_MONGOOSE
+  return;
+#endif /* SGI_MONGOOSE */
+
   finish_expr_for_function ();
 
 #ifdef NON_SAVING_SETJMP
Only in .: future.options
Only in .: gcc.1
Only in .: gccbug.in
Only in .: gcc.hlp
Only in .: gcc.texi
Only in .: gcov.texi
Only in .: .gdbinit
Only in .: genmultilib
Only in .: ginclude
Only in /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/: ia64
Only in .: INSTALL
Only in .: install1.texi
Only in .: install.texi
Only in .: intl
Only in .: invoke.texi
Only in ./java: boehm.c
Only in ./java: buffer.c
Only in ./java: buffer.h
Only in ./java: ChangeLog
Only in ./java: check-init.c
Only in ./java: class.c
Only in ./java: config-lang.in
Only in ./java: constants.c
Only in ./java: convert.h
Only in ./java: CVS
Only in ./java: decl.c
Only in ./java: except.c
Only in ./java: expr.c
Only in ./java: gjavah.c
Only in ./java: java-except.h
Only in ./java: java-opcodes.h
Only in ./java: javaop.def
Only in ./java: javaop.h
Only in ./java: java-tree.def
Only in ./java: java-tree.h
Only in ./java: jcf-depend.c
Only in ./java: jcf-dump.c
Only in ./java: jcf.h
Only in ./java: jcf-io.c
Only in ./java: jcf-parse.c
Only in ./java: jcf-path.c
Only in ./java: jcf-reader.c
Only in ./java: jcf-write.c
Only in ./java: jvgenmain.c
Only in ./java: jv-scan.c
Only in ./java: jvspec.c
Only in ./java: keyword.gperf
Only in ./java: keyword.h
Only in ./java: lang.c
Only in ./java: lang-specs.h
Only in ./java: lex.c
Only in ./java: lex.h
Only in ./java: Makefile.in
Only in ./java: Make-lang.in
Only in ./java: mangle.c
Only in ./java: parse.c
Only in ./java: parse.h
Only in ./java: parse-scan.c
Only in ./java: parse-scan.y
Only in ./java: parse.y
Only in ./java: typeck.c
Only in ./java: verify.c
Only in ./java: xref.c
Only in ./java: xref.h
Only in ./java: zextract.c
Only in ./java: zipfile.h
Only in .: LANGUAGES
Only in .: listing
Only in /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/: Makefile.gbase
Only in .: Makefile.in
Only in .: makefile.vms
Only in .: make-l2.com
Only in .: md.texi
Only in /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/: MIPS
Only in .: mkinstalldirs
Only in .: mklibgcc.in
Only in .: move-if-change
Only in .: NEWS
Only in .: objc
diff -dupr ./optabs.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/optabs.c
--- ./optabs.c	2003-02-05 17:57:59.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/optabs.c	2001-03-12 23:29:43.000000000 +0100
@@ -3917,6 +3917,7 @@ expand_float (to, from, unsignedp)
 	  }
     }
 
+#ifndef SGI_MONGOOSE
 #if !defined (REAL_IS_NOT_DOUBLE) || defined (REAL_ARITHMETIC)
 
   /* Unsigned integer, and no way to convert directly.
@@ -4034,6 +4035,7 @@ expand_float (to, from, unsignedp)
       goto done;
     }
 #endif
+#endif /* SGI_MONGOOSE */
 
   /* No hardware instruction available; call a library routine to convert from
      SImode, DImode, or TImode into SFmode, DFmode, XFmode, or TFmode.  */
Only in .: patch-apollo-includes
Only in .: po
diff -dupr ./print-tree.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/print-tree.c
--- ./print-tree.c	2003-02-05 17:45:16.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/print-tree.c	2001-03-12 23:29:43.000000000 +0100
@@ -38,6 +38,22 @@ struct bucket
 
 static struct bucket **table;
 
+#ifdef SGI_MONGOOSE
+/* Print the node NODE to the specified file for debugging. */
+void
+print_tree (FILE *file, tree node)
+{
+  char *object = (char *) oballoc (0);
+
+  table = (struct bucket **) oballoc (HASH_SIZE * sizeof (struct bucket *));
+  bzero ((char *) table, HASH_SIZE * sizeof (struct bucket *));
+  print_node (file, "", node, 0);
+  table = 0;
+  obfree (object);
+  fprintf (file, "\n");
+}
+#endif /* SGI_MONGOOSE */
+
 /* Print the node NODE on standard error, for debugging.
    Most nodes referred to by this one are printed recursively
    down to a depth of six.  */
@@ -443,6 +459,12 @@ print_node (file, prefix, node, indent)
       print_node (file, "arguments", DECL_ARGUMENTS (node), indent + 4);
       print_node (file, "result", DECL_RESULT_FLD (node), indent + 4);
       print_node_brief (file, "initial", DECL_INITIAL (node), indent + 4);
+#ifdef SGI_MONGOOSE
+      if(DECL_DST_IDX(node).block != -1  || DECL_DST_IDX(node).offset != -1) {
+         fprintf(file," dst idx %d %d ", TYPE_DST_IDX(node).block,
+                        TYPE_DST_IDX(node).offset);
+      }
+#endif /* SGI_MONGOOSE */
 
       print_lang_decl (file, node, indent);
 
@@ -547,6 +569,15 @@ print_node (file, prefix, node, indent)
 			  indent + 4);
       if (TYPE_CONTEXT (node))
 	print_node_brief (file, "context", TYPE_CONTEXT (node), indent + 4);
+#ifdef SGI_MONGOOSE
+      if(TYPE_TY_IDX(node)) fprintf(file," ty_idx %u",TYPE_TY_IDX(node));
+      if(TYPE_FIELD_IDS_USED(node)) fprintf(file," ids_used %u",
+                TYPE_FIELD_IDS_USED(node));
+      if(TYPE_DST_IDX(node).block != -1  || TYPE_DST_IDX(node).offset != -1) {
+         fprintf(file," dst idx %d %d ", TYPE_DST_IDX(node).block,
+                        TYPE_DST_IDX(node).offset);
+      }
+#endif /* SGI_MONGOOSE */
 
       print_lang_type (file, node, indent);
 
Only in .: PROBLEMS
Only in .: README
Only in .: README.ACORN
Only in .: README.ALTOS
Only in .: README.APOLLO
Only in .: README.AVR
Only in .: README-bugs
Only in .: README.C4X
Only in .: README.DWARF
Only in .: README-fixinc
Only in .: README.FRESCO
Only in .: README.gnat
Only in .: README.NS32K
Only in .: README.RS6000
Only in .: README.TRAD
Only in .: README.X11
diff -dupr ./real.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/real.c
--- ./real.c	2003-02-05 17:25:47.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/real.c	2001-03-12 23:29:43.000000000 +0100
@@ -348,7 +348,7 @@ extern int extra_warnings;
 extern unsigned EMUSHORT ezero[], ehalf[], eone[], etwo[];
 extern unsigned EMUSHORT elog2[], esqrt2[];
 
-static void endian	PARAMS ((unsigned EMUSHORT *, long *,
+static void endian	PARAMS ((unsigned EMUSHORT *, int *,
 			       enum machine_mode));
 static void eclear	PARAMS ((unsigned EMUSHORT *));
 static void emov	PARAMS ((unsigned EMUSHORT *, unsigned EMUSHORT *));
@@ -487,45 +487,45 @@ static void esqrt	PARAMS ((unsigned EMUS
 static void
 endian (e, x, mode)
      unsigned EMUSHORT e[];
-     long x[];
+     int x[];
      enum machine_mode mode;
 {
-  unsigned long th, t;
+  unsigned int th, t;
 
   if (REAL_WORDS_BIG_ENDIAN)
     {
       switch (mode)
 	{
 	case TFmode:
-	  /* Swap halfwords in the fourth long.  */
-	  th = (unsigned long) e[6] & 0xffff;
-	  t = (unsigned long) e[7] & 0xffff;
+	  /* Swap halfwords in the fourth int.  */
+	  th = (unsigned int) e[6] & 0xffff;
+	  t = (unsigned int) e[7] & 0xffff;
 	  t |= th << 16;
-	  x[3] = (long) t;
+	  x[3] = (int) t;
 
 	case XFmode:
-	  /* Swap halfwords in the third long.  */
-	  th = (unsigned long) e[4] & 0xffff;
-	  t = (unsigned long) e[5] & 0xffff;
+	  /* Swap halfwords in the third int.  */
+	  th = (unsigned int) e[4] & 0xffff;
+	  t = (unsigned int) e[5] & 0xffff;
 	  t |= th << 16;
-	  x[2] = (long) t;
+	  x[2] = (int) t;
 	  /* fall into the double case */
 
 	case DFmode:
 	  /* Swap halfwords in the second word.  */
-	  th = (unsigned long) e[2] & 0xffff;
-	  t = (unsigned long) e[3] & 0xffff;
+	  th = (unsigned int) e[2] & 0xffff;
+	  t = (unsigned int) e[3] & 0xffff;
 	  t |= th << 16;
-	  x[1] = (long) t;
+	  x[1] = (int) t;
 	  /* fall into the float case */
 
 	case SFmode:
 	case HFmode:
 	  /* Swap halfwords in the first word.  */
-	  th = (unsigned long) e[0] & 0xffff;
-	  t = (unsigned long) e[1] & 0xffff;
+	  th = (unsigned int) e[0] & 0xffff;
+	  t = (unsigned int) e[1] & 0xffff;
 	  t |= th << 16;
-	  x[0] = (long) t;
+	  x[0] = (int) t;
 	  break;
 
 	default:
@@ -539,37 +539,37 @@ endian (e, x, mode)
       switch (mode)
 	{
 	case TFmode:
-	  /* Pack the fourth long.  */
-	  th = (unsigned long) e[7] & 0xffff;
-	  t = (unsigned long) e[6] & 0xffff;
+	  /* Pack the fourth int.  */
+	  th = (unsigned int) e[7] & 0xffff;
+	  t = (unsigned int) e[6] & 0xffff;
 	  t |= th << 16;
-	  x[3] = (long) t;
+	  x[3] = (int) t;
 
 	case XFmode:
-	  /* Pack the third long.
+	  /* Pack the third int.
 	     Each element of the input REAL_VALUE_TYPE array has 16 useful bits
 	     in it.  */
-	  th = (unsigned long) e[5] & 0xffff;
-	  t = (unsigned long) e[4] & 0xffff;
+	  th = (unsigned int) e[5] & 0xffff;
+	  t = (unsigned int) e[4] & 0xffff;
 	  t |= th << 16;
-	  x[2] = (long) t;
+	  x[2] = (int) t;
 	  /* fall into the double case */
 
 	case DFmode:
-	  /* Pack the second long */
-	  th = (unsigned long) e[3] & 0xffff;
-	  t = (unsigned long) e[2] & 0xffff;
+	  /* Pack the second int */
+	  th = (unsigned int) e[3] & 0xffff;
+	  t = (unsigned int) e[2] & 0xffff;
 	  t |= th << 16;
-	  x[1] = (long) t;
+	  x[1] = (int) t;
 	  /* fall into the float case */
 
 	case SFmode:
 	case HFmode:
-	  /* Pack the first long */
-	  th = (unsigned long) e[1] & 0xffff;
-	  t = (unsigned long) e[0] & 0xffff;
+	  /* Pack the first int */
+	  th = (unsigned int) e[1] & 0xffff;
+	  t = (unsigned int) e[0] & 0xffff;
 	  t |= th << 16;
-	  x[0] = (long) t;
+	  x[0] = (int) t;
 	  break;
 
 	default:
@@ -1196,7 +1196,7 @@ debug_real (r)
 /* The following routines convert REAL_VALUE_TYPE to the various floating
    point formats that are meaningful to supported computers.
 
-   The results are returned in 32-bit pieces, each piece stored in a `long'.
+   The results are returned in 32-bit pieces, each piece stored in a `int'.
    This is so they can be printed by statements like
 
       fprintf (file, "%lx, %lx", L[0],  L[1]);
@@ -1210,7 +1210,7 @@ debug_real (r)
 void
 etartdouble (r, l)
      REAL_VALUE_TYPE r;
-     long l[];
+     int l[];
 {
   unsigned EMUSHORT e[NE];
 
@@ -1226,7 +1226,7 @@ etartdouble (r, l)
 void
 etarldouble (r, l)
      REAL_VALUE_TYPE r;
-     long l[];
+     int l[];
 {
   unsigned EMUSHORT e[NE];
 
@@ -1241,7 +1241,7 @@ etarldouble (r, l)
 void
 etardouble (r, l)
      REAL_VALUE_TYPE r;
-     long l[];
+     int l[];
 {
   unsigned EMUSHORT e[NE];
 
@@ -1253,17 +1253,17 @@ etardouble (r, l)
 /* Convert R to a single precision float value stored in the least-significant
    bits of a `long'.  */
 
-long
+int
 etarsingle (r)
      REAL_VALUE_TYPE r;
 {
   unsigned EMUSHORT e[NE];
-  long l;
+  int l;
 
   GET_REAL (&r, e);
   etoe24 (e, e);
   endian (e, &l, SFmode);
-  return ((long) l);
+  return ((int) l);
 }
 
 /* Convert X to a decimal ASCII string S for output to an assembly
@@ -2368,7 +2368,7 @@ edivm (den, num)
       tnum = (((unsigned EMULONG) num[M]) << 16) + num[M+1];
 
       /* Do not execute the divide instruction if it will overflow.  */
-      if ((tdenm * (unsigned long)0xffff) < tnum)
+      if ((tdenm * (unsigned int)0xffff) < tnum)
 	tquot = 0xffff;
       else
 	tquot = tnum / tdenm;
@@ -6326,7 +6326,7 @@ make_nan (nan, sign, mode)
 
 REAL_VALUE_TYPE
 ereal_unto_float (f)
-     long f;
+     int f;
 {
   REAL_VALUE_TYPE r;
   unsigned EMUSHORT s[2];
@@ -6357,7 +6357,7 @@ ereal_unto_float (f)
 
 REAL_VALUE_TYPE
 ereal_unto_double (d)
-     long d[];
+     int d[];
 {
   REAL_VALUE_TYPE r;
   unsigned EMUSHORT s[4];
diff -dupr ./real.h /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/real.h
--- ./real.h	2003-02-05 17:41:11.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/real.h	2001-03-12 23:29:43.000000000 +0100
@@ -156,15 +156,15 @@ extern void ereal_to_int	PARAMS ((HOST_W
 				       REAL_VALUE_TYPE));
 extern REAL_VALUE_TYPE ereal_ldexp PARAMS ((REAL_VALUE_TYPE, int));
 
-extern void etartdouble		PARAMS ((REAL_VALUE_TYPE, long *));
-extern void etarldouble		PARAMS ((REAL_VALUE_TYPE, long *));
-extern void etardouble		PARAMS ((REAL_VALUE_TYPE, long *));
-extern long etarsingle		PARAMS ((REAL_VALUE_TYPE));
+extern void etartdouble		PARAMS ((REAL_VALUE_TYPE, int *));
+extern void etarldouble		PARAMS ((REAL_VALUE_TYPE, int *));
+extern void etardouble		PARAMS ((REAL_VALUE_TYPE, int *));
+extern int  etarsingle		PARAMS ((REAL_VALUE_TYPE));
 extern void ereal_to_decimal	PARAMS ((REAL_VALUE_TYPE, char *));
 extern int ereal_cmp		PARAMS ((REAL_VALUE_TYPE, REAL_VALUE_TYPE));
 extern int ereal_isneg		PARAMS ((REAL_VALUE_TYPE));
-extern REAL_VALUE_TYPE ereal_unto_float PARAMS ((long));
-extern REAL_VALUE_TYPE ereal_unto_double PARAMS ((long *));
+extern REAL_VALUE_TYPE ereal_unto_float PARAMS ((int));
+extern REAL_VALUE_TYPE ereal_unto_double PARAMS ((int *));
 extern REAL_VALUE_TYPE ereal_from_float PARAMS ((HOST_WIDE_INT));
 extern REAL_VALUE_TYPE ereal_from_double PARAMS ((HOST_WIDE_INT *));
 
Only in .: rtl.texi
Only in .: scan-types.sh
Only in .: SERVICE
Only in .: sort-protos
diff -dupr ./stmt.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/stmt.c
--- ./stmt.c	2003-02-05 17:45:17.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/stmt.c	2001-03-12 23:29:43.000000000 +0100
@@ -56,6 +56,23 @@ Boston, MA 02111-1307, USA.  */
 #include "output.h"
 #include "ggc.h"
 
+#ifdef SGI_MONGOOSE
+#include "wfe_misc.h"
+#include "wfe_expr.h"
+#include "wfe_stmt.h"
+
+/* from wfe_decl.h */
+
+/* call this routine to save the SP for first alloca in a scope */
+extern ST *WFE_Alloca_0 (void);
+
+/* call this routine to assign ST for VLA as well as allocate space for it */
+extern ST *WFE_Alloca_ST (tree decl);
+
+/* call this routine to deallocate STs for VLA */
+extern void WFE_Dealloca (ST *alloca0_st, tree vars);
+#endif /* SGI_MONGOOSE */
+
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 struct obstack stmt_obstack;
@@ -142,6 +159,9 @@ struct nesting
   struct nesting *next;
   int depth;
   rtx exit_label;
+#ifdef SGI_MONGOOSE
+  LABEL_IDX exit_label_idx;
+#endif /* SGI_MONGOOSE */
   union
     {
       /* For conds (if-then and if-then-else statements).  */
@@ -224,6 +244,9 @@ struct nesting
 	     cleanup list associated with last_unconditional_cleanup,
 	     where we place the conditionalized cleanups.  */
 	  tree *cleanup_ptr;
+#ifdef SGI_MONGOOSE
+          ST *alloca0_st;
+#endif /* SGI_MONGOOSE */
 	} block;
       /* For switch (C) or case (Pascal) statements,
 	 and also for dummies (see `expand_start_case_dummy').  */
@@ -712,6 +735,10 @@ expand_computed_goto (exp)
 {
   rtx x = expand_expr (exp, NULL_RTX, VOIDmode, 0);
 
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Computed_Goto (exp);
+#endif /* SGI_MONGOOSE */
+
 #ifdef POINTERS_EXTEND_UNSIGNED
   x = convert_memory_address (Pmode, x);
 #endif
@@ -747,6 +774,11 @@ expand_label (label)
 {
   struct label_chain *p;
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("label", label);
+  WFE_Expand_Label (label);
+#endif /* SGI_MONGOOSE */
+
   do_pending_stack_adjust ();
   emit_label (label_rtx (label));
   if (DECL_NAME (label))
@@ -780,6 +812,9 @@ declare_nonlocal_label (label)
     }
   nonlocal_goto_handler_slots
     = gen_rtx_EXPR_LIST (VOIDmode, slot, nonlocal_goto_handler_slots);
+#ifdef SGI_MONGOOSE
+  WFE_Declare_Nonlocal_Label (label);
+#endif /* SGI_MONGOOSE */
 }
 
 /* Generate RTL code for a `goto' statement with target label LABEL.
@@ -792,6 +827,11 @@ expand_goto (label)
 {
   tree context;
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("goto", label);
+  WFE_Expand_Goto (label);
+#endif /* SGI_MONGOOSE */
+
   /* Check for a nonlocal goto to a containing function.  */
   context = decl_function_context (label);
   if (context != 0 && context != current_function_decl)
@@ -1287,6 +1327,10 @@ expand_asm (body)
   if (TREE_CODE (body) == ADDR_EXPR)
     body = TREE_OPERAND (body, 0);
 
+#ifdef SGI_MONGOOSE
+  Wfe_Expand_Asm_Operands(body, NULL, NULL, NULL, 1, input_filename, lineno);
+#endif /* SGI_MONGOOSE */
+
   emit_insn (gen_rtx_ASM_INPUT (VOIDmode,
 				TREE_STRING_POINTER (body)));
   last_expr_type = 0;
@@ -1341,6 +1385,15 @@ expand_asm_operands (string, outputs, in
       return;
     }
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("asm string", string);
+  dump_parse_tree ("asm outputs", outputs);
+  dump_parse_tree ("asm inputs", inputs);
+  dump_parse_tree ("asm clobbers", clobbers);
+  Wfe_Expand_Asm_Operands (string, outputs, inputs, clobbers, vol,
+                           filename, line);
+#endif /* SGI_MONGOOSE */
+
 #ifdef MD_ASM_CLOBBERS
   /* Sometimes we wish to automatically clobber registers across an asm.
      Case in point is when the i386 backend moved from cc0 to a hard reg --
@@ -1852,6 +1905,10 @@ void
 expand_expr_stmt (exp)
      tree exp;
 {
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("expr stmt", exp);
+#endif /* SGI_MONGOOSE */
+
   /* If -W, warn about statements with no side effects,
      except for an explicit cast to void (e.g. for assert()), and
      except inside a ({...}) where they may be useful.  */
@@ -1912,6 +1969,10 @@ expand_expr_stmt (exp)
   free_temp_slots ();
 
   emit_queue ();
+
+#ifdef SGI_MONGOOSE
+  WFE_One_Stmt (exp);
+#endif /* SGI_MONGOOSE */
 }
 
 /* Warn if EXP contains any computations whose results are not used.
@@ -2046,6 +2107,11 @@ expand_start_stmt_expr ()
   start_sequence_for_rtl_expr (t);
   NO_DEFER_POP;
   expr_stmts_for_value++;
+
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Start_Stmt_Expr (t);
+#endif /* SGI_MONGOOSE */
+
   return t;
 }
 
@@ -2095,6 +2161,10 @@ expand_end_stmt_expr (t)
   /* Propagate volatility of the actual RTL expr.  */
   TREE_THIS_VOLATILE (t) = volatile_refs_p (last_expr_value);
 
+#ifdef SGI_MONGOOSE
+  WFE_Expand_End_Stmt_Expr (t);
+#endif /* SGI_MONGOOSE */
+
   last_expr_type = 0;
   expr_stmts_for_value--;
 
@@ -2114,6 +2184,10 @@ expand_start_cond (cond, exitflag)
 {
   struct nesting *thiscond = ALLOC_NESTING ();
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("if condition", cond);
+#endif /* SGI_MONGOOSE */
+
   /* Make an entry on cond_stack for the cond we are entering.  */
 
   thiscond->next = cond_stack;
@@ -2124,11 +2198,20 @@ expand_start_cond (cond, exitflag)
      unless there are supposed to be exit statements
      to exit this conditional.  */
   thiscond->exit_label = exitflag ? gen_label_rtx () : 0;
+
+#ifdef SGI_MONGOOSE
+  thiscond->exit_label_idx = 0;
+#endif /* SGI_MONGOOSE */
+
   thiscond->data.cond.endif_label = thiscond->exit_label;
   cond_stack = thiscond;
   nesting_stack = thiscond;
 
   do_jump (cond, thiscond->data.cond.next_label, NULL_RTX);
+
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Start_Cond (cond, exitflag);
+#endif /* SGI_MONGOOSE */
 }
 
 /* Generate RTL between then-clause and the elseif-clause
@@ -2158,6 +2241,10 @@ expand_start_else ()
   emit_jump (cond_stack->data.cond.endif_label);
   emit_label (cond_stack->data.cond.next_label);
   cond_stack->data.cond.next_label = 0;  /* No more _else or _elseif calls.  */
+
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Start_Else ();
+#endif /* SGI_MONGOOSE */
 }
 
 /* After calling expand_start_else, turn this "else" into an "else if"
@@ -2187,6 +2274,10 @@ expand_end_cond ()
 
   POPSTACK (cond_stack);
   last_expr_type = 0;
+
+#ifdef SGI_MONGOOSE
+  WFE_Expand_End_Cond ();
+#endif /* SGI_MONGOOSE */
 }
 
 
@@ -2204,6 +2295,10 @@ expand_start_loop (exit_flag)
 {
   register struct nesting *thisloop = ALLOC_NESTING ();
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("start_loop", NULL);
+#endif /* SGI_MONGOOSE */
+
   /* Make an entry on loop_stack for the loop we are entering.  */
 
   thisloop->next = loop_stack;
@@ -2214,6 +2309,11 @@ expand_start_loop (exit_flag)
   thisloop->data.loop.alt_end_label = 0;
   thisloop->data.loop.continue_label = thisloop->data.loop.start_label;
   thisloop->exit_label = exit_flag ? thisloop->data.loop.end_label : 0;
+
+#ifdef SGI_MONGOOSE
+  thisloop->exit_label_idx = 0;
+#endif /* SGI_MONGOOSE */
+
   loop_stack = thisloop;
   nesting_stack = thisloop;
 
@@ -2222,6 +2322,10 @@ expand_start_loop (exit_flag)
   emit_note (NULL_PTR, NOTE_INSN_LOOP_BEG);
   emit_label (thisloop->data.loop.start_label);
 
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Start_Loop (exit_flag, thisloop);
+#endif /* SGI_MONGOOSE */
+
   return thisloop;
 }
 
@@ -2234,6 +2338,11 @@ expand_start_loop_continue_elsewhere (ex
 {
   struct nesting *thisloop = expand_start_loop (exit_flag);
   loop_stack->data.loop.continue_label = gen_label_rtx ();
+
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Start_Loop_Continue_Elsewhere (exit_flag, thisloop);
+#endif /* SGI_MONGOOSE */
+
   return thisloop;
 }
 
@@ -2248,6 +2357,10 @@ expand_loop_continue_here ()
   do_pending_stack_adjust ();
   emit_note (NULL_PTR, NOTE_INSN_LOOP_CONT);
   emit_label (loop_stack->data.loop.continue_label);
+
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Loop_Continue_Here ();
+#endif /* SGI_MONGOOSE */
 }
 
 /* Finish a loop.  Generate a jump back to the top and the loop-exit label.
@@ -2260,6 +2373,10 @@ expand_end_loop ()
   rtx insn = get_last_insn ();
   int needs_end_jump = 1;
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("end_loop", NULL);
+#endif /* SGI_MONGOOSE */
+
   /* Mark the continue-point at the top of the loop if none elsewhere.  */
   if (start_label == loop_stack->data.loop.continue_label)
     emit_note_before (NOTE_INSN_LOOP_CONT, start_label);
@@ -2561,6 +2678,10 @@ expand_end_loop ()
   POPSTACK (loop_stack);
 
   last_expr_type = 0;
+
+#ifdef SGI_MONGOOSE
+  WFE_Expand_End_Loop ();
+#endif /* SGI_MONGOOSE */
 }
 
 /* Generate a jump to the current loop's continue-point.
@@ -2579,6 +2700,11 @@ expand_continue_loop (whichloop)
     return 0;
   expand_goto_internal (NULL_TREE, whichloop->data.loop.continue_label,
 			NULL_RTX);
+
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Continue_Loop (whichloop);
+#endif /* SGI_MONGOOSE */
+
   return 1;
 }
 
@@ -2595,6 +2721,11 @@ expand_exit_loop (whichloop)
   if (whichloop == 0)
     return 0;
   expand_goto_internal (NULL_TREE, whichloop->data.loop.end_label, NULL_RTX);
+
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Exit_Loop (whichloop);
+#endif /* SGI_MONGOOSE */
+
   return 1;
 }
 
@@ -2620,6 +2751,10 @@ expand_exit_loop_if_false (whichloop, co
      necessary, they go before the unconditional branch.  */
 
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("exit loop", cond);
+#endif /* SGI_MONGOOSE */
+
   do_jump (cond, NULL_RTX, label);
   last_insn = get_last_insn ();
   if (GET_CODE (last_insn) == CODE_LABEL)
@@ -2628,6 +2763,10 @@ expand_exit_loop_if_false (whichloop, co
 			NULL_RTX);
   emit_label (label);
 
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Exit_Loop_If_False (whichloop, cond);
+#endif /* SGI_MONGOOSE */
+
   return 1;
 }
 
@@ -2685,6 +2824,10 @@ expand_exit_something ()
   for (n = nesting_stack; n; n = n->all)
     if (n->exit_label != 0)
       {
+#ifdef SGI_MONGOOSE
+        WFE_Expand_Exit_Something (n, cond_stack, loop_stack, case_stack,
+                                   &n->exit_label_idx);
+#endif /* SGI_MONGOOSE */
 	expand_goto_internal (NULL_TREE, n->exit_label, NULL_RTX);
 	return 1;
       }
@@ -2824,6 +2967,10 @@ expand_return (retval)
   tree retval_rhs;
   int cleanups;
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("return value", retval);
+  WFE_Expand_Return (retval);
+#endif /* SGI_MONGOOSE */
   /* If function wants no value, give it none.  */
   if (TREE_CODE (TREE_TYPE (TREE_TYPE (current_function_decl))) == VOID_TYPE)
     {
@@ -2859,6 +3006,7 @@ expand_return (retval)
   if (cleanups || cleanup_label != 0)
     last_insn = get_last_insn ();
 
+#ifndef SGI_MONGOOSE
   /* Distribute return down conditional expr if either of the sides
      may involve tail recursion (see test below).  This enhances the number
      of tail recursions we see.  Don't do this always since it can produce
@@ -2902,6 +3050,7 @@ expand_return (retval)
 	  == current_function_decl)
       && optimize_tail_recursion (TREE_OPERAND (retval_rhs, 1), last_insn))
     return;
+#endif /* SGI_MONGOOSE */
 
 #ifdef HAVE_return
   /* This optimization is safe if there are local cleanups
@@ -3287,6 +3436,9 @@ expand_start_bindings_and_block (flags, 
   thisblock->data.block.first_insn = note;
   thisblock->data.block.block_start_count = ++current_block_start_count;
   thisblock->exit_label = exit_flag ? gen_label_rtx () : 0;
+#ifdef SGI_MONGOOSE
+  thisblock->exit_label_idx = 0;
+#endif /* SGI_MONGOOSE */
   block_stack = thisblock;
   nesting_stack = thisblock;
 
@@ -3711,6 +3863,9 @@ expand_end_bindings (vars, mark_ends, do
 
       if (reachable && thisblock->data.block.stack_level != 0)
 	{
+#ifdef SGI_MONGOOSE
+          WFE_Dealloca (thisblock->data.block.alloca0_st, vars);
+#endif /* SGI_MONGOOSE */
 	  emit_stack_restore (thisblock->next ? SAVE_BLOCK : SAVE_FUNCTION,
 			      thisblock->data.block.stack_level, NULL_RTX);
 	  if (nonlocal_goto_handler_slots != 0)
@@ -3883,6 +4038,9 @@ expand_decl (decl)
 			   &thisblock->data.block.stack_level,
 			   thisblock->data.block.first_insn);
 	  stack_block_stack = thisblock;
+#ifdef SGI_MONGOOSE
+          thisblock->data.block.alloca0_st = WFE_Alloca_0 ();
+#endif /* SGI_MONGOOSE */
 	}
 
       /* In function-at-a-time mode, variable_size doesn't expand this,
@@ -3899,6 +4057,10 @@ expand_decl (decl)
 	 DECL_ALIGN says how the variable is to be aligned and we 
 	 cannot use it to conclude anything about the alignment of
 	 the size.  */
+#ifdef SGI_MONGOOSE
+      WFE_Alloca_ST (decl);
+#endif /* SGI_MONGOOSE */
+
       address = allocate_dynamic_stack_space (size, NULL_RTX,
 					      TYPE_ALIGN (TREE_TYPE (decl)));
 
@@ -4332,6 +4494,9 @@ expand_cleanups (list, dont_do, in_fixup
 		pop_ehqueue ();
 		if (protect)
 		  expand_fixup_region_end (TREE_VALUE (tail));
+#ifdef SGI_MONGOOSE
+                WFE_One_Stmt(TREE_VALUE (tail));
+#endif /* SGI_MONGOOSE */
 		free_temp_slots ();
 	      }
 	  }
@@ -4441,12 +4606,20 @@ expand_start_case (exit_flag, expr, type
 {
   register struct nesting *thiscase = ALLOC_NESTING ();
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("start case", expr);
+  WFE_Expand_Start_Case (exit_flag, expr, type, (char *) printname);
+#endif /* SGI_MONGOOSE */
+
   /* Make an entry on case_stack for the case we are entering.  */
 
   thiscase->next = case_stack;
   thiscase->all = nesting_stack;
   thiscase->depth = ++nesting_depth;
   thiscase->exit_label = exit_flag ? gen_label_rtx () : 0;
+#ifdef SGI_MONGOOSE
+  thiscase->exit_label_idx = 0;
+#endif /* SGI_MONGOOSE */
   thiscase->data.case_stmt.case_list = 0;
   thiscase->data.case_stmt.index_expr = expr;
   thiscase->data.case_stmt.nominal_type = type;
@@ -4480,12 +4653,19 @@ expand_start_case_dummy ()
 {
   register struct nesting *thiscase = ALLOC_NESTING ();
 
+#ifdef SGI_MONGOOSE
+  WFE_Expand_Start_Case_Dummy ();
+#endif /* SGI_MONGOOSE */
+
   /* Make an entry on case_stack for the dummy.  */
 
   thiscase->next = case_stack;
   thiscase->all = nesting_stack;
   thiscase->depth = ++nesting_depth;
   thiscase->exit_label = 0;
+#ifdef SGI_MONGOOSE
+  thiscase->exit_label_idx = 0;
+#endif /* SGI_MONGOOSE */
   thiscase->data.case_stmt.case_list = 0;
   thiscase->data.case_stmt.start = 0;
   thiscase->data.case_stmt.nominal_type = 0;
@@ -4501,6 +4681,10 @@ expand_start_case_dummy ()
 void
 expand_end_case_dummy ()
 {
+#ifdef SGI_MONGOOSE
+  WFE_Expand_End_Case_Dummy ();
+#endif /* SGI_MONGOOSE */
+
   end_cleanup_deferral ();
   POPSTACK (case_stack);
 }
@@ -4615,6 +4799,9 @@ pushcase (value, converter, label, dupli
 	  return 2;
 	}
       case_stack->data.case_stmt.default_label = label;
+#ifdef SGI_MONGOOSE
+      WFE_Record_Switch_Default_Label (label);
+#endif /* SGI_MONGOOSE */
     }
   else
     return add_case_node (value, value, label, duplicate);
@@ -4704,6 +4891,10 @@ add_case_node (low, high, label, duplica
 {
   struct case_node *p, **q, *r;
 
+#ifdef SGI_MONGOOSE
+  WFE_Add_Case_Node (low, high, label);
+#endif /* SGI_MONGOOSE */
+
   q = &case_stack->data.case_stmt.case_list;
   p = *q;
 
@@ -5292,6 +5483,11 @@ expand_end_case (orig_index)
   tree index_expr, index_type;
   int unsignedp;
 
+#ifdef SGI_MONGOOSE
+  dump_parse_tree ("end case", orig_index);
+  WFE_Expand_End_Case (orig_index);
+#endif /* SGI_MONGOOSE */
+
   /* Don't crash due to previous errors.  */
   if (thiscase == NULL)
     return;
@@ -6380,4 +6576,12 @@ emit_case_nodes (index, node, default_la
 	}
     }
 }
+
+#ifdef SGI_MONGOOSE
+int
+get_expr_stmts_for_value ()
+{
+  return expr_stmts_for_value;
+}
+#endif /* SGI_MONGOOSE */
 
diff -dupr ./stor-layout.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/stor-layout.c
--- ./stor-layout.c	2003-02-05 17:48:02.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/stor-layout.c	2001-03-12 23:29:43.000000000 +0100
@@ -397,6 +397,38 @@ layout_decl (decl, known_align)
 	}
     }
 }
+
+#ifdef SGI_MONGOOSE
+/* assign field ids (field numbers); because of forward declarations, needs to
+   call itself recursively if a nested record has not yet been processed */
+static void
+assign_field_ids (tree rec)
+{
+  register tree field;
+  int next_field_id;
+  int fields_in_field;
+
+  if (TYPE_FIELD_IDS_USED(rec) > 0)
+    return; /* already done before */
+  next_field_id = 1;
+  for (field = TYPE_FIELDS (rec); field; field = TREE_CHAIN (field))
+    {
+      DECL_FIELD_ID(field) = next_field_id;
+      fields_in_field = TYPE_FIELD_IDS_USED(TREE_TYPE(field));
+      if (fields_in_field == 0 && 
+	  (TREE_CODE(TREE_TYPE(field)) == RECORD_TYPE ||
+	   TREE_CODE(TREE_TYPE(field)) == UNION_TYPE ||
+	   TREE_CODE(TREE_TYPE(field)) == QUAL_UNION_TYPE)) {
+	  assign_field_ids(TREE_TYPE(field));
+          fields_in_field = TYPE_FIELD_IDS_USED(TREE_TYPE(field));
+	}
+      next_field_id += fields_in_field + 1;
+    }
+  /* set the total number of field ids used in this record */
+  TYPE_FIELD_IDS_USED(rec) = next_field_id - 1;
+}
+#endif /* SGI_MONGOOSE */
+
 
 /* Begin laying out type T, which may be a RECORD_TYPE, UNION_TYPE, or
    QUAL_UNION_TYPE.  Return a pointer to a struct record_layout_info which
@@ -1432,6 +1464,9 @@ layout_type (type)
 
 	/* Finish laying out the record.  */
 	finish_record_layout (rli);
+#ifdef SGI_MONGOOSE
+      assign_field_ids(type);
+#endif /* SGI_MONGOOSE */
       }
       break;
 
Only in .: TESTS.FLUNK
Only in .: testsuite
Only in .: texinfo.tex
Only in .: tm.texi
diff -dupr ./toplev.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/toplev.c
--- ./toplev.c	2003-02-05 17:48:02.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/toplev.c	2001-03-12 23:29:43.000000000 +0100
@@ -164,7 +164,12 @@ static void pipe_closed PARAMS ((int)) A
 /* This might or might not be used in ASM_IDENTIFY_LANGUAGE. */
 static void output_lang_identify PARAMS ((FILE *)) ATTRIBUTE_UNUSED;
 #endif
+#ifdef SGI_MONGOOSE
+void compile_file PARAMS ((char *));
+int parse_tree_dump = 0;
+#else
 static void compile_file PARAMS ((const char *));
+#endif /* SGI_MONGOOSE */
 static void display_help PARAMS ((void));
 static void mark_file_stack PARAMS ((void *));
 
@@ -281,6 +286,9 @@ enum dump_file_index
   DFI_mach,
   DFI_dbr,
   DFI_stack,
+#ifdef SGI_MONGOOSE
+  DFI_sgi_parse_tree,
+#endif /* SGI_MONGOOSE */
   DFI_MAX
 };
 
@@ -324,6 +332,9 @@ struct dump_file_info dump_file[DFI_MAX]
   { "mach",	'M', 1, 0, 0 },
   { "dbr",	'd', 0, 0, 0 },
   { "stack",	'k', 1, 0, 0 },
+#ifdef SGI_MONGOOSE
+  { "sgi_parse_tree", 'P', 0, 0, 0 },
+#endif /* SGI_MONGOOSE */
 };
 
 static int open_dump_file PARAMS ((enum dump_file_index, tree));
@@ -458,7 +469,15 @@ int in_system_header = 0;
 /* Don't print functions as they are compiled and don't print
    times taken by the various passes.  -quiet.  */
 
+#ifdef SGI_MONGOOSE
+int quiet_flag = 1;
+#else
 int quiet_flag = 0;
+#endif /* SGI_MONGOOSE */
+
+#ifdef SGI_MONGOOSE
+int pstatic_as_global = 0;
+#endif /* SGI_MONGOOSE */
 
 /* -f flags.  */
 
@@ -771,6 +790,16 @@ int flag_verbose_asm = 0;
 
 int flag_debug_asm = 0;
 
+#ifdef SGI_MONGOOSE
+
+/* -dC causes asm operand constraints that aren't valid or supported
+   for the target machine to force the entire containing asm statement
+   to be discarded. This is a temporary hack. RK 990428 */
+
+int flag_bad_asm_constraint_kills_stmt = 0;
+
+#endif /* SGI_MONGOOSE */
+
 /* -fgnu-linker specifies use of the GNU linker for initializations.
    (Or, more generally, a linker that handles initializations.)
    -fno-gnu-linker says that collect2 will be used.  */
@@ -1410,6 +1439,10 @@ FILE *asm_out_file;
 FILE *aux_info_file;
 FILE *rtl_dump_file = NULL;
 
+#ifdef SGI_MONGOOSE
+FILE *tree_dump_file = NULL;
+#endif /* SGI_MONGOOSE */
+
 /* Decode the string P as an integral parameter.
    If the string is indeed an integer return its numeric value else
    issue an Invalid Option error for the option PNAME and return DEFVAL.
@@ -1441,6 +1474,17 @@ read_integral_parameter (p, pname, defva
   return atoi (p);
 }
 
+#ifdef SGI_MONGOOSE
+void
+dump_parse_tree (char *msg, tree node)
+{
+  if (parse_tree_dump) {
+        fprintf (tree_dump_file, "%s:\n", msg);
+        print_tree (tree_dump_file, node);
+  }
+}
+#endif /* SGI_MONGOOSE */
+
 
 /* This is the default decl_printable_name function.  */
 
@@ -1896,6 +1940,10 @@ wrapup_global_declarations (vec, len)
 	      output_inline_function (decl);
 	      permanent_allocation (1);
 	    }
+#ifdef SGI_MONGOOSE
+          /* TREE_ASM_WRITTEN is not set, so set by hand */
+          TREE_ASM_WRITTEN (decl) = 1;
+#endif /* SGI_MONGOOSE */
 	}
 
       if (reconsider)
@@ -2061,12 +2109,24 @@ pop_srcloc ()
   lineno = input_file_stack->line;
 }
 
+#ifdef SGI_MONGOOSE
+/* split compile_file into two parts so that the first part
+ * gets the "real" name from the top of the cpp file
+ * (needed for dwarf generation),
+ * then the second part does the compile.
+ */
+static char *
+init_compile_file (name)
+     char *name;
+#else
+
 /* Compile an entire file of output from cpp, named NAME.
    Write a file of assembly output and various debugging dumps.  */
 
 static void
 compile_file (name)
      const char *name;
+#endif /* SGI_MONGOOSE */
 {
   tree globals;
 
@@ -2085,6 +2145,13 @@ compile_file (name)
   init_obstacks ();
   init_tree_codes ();
   name = init_parse (name);
+
+#ifdef SGI_MONGOOSE
+  if (parse_tree_dump) {
+    open_dump_file (DFI_sgi_parse_tree, NULL);
+  }
+#endif /* SGI_MONGOOSE */
+
   init_emit_once (debug_info_level == DINFO_LEVEL_NORMAL
 		  || debug_info_level == DINFO_LEVEL_VERBOSE
 		  || flag_test_coverage
@@ -2122,6 +2189,9 @@ compile_file (name)
 
   /* Open assembler code output file.  */
 
+#ifdef SGI_MONGOOSE
+   asm_out_file = NULL;
+#else
   if (flag_syntax_only)
     asm_out_file = NULL;
   else
@@ -2152,6 +2222,7 @@ compile_file (name)
 	       _IOFBF, IO_BUFFER_SIZE);
 #endif
     }
+#endif /* SGI_MONGOOSE */
 
   if (ggc_p && name != 0)
     name = ggc_alloc_string (name, strlen (name));
@@ -2170,6 +2241,25 @@ compile_file (name)
   if (main_input_filename == 0)
     main_input_filename = name;
 
+#ifdef SGI_MONGOOSE
+
+  return main_input_filename;
+}
+
+/* Compile an entire file of output from cpp, named NAME.
+   Write a file of assembly output and various debugging dumps.  */
+
+void
+compile_file (name)
+     char *name;
+{
+  tree globals;
+  int start_time;
+
+#endif /* SGI_MONGOOSE */
+
+#ifndef SGI_MONGOOSE
+
   if (flag_syntax_only)
     {
       write_symbols = NO_DEBUG;
@@ -2275,6 +2365,8 @@ compile_file (name)
 #endif
   timevar_pop (TV_SYMOUT);
 
+#endif /* SGI_MONGOOSE */
+
   /* Initialize yet another pass.  */
 
   init_final (main_input_filename);
@@ -2296,6 +2388,13 @@ compile_file (name)
 	poplevel (0, 0, 0);
     }
 
+#ifdef SGI_MONGOOSE
+  if (parse_tree_dump)
+    {
+      close_dump_file (DFI_sgi_parse_tree, NULL, NULL_RTX);
+    }
+#endif /* SGI_MONGOOSE */
+
   /* Compilation is now finished except for writing
      what's left of the symbol table output.  */
 
@@ -2389,9 +2488,11 @@ compile_file (name)
       timevar_pop (TV_DUMP);
     }
    
+#ifndef SGI_MONGOOSE
 #ifdef ASM_FILE_END
   ASM_FILE_END (asm_out_file);
 #endif
+#endif /* SGI_MONGOOSE */
 
   /* Language-specific end of compilation actions.  */
  finish_syntax:
@@ -2420,9 +2521,11 @@ compile_file (name)
 
   finish_parse ();
 
+#ifndef SGI_MONGOOSE
   if (! flag_syntax_only
       && (ferror (asm_out_file) != 0 || fclose (asm_out_file) != 0))
     fatal_io_error (asm_file_name);
+#endif /* SGI_MONGOOSE */
 
   /* Do whatever is necessary to finish printing the graphs.  */
   if (graph_dump_format != no_graph)
@@ -2489,6 +2592,7 @@ rest_of_decl_compilation (decl, asmspec,
     {
       timevar_push (TV_VARCONST);
       make_decl_rtl (decl, asmspec, top_level);
+#ifndef SGI_MONGOOSE
       /* Initialized extern variable exists to be replaced
 	 with its value, or represents something that will be
 	 output in another file.  */
@@ -2508,6 +2612,7 @@ rest_of_decl_compilation (decl, asmspec,
 	  ASM_FINISH_DECLARE_OBJECT (asm_out_file, decl,
 				     top_level, at_end);
 	}
+#endif /* SGI_MONGOOSE */
       timevar_pop (TV_VARCONST);
     }
   else if (DECL_REGISTER (decl) && asmspec != 0)
@@ -2516,6 +2621,9 @@ rest_of_decl_compilation (decl, asmspec,
 	{
 	  DECL_RTL (decl) = 0;
 	  make_decl_rtl (decl, asmspec, top_level);
+#ifdef SGI_MONGOOSE
+          WFE_Record_Asmspec_For_ST (decl, asmspec, decode_reg_name (asmspec));
+#endif /* SGI_MONGOOSE */
 	}
       else
 	error ("invalid register name `%s' for register variable", asmspec);
@@ -3885,12 +3993,22 @@ decode_d_option (arg)
       case 'A':
 	flag_debug_asm = 1;
 	break;
+#ifdef SGI_MONGOOSE
+      case 'C':
+	flag_bad_asm_constraint_kills_stmt = 1;
+	break;
+#endif /* SGI_MONGOOSE */
       case 'm':
 	flag_print_mem = 1;
 	break;
       case 'p':
 	flag_print_asm_name = 1;
 	break;
+#ifdef SGI_MONGOOSE
+      case 'P':
+	parse_tree_dump = 1;
+	break;
+#endif /* SGI_MONGOOSE */
       case 'v':
 	graph_dump_format = vcg;
 	break;
@@ -4258,6 +4376,10 @@ independent_decode_option (argc, argv, s
 	pedantic = 1;
       else if (!strcmp (arg, "pedantic-errors"))
 	flag_pedantic_errors = pedantic = 1;
+#ifdef SGI_MONGOOSE
+          else if (!strcmp (arg, "pstatic_as_global"))
+            pstatic_as_global = 1;
+#endif /* SGI_MONGOOSE */
       else if (arg[1] == 0)
 	profile_flag = 1;
       else
@@ -4384,12 +4506,19 @@ independent_decode_option (argc, argv, s
    Exit code is 35 if can't open files, 34 if fatal error,
    33 if had nonfatal errors, else success.  */
 
+#ifdef SGI_MONGOOSE
+char *
+gnu_init (argc, argv)
+     int argc;
+     char **argv;
+#else
 extern int main PARAMS ((int, char **));
 
 int
 main (argc, argv)
      int argc;
      char **argv;
+#endif /* SGI_MONGOOSE */
 {
   register int i;
   char *p;
@@ -4450,6 +4579,12 @@ main (argc, argv)
 	  /* Handle -Os, -O2, -O3, -O69, ...  */
 	  char *p = &argv[i][2];
 	  
+#ifdef SGI_MONGOOSE
+          if (!strncmp(p, "PT:", 3))
+            {
+            }
+          else
+#endif /* SGI_MONGOOSE */
 	  if ((p[0] == 's') && (p[1] == 0))
 	    {
 	      optimize_size = 1;
@@ -4699,6 +4834,9 @@ main (argc, argv)
 	print_switch_values (stderr, 0, MAX_LINE, "", " ", "\n");
     }
 
+#ifdef SGI_MONGOOSE
+  return (init_compile_file (filename));
+#else
   compile_file (filename);
 
 #if !defined(OS2) && !defined(VMS) && (!defined(_WIN32) || defined (__CYGWIN__)) && !defined(__INTERIX)
@@ -4724,7 +4862,18 @@ main (argc, argv)
   if (sorrycount)
     return (FATAL_EXIT_CODE);
   return (SUCCESS_EXIT_CODE);
+#endif /* SGI_MONGOOSE */
+}
+
+#ifdef SGI_MONGOOSE
+void
+check_gnu_errors (int *error_count, int *sorry_count)
+{
+  *error_count = errorcount;
+  *sorry_count = sorrycount;
 }
+#endif /* SGI_MONGOOSE */
+
 
 /* Decode -m switches.  */
 /* Decode the switch -mNAME.  */
diff -dupr ./toplev.h /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/toplev.h
--- ./toplev.h	2003-02-05 17:45:17.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/toplev.h	2001-03-12 23:29:43.000000000 +0100
@@ -142,4 +142,8 @@ extern int sorrycount;
 extern const char *progname;
 
 extern void set_fatal_function PARAMS ((void (*) (const char *, va_list)));
+
+#ifdef SGI_MONGOOSE
+extern void dump_parse_tree    PARAMS ((char *, union tree_node *));
+#endif /* SGI_MONGOOSE */
 #endif /* __GCC_TOPLEV_H */
diff -dupr ./tree.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/tree.c
--- ./tree.c	2003-02-05 17:45:17.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/tree.c	2001-03-12 23:29:43.000000000 +0100
@@ -1076,6 +1076,17 @@ make_node (code)
       /* Note that we have not yet computed the alias set for this
 	 declaration.  */
       DECL_POINTER_ALIAS_SET (t) = -1;
+#ifdef SGI_MONGOOSE
+      if (code == VAR_DECL || code == FUNCTION_DECL)
+        {
+          extern unsigned char Current_scope;
+          t->decl.symtab_idx = Current_scope;
+        }
+      {
+      static struct mongoose_gcc_DST_IDX de = {-1,-1};
+      DECL_DST_IDX(t) = de;
+      }
+#endif /* SGI_MONGOOSE */
       break;
 
     case 't':
@@ -1090,6 +1101,13 @@ make_node (code)
       /* Note that we have not yet computed the alias set for this
 	 type.  */
       TYPE_ALIAS_SET (t) = -1;
+#ifdef SGI_MONGOOSE
+      {
+        // Relys on duplicating the *implementation* of DST_INVALID_INIT
+        static struct mongoose_gcc_DST_IDX di = {-1,-1};
+        TYPE_DST_IDX(t) = di;
+      }
+#endif /* SGI_MONGOOSE */
       break;
 
     case 'c':
diff -dupr ./tree.def /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/tree.def
--- ./tree.def	2003-02-05 17:41:12.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/tree.def	2001-03-12 23:29:43.000000000 +0100
@@ -271,7 +271,11 @@ DEFTREECODE (COMPLEX_CST, "complex_cst",
 
 /* Contents are TREE_STRING_LENGTH and TREE_STRING_POINTER fields.
    Also there is TREE_CST_RTL.  */
+#ifdef SGI_MONGOOSE
+DEFTREECODE (STRING_CST, "string_cst", 'c', 4)
+#else
 DEFTREECODE (STRING_CST, "string_cst", 'c', 3)
+#endif /* SGI_MONGOOSE */
 
 /* Declarations.  All references to names are represented as ..._DECL nodes.
    The decls in one binding context are chained through the TREE_CHAIN field.
diff -dupr ./tree.h /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/tree.h
--- ./tree.h	2003-02-05 17:45:17.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/tree.h	2001-06-25 08:32:44.000000000 +0200
@@ -39,6 +39,16 @@ enum tree_code {
 
 #undef DEFTREECODE
 
+#ifdef SGI_MONGOOSE
+typedef unsigned int LABEL_IDX;
+struct mongoose_gcc_DST_IDX {unsigned int block; unsigned int offset; };
+#if defined(__cplusplus)
+class ST;
+#else
+typedef struct st ST;
+#endif /* __cplusplus */
+#endif /* SGI_MONGOOSE */
+
 /* Number of language-independent tree codes.  */
 #define NUM_TREE_CODES ((int) LAST_AND_UNUSED_TREE_CODE)
 
@@ -127,7 +137,11 @@ struct tree_common
 {
   union tree_node *chain;
   union tree_node *type;
+#ifndef linux 
+  unsigned int code : 8;
+#else
   ENUM_BITFIELD(tree_code) code : 8;
+#endif /* linux */
   unsigned side_effects_flag : 1;
   unsigned constant_flag : 1;
   unsigned permanent_flag : 1;
@@ -701,6 +715,9 @@ struct tree_real_cst
 /* In a STRING_CST */
 #define TREE_STRING_LENGTH(NODE) (STRING_CST_CHECK (NODE)->string.length)
 #define TREE_STRING_POINTER(NODE) (STRING_CST_CHECK (NODE)->string.pointer)
+#ifdef SGI_MONGOOSE
+#define TREE_STRING_ST(NODE) (STRING_CST_CHECK (NODE)->string.st)
+#endif /* SGI_MONGOOSE */
 
 struct tree_string
 {
@@ -709,6 +726,9 @@ struct tree_string
 				   (rtl) info */
   int length;
   char *pointer;
+#ifdef SGI_MONGOOSE
+  ST *st;     /* for storing whirl symtab idx */
+#endif /* SGI_MONGOOSE */
 };
 
 /* In a COMPLEX_CST node.  */
@@ -905,6 +925,18 @@ struct tree_block
    neither a RECORD_TYPE, QUAL_UNION_TYPE, nor a UNION_TYPE.  */
 #define TYPE_BINFO(NODE) (TYPE_CHECK (NODE)->type.binfo)
 
+#ifdef SGI_MONGOOSE
+/* WHIRL TY idx */
+#define TYPE_TY_IDX(NODE) (TYPE_CHECK (NODE)->type.ty_idx)
+#define TYPE_FIELD_IDS_USED(NODE) (TYPE_CHECK (NODE)->type.field_ids_used)
+/* Because we are using a local struct (no DST directly visible)
+   (forced because DST id is a POD struct)
+   and wish to use gcc-consistent terminology, DST clients
+   must copy into/out-of struct mongoose_gcc_DST_IDX before/after
+   using the following */
+#define TYPE_DST_IDX(NODE) (TYPE_CHECK(NODE)->type.dst_id)
+#endif /* SGI_MONGOOSE */
+
 /* The (language-specific) typed-based alias set for this type.
    Objects whose TYPE_ALIAS_SETs are different cannot alias each
    other.  If the TYPE_ALIAS_SET is -1, no alias set has yet been
@@ -1083,7 +1115,11 @@ struct tree_type
   unsigned int uid;
 
   unsigned int precision : 9;
+#ifndef linux
+  unsigned mode : 7;
+#else
   ENUM_BITFIELD(machine_mode) mode : 7;
+#endif /* linux */
 
   unsigned string_flag : 1;
   unsigned no_force_blk_flag : 1;
@@ -1117,6 +1153,11 @@ struct tree_type
   int alias_set;
   /* Points to a structure whose details depend on the language in use.  */
   struct lang_type *lang_specific;
+#ifdef SGI_MONGOOSE
+  unsigned int ty_idx;  /* whirl type idx */
+  unsigned int field_ids_used;  /* for structs and unions only; 0 otherwise */
+  struct mongoose_gcc_DST_IDX dst_id; /* whirl DST */
+#endif /* SGI_MONGOOSE */
 };
 
 /* Define accessor macros for information about type inheritance
@@ -1369,6 +1410,15 @@ struct tree_type
 /* Language-specific decl information.  */
 #define DECL_LANG_SPECIFIC(NODE) (DECL_CHECK (NODE)->decl.lang_specific)
 
+#ifdef SGI_MONGOOSE
+/* WHIRL symtab idx */
+#define DECL_ST(NODE) (DECL_CHECK (NODE)->decl.sgi_u1.st)
+#define DECL_ST2(NODE) (DECL_CHECK (NODE)->decl.sgi_u2.st2)
+/* field number within the enclosing struct */
+#define DECL_FIELD_ID(NODE) (DECL_CHECK (NODE)->decl.sgi_u1.field_id)
+#define DECL_DST_IDX(NODE) (TYPE_CHECK(NODE)->decl.decl_dst_id)
+#endif /* SGI_MONGOOSE */
+
 /* In a VAR_DECL or FUNCTION_DECL,
    nonzero means external reference:
    do not allocate storage, and refer to a definition elsewhere.  */
@@ -1441,7 +1491,9 @@ struct tree_type
 #define DECL_IN_TEXT_SECTION(NODE) (VAR_DECL_CHECK (NODE)->decl.bit_field_flag)
 
 /* In a FUNCTION_DECL, nonzero means a built in function.  */
-#define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN)
+/* #define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN) */
+/* MPM fix for weird gcc-2.95.2 compiler bug display in wfe_expr.c++, line 2471 */
+#define DECL_BUILT_IN(NODE) (!(DECL_BUILT_IN_CLASS (NODE) == NOT_BUILT_IN))
 /* For a builtin function, identify which part of the compiler defined it.  */
 #define DECL_BUILT_IN_CLASS(NODE) \
 (FUNCTION_DECL_CHECK (NODE)->decl.built_in_class)
@@ -1539,6 +1591,14 @@ struct tree_type
    argument's depth.  */
 #define DECL_POINTER_DEPTH(DECL) (DECL_CHECK (DECL)->decl.pointer_depth)
 
+#ifdef SGI_MONGOOSE
+/* Used to indicate that this FUNCTION_DECL has syscall_linkage */
+#define DECL_SYSCALL_LINKAGE(NODE) (DECL_CHECK (NODE)->decl.syscall_linkage_flag)
+
+/* Used to indicate that this FUNCTION_DECL return needs to be widened */
+#define DECL_WIDEN_RETVAL(NODE) (DECL_CHECK (NODE)->decl.widen_retval_flag)
+#endif /* SGI_MONGOOSE */
+
 struct tree_decl
 {
   char common[sizeof (struct tree_common)];
@@ -1546,7 +1606,11 @@ struct tree_decl
   int linenum;
   unsigned int uid;
   union tree_node *size;
+#ifndef linux
+  unsigned mode : 8;
+#else
   ENUM_BITFIELD(machine_mode) mode : 8;
+#endif /* linux */
 
   unsigned external_flag : 1;
   unsigned nonlocal_flag : 1;
@@ -1573,7 +1637,11 @@ struct tree_decl
   unsigned malloc_flag : 1;
   unsigned no_limit_stack : 1;
   unsigned pure_flag : 1;
+#ifndef linux
+  unsigned built_in_class : 2;
+#else
   ENUM_BITFIELD(built_in_class) built_in_class : 2;
+#endif /* linux */
   unsigned pointer_depth : 2;
 
   unsigned lang_flag_0 : 1;
@@ -1585,6 +1653,11 @@ struct tree_decl
   unsigned lang_flag_6 : 1;
   unsigned lang_flag_7 : 1;
 
+#ifdef SGI_MONGOOSE
+  unsigned syscall_linkage_flag : 1;    /* has syscall_linkage attribute */
+  unsigned widen_retval_flag : 1;       /* widen return value attribute */
+#endif /* SGI_MONGOOSE */
+
   /* For a FUNCTION_DECL, if inline, this is the size of frame needed.
      If built-in, this is the code for which built-in function.
      For other kinds of decls, this is DECL_ALIGN and DECL_OFFSET_ALIGN.  */
@@ -1623,6 +1696,21 @@ struct tree_decl
   int pointer_alias_set;
   /* Points to a structure whose details depend on the language in use.  */
   struct lang_decl *lang_specific;
+
+#ifdef SGI_MONGOOSE
+  unsigned symtab_idx    : 8;  /* whirl SYMTAB_IDX */
+  unsigned label_defined : 1;
+
+  union {
+    ST *st;                   /* whirl ST entry for symbol if st_allocated */
+    LABEL_IDX label_idx;
+    unsigned int field_id;    /* field id within the enclosing struct */
+  } sgi_u1;
+  union {
+    ST *st2;
+  } sgi_u2;
+  struct mongoose_gcc_DST_IDX decl_dst_id; /* whirl DST */
+#endif /* SGI_MONGOOSE */
 };
 
 /* Define the overall contents of a tree node.
@@ -2113,7 +2201,11 @@ extern tree nreverse			PARAMS ((tree));
 /* Returns the length of a chain of nodes
    (number of chain pointers to follow before reaching a null pointer).  */
 
+#if defined(SGI_MONGOOSE) && defined(__cplusplus)
+extern "C" int list_length              PARAMS ((tree));
+#else
 extern int list_length			PARAMS ((tree));
+#endif /* SGI_MONGOOSE */
 
 /* Returns the number of FIELD_DECLs in a type.  */
 
@@ -2709,6 +2801,9 @@ extern void print_rtl			PARAMS ((FILE *,
 /* In print-tree.c */
 extern void debug_tree			PARAMS ((tree));
 #ifdef BUFSIZ
+#ifdef SGI_MONGOOSE
+extern void print_tree                  PARAMS ((FILE *, tree));
+#endif /* SGI_MONGOOSE */
 extern void print_node			PARAMS ((FILE *, const char *, tree,
 						 int));
 extern void print_node_brief		PARAMS ((FILE *, const char *, tree,
diff -dupr ./varasm.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/varasm.c
--- ./varasm.c	2003-02-05 17:45:17.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/varasm.c	2001-03-12 23:29:44.000000000 +0100
@@ -52,6 +52,10 @@ Boston, MA 02111-1307, USA.  */
 #include "xcoffout.h"
 #endif
 
+#ifdef SGI_MONGOOSE
+#include "wfe_decl.h"
+#endif /* SGI_MONGOOSE */
+
 #ifndef TRAMPOLINE_ALIGNMENT
 #define TRAMPOLINE_ALIGNMENT FUNCTION_BOUNDARY
 #endif
@@ -746,6 +750,9 @@ make_decl_rtl (decl, asmspec, top_level)
 	    {
 	      /* Make this register global, so not usable for anything
 		 else.  */
+#ifdef SGI_MONGOOSE
+              WFE_Record_Asmspec_For_ST (decl, asmspec, reg_number);
+#endif /* SGI_MONGOOSE */
 #ifdef ASM_DECLARE_REGISTER_GLOBAL
 	      ASM_DECLARE_REGISTER_GLOBAL (asm_out_file, decl, reg_number, name);
 #endif
@@ -893,12 +900,18 @@ void
 assemble_asm (string)
      tree string;
 {
+#ifndef SGI_MONGOOSE
   app_enable ();
+#endif /* SGI_MONGOOSE */
 
   if (TREE_CODE (string) == ADDR_EXPR)
     string = TREE_OPERAND (string, 0);
 
+#ifdef SGI_MONGOOSE
+  WFE_Assemble_Asm(TREE_STRING_POINTER (string));
+#else
   fprintf (asm_out_file, "\t%s\n", TREE_STRING_POINTER (string));
+#endif /* SGI_MONGOOSE */
 }
 
 #if 0 /* This should no longer be needed, because
@@ -926,6 +939,9 @@ void
 assemble_destructor (name)
      const char *name;
 {
+#ifdef SGI_MONGOOSE
+  WFE_Assemble_Destructor (name);
+#else
 #ifdef ASM_OUTPUT_DESTRUCTOR
   ASM_OUTPUT_DESTRUCTOR (asm_out_file, name);
 #else
@@ -938,6 +954,7 @@ assemble_destructor (name)
       fputc ('\n', asm_out_file);
     }
 #endif
+#endif /* SGI_MONGOOSE */
 }
 
 /* Likewise for global constructors.  */
@@ -946,6 +963,9 @@ void
 assemble_constructor (name)
      const char *name;
 {
+#ifdef SGI_MONGOOSE
+  WFE_Assemble_Constructor (name);
+#else
 #ifdef ASM_OUTPUT_CONSTRUCTOR
   ASM_OUTPUT_CONSTRUCTOR (asm_out_file, name);
 #else
@@ -958,6 +978,7 @@ assemble_constructor (name)
       fputc ('\n', asm_out_file);
     }
 #endif
+#endif /* SGI_MONGOOSE */
 }
 
 /* Likewise for entries we want to record for garbage collection.
@@ -1123,6 +1144,10 @@ void
 assemble_zeros (size)
      int size;
 {
+#ifdef SGI_MONGOOSE
+  WFE_Add_Aggregate_Init_Padding (size);
+  return;
+#else
   /* Do no output if -fsyntax-only.  */
   if (flag_syntax_only)
     return;
@@ -1161,6 +1186,7 @@ assemble_zeros (size)
 #endif
     if (size > 0)
       ASM_OUTPUT_SKIP (asm_out_file, size);
+#endif /* SGI_MONGOOSE */
 }
 
 /* Assemble an alignment pseudo op for an ALIGN-bit boundary.  */
@@ -1180,6 +1206,10 @@ assemble_string (p, size)
      const char *p;
      int size;
 {
+#ifdef SGI_MONGOOSE
+  WFE_Add_Aggregate_Init_String (p, size);
+  return;
+#else
   int pos = 0;
   int maximum = 2000;
 
@@ -1196,6 +1226,7 @@ assemble_string (p, size)
       pos += thissize;
       p += thissize;
     }
+#endif /* SGI_MONGOOSE */
 }
 
 
@@ -1329,6 +1360,10 @@ assemble_variable (decl, top_level, at_e
      int at_end ATTRIBUTE_UNUSED;
      int dont_output_data;
 {
+#ifdef SGI_MONGOOSE
+  WFE_Start_Aggregate_Init (decl);
+  return;
+#else
   register const char *name;
   unsigned int align;
   int reloc = 0;
@@ -1672,6 +1707,7 @@ assemble_variable (decl, top_level, at_e
   /* There must be a statement after a label.  */
   ;
 #endif
+#endif /* SGI_MONGOOSE */
 }
 
 /* Return 1 if type TYPE contains any pointers.  */
@@ -1741,6 +1777,7 @@ void
 assemble_external_libcall (fun)
      rtx fun ATTRIBUTE_UNUSED;
 {
+#ifndef SGI_MONGOOSE
 #ifdef ASM_OUTPUT_EXTERNAL_LIBCALL
   /* Declare library function name external when first used, if nec.  */
   if (! SYMBOL_REF_USED (fun))
@@ -1749,6 +1786,7 @@ assemble_external_libcall (fun)
       ASM_OUTPUT_EXTERNAL_LIBCALL (asm_out_file, fun);
     }
 #endif
+#endif /* SGI_MONGOOSE */
 }
 
 /* Declare the label NAME global.  */
@@ -1889,6 +1927,20 @@ assemble_integer (x, size, force)
      int size;
      int force;
 {
+#ifdef SGI_MONGOOSE
+  long long ival;
+  if (GET_CODE(x) == CONST_DOUBLE) {
+        ival = CONST_DOUBLE_HIGH(x);
+        ival <<= 32;
+        /* cast to unsigned so not sign-extended */
+        ival |= (unsigned int) CONST_DOUBLE_LOW(x);
+  }
+  else {
+        ival = INTVAL(x);
+  }
+  WFE_Add_Aggregate_Init_Integer (ival, size);
+  return 1;
+#else
   /* First try to use the standard 1, 2, 4, 8, and 16 byte
      ASM_OUTPUT... macros.  */
 
@@ -1970,6 +2022,7 @@ assemble_integer (x, size, force)
     abort ();
 
   return 0;
+#endif /* SGI_MONGOOSE */
 }
 
 /* Assemble the floating-point constant D into an object of size MODE.  */
@@ -1979,6 +2032,10 @@ assemble_real (d, mode)
      REAL_VALUE_TYPE d;
      enum machine_mode mode;
 {
+#ifdef SGI_MONGOOSE
+  WFE_Add_Aggregate_Init_Real (d, GET_MODE_SIZE(mode));
+  return;
+#else
   jmp_buf output_constant_handler;
 
   if (setjmp (output_constant_handler))
@@ -2035,6 +2092,7 @@ assemble_real (d, mode)
     }
 
   set_float_handler (NULL_PTR);
+#endif /* SGI_MONGOOSE */
 }
 
 /* Here we combine duplicate floating constants to make
@@ -3182,6 +3240,10 @@ output_constant_def_contents (exp, reloc
      int reloc;
      int labelno;
 {
+#ifdef SGI_MONGOOSE
+  /* don't want to process this constant here */
+  return;
+#else
   int align;
 
   if (IN_NAMED_SECTION (exp))
@@ -3218,6 +3280,7 @@ output_constant_def_contents (exp, reloc
 		    ? TREE_STRING_LENGTH (exp)
 		    : int_size_in_bytes (TREE_TYPE (exp))));
 
+#endif /* SGI_MONGOOSE */
 }
 
 /* Structure to represent sufficient information about a constant so that
@@ -4283,6 +4346,33 @@ output_constant (exp, size)
 	     || TREE_CODE (exp) == NON_LVALUE_EXPR)
 	exp = TREE_OPERAND (exp, 0);
 
+#ifdef SGI_MONGOOSE
+      if (TREE_CODE(exp) == ADDR_EXPR &&
+          (code == POINTER_TYPE || code == INTEGER_TYPE))
+      {
+        WFE_Add_Aggregate_Init_Address (TREE_OPERAND(exp,0));
+        return;
+      }
+      else if (TREE_CODE(exp) == PLUS_EXPR && code == POINTER_TYPE
+        && TREE_CODE(TREE_OPERAND(exp,0)) == ADDR_EXPR
+        && TREE_CODE(TREE_OPERAND(exp,1)) == INTEGER_CST)
+      {
+        WFE_Add_Aggregate_Init_Address (exp);
+        return;
+      }
+      else if (code == POINTER_TYPE)
+      {
+        WFE_Add_Aggregate_Init_Address (exp);
+        return;
+      }
+      else
+      if (code == INTEGER_TYPE &&
+          TREE_CODE(exp) == PLUS_EXPR &&
+          TREE_CODE (TREE_TYPE (exp)) == POINTER_TYPE) {
+        WFE_Add_Aggregate_Init_Address (exp);
+        return;
+      }
+#endif /* SGI_MONGOOSE */
       if (! assemble_integer (expand_expr (exp, NULL_RTX, VOIDmode,
 					   EXPAND_INITIALIZER),
 			      size, 0))
@@ -4663,6 +4753,10 @@ add_weak (name, value)
   weak->value = value;
   weak_decls = weak;
 
+#ifdef SGI_MONGOOSE
+  WFE_Add_Weak();
+#endif /* SGI_MONGOOSE */
+
   return 1;
 }
 #endif /* HANDLE_PRAGMA_WEAK */
@@ -4694,6 +4788,9 @@ void
 weak_finish ()
 {
 #ifdef HANDLE_PRAGMA_WEAK
+#ifdef SGI_MONGOOSE
+  WFE_Weak_Finish();
+#else
   if (HANDLE_PRAGMA_WEAK)
     {
       struct weak_syms *t;
@@ -4707,6 +4804,7 @@ weak_finish ()
 	    }
 	}
     }
+#endif /* SGI_MONGOOSE */
 #endif
 }
 
@@ -4736,6 +4834,10 @@ void
 assemble_alias (decl, target)
      tree decl, target ATTRIBUTE_UNUSED;
 {
+#ifdef SGI_MONGOOSE
+  make_decl_rtl (decl, (char *) 0, 1);
+  WFE_Assemble_Alias (decl, target);
+#else
   const char *name;
 
   make_decl_rtl (decl, (char *) 0, 1);
@@ -4777,6 +4879,7 @@ assemble_alias (decl, target)
   warning ("alias definitions not supported in this configuration; ignored");
 #endif
 #endif
+#endif /* SGI_MONGOOSE */
 }
 
 /* This determines whether or not we support link-once semantics.  */
diff -dupr ./version.c /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/version.c
--- ./version.c	2003-02-05 18:14:15.000000000 +0100
+++ /home/pop/work/orc/orc2.0/src/osprey1.0/gccfe/gnu/version.c	2001-03-12 23:29:44.000000000 +0100
@@ -1,4 +1,4 @@
 #include "gansidecl.h"
 #include "version.h"
 
-const char *const version_string = "2.96 20000530 (experimental)";
+const char *const version_string = "sgicc-1.0 {2.96 20000530 (experimental)}";
Only in .: vmsconfig.com
