aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2014-03-14 11:49:05 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2014-03-14 11:49:05 +0100
commit3d354792e623c04384497eb5f9c06e0c87f49a19 (patch)
tree186bdc74d530ef224645e86ec3d111193889beca /gcc
parent5cbf2c71aace25db3a0c2b9727de135acea7877b (diff)
downloadgcc-3d354792e623c04384497eb5f9c06e0c87f49a19.zip
gcc-3d354792e623c04384497eb5f9c06e0c87f49a19.tar.gz
gcc-3d354792e623c04384497eb5f9c06e0c87f49a19.tar.bz2
re PR lto/60461 (LTO linking error at -Os (and above) on x86_64-linux-gnu)
2014-03-13 Martin Jambor <mjambor@suse.cz> PR lto/60461 * ipa-prop.c (ipa_modify_call_arguments): Fix iteration condition and simplify it. testsuite/ * gcc.dg/lto/pr60461_0.c: New test. From-SVN: r208566
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-prop.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/lto/pr60461_0.c37
4 files changed, 49 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f20c9de..b2c7072 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-03-13 Martin Jambor <mjambor@suse.cz>
+
+ PR lto/60461
+ * ipa-prop.c (ipa_modify_call_arguments): Fix iteration condition
+ and simplify it.
+
2014-03-14 Georg-Johann Lay <avr@gjlay.de>
PR target/59396
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 4fb916a..9f144fa 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -3900,8 +3900,7 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, gimple stmt,
ipa_record_stmt_references (current_node, gsi_stmt (gsi));
gsi_prev (&gsi);
}
- while ((gsi_end_p (prev_gsi) && !gsi_end_p (gsi))
- || (!gsi_end_p (prev_gsi) && gsi_stmt (gsi) == gsi_stmt (prev_gsi)));
+ while (gsi_stmt (gsi) != gsi_stmt (prev_gsi));
}
/* If the expression *EXPR should be replaced by a reduction of a parameter, do
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0268eb6..7f7c974 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-03-13 Martin Jambor <mjambor@suse.cz>
+
+ PR lto/60461
+ * gcc.dg/lto/pr60461_0.c: New test.
+
2014-03-14 Cesar Philippidis <cesar@codesourcery.com>
* lib/gcc-dg.exp (cleanup-saved-temps): Handle LTO temporaries.
diff --git a/gcc/testsuite/gcc.dg/lto/pr60461_0.c b/gcc/testsuite/gcc.dg/lto/pr60461_0.c
new file mode 100644
index 0000000..cad6a8d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/pr60461_0.c
@@ -0,0 +1,37 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-Os -flto} } } */
+
+
+struct S
+{
+ int f1;
+ int f2;
+} a[1] = { {0, 0} };
+
+int b, c;
+
+static unsigned short fn1 (struct S);
+
+void
+fn2 ()
+{
+ for (; c;)
+ ;
+ b = 0;
+ fn1 (a[0]);
+}
+
+unsigned short
+fn1 (struct S p)
+{
+ if (p.f1)
+ fn2 ();
+ return 0;
+}
+
+int
+main ()
+{
+ fn2 ();
+ return 0;
+}