c-typeck.c (tagged_types_tu_compatible_p): Speedup common case of the type values being in the same order.

* c-typeck.c (tagged_types_tu_compatible_p) <ENUMERAL_TYPE>:
	Speedup common case of the type values being in the same order.

From-SVN: r78585
This commit is contained in:
Andrew Pinski 2004-02-27 22:33:02 +00:00 committed by Andrew Pinski
parent 58adf39ce4
commit dedbabed29
2 changed files with 26 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2004-02-27 Andrew Pinski <apinski@apple.com>
* c-typeck.c (tagged_types_tu_compatible_p) <ENUMERAL_TYPE>:
Speedup common case of the type values being in the same order.
2004-02-27 Steve Ellcey <sje@cup.hp.com>
* config/ia64/ia64.h (no-inline-float-divide): New option.

View File

@ -701,6 +701,27 @@ tagged_types_tu_compatible_p (tree t1, tree t2, int flags)
{
case ENUMERAL_TYPE:
{
/* Speed up the case where the type values are in the same order. */
tree tv1 = TYPE_VALUES (t1);
tree tv2 = TYPE_VALUES (t2);
if (tv1 == tv2)
return 1;
for (;tv1 && tv2; tv1 = TREE_CHAIN (tv2), tv2 = TREE_CHAIN (tv2))
{
if (TREE_PURPOSE (tv1) != TREE_PURPOSE (tv1))
break;
if (simple_cst_equal (TREE_VALUE (tv1), TREE_VALUE (tv2)) != 1)
return 0;
}
if (tv1 == NULL_TREE && tv2 == NULL_TREE)
return 1;
if (tv1 == NULL_TREE || tv2 == NULL_TREE)
return 0;
if (list_length (TYPE_VALUES (t1)) != list_length (TYPE_VALUES (t2)))
return 0;