From: cvs2git Date: Sun, 22 Oct 2006 13:26:50 +0000 (+0000) Subject: This commit was manufactured by cvs2git to create branch 'GCC_4_1'. X-Git-Tag: auto/th/gcc-4_1_2-0_20061201r119386_2~8 X-Git-Url: http://git.pld-linux.org/?a=commitdiff_plain;ds=sidebyside;h=514e49e5a5fcc7e255fb5c71d569d28ed66016d1;p=packages%2Fgcc.git This commit was manufactured by cvs2git to create branch 'GCC_4_1'. Cherrypick from master 2006-10-22 13:26:50 UTC Paweł Sikora '- O(c^N) complexity algorithm in the i386 backend.': gcc-pr29512.patch -> 1.1 --- diff --git a/gcc-pr29512.patch b/gcc-pr29512.patch new file mode 100644 index 0000000..ebd2322 --- /dev/null +++ b/gcc-pr29512.patch @@ -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