aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2012-09-12 18:26:19 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2012-09-12 16:26:19 +0000
commitb5c7cdfb0a1331bbed96c6e1c4f7e832fe070100 (patch)
tree3c32d98bbad6bcd8730d3f989890132168b65b84 /gcc
parented56b7f958ffab960ccad757c510d718bc85b0b6 (diff)
downloadgcc-b5c7cdfb0a1331bbed96c6e1c4f7e832fe070100.zip
gcc-b5c7cdfb0a1331bbed96c6e1c4f7e832fe070100.tar.gz
gcc-b5c7cdfb0a1331bbed96c6e1c4f7e832fe070100.tar.bz2
re PR lto/54312 (uniquify_nodes takes 12% of Mozilla LTO build)
PR lto/54312 * lto.c (uniquify_nodes): Remove quadratic loop checking if the type is variant leader. From-SVN: r191228
Diffstat (limited to 'gcc')
-rw-r--r--gcc/lto/ChangeLog6
-rw-r--r--gcc/lto/lto.c6
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index fdbf896..85d59b2 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,9 @@
+2012-09-11 Jan Hubicka <jh@suse.cz>
+
+ PR lto/54312
+ * lto.c (uniquify_nodes): Remove quadratic loop checking if the
+ type is variant leader.
+
2012-09-11 Richard Guenther <rguenther@suse.de>
* lto.c (enum gtc_mode): Remove.
diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
index e6b6355..c87ad6c 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));