SOURCES: gcc-pr29512.patch (NEW) - O(c^N) complexity algorithm in ...

pluto pluto at pld-linux.org
Sun Oct 22 15:26:55 CEST 2006


Author: pluto                        Date: Sun Oct 22 13:26:55 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- O(c^N) complexity algorithm in the i386 backend.

---- Files affected:
SOURCES:
   gcc-pr29512.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/gcc-pr29512.patch
diff -u /dev/null SOURCES/gcc-pr29512.patch:1.1
--- /dev/null	Sun Oct 22 15:26:55 2006
+++ SOURCES/gcc-pr29512.patch	Sun Oct 22 15:26:50 2006
@@ -0,0 +1,66 @@
+--- trunk/gcc/config/i386/i386.c	(wersja 117926)
++++ trunk/gcc/config/i386/i386.c	(wersja 117927)
+@@ -2951,32 +2951,6 @@
+       switch (TREE_CODE (type))
+ 	{
+ 	case RECORD_TYPE:
+-	  /* For classes first merge in the field of the subclasses.  */
+-	  if (TYPE_BINFO (type))
+-	    {
+-	      tree binfo, base_binfo;
+-	      int basenum;
+-
+-	      for (binfo = TYPE_BINFO (type), basenum = 0;
+-		   BINFO_BASE_ITERATE (binfo, basenum, base_binfo); basenum++)
+-		{
+-		   int num;
+-		   int offset = tree_low_cst (BINFO_OFFSET (base_binfo), 0) * 8;
+-		   tree type = BINFO_TYPE (base_binfo);
+-
+-		   num = classify_argument (TYPE_MODE (type),
+-					    type, subclasses,
+-					    (offset + bit_offset) % 256);
+-		   if (!num)
+-		     return 0;
+-		   for (i = 0; i < num; i++)
+-		     {
+-		       int pos = (offset + (bit_offset % 64)) / 8 / 8;
+-		       classes[i + pos] =
+-			 merge_classes (subclasses[i], classes[i + pos]);
+-		     }
+-		}
+-	    }
+ 	  /* And now merge the fields of structure.  */
+ 	  for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
+ 	    {
+@@ -3044,10 +3018,6 @@
+ 	case QUAL_UNION_TYPE:
+ 	  /* Unions are similar to RECORD_TYPE but offset is always 0.
+ 	     */
+-
+-	  /* Unions are not derived.  */
+-	  gcc_assert (!TYPE_BINFO (type)
+-		      || !BINFO_N_BASE_BINFOS (TYPE_BINFO (type)));
+ 	  for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
+ 	    {
+ 	      if (TREE_CODE (field) == FIELD_DECL)
+@@ -3735,18 +3705,7 @@
+ 	  {
+ 	    tree field;
+ 
+-	    if (TYPE_BINFO (type))
+-	      {
+-		tree binfo, base_binfo;
+-		int i;
+-
+-		for (binfo = TYPE_BINFO (type), i = 0;
+-		     BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
+-		  if (contains_128bit_aligned_vector_p
+-		      (BINFO_TYPE (base_binfo)))
+-		    return true;
+-	      }
+-	    /* And now merge the fields of structure.  */
++	    /* Walk all the structure fields.  */
+ 	    for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
+ 	      {
+ 		if (TREE_CODE (field) == FIELD_DECL
================================================================


More information about the pld-cvs-commit mailing list