aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-03-01 09:46:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-03-01 09:46:19 +0000
commit7a00d9eaf66d34d3e26938e890a4fb880df531f4 (patch)
tree4350359914b33a7170ae49a554770232e317a6c9
parent06c7edcc27e82d457693e971b2f7a7830b12a0a5 (diff)
downloadgcc-7a00d9eaf66d34d3e26938e890a4fb880df531f4.zip
gcc-7a00d9eaf66d34d3e26938e890a4fb880df531f4.tar.gz
gcc-7a00d9eaf66d34d3e26938e890a4fb880df531f4.tar.bz2
re PR lto/47924 (Missed optimization with LTO)
2011-03-01 Richard Guenther <rguenther@suse.de> PR lto/47924 * lto-streamer.c (lto_record_common_node): Also register the canonical type. * gcc.dg/lto/pr47924_0.c: New testcase. From-SVN: r170589
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/lto-streamer.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/lto/pr47924_0.c19
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5d567fb..79487c1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2011-03-01 Richard Guenther <rguenther@suse.de>
+ PR lto/47924
+ * lto-streamer.c (lto_record_common_node): Also register
+ the canonical type.
+
+2011-03-01 Richard Guenther <rguenther@suse.de>
+
PR lto/46911
* lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
Do not stream DECL_ABSTRACT_ORIGIN.
diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c
index dba9d2d..67132ef 100644
--- a/gcc/lto-streamer.c
+++ b/gcc/lto-streamer.c
@@ -527,7 +527,9 @@ lto_record_common_node (tree *nodep, VEC(tree, heap) **common_nodes,
are set by the middle-end. */
if (in_lto_p)
TYPE_CANONICAL (node) = NULL_TREE;
- *nodep = node = gimple_register_type (node);
+ node = gimple_register_type (node);
+ TYPE_CANONICAL (node) = gimple_register_canonical_type (node);
+ *nodep = node;
}
/* Return if node is already seen. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 65e0db4..d5e79f8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2011-03-01 Richard Guenther <rguenther@suse.de>
+ PR lto/47924
+ * gcc.dg/lto/pr47924_0.c: New testcase.
+
+2011-03-01 Richard Guenther <rguenther@suse.de>
+
PR lto/46911
* gfortran.dg/lto/pr46911_0.f: New testcase.
diff --git a/gcc/testsuite/gcc.dg/lto/pr47924_0.c b/gcc/testsuite/gcc.dg/lto/pr47924_0.c
new file mode 100644
index 0000000..f7fdb44
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/pr47924_0.c
@@ -0,0 +1,19 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-O2 -flto}} } */
+
+extern void link_error (void);
+short *p __attribute__((used));
+int i __attribute__((used));
+
+int main()
+{
+ if (i == 0)
+ return;
+
+ *p = 0;
+
+ if (i == 0)
+ link_error ();
+
+ return 0;
+}