diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index fdbf896b1cb..85d59b23faf 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,9 @@ +2012-09-11 Jan Hubicka + + PR lto/54312 + * lto.c (uniquify_nodes): Remove quadratic loop checking if the + type is variant leader. + 2012-09-11 Richard Guenther * lto.c (enum gtc_mode): Remove. diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index e6b63550ff7..c87ad6cfb06 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1850,6 +1850,7 @@ uniquify_nodes (struct data_in *data_in, unsigned from) variant list state before fixup is broken. */ tree tem, mv; +#ifdef ENABLE_CHECKING /* Remove us from our main variant list if we are not the variant leader. */ if (TYPE_MAIN_VARIANT (t) != t) @@ -1857,10 +1858,9 @@ uniquify_nodes (struct data_in *data_in, unsigned from) tem = TYPE_MAIN_VARIANT (t); while (tem && TYPE_NEXT_VARIANT (tem) != t) tem = TYPE_NEXT_VARIANT (tem); - if (tem) - TYPE_NEXT_VARIANT (tem) = TYPE_NEXT_VARIANT (t); - TYPE_NEXT_VARIANT (t) = NULL_TREE; + gcc_assert (!tem && !TYPE_NEXT_VARIANT (t)); } +#endif /* Query our new main variant. */ mv = GIMPLE_REGISTER_TYPE (TYPE_MAIN_VARIANT (t));