From: Richard Guenther Date: Sat, 21 Oct 2006 10:05:21 +0000 (+0000) Subject: re PR target/29512 (compile time hog / deadloop.) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1faf92ae7981649ecfab6499ab2212a0d2d15540;p=gcc.git re PR target/29512 (compile time hog / deadloop.) 2006-10-21 Richard Guenther PR target/29512 * config/i386/i386.c (classify_argument): Remove redundant walking of the BINFOs. (contains_128bit_aligned_vector_p): Likewise. From-SVN: r117927 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fd453292a7c..9719982f396 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2006-10-21 Richard Guenther + + PR target/29512 + * config/i386/i386.c (classify_argument): Remove redundant + walking of the BINFOs. + (contains_128bit_aligned_vector_p): Likewise. + 2006-10-20 Mark Mitchell * BASE-VER: Set to 4.3.0. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e4f711ea20b..6be47cdb410 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2951,32 +2951,6 @@ classify_argument (enum machine_mode mode, tree type, 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 @@ classify_argument (enum machine_mode mode, tree type, 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 @@ contains_128bit_aligned_vector_p (tree type) { 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