summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/ipa-icf.c22
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/pr72743.f9015
4 files changed, 46 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0c74a2caec2..22c5ffdd628 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2016-09-15 Chung-Lin Tang <cltang@codesourcery.com>
+
+ PR fortran/72743
+ * ipa-icf.c (set_alias_uids): New function.
+ (sem_variable::merge): Use set_alias_uids to set DECL_PT_UID of
+ all the merged variable's referring aliases.
+
2016-09-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/77514
diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
index f29d929cf67..798d833971e 100644
--- a/gcc/ipa-icf.c
+++ b/gcc/ipa-icf.c
@@ -2133,6 +2133,23 @@ sem_variable::get_hash (void)
return m_hash;
}
+/* Set all points-to UIDs of aliases pointing to node N as UID. */
+
+static void
+set_alias_uids (symtab_node *n, int uid)
+{
+ ipa_ref *ref;
+ FOR_EACH_ALIAS (n, ref)
+ {
+ if (dump_file)
+ fprintf (dump_file, " Setting points-to UID of [%s] as %d\n",
+ xstrdup_for_dump (ref->referring->asm_name ()), uid);
+
+ SET_DECL_PT_UID (ref->referring->decl, uid);
+ set_alias_uids (ref->referring, uid);
+ }
+}
+
/* Merges instance with an ALIAS_ITEM, where alias, thunk or redirection can
be applied. */
@@ -2258,12 +2275,11 @@ sem_variable::merge (sem_item *alias_item)
varpool_node::create_alias (alias_var->decl, decl);
alias->resolve_alias (original);
- if (DECL_PT_UID_SET_P (original->decl))
- SET_DECL_PT_UID (alias->decl, DECL_PT_UID (original->decl));
if (dump_file)
- fprintf (dump_file, "Unified; Variable alias has been created.\n\n");
+ fprintf (dump_file, "Unified; Variable alias has been created.\n");
+ set_alias_uids (original, DECL_UID (original->decl));
return true;
}
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 906cefbbee7..95ac8706873 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-09-15 Chung-Lin Tang <cltang@codesourcery.com>
+
+ PR fortran/72743
+ * gfortran.dg/goacc/pr72743.f90: New test.
+
2016-09-15 Richard Biener <rguenther@suse.de>
* gcc.dg/fold-reassoc-2.c: Fix dump scan.
diff --git a/gcc/testsuite/gfortran.dg/goacc/pr72743.f90 b/gcc/testsuite/gfortran.dg/goacc/pr72743.f90
new file mode 100644
index 00000000000..a29714bd43c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/goacc/pr72743.f90
@@ -0,0 +1,15 @@
+! { dg-do compile }
+! { dg-additional-options "-O2" }
+
+program p
+ integer, parameter :: n = 8
+ integer :: i, z(n)
+ z = [(i, i=1,n)]
+ print *, z
+end
+subroutine s
+ integer, parameter :: n = 8
+ integer :: i, z(n)
+ z = [(i, i=1,n)]
+ print *, z
+end