[csw-devel] SF.net SVN: gar:[4008] csw/mgar/pkg/gcc4/trunk/files

valholla at users.sourceforge.net valholla at users.sourceforge.net
Sat Mar 28 04:58:06 CET 2009


Revision: 4008
          http://gar.svn.sourceforge.net/gar/?rev=4008&view=rev
Author:   valholla
Date:     2009-03-28 03:58:05 +0000 (Sat, 28 Mar 2009)

Log Message:
-----------
working copy

Added Paths:
-----------
    csw/mgar/pkg/gcc4/trunk/files/re-enable-alloc.diff
    csw/mgar/pkg/gcc4/trunk/files/split-insn-attrtab.diff

Added: csw/mgar/pkg/gcc4/trunk/files/re-enable-alloc.diff
===================================================================
--- csw/mgar/pkg/gcc4/trunk/files/re-enable-alloc.diff	                        (rev 0)
+++ csw/mgar/pkg/gcc4/trunk/files/re-enable-alloc.diff	2009-03-28 03:58:05 UTC (rev 4008)
@@ -0,0 +1,55 @@
+--- gcc-4.3.3/include/libiberty.h.o	2009-03-26 11:20:58.286509650 -0500
++++ gcc-4.3.3/include/libiberty.h	2009-03-26 11:18:37.103118030 -0500
+@@ -48,6 +48,17 @@
+ 
+ #include <stdio.h>
+ 
++#  ifndef alloca
++/* Make alloca work the best possible way.  */
++#   ifdef __GNUC__
++#    define alloca __builtin_alloca
++#   else /* not __GNUC__ */
++#    if HAVE_ALLOCA_H
++#     include <alloca.h>
++#    endif /* HAVE_ALLOCA_H */ 
++#   endif /* not __GNUC__ */
++#  endif /* not alloca */
++
+ /* If the OS supports it, ensure that the supplied stream is setup to
+    avoid any multi-threaded locking.  Otherwise leave the FILE pointer
+    unchanged.  If the stream is NULL do nothing.  */
+@@ -621,8 +632,8 @@
+    also set/unset as it is often used to indicate whether code needs
+    to call alloca(0).  */
+ extern void *C_alloca (size_t) ATTRIBUTE_MALLOC;
+-#undef alloca
+ #if GCC_VERSION >= 2000 && !defined USE_C_ALLOCA
++#undef alloca
+ # define alloca(x) __builtin_alloca(x)
+ # undef C_ALLOCA
+ # define ASTRDUP(X) \
+@@ -631,11 +642,14 @@
+    char *const libiberty_nptr = (char *const) alloca (libiberty_len); \
+    (char *) memcpy (libiberty_nptr, libiberty_optr, libiberty_len); }))
+ #else
++#if defined USE_C_ALLOCA || !defined HAVE_ALLOCA
++# undef alloca
+ # define alloca(x) C_alloca(x)
+ # undef USE_C_ALLOCA
+ # define USE_C_ALLOCA 1
+ # undef C_ALLOCA
+ # define C_ALLOCA 1
++#endif
+ extern const char *libiberty_optr;
+ extern char *libiberty_nptr;
+ extern unsigned long libiberty_len;
+--- gcc-4.3.3/gcc/configure.ac.o	2009-03-26 11:19:37.352289013 -0500
++++ gcc-4.3.3/gcc/configure.ac	2009-03-26 11:20:24.112575128 -0500
+@@ -1011,6 +1011,7 @@
+ 	sysconf strsignal getrusage nl_langinfo scandir alphasort \
+ 	gettimeofday mbstowcs wcswidth mmap mincore setlocale \
+ 	gcc_UNLOCKED_FUNCS)
++AC_FUNC_ALLOCA
+ 
+ if test x$ac_cv_func_mbstowcs = xyes; then
+   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,

Added: csw/mgar/pkg/gcc4/trunk/files/split-insn-attrtab.diff
===================================================================
--- csw/mgar/pkg/gcc4/trunk/files/split-insn-attrtab.diff	                        (rev 0)
+++ csw/mgar/pkg/gcc4/trunk/files/split-insn-attrtab.diff	2009-03-28 03:58:05 UTC (rev 4008)
@@ -0,0 +1,224 @@
+--- gcc-4.3.3/gcc/Makefile.in.o	2009-03-26 10:54:05.816690285 -0500
++++ gcc-4.3.3/gcc/Makefile.in	2009-03-26 10:53:26.456066920 -0500
+@@ -1010,6 +1010,8 @@
+ # last objects to finish building.
+ OBJS-common = \
+ 	insn-attrtab.o \
++	insn-dfatab.o \
++	insn-latencytab.o \
+ 	insn-automata.o \
+ 	insn-emit.o \
+ 	insn-extract.o \
+@@ -1270,12 +1272,13 @@
+ 
+ OBJS-onestep = libbackend.o $(OBJS-archive)
+ 
+-BACKEND = main.o @TREEBROWSER@ libbackend.a $(CPPLIB) $(LIBDECNUMBER)
++BACKEND = libbackend.a main.o @TREEBROWSER@ $(CPPLIB) $(LIBDECNUMBER)
++
+ 
+ MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \
+  insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
+- insn-attr.h insn-attrtab.c insn-opinit.c insn-preds.c insn-constants.h \
+- tm-preds.h tm-constrs.h \
++ insn-attr.h insn-attrtab.c insn-dfatab.c insn-latencytab.c insn-opinit.c \
++ insn-preds.c insn-constants.h tm-preds.h tm-constrs.h \
+  tree-check.h min-insn-modes.c insn-modes.c insn-modes.h \
+  genrtl.c genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp-input.list \
+  xgcc$(exeext) cpp$(exeext) cc1$(exeext) cc1*-dummy$(exeext) $(EXTRA_PASSES) \
+@@ -2937,8 +2940,9 @@
+ # and compile them.
+ 
+ .PRECIOUS: insn-config.h insn-flags.h insn-codes.h insn-constants.h \
+-  insn-emit.c insn-recog.c insn-extract.c insn-output.c insn-peep.c \
+-  insn-attr.h insn-attrtab.c insn-preds.c
++	insn-emit.c insn-recog.c insn-extract.c insn-output.c insn-peep.c \
++	insn-attr.h insn-attrtab.c insn-dfatab.c insn-latencytab.c insn-preds.c
++
+ 
+ # Dependencies for the md file.  The first time through, we just assume
+ # the md file itself and the generated dependency file (in order to get
+@@ -2957,6 +2961,12 @@
+ insn-attrtab.o : insn-attrtab.c $(CONFIG_H) $(SYSTEM_H) coretypes.h	\
+   $(TM_H) $(RTL_H) $(REGS_H) $(REAL_H) output.h $(INSN_ATTR_H)		\
+   insn-config.h toplev.h $(RECOG_H) $(TM_P_H) $(FLAGS_H)
++insn-dfatab.o : insn-dfatab.c $(CONFIG_H) $(SYSTEM_H) coretypes.h  \
++  $(TM_H) $(RTL_H) $(REGS_H) $(REAL_H) output.h $(INSN_ATTR_H)     \
++  insn-config.h toplev.h $(RECOG_H) $(TM_P_H) $(FLAGS_H)
++insn-latencytab.o : insn-latencytab.c $(CONFIG_H) $(SYSTEM_H)      \
++  coretypes.h $(TM_H) $(RTL_H) $(REGS_H) $(REAL_H) output.h        \
++  $(INSN_ATTR_H) insn-config.h toplev.h $(RECOG_H) $(TM_P_H) $(FLAGS_H)
+ insn-automata.o : insn-automata.c $(CONFIG_H) $(SYSTEM_H) coretypes.h	\
+   $(TM_H) $(RTL_H) $(REGS_H) $(REAL_H) output.h $(INSN_ATTR_H)		\
+   insn-config.h toplev.h $(RECOG_H) $(TM_P_H) $(FLAGS_H)
+@@ -2997,9 +3007,9 @@
+ 
+ simple_generated_h = insn-attr.h insn-codes.h insn-config.h insn-flags.h
+ 
+-simple_generated_c = insn-attrtab.c insn-automata.c insn-emit.c \
+-		     insn-extract.c insn-opinit.c insn-output.c \
+-		     insn-peep.c insn-recog.c
++simple_generated_c = insn-automata.c insn-emit.c \
++					insn-extract.c insn-opinit.c insn-output.c \
++					insn-peep.c insn-recog.c
+ 
+ $(simple_generated_h): insn-%.h: s-%; @true
+ 
+@@ -3018,6 +3028,20 @@
+ 	$(SHELL) $(srcdir)/../move-if-change tmp-$*.c insn-$*.c
+ 	$(STAMP) s-$*
+ 
++# genattrtab produces three files.
++insn-attrtab.c insn-dfatab.c insn-latencytab.c: insn-%.c: s-%; @true
++
++s-attrtab s-dfatab s-latencytab: build/genattrtab$(build_exeext) \
++	$(MD_DEPS) insn-conditions.md
++		$(RUN_GEN) build/genattrtab$(build_exeext) $(md_file) \
++   		  insn-conditions.md -atmp-attrtab.c -dtmp-dfatab.c > tmp-latencytab.c
++		$(SHELL) $(srcdir)/../move-if-change tmp-attrtab.c    insn-attrtab.c
++		$(SHELL) $(srcdir)/../move-if-change tmp-dfatab.c     insn-dfatab.c
++		$(SHELL) $(srcdir)/../move-if-change tmp-latencytab.c insn-latencytab.c
++		$(STAMP) s-attrtab
++		$(STAMP) s-dfatab
++		$(STAMP) s-latencytab
++
+ # genconstants needs to run before insn-conditions.md is available
+ # (because the constants may be used in the conditions).
+ insn-constants.h: s-constants; @true
+
+--- gcc-4.3.3/gcc/genattrtab.c.o	2009-03-25 20:32:28.189775642 -0500
++++ gcc-4.3.3/gcc/genattrtab.c	2009-03-25 20:39:51.459202637 -0500
+@@ -4433,6 +4433,61 @@
+   make_internal_attr ("*bypass_p",               byps_exp, ATTR_NONE);
+ }
+ 
++static void
++write_header (void)
++{
++  printf ("/* Generated automatically by the program `genattrtab'\n\
++from the machine description file `md'.  */\n\n");
++
++  printf ("#include \"config.h\"\n");
++  printf ("#include \"system.h\"\n");
++  printf ("#include \"coretypes.h\"\n");
++  printf ("#include \"tm.h\"\n");
++  printf ("#include \"rtl.h\"\n");
++  printf ("#include \"insn-attr.h\"\n");
++  printf ("#include \"tm_p.h\"\n");
++  printf ("#include \"insn-config.h\"\n");
++  printf ("#include \"recog.h\"\n");
++  printf ("#include \"regs.h\"\n");
++  printf ("#include \"real.h\"\n");
++  printf ("#include \"output.h\"\n");
++  printf ("#include \"toplev.h\"\n");
++  printf ("#include \"flags.h\"\n");
++  printf ("#include \"function.h\"\n");
++  printf ("\n");
++  printf ("#define operands recog_data.operand\n\n");
++}
++
++static void
++switch_stdout (const char *file_name)
++{
++  if (fflush (stdout) || ferror (stdout))
++    exit (FATAL_EXIT_CODE);
++  if (!freopen (file_name, "w", stdout))
++    fatal ("cannot open file %s: %s", file_name, strerror (errno));
++  write_header ();
++}
++
++static const char *dfa_file_name = 0;
++static const char *attr_file_name = 0;
++
++static bool
++handle_arg (const char *arg)
++{
++  switch (arg[1])
++    {
++    case 'a':
++      attr_file_name = &arg[2];
++      return true;
++    case 'd':
++      dfa_file_name = &arg[2];
++      return true;
++    default:
++      return false;
++    }
++}
++
++
+ int
+ main (int argc, char **argv)
+ {
+@@ -4444,7 +4499,7 @@
+ 
+   progname = "genattrtab";
+ 
+-  if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
++  if (init_md_reader_args_cb (argc, argv, handle_arg) != SUCCESS_EXIT_CODE)
+     return (FATAL_EXIT_CODE);
+ 
+   obstack_init (hash_obstack);
+@@ -4464,9 +4519,6 @@
+   delay_1_0_str = DEF_ATTR_STRING ("*delay_1_0");
+   num_delay_slots_str = DEF_ATTR_STRING ("*num_delay_slots");
+ 
+-  printf ("/* Generated automatically by the program `genattrtab'\n\
+-from the machine description file `md'.  */\n\n");
+-
+   /* Read the machine description.  */
+ 
+   while (1)
+@@ -4525,24 +4577,6 @@
+   if (num_delays)
+     expand_delays ();
+ 
+-  printf ("#include \"config.h\"\n");
+-  printf ("#include \"system.h\"\n");
+-  printf ("#include \"coretypes.h\"\n");
+-  printf ("#include \"tm.h\"\n");
+-  printf ("#include \"rtl.h\"\n");
+-  printf ("#include \"insn-attr.h\"\n");
+-  printf ("#include \"tm_p.h\"\n");
+-  printf ("#include \"insn-config.h\"\n");
+-  printf ("#include \"recog.h\"\n");
+-  printf ("#include \"regs.h\"\n");
+-  printf ("#include \"real.h\"\n");
+-  printf ("#include \"output.h\"\n");
+-  printf ("#include \"toplev.h\"\n");
+-  printf ("#include \"flags.h\"\n");
+-  printf ("#include \"function.h\"\n");
+-  printf ("\n");
+-  printf ("#define operands recog_data.operand\n\n");
+-
+   /* Make `insn_alternatives'.  */
+   insn_alternatives = oballoc (insn_code_number * sizeof (int));
+   for (id = defs; id; id = id->next)
+@@ -4582,13 +4616,26 @@
+   optimize_attrs ();
+ 
+   /* Now write out all the `gen_attr_...' routines.  Do these before the
+-     special routines so that they get defined before they are used.  */
++     special routines so that they get defined before they are used.
++     Because GCC has problems compiling two large functions in the same file
++     (PR other/29442), "*insn_default_latency" and "*internal_dfa_insn_code"
++     can be output to separate files, stdout and DFA_FILE_NAME respectively.
++     The remaining attributes can be output to ATTR_FILE_NAME. */
+ 
++  write_header ();
+   for (i = 0; i < MAX_ATTRS_INDEX; i++)
+     for (attr = attrs[i]; attr; attr = attr->next)
+       {
++   if (dfa_file_name
++       && !strcmp ("*internal_dfa_insn_code", attr->name))
++     switch_stdout (dfa_file_name);
++
+ 	if (! attr->is_special && ! attr->is_const)
+ 	  write_attr_get (attr);
++
++   if (attr_file_name
++       && !strcmp ("*internal_dfa_insn_code", attr->name))
++     switch_stdout (attr_file_name);
+       }
+ 
+   /* Write out delay eligibility information, if DEFINE_DELAY present.


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the devel mailing list