From a13f439f47a1b35ed273bfb34a96e01bb6c9c875 Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Thu, 22 Sep 2016 14:52:09 +0200 Subject: re PR ipa/77653 (wrong code at -Os and above on x86_64-linux-gnu (in both 32-bit and 64-bit modes)) Fix PR ipa/77653 PR ipa/77653 * gcc.dg/ipa/pr77653.c: New test. PR ipa/77653 * ipa-icf.c (sem_variable::merge): Yield merge operation if alias address matters, not necessarily address of original. From-SVN: r240354 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/ipa/pr77653.c | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/ipa/pr77653.c (limited to 'gcc/testsuite') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0891121..82a8676 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-09-22 Martin Liska + + PR ipa/77653 + * gcc.dg/ipa/pr77653.c: New test. + 2016-09-22 Jakub Jelinek PR fortran/77665 diff --git a/gcc/testsuite/gcc.dg/ipa/pr77653.c b/gcc/testsuite/gcc.dg/ipa/pr77653.c new file mode 100644 index 0000000..8d11739 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ipa/pr77653.c @@ -0,0 +1,24 @@ +/* { dg-options "-O2 -fdump-ipa-icf-details" } */ + +int a, b, c, d, e, h, i, j, k, l; +const int f; +static int g; + +void fn1 (int p1) +{ + k = d ? c % k : a * b; + h &= j ^ i ^ 1; +} + +int main () +{ + const int *m = &f, **n = &m; + l && (*n = &e); + if (m != &f) + __builtin_abort (); + fn1 (g); + return 0; +} + +/* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf" } } */ +/* { dg-final { scan-ipa-dump "Not unifying; adress of original may be compared." "icf" } } */ -- cgit v1.1