diff options
author | Daniel Berlin <dan@cgsoftware.com> | 2001-10-05 04:55:41 +0000 |
---|---|---|
committer | Daniel Berlin <dan@cgsoftware.com> | 2001-10-05 04:55:41 +0000 |
commit | 44ee3605c4ed5428b1c31d11fafe6298e076cc64 (patch) | |
tree | 564b467beddc6cbf1e1aac1472c84d171526b82a | |
parent | 29f8365f6d260454e3693246e737376620740b4b (diff) |
Serialize RTL, add MDBM support, start precomp'd headers (should only be a few days for C precompiled ones)
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/tree-serialize-branch@46027 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/Makefile.in | 5 | ||||
-rw-r--r-- | gcc/c-common.h | 1 | ||||
-rw-r--r-- | gcc/c-decl.c | 147 | ||||
-rw-r--r-- | gcc/c-lang.c | 21 | ||||
-rw-r--r-- | gcc/c-lex.c | 1 | ||||
-rw-r--r-- | gcc/config.in | 3 | ||||
-rwxr-xr-x | gcc/configure | 236 | ||||
-rw-r--r-- | gcc/configure.in | 4 | ||||
-rw-r--r-- | gcc/cppfiles.c | 81 | ||||
-rw-r--r-- | gcc/cpplib.c | 21 | ||||
-rw-r--r-- | gcc/cpplib.h | 1 | ||||
-rw-r--r-- | gcc/ggc-page.c | 29 | ||||
-rw-r--r-- | gcc/ggc.h | 5 | ||||
-rw-r--r-- | gcc/rtl.c | 2 | ||||
-rw-r--r-- | gcc/toplev.c | 1 | ||||
-rw-r--r-- | gcc/tree.c | 292 | ||||
-rw-r--r-- | gcc/treepch.h | 11 |
17 files changed, 735 insertions, 126 deletions
diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 7697af64d64..04d4801982c 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -724,7 +724,7 @@ CXX_TARGET_OBJS=@cxx_target_objs@ # Language-specific object files for C and Objective C. C_AND_OBJC_OBJS = c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o \ c-convert.o c-aux-info.o c-common.o c-format.o c-semantics.o c-dump.o \ - libcpp.a $(C_TARGET_OBJS) + libcpp.a $(C_TARGET_OBJS) # Language-specific object files for C. C_OBJS = c-parse.o c-lang.o $(C_AND_OBJC_OBJS) @@ -1967,7 +1967,8 @@ PREPROCESSOR_DEFINES = \ LIBCPP_OBJS = cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o \ cpphash.o cpperror.o cppinit.o cppdefault.o \ - hashtable.o line-map.o mkdeps.o prefix.o version.o mbchar.o + hashtable.o line-map.o mkdeps.o prefix.o version.o mbchar.o + LIBCPP_DEPS = $(CPPLIB_H) cpphash.h line-map.h hashtable.h intl.h \ $(OBSTACK_H) $(SYSTEM_H) diff --git a/gcc/c-common.h b/gcc/c-common.h index b5cfcd4b63c..a5f01f1585c 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -322,6 +322,7 @@ typedef tree (*walk_tree_fn) PARAMS ((tree *, int *, void *)); +extern void lang_read_pch PARAMS ((cpp_reader *, int, const char *)); extern stmt_tree current_stmt_tree PARAMS ((void)); extern tree *current_scope_stmt_stack PARAMS ((void)); extern void begin_stmt_tree PARAMS ((tree *)); diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 5a93d571432..d35cb60df3e 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -44,6 +44,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "target.h" #include "debug.h" #include "treepch.h" +#include "hashtab.h" /* In grokdeclarator, distinguish syntactic contexts of declarators. */ enum decl_context { NORMAL, /* Ordinary declaration */ @@ -6628,12 +6629,6 @@ finish_function (nested) /* Tie off the statement tree for this function. */ finish_stmt_tree (&DECL_SAVED_TREE (fndecl)); - { - tree temp; - temp = read_tree ((tree) write_tree (&fndecl)); - temp = temp+1; - temp = temp-1; - } /* Clear out memory we no longer need. */ free_after_parsing (cfun); /* Since we never call rest_of_compilation, we never clear @@ -7191,3 +7186,143 @@ build_void_list_node () tree t = build_tree_list (NULL_TREE, void_type_node); return t; } +int def_len = 0; +int *def_table=NULL; +static int +write_defs (pfile, hn, nothing) + cpp_reader *pfile; + cpp_hashnode *hn; + void *nothing; +{ + switch (hn->type) + { + case NT_MACRO: + if (hn->flags & NODE_BUILTIN) + { + return 1; + } + case NT_VOID: + { + def_len++; + def_table = xrealloc (def_table, sizeof (int) * def_len); + def_table[def_len-1] = pickle_string ((const char *)hn->ident.str); + } + return 1; + case NT_ASSERTION: + return 1; + default: + abort(); + + } +} + +void lang_write_pch () +{ + size_t id; + int i; + const char *keyname; + tree globals; + tree cgt_table[CTI_MAX]; + for (i = 0; i < CTI_MAX; i++) + cgt_table[i] = write_tree (&c_global_trees[i]); + keyname = "c_global_trees"; + store_to_db ((void *)keyname, strlen (keyname) + 1, cgt_table, CTI_MAX * sizeof (tree)); + globals = global_binding_level->names; + id = write_tree (&globals); + keyname = "global_binding_level->names"; + store_to_db ((void *)keyname, strlen (keyname) + 1, &id, sizeof (size_t)); + globals = global_binding_level->tags; + id = write_tree (&globals); + keyname = "global_binding_level->tags"; + store_to_db ((void *)keyname, strlen (keyname) + 1, &id, sizeof (size_t)); + globals = static_ctors; + id = write_tree (&globals); + keyname = "static_ctors"; + store_to_db ((void *)keyname, strlen (keyname) + 1, &id, sizeof (size_t)); + globals = static_dtors; + id = write_tree (&globals); + keyname = "static_dtors"; + store_to_db ((void *)keyname, strlen (keyname) + 1, &id, sizeof (size_t)); + def_len = 0; + def_table = 0; + cpp_forall_identifiers (parse_in, write_defs, NULL); + keyname = "defs"; + store_to_db ((void *)keyname, strlen (keyname) + 1, def_table, def_len * sizeof (int)); + free (def_table); + keyname = "defslen"; + store_to_db ((void *)keyname, strlen (keyname) + 1, &def_len, sizeof (size_t)); +} +void lang_read_pch (pfile, fd, self) + cpp_reader *pfile; + int fd; + const char *self; +{ + int i; + size_t id; + datum key, data; + const char *keyname; + tree cgt_table[CTI_MAX]; + datafilename = self; + if (datafile == NULL) + datafile = dbm_open ((char *)datafilename, O_RDWR, 0666); + keyname = "c_global_trees"; + key.dptr = (void *)keyname; + key.dsize = strlen (keyname) + 1; + data = dbm_fetch (datafile, key); + if (!data.dptr) + abort(); + memcpy (cgt_table, data.dptr, data.dsize); + for (i = 0; i < CTI_MAX; i++) + c_global_trees[i] = read_tree (cgt_table[i]); + keyname = "global_binding_level->names"; + key.dptr = (void *)keyname; + key.dsize = strlen (keyname) + 1; + data = dbm_fetch (datafile, key); + if (!data.dptr) + abort(); + global_binding_level->names = read_tree ((tree)*(tree *)data.dptr); + keyname = "global_binding_level->tags"; + key.dptr = (void *)keyname; + key.dsize = strlen (keyname) + 1; + data = dbm_fetch (datafile, key); + if (!data.dptr) + abort(); + global_binding_level->tags = read_tree ((tree)*(tree *)data.dptr); + keyname = "static_ctors"; + key.dptr = (void *)keyname; + key.dsize = strlen (keyname) + 1; + data = dbm_fetch (datafile, key); + if (!data.dptr) + abort(); + static_ctors = read_tree ((tree)*(tree *)data.dptr); + keyname = "static_dtors"; + key.dptr = (void *)keyname; + key.dsize = strlen (keyname) + 1; + data = dbm_fetch (datafile, key); + if (!data.dptr) + abort(); + static_dtors = read_tree ((tree)*(tree *)data.dptr); + keyname = "defslen"; + key.dptr = (void *)keyname; + key.dsize = strlen (keyname) + 1; + data = dbm_fetch (datafile, key); + if (!data.dptr) + abort (); + def_len = *(int *)data.dptr; + def_table = xmalloc (def_len * sizeof (int)); + keyname = "defs"; + key.dptr = (void *)keyname; + key.dsize = strlen (keyname) + 1; + data = dbm_fetch (datafile, key); + if (!data.dptr) + abort (); + memcpy (def_table, data.dptr, data.dsize); + for (i = 0; i < def_len; i++) + { + const char *tempstr; + tempstr = unpickle_string (def_table[i]); + cpp_lookup (parse_in, (unsigned char *)tempstr, strlen (tempstr)); + } + free (def_table); +} + diff --git a/gcc/c-lang.c b/gcc/c-lang.c index 36d73d29c5e..1c1ec583047 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -35,7 +35,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "c-tree.h" #include "c-lex.h" #include "cpplib.h" - +#include "treepch.h" static int c_tree_printer PARAMS ((output_buffer *)); static int c_missing_noreturn_ok_p PARAMS ((tree)); static void c_init PARAMS ((void)); @@ -221,10 +221,25 @@ finish_cdtor (body) #endif /* Called at end of parsing, but before end-of-file processing. */ - void finish_file () { + char *ch = malloc (5000); + memset (ch, 0, 5000); + strcpy (ch, input_filename); + ch = strcat (ch, ".pch"); + datafilename = strdup(ch); + lang_write_pch (); + free (ch); + if (written_pointers) + splay_tree_delete (written_pointers); + if (written_trees) + splay_tree_delete (written_trees); + if (written_rtl) + splay_tree_delete (written_rtl); + written_pointers = written_trees = written_rtl = NULL; + current_id = 0; + #ifndef ASM_OUTPUT_CONSTRUCTOR if (static_ctors) { @@ -263,6 +278,8 @@ finish_file () dump_end (TDI_all, stream); } } + if (datafile) + dbm_close (datafile); } /* Called during diagnostic message formatting process to print a diff --git a/gcc/c-lex.c b/gcc/c-lex.c index 669bb169e9a..8f121e652ce 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -128,6 +128,7 @@ init_c_lex (filename) cb->ident = cb_ident; cb->file_change = cb_file_change; cb->def_pragma = cb_def_pragma; + cb->read_pch = lang_read_pch; /* Set the debug callbacks if we can use them. */ if (debug_info_level == DINFO_LEVEL_VERBOSE diff --git a/gcc/config.in b/gcc/config.in index 350c6024217..630015f6cfc 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -214,6 +214,9 @@ /* Define if you have the <malloc.h> header file. */ #undef HAVE_MALLOC_H +/* Define if you have the <mdbm.h> header file. */ +#undef HAVE_MDBM_H + /* Define if you have the <nl_types.h> header file. */ #undef HAVE_NL_TYPES_H diff --git a/gcc/configure b/gcc/configure index 39f2628ddf7..250e8e91252 100755 --- a/gcc/configure +++ b/gcc/configure @@ -4943,7 +4943,7 @@ fi echo "checking for database support" 1>&6 echo "configure:4945: checking for database support" >&5 -for ac_hdr in sdbm.h gdbm.h +for ac_hdr in mdbm.h sdbm.h gdbm.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 @@ -5049,6 +5049,70 @@ else : fi +echo $ac_n "checking for library containing mdbm_open""... $ac_c" 1>&6 +echo "configure:5054: checking for library containing mdbm_open" >&5 +if eval "test \"`echo '$''{'ac_cv_search_mdbm_open'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_func_search_save_LIBS="$LIBS" +ac_cv_search_mdbm_open="no" +cat > conftest.$ac_ext <<EOF +#line 5061 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mdbm_open(); + +int main() { +mdbm_open() +; return 0; } +EOF +if { (eval echo configure:5072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ac_cv_search_mdbm_open="none required" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +test "$ac_cv_search_mdbm_open" = "no" && for i in mdbm; do +LIBS="-l$i $ac_func_search_save_LIBS" +cat > conftest.$ac_ext <<EOF +#line 5083 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mdbm_open(); + +int main() { +mdbm_open() +; return 0; } +EOF +if { (eval echo configure:5094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ac_cv_search_mdbm_open="-l$i" +break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +done +LIBS="$ac_func_search_save_LIBS" +fi + +echo "$ac_t""$ac_cv_search_mdbm_open" 1>&6 +if test "$ac_cv_search_mdbm_open" != "no"; then + test "$ac_cv_search_mdbm_open" = "none required" || LIBS="$ac_cv_search_mdbm_open $LIBS" + cat >> confdefs.h <<\EOF +#define HAVE_DBM 1 +EOF + +else : + +fi # File extensions manext='.1' objext='.o' @@ -5311,7 +5375,7 @@ fi echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6 -echo "configure:5315: checking for strerror in -lcposix" >&5 +echo "configure:5379: checking for strerror in -lcposix" >&5 ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5319,7 +5383,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcposix $LIBS" cat > conftest.$ac_ext <<EOF -#line 5323 "configure" +#line 5387 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5330,7 +5394,7 @@ int main() { strerror() ; return 0; } EOF -if { (eval echo configure:5334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5353,12 +5417,12 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:5357: checking for working const" >&5 +echo "configure:5421: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5362 "configure" +#line 5426 "configure" #include "confdefs.h" int main() { @@ -5407,7 +5471,7 @@ ccp = (char const *const *) p; ; return 0; } EOF -if { (eval echo configure:5411: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -5428,12 +5492,12 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:5432: checking for off_t" >&5 +echo "configure:5496: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5437 "configure" +#line 5501 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -5461,12 +5525,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:5465: checking for size_t" >&5 +echo "configure:5529: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5470 "configure" +#line 5534 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -5499,17 +5563,17 @@ unistd.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5503: checking for $ac_hdr" >&5 +echo "configure:5567: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5508 "configure" +#line 5572 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5513: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5577: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5539,12 +5603,12 @@ done strdup __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5543: checking for $ac_func" >&5 +echo "configure:5607: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5548 "configure" +#line 5612 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -5567,7 +5631,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:5571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5596,12 +5660,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5600: checking for $ac_func" >&5 +echo "configure:5664: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5605 "configure" +#line 5669 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -5624,7 +5688,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:5628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5658,19 +5722,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:5662: checking for LC_MESSAGES" >&5 +echo "configure:5726: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5667 "configure" +#line 5731 "configure" #include "confdefs.h" #include <locale.h> int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:5674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -5691,7 +5755,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:5695: checking whether NLS is requested" >&5 +echo "configure:5759: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -5711,7 +5775,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:5715: checking whether included gettext is requested" >&5 +echo "configure:5779: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -5730,17 +5794,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:5734: checking for libintl.h" >&5 +echo "configure:5798: checking for libintl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5739 "configure" +#line 5803 "configure" #include "confdefs.h" #include <libintl.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5757,19 +5821,19 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:5761: checking for gettext in libc" >&5 +echo "configure:5825: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5766 "configure" +#line 5830 "configure" #include "confdefs.h" #include <libintl.h> int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:5773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -5785,7 +5849,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:5789: checking for bindtextdomain in -lintl" >&5 +echo "configure:5853: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5793,7 +5857,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <<EOF -#line 5797 "configure" +#line 5861 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5804,7 +5868,7 @@ int main() { bindtextdomain() ; return 0; } EOF -if { (eval echo configure:5808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5820,12 +5884,12 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:5824: checking for gettext in libintl" >&5 +echo "configure:5888: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:5829: checking for gettext in -lintl" >&5 +echo "configure:5893: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5833,7 +5897,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <<EOF -#line 5837 "configure" +#line 5901 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5844,7 +5908,7 @@ int main() { gettext() ; return 0; } EOF -if { (eval echo configure:5848: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5887,7 +5951,7 @@ EOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5891: checking for $ac_word" >&5 +echo "configure:5955: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5921,12 +5985,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5925: checking for $ac_func" >&5 +echo "configure:5989: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5930 "configure" +#line 5994 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -5949,7 +6013,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:5953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5976,7 +6040,7 @@ done # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5980: checking for $ac_word" >&5 +echo "configure:6044: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6012,7 +6076,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6016: checking for $ac_word" >&5 +echo "configure:6080: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6044,7 +6108,7 @@ else fi cat > conftest.$ac_ext <<EOF -#line 6048 "configure" +#line 6112 "configure" #include "confdefs.h" int main() { @@ -6052,7 +6116,7 @@ extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } EOF -if { (eval echo configure:6056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -6077,7 +6141,7 @@ fi if test "$CATOBJEXT" = "NONE"; then echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6 -echo "configure:6081: checking whether catgets can be used" >&5 +echo "configure:6145: checking whether catgets can be used" >&5 # Check whether --with-catgets or --without-catgets was given. if test "${with_catgets+set}" = set; then withval="$with_catgets" @@ -6090,7 +6154,7 @@ fi if test "$nls_cv_use_catgets" = "yes"; then echo $ac_n "checking for main in -li""... $ac_c" 1>&6 -echo "configure:6094: checking for main in -li" >&5 +echo "configure:6158: checking for main in -li" >&5 ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6098,14 +6162,14 @@ else ac_save_LIBS="$LIBS" LIBS="-li $LIBS" cat > conftest.$ac_ext <<EOF -#line 6102 "configure" +#line 6166 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:6109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6133,12 +6197,12 @@ else fi echo $ac_n "checking for catgets""... $ac_c" 1>&6 -echo "configure:6137: checking for catgets" >&5 +echo "configure:6201: checking for catgets" >&5 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6142 "configure" +#line 6206 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char catgets(); below. */ @@ -6161,7 +6225,7 @@ catgets(); ; return 0; } EOF -if { (eval echo configure:6165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_catgets=yes" else @@ -6183,7 +6247,7 @@ EOF # Extract the first word of "gencat", so it can be a program name with args. set dummy gencat; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6187: checking for $ac_word" >&5 +echo "configure:6251: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GENCAT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6219,7 +6283,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6223: checking for $ac_word" >&5 +echo "configure:6287: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6256,7 +6320,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6260: checking for $ac_word" >&5 +echo "configure:6324: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6294,7 +6358,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6298: checking for $ac_word" >&5 +echo "configure:6362: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6352,7 +6416,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6356: checking for $ac_word" >&5 +echo "configure:6420: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6386,7 +6450,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6390: checking for $ac_word" >&5 +echo "configure:6454: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6425,7 +6489,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6429: checking for $ac_word" >&5 +echo "configure:6493: checking for $ac_word" >&5 if eval "test \"`echo '$''{'gcc_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6524,7 +6588,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:6528: checking for catalogs to be installed" >&5 +echo "configure:6592: checking for catalogs to be installed" >&5 if test "x$LINGUAS" = "x"; then LINGUAS=$ALL_LINGUAS else @@ -6556,17 +6620,17 @@ echo "configure:6528: checking for catalogs to be installed" >&5 if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:6560: checking for linux/version.h" >&5 +echo "configure:6624: checking for linux/version.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6565 "configure" +#line 6629 "configure" #include "confdefs.h" #include <linux/version.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6570: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6634: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6642,7 +6706,7 @@ fi case $host_os in win32 | pe | cygwin* | mingw32* | uwin*) echo $ac_n "checking whether windows registry support is requested""... $ac_c" 1>&6 -echo "configure:6646: checking whether windows registry support is requested" >&5 +echo "configure:6710: checking whether windows registry support is requested" >&5 if test "x$enable_win32_registry" != xno; then cat >> confdefs.h <<\EOF #define ENABLE_WIN32_REGISTRY 1 @@ -6651,14 +6715,14 @@ EOF echo "$ac_t""yes" 1>&6 echo $ac_n "checking for library containing RegOpenKeyExA""... $ac_c" 1>&6 -echo "configure:6655: checking for library containing RegOpenKeyExA" >&5 +echo "configure:6719: checking for library containing RegOpenKeyExA" >&5 if eval "test \"`echo '$''{'ac_cv_search_RegOpenKeyExA'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_func_search_save_LIBS="$LIBS" ac_cv_search_RegOpenKeyExA="no" cat > conftest.$ac_ext <<EOF -#line 6662 "configure" +#line 6726 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -6669,7 +6733,7 @@ int main() { RegOpenKeyExA() ; return 0; } EOF -if { (eval echo configure:6673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_RegOpenKeyExA="none required" else @@ -6680,7 +6744,7 @@ rm -f conftest* test "$ac_cv_search_RegOpenKeyExA" = "no" && for i in advapi32; do LIBS="-l$i $ac_func_search_save_LIBS" cat > conftest.$ac_ext <<EOF -#line 6684 "configure" +#line 6748 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -6691,7 +6755,7 @@ int main() { RegOpenKeyExA() ; return 0; } EOF -if { (eval echo configure:6695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6759: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_RegOpenKeyExA="-l$i" break @@ -6733,7 +6797,7 @@ esac if test "x$enable_win32_registry" != xno; then echo $ac_n "checking registry key on windows hosts""... $ac_c" 1>&6 -echo "configure:6737: checking registry key on windows hosts" >&5 +echo "configure:6801: checking registry key on windows hosts" >&5 cat >> confdefs.h <<EOF #define WIN32_REGISTRY_KEY "$gcc_cv_win32_registry_key" EOF @@ -6916,7 +6980,7 @@ fi # Figure out what assembler we will be using. echo $ac_n "checking what assembler to use""... $ac_c" 1>&6 -echo "configure:6920: checking what assembler to use" >&5 +echo "configure:6984: checking what assembler to use" >&5 gcc_cv_as= gcc_cv_gas_major_version= gcc_cv_gas_minor_version= @@ -7001,7 +7065,7 @@ fi # Figure out what nm we will be using. echo $ac_n "checking what nm to use""... $ac_c" 1>&6 -echo "configure:7005: checking what nm to use" >&5 +echo "configure:7069: checking what nm to use" >&5 if test -x nm$host_exeext; then gcc_cv_nm=./nm$host_exeext elif test x$host = x$target; then @@ -7012,7 +7076,7 @@ echo "$ac_t""$gcc_cv_nm" 1>&6 # Figure out what assembler alignment features are present. echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6 -echo "configure:7016: checking assembler alignment features" >&5 +echo "configure:7080: checking assembler alignment features" >&5 gcc_cv_as_alignment_features=none if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then # Gas version 2.6 and later support for .balign and .p2align. @@ -7060,7 +7124,7 @@ fi echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6 echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6 -echo "configure:7064: checking assembler subsection support" >&5 +echo "configure:7128: checking assembler subsection support" >&5 gcc_cv_as_subsections=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then @@ -7100,7 +7164,7 @@ fi echo "$ac_t""$gcc_cv_as_subsections" 1>&6 echo $ac_n "checking assembler weak support""... $ac_c" 1>&6 -echo "configure:7104: checking assembler weak support" >&5 +echo "configure:7168: checking assembler weak support" >&5 gcc_cv_as_weak=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then @@ -7123,7 +7187,7 @@ fi echo "$ac_t""$gcc_cv_as_weak" 1>&6 echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6 -echo "configure:7127: checking assembler hidden support" >&5 +echo "configure:7191: checking assembler hidden support" >&5 gcc_cv_as_hidden=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 10 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then @@ -7147,7 +7211,7 @@ fi echo "$ac_t""$gcc_cv_as_hidden" 1>&6 echo $ac_n "checking assembler leb128 support""... $ac_c" 1>&6 -echo "configure:7151: checking assembler leb128 support" >&5 +echo "configure:7215: checking assembler leb128 support" >&5 gcc_cv_as_leb128=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 11 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then @@ -7192,7 +7256,7 @@ fi echo "$ac_t""$gcc_cv_as_leb128" 1>&6 echo $ac_n "checking assembler eh_frame optimization""... $ac_c" 1>&6 -echo "configure:7196: checking assembler eh_frame optimization" >&5 +echo "configure:7260: checking assembler eh_frame optimization" >&5 gcc_cv_as_eh_frame=no if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then @@ -7275,7 +7339,7 @@ echo "$ac_t""$gcc_cv_as_eh_frame" 1>&6 case "$target" in sparc*-*-*) echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6 -echo "configure:7279: checking assembler .register pseudo-op support" >&5 +echo "configure:7343: checking assembler .register pseudo-op support" >&5 if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7303,7 +7367,7 @@ EOF fi echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6 -echo "configure:7307: checking assembler supports -relax" >&5 +echo "configure:7371: checking assembler supports -relax" >&5 if eval "test \"`echo '$''{'gcc_cv_as_relax_opt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7333,7 +7397,7 @@ EOF case "$tm_file" in *64*) echo $ac_n "checking for 64 bit support in assembler ($gcc_cv_as)""... $ac_c" 1>&6 -echo "configure:7337: checking for 64 bit support in assembler ($gcc_cv_as)" >&5 +echo "configure:7401: checking for 64 bit support in assembler ($gcc_cv_as)" >&5 if eval "test \"`echo '$''{'gcc_cv_as_flags64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7378,7 +7442,7 @@ EOF if test "x$gcc_cv_as_flags64" != xno; then echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6 -echo "configure:7382: checking for assembler offsetable %lo() support" >&5 +echo "configure:7446: checking for assembler offsetable %lo() support" >&5 if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7418,7 +7482,7 @@ EOF i[34567]86-*-*) echo $ac_n "checking assembler instructions""... $ac_c" 1>&6 -echo "configure:7422: checking assembler instructions" >&5 +echo "configure:7486: checking assembler instructions" >&5 gcc_cv_as_instructions= if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then @@ -7447,7 +7511,7 @@ EOF esac echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6 -echo "configure:7451: checking assembler dwarf2 debug_line support" >&5 +echo "configure:7515: checking assembler dwarf2 debug_line support" >&5 gcc_cv_as_dwarf2_debug_line=no # ??? Not all targets support dwarf2 debug_line, even within a version # of gas. Moreover, we need to emit a valid instruction to trigger any @@ -7632,7 +7696,7 @@ fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:7636: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:7700: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" diff --git a/gcc/configure.in b/gcc/configure.in index 1fc4b13c80e..f0edda63a80 100644 --- a/gcc/configure.in +++ b/gcc/configure.in @@ -677,9 +677,9 @@ CFLAGS="$saved_CFLAGS" gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG AC_CHECKING(for database support) -AC_CHECK_HEADERS(sdbm.h gdbm.h, [break]) +AC_CHECK_HEADERS(mdbm.h sdbm.h gdbm.h, [break]) AC_SEARCH_LIBS(dbm_open, sdbm gdbm, [AC_DEFINE(HAVE_DBM)]) - +AC_SEARCH_LIBS(mdbm_open, mdbm, [AC_DEFINE(HAVE_DBM)]) # File extensions manext='.1' objext='.o' diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c index 5b8f9076b39..c5fb4b65801 100644 --- a/gcc/cppfiles.c +++ b/gcc/cppfiles.c @@ -71,6 +71,13 @@ struct include_file unsigned short include_count; /* number of times file has been read */ unsigned short refcnt; /* number of stacked buffers using this file */ unsigned char mapped; /* file buffer is mmapped */ + unsigned char pch; /* 0: file not known to be a PCH. + 1: file is a PCH + (on return from find_include_file). + 2: file is not and never will be a valid + precompiled header. + 3: file is always a valid precompiled + header. */ }; /* The cmacro works like this: If it's NULL, the file is to be @@ -81,6 +88,7 @@ struct include_file #define DO_NOT_REREAD(inc) \ ((inc)->cmacro && ((inc)->cmacro == NEVER_REREAD \ || (inc)->cmacro->type == NT_MACRO)) +#define INCLUDE_PCH_P(i) (((i)->pch & 1) != 0) #define NO_INCLUDE_PATH ((struct include_file *) -1) static struct file_name_map *read_name_map @@ -94,6 +102,8 @@ static struct include_file * find_include_file PARAMS ((cpp_reader *, const cpp_token *, enum include_type)); static struct include_file *open_file PARAMS ((cpp_reader *, const char *)); +static struct include_file *open_file_pch PARAMS ((cpp_reader *, + const char *)); static int read_include_file PARAMS ((cpp_reader *, struct include_file *)); static bool stack_include_file PARAMS ((cpp_reader *, struct include_file *)); static void purge_cache PARAMS ((struct include_file *)); @@ -275,6 +285,35 @@ open_file (pfile, filename) return 0; } +/* Like open_file, but also look for a precompiled header if (a) one exists + and (b) it is valid. */ +static struct include_file * +open_file_pch (pfile, filename) + cpp_reader *pfile; + const char *filename; +{ + if (filename[0] != '\0') + { + size_t namelen = strlen (filename); + char *pchname = alloca (namelen + 5); + struct include_file * file; + + memcpy (pchname, filename, namelen); + memcpy (pchname + namelen, ".pch", 5); + file = open_file (pfile, pchname); + if (file != NULL) + { +// file->name = xstrdup (filename); + if ((file->pch & 2) == 0) + file->pch = 1; + if (INCLUDE_PCH_P (file)) + return file; + close (file->fd); + file->fd = -1; + } + } + return open_file (pfile, filename); +} /* Place the file referenced by INC into a new buffer on the buffer stack, unless there are errors, or the file is not re-included because of e.g. multiple-include guards. Returns true if a buffer @@ -302,14 +341,34 @@ stack_include_file (pfile, inc) /* Not in cache? */ if (! inc->buffer) { - /* If an error occurs, do not try to read this file again. */ - if (read_include_file (pfile, inc)) - { - _cpp_never_reread (inc); - return false; - } - close (inc->fd); - inc->fd = -1; + /* PCH files get dealt with immediately. + We stack a zero-sized buffer below. + The reason for this is that reading a PCH directly into memory + will approximately double the memory consumption of the compiler. */ + if (INCLUDE_PCH_P (inc)) + { + pfile->cb.read_pch (pfile, inc->fd, inc->name); + close (inc->fd); + inc->fd = -1; + return false; +#if 0 + fp = cpp_push_buffer (pfile, (unsigned char *)"", 0, 0, inc->nominal_fname); +#else +// fp = cpp_push_buffer (pfile, (unsigned char *)"", 0, 0, 0); +#endif + // fp->rlimit = fp->buf; + } + else + { + /* If an error occurs, do not try to read this file again. */ + if (read_include_file (pfile, inc)) + { + _cpp_never_reread (inc); + return false; + } + close (inc->fd); + inc->fd = -1; + } } if (pfile->buffer) @@ -517,7 +576,7 @@ find_include_file (pfile, header, type) char *name, *n; if (IS_ABSOLUTE_PATHNAME (fname)) - return open_file (pfile, fname); + return open_file_pch (pfile, fname); /* For #include_next, skip in the search path past the dir in which the current file was found, but if it was found via an absolute @@ -547,7 +606,7 @@ find_include_file (pfile, header, type) else n = name; - file = open_file (pfile, n); + file = open_file_pch (pfile, n); if (file) { file->foundhere = path; @@ -709,7 +768,7 @@ _cpp_read_file (pfile, fname) cpp_reader *pfile; const char *fname; { - struct include_file *f = open_file (pfile, fname); + struct include_file *f = open_file_pch (pfile, fname); bool stacked = false; if (f == NULL) diff --git a/gcc/cpplib.c b/gcc/cpplib.c index 0a02c15845e..0e18af914d5 100644 --- a/gcc/cpplib.c +++ b/gcc/cpplib.c @@ -25,7 +25,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "cpplib.h" #include "cpphash.h" #include "obstack.h" - +#include "treepch.h" /* Chained list of answers to an assertion. */ struct answer { @@ -1729,6 +1729,21 @@ cpp_set_callbacks (pfile, cb) pfile->cb = *cb; } +struct include_file +{ + const char *name; /* actual path name of file */ + const cpp_hashnode *cmacro; /* macro, if any, preventing reinclusion. */ + const struct search_path *foundhere; + /* location in search path where file was + found, for #include_next and sysp. */ + const unsigned char *buffer; /* pointer to cached file contents */ + struct stat st; /* copy of stat(2) data for file */ + int fd; /* fd open on file (short term storage only) */ + int err_no; /* errno obtained if opening a file failed */ + unsigned short include_count; /* number of times file has been read */ + unsigned short refcnt; /* number of stacked buffers using this file */ + unsigned char mapped; /* file buffer is mmapped */ +}; /* Push a new buffer on the buffer stack. Returns the new buffer; it doesn't fail. It does not generate a file change call back; that is the responsibility of the caller. */ @@ -1787,7 +1802,9 @@ _cpp_pop_buffer (pfile) pfile->buffer = buffer->prev; if (buffer->inc) - _cpp_pop_file_buffer (pfile, buffer->inc); + { + _cpp_pop_file_buffer (pfile, buffer->inc); + } obstack_free (&pfile->buffer_ob, buffer); } diff --git a/gcc/cpplib.h b/gcc/cpplib.h index 8c495736aa9..aedab18e768 100644 --- a/gcc/cpplib.h +++ b/gcc/cpplib.h @@ -389,6 +389,7 @@ struct cpp_options /* Call backs. */ struct cpp_callbacks { + void (*read_pch) PARAMS ((cpp_reader *, int, const char *)); void (*file_change) PARAMS ((cpp_reader *, const struct line_map *)); void (*include) PARAMS ((cpp_reader *, unsigned int, const unsigned char *, const cpp_token *)); diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c index b731b296071..3918bee2418 100644 --- a/gcc/ggc-page.c +++ b/gcc/ggc-page.c @@ -1000,6 +1000,35 @@ ggc_set_mark (p) return 0; } +/* Return 1 if P has been marked, zero otherwise. + P must have been allocated by the GC allocator; it mustn't point to + static objects, stack variables, or memory allocated with malloc. */ + +int +ggc_marked_p (p) + const void *p; +{ + page_entry *entry; + unsigned bit, word; + unsigned long mask; + + /* Look up the page on which the object is alloced. If the object + wasn't allocated by the collector, we'll probably die. */ + entry = lookup_page_table_entry (p); +#ifdef ENABLE_CHECKING + if (entry == NULL) + abort (); +#endif + + /* Calculate the index of the object on the page; this is its bit + position in the in_use_p bitmap. */ + bit = (((const char *) p) - entry->page) / OBJECT_SIZE (entry->order); + word = bit / HOST_BITS_PER_LONG; + mask = (unsigned long) 1 << (bit % HOST_BITS_PER_LONG); + + return (entry->in_use_p[word] & mask) != 0; +} + /* Return the size of the gc-able object P. */ diff --git a/gcc/ggc.h b/gcc/ggc.h index be137e791b9..a6528eb5b19 100644 --- a/gcc/ggc.h +++ b/gcc/ggc.h @@ -155,6 +155,11 @@ void ggc_collect PARAMS ((void)); pointers in this data structure should not be traversed. */ int ggc_set_mark PARAMS ((const void *)); +/* Return 1 if P has been marked, zero otherwise. + P must have been allocated by the GC allocator; it mustn't point to + static objects, stack variables, or memory allocated with malloc. */ +extern int ggc_marked_p PARAMS ((const void *)); + /* Callbacks to the languages. */ /* This is the language's opportunity to mark nodes held through diff --git a/gcc/rtl.c b/gcc/rtl.c index bd4d6fad682..cd055e560ba 100644 --- a/gcc/rtl.c +++ b/gcc/rtl.c @@ -25,7 +25,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "real.h" #include "ggc.h" #include "errors.h" - +#include "treepch.h" /* Calculate the format for CONST_DOUBLE. This depends on the relative widths of HOST_WIDE_INT and REAL_VALUE_TYPE. diff --git a/gcc/toplev.c b/gcc/toplev.c index dda03425f3c..44007148e18 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -68,7 +68,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "integrate.h" #include "debug.h" #include "target.h" - #if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO) #include "dwarf2out.h" #endif diff --git a/gcc/tree.c b/gcc/tree.c index a2af124fbaa..3c2cdb40596 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -45,6 +45,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "hashtab.h" #include "output.h" #include "target.h" +#include "rtl.h" +#include "real.h" #include "treepch.h" #define obstack_chunk_alloc xmalloc #define obstack_chunk_free free @@ -4983,14 +4985,14 @@ DBM * datafile = NULL; const char *datafilename = "testtree"; size_t current_id = 1; splay_tree read_trees = NULL; +splay_tree read_rtls = NULL; +splay_tree written_rtl = NULL; splay_tree written_trees = NULL; splay_tree written_pointers = NULL; -static int pickle_string PARAMS ((const char *)); static char * pickle_tree PARAMS ((tree)); static tree unpickle_tree PARAMS ((tree)); -static const char * unpickle_string PARAMS ((int)); #define VARRAY_BYTES(x) ((sizeof (struct varray_head_tag) - sizeof (varray_data)) + (x->num_elements * x->element_size)) -static int +int pickle_string (s) const char *s; { @@ -5004,7 +5006,7 @@ pickle_string (s) store_to_db (&id, sizeof (int), (void *)s, strlen (s) + 1); return id; } -static const char * +const char * unpickle_string (id) int id; { @@ -5039,6 +5041,131 @@ read_tree_varray (id) ret = unpickle_tree_varray (id); return ret; } +static rtx +unpickle_rtl (id) + rtx id; +{ + int i; + const char *format; + rtx result; + datum key, data; + if (id == 0) + return NULL_RTX; + key.dptr = (char *) &id; + key.dsize = sizeof (int); + data = dbm_fetch (datafile, key); + if (!data.dptr) + abort(); + result = rtx_alloc (GET_CODE ((rtx) data.dptr)); + memcpy (result, data.dptr, data.dsize); + format = GET_RTX_FORMAT (GET_CODE (result)); + for (i = 0; i < GET_RTX_LENGTH (GET_CODE (result)); ++i) + { + switch (format[i]) + { + case '\0': + return 0; + case 'e': + case 'u': + XEXP (result, i) = read_rtl (XEXP (result, i)); + break; + case 'V': + case 'E': + if (XVEC (result, i) != 0) + { + int j; + for (j = 0; j < XVECLEN (result, i); ++j) + { + XVECEXP (result, i, j) = read_rtl (XVECEXP (result, i, j)); + } + } + break; + case 'S': + case 's': + if (XSTR (result, i) != 0) + { + XSTR (result, i) = unpickle_string ((int)XSTR (result, i)); + } + break; + case 't': + if (XTREE (result, i) != 0) + { + XTREE (result, i) = read_tree (XTREE (result, i)); + } + break; + case '0': + switch (GET_CODE (result)) + { + case JUMP_INSN: + case LABEL_REF: + case CONST_DOUBLE: + X0EXP (result, i) = read_rtl (X0EXP (result, i)); + break; + case CODE_LABEL: + if (i != 3) + X0EXP (result, i) = read_rtl (X0EXP (result, i)); + break; + case MEM: + case REG: + case SCRATCH: + case ADDR_DIFF_VEC: + break; + + case NOTE: + switch (NOTE_LINE_NUMBER (result)) + { + case NOTE_INSN_RANGE_BEG: + case NOTE_INSN_RANGE_END: + case NOTE_INSN_LIVE: + case NOTE_INSN_EXPECTED_VALUE: + X0EXP (result, i) = read_rtl (X0EXP (result, i)); + break; + case NOTE_INSN_BLOCK_BEG: + case NOTE_INSN_BLOCK_END: + if (X0TREE (result, i) != 0) + { + X0TREE (result, i) = read_tree (X0TREE (result, i)); + } + break; + case NOTE_INSN_DELETED_LABEL: + if (X0STR (result, i) != 0) + { + X0STR (result, i) = unpickle_string ((int)X0STR (result, i)); + } + break; + default: + if (NOTE_LINE_NUMBER (result) >= 0) + if (X0STR (result, i) != 0) + { + X0STR (result, i) = unpickle_string ((int)X0STR (result, i)); + } + break; + } + break; + default: + abort (); + } + break; + } + } + return result; +} +rtx +read_rtl (id) + rtx id; +{ + splay_tree_node result; + rtx ret; + if (id == 0) + return NULL_RTX; + if (read_rtls == NULL) + read_rtls = splay_tree_new (splay_tree_compare_pointers, NULL, NULL); + result = splay_tree_lookup (read_rtls, (splay_tree_key) id); + if (result) + return (rtx) result->value; + ret = unpickle_rtl (id); + return ret; +} tree read_tree (id) tree id; @@ -5095,6 +5222,12 @@ unpickle_tree (id) abort(); if (TREE_CODE ((tree) data.dptr) == TREE_VEC) buffer = make_tree_vec (TREE_VEC_LENGTH ((tree) data.dptr)); + else if (TREE_CODE ((tree) data.dptr) == IDENTIFIER_NODE) + { + buffer = make_lang_type (TREE_CODE ((tree) data.dptr)); + memcpy (buffer, data.dptr, data.dsize); + buffer = get_identifier (unpickle_string (IDENTIFIER_POINTER (buffer))); + } else buffer = make_lang_type (TREE_CODE ((tree) data.dptr)); splay_tree_insert (read_trees, (splay_tree_key) id, @@ -5119,8 +5252,11 @@ unpickle_tree (id) break; case 'x': if (TREE_CODE (buffer) == IDENTIFIER_NODE) - IDENTIFIER_POINTER (buffer) = (const char *) - unpickle_string ((int)IDENTIFIER_POINTER (buffer)); + { + IDENTIFIER_POINTER (buffer) = (const char *) + unpickle_string ((int)IDENTIFIER_POINTER (buffer)); + + } else if (TREE_CODE (buffer) == TREE_LIST) { TREE_PURPOSE (buffer) = read_tree (TREE_PURPOSE (buffer)); @@ -5156,8 +5292,9 @@ unpickle_tree (id) || DECL_EXTERNAL (buffer) || TREE_PUBLIC (buffer)))) DECL_ASSEMBLER_NAME (buffer); + if (DECL_RTL_SET_P (buffer)) + buffer->decl.rtl = read_rtl (buffer->decl.rtl); /*FIXME: if it's PARM_DECL, u2 is an RTL */ - /*FIXME: Handle lang specific */ break; case 't': TYPE_VALUES (buffer) = read_tree (TYPE_VALUES (buffer)); @@ -5175,7 +5312,6 @@ unpickle_tree (id) TYPE_NONCOPIED_PARTS (buffer) = read_tree (TYPE_NONCOPIED_PARTS (buffer)); TYPE_CONTEXT (buffer) = read_tree (TYPE_CONTEXT (buffer)); - /* FIXME: Handle lang_specific */ break; case 'b': { @@ -5281,6 +5417,8 @@ pickle_tree (t) DECL_MACHINE_ATTRIBUTES (buffer) = (tree) write_tree (&DECL_MACHINE_ATTRIBUTES (buffer)); DECL_VINDEX (buffer) = (tree) write_tree (&DECL_VINDEX (buffer)); + if (DECL_RTL_SET_P (t)) + buffer->decl.rtl = (rtx) write_rtl (&buffer->decl.rtl); #if 0 if (DECL_ASSEMBLER_NAME_SET_P (t)) DECL_ASSEMBLER_NAME (buffer) = (tree) write_tree (&DECL_ASSEMBLER_NAME (buffer)); @@ -5361,12 +5499,13 @@ write_tree_varray (v) char *buffer; if (!v) return 0; - if (ggc_set_mark (v)) + if (ggc_marked_p (v)) { result = splay_tree_lookup (written_pointers, (splay_tree_key) v); if (result) return result->value; } + ggc_test_and_set_mark (v); id = current_id++; splay_tree_insert (written_pointers, (splay_tree_key)v, id); buffer = pickle_tree_varray (v); @@ -5387,18 +5526,19 @@ write_tree (tp) if (written_trees == NULL) written_trees = splay_tree_new (splay_tree_compare_pointers, NULL, NULL); if (datafile == NULL) - datafile = dbm_open ((char *)datafilename, O_RDWR | O_CREAT, 0666); + datafile = dbm_open ((char *)datafilename, O_RDWR | O_CREAT, 0666); if (datafile == NULL) - abort(); + return 0; /* Skip empty subtrees. */ if (!*tp) return 0; - if (ggc_set_mark (*tp)) + if (ggc_marked_p (*tp)) { result = splay_tree_lookup (written_trees, (splay_tree_key)*tp); if (result) return result->value; } + ggc_test_and_set_mark (*tp); id = current_id++; splay_tree_insert (written_trees, (splay_tree_key)(*tp), id); buffer = pickle_tree (*tp); @@ -5406,3 +5546,131 @@ write_tree (tp) free (buffer); return id; } +static char * +pickle_rtl (rtl) + rtx rtl; +{ + int i; + const char *format; + rtx buffer = xmalloc (sizeof (struct rtx_def) + (GET_RTX_LENGTH (GET_CODE (rtl)) - 1) * sizeof (rtunion)); + memcpy (buffer, rtl, sizeof (struct rtx_def) + (GET_RTX_LENGTH (GET_CODE (rtl)) - 1) * sizeof (rtunion)); + format = GET_RTX_FORMAT (GET_CODE (rtl)); + for (i = 0; i < GET_RTX_LENGTH (GET_CODE (rtl)); ++i) + { + switch (format[i]) + { + case '\0': + return 0; + case 'e': + case 'u': + XEXP (buffer, i) = (rtx) write_rtl (&XEXP (buffer, i)); + break; + case 'V': + case 'E': + if (XVEC (buffer, i) != 0) + { + int j; + for (j = 0; j < XVECLEN (buffer, i); ++j) + { + XVECEXP (buffer, i, j) = (rtx) write_rtl (&XVECEXP (buffer, i, j)); + } + } + break; + case 'S': + case 's': + if (XSTR (buffer, i) != 0) + { + XSTR (buffer, i) = (const char *) pickle_string (XSTR (buffer, i)); + } + break; + case 't': + if (XTREE (buffer, i) != 0) + { + XTREE (buffer, i) = (tree) write_tree (&XTREE (buffer, i)); + } + break; + case '0': + switch (GET_CODE (rtl)) + { + case JUMP_INSN: + case LABEL_REF: + case CONST_DOUBLE: + X0EXP (buffer, i) = (rtx) write_rtl (&X0EXP (buffer, i)); + break; + case CODE_LABEL: + if (i != 3) + X0EXP (buffer, i) = (rtx) write_rtl (&X0EXP (buffer, i)); + break; + case MEM: + case REG: + case SCRATCH: + case ADDR_DIFF_VEC: + break; + + case NOTE: + switch (NOTE_LINE_NUMBER (rtl)) + { + case NOTE_INSN_RANGE_BEG: + case NOTE_INSN_RANGE_END: + case NOTE_INSN_LIVE: + case NOTE_INSN_EXPECTED_VALUE: + X0EXP (buffer, i) = (rtx) write_rtl (&X0EXP (buffer, i)); + break; + case NOTE_INSN_BLOCK_BEG: + case NOTE_INSN_BLOCK_END: + if (X0TREE (buffer, i) != 0) + { + X0TREE (buffer, i) = (tree) write_tree (&X0TREE (buffer, i)); + } + break; + case NOTE_INSN_DELETED_LABEL: + if (X0STR (buffer, i) != 0) + { + X0STR (buffer, i) = (const char *) pickle_string (X0STR (buffer, i)); + } + break; + default: + if (NOTE_LINE_NUMBER (rtl) >= 0) + if (X0STR (buffer, i) != 0) + { + X0STR (buffer, i) = (const char *) pickle_string (X0STR (buffer, i)); + } + break; + } + break; + default: + abort (); + } + break; + } + } + return (char *)buffer; +} + + + +int +write_rtl (rtlp) + rtx *rtlp; +{ + size_t id; + splay_tree_node result; + char *buffer; + if (written_rtl == NULL) + written_rtl = splay_tree_new (splay_tree_compare_pointers, NULL, NULL); + if (!*rtlp) + return 0; + if (ggc_marked_p (*rtlp)) + { + result = splay_tree_lookup (written_rtl, (splay_tree_key) *rtlp); + if (result) + return result->value; + } + ggc_test_and_set_mark (*rtlp); + id = current_id++; + splay_tree_insert (written_rtl, (splay_tree_key) (*rtlp), id); + buffer = pickle_rtl (*rtlp); + store_to_db (&id, sizeof (int), buffer, sizeof (struct rtx_def) + (GET_RTX_LENGTH (GET_CODE (*rtlp)) - 1) * sizeof (rtunion)); + free (buffer); + return id; +} diff --git a/gcc/treepch.h b/gcc/treepch.h index e2ddbaec2bf..da373fcfe62 100644 --- a/gcc/treepch.h +++ b/gcc/treepch.h @@ -1,19 +1,28 @@ #include "splay-tree.h" -#ifdef HAVE_SDBM_H +#ifdef HAVE_MDBM_H +#define NDBM_COMPAT +#include "mdbm.h" +#elif HAVE_SDBM_H #include "sdbm.h" #elif HAVE_GDBM_H #include "gdbm.h" #endif #include "varray.h" +extern int write_rtl PARAMS ((rtx *)); extern int write_tree PARAMS ((tree *)); extern int write_tree_varray PARAMS ((varray_type)); +extern rtx read_rtl PARAMS ((rtx)); extern tree read_tree PARAMS ((tree)); extern varray_type read_tree_varray PARAMS ((varray_type)); extern void lang_pickle_tree PARAMS ((tree, tree)); extern void lang_unpickle_tree PARAMS ((tree)); +extern const char * unpickle_string PARAMS ((int)); +extern int pickle_string PARAMS ((const char *)); extern splay_tree read_trees; extern splay_tree written_trees; extern splay_tree written_pointers; +extern splay_tree written_rtl; +extern splay_tree read_rtls; extern size_t current_id; extern const char *datafilename; extern DBM *datafile; |