aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr17153.C17
-rw-r--r--gcc/tree-ssa-alias.c1
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5981fed..8ac6692 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2004-09-18 Diego Novillo <dnovillo@redhat.com>
+ * tree-ssa-alias.c (setup_pointers_and_addressables): Don't
+ remove TREE_ADDRESSABLE from RESULT_DECL.
+
+2004-09-18 Diego Novillo <dnovillo@redhat.com>
+
* tree-ssa-alias.c (dump_alias_info): Ignore NULL SSA_NAMEs.
2004-09-18 Jan Hubicka <jh@suse.cz>
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ddc44e6..4bb4604 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2004-09-18 Diego Novillo <dnovillo@redhat.com>
+
+ * g++.dg/tree-ssa/pr17153.C: New test.
+
2004-09-16 Geoffrey Keating <geoffk@apple.com>
PR pch/13361
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr17153.C b/gcc/testsuite/g++.dg/tree-ssa/pr17153.C
new file mode 100644
index 0000000..91b4cfe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr17153.C
@@ -0,0 +1,17 @@
+/* The alias analyzer was marking RETVAL non-addressable, but RETVAL
+ is a special variable that's available across different functions. */
+void foo(const char*);
+
+struct A {};
+
+struct B : A
+{
+ B(){}
+ B bar()
+ {
+ foo(__PRETTY_FUNCTION__);
+ return B();
+ };
+};
+
+B b=B().bar();
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index 34d9bb0..baf5ff2 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -1347,6 +1347,7 @@ setup_pointers_and_addressables (struct alias_info *ai)
{
if (!bitmap_bit_p (ai->addresses_needed, v_ann->uid)
&& v_ann->mem_tag_kind == NOT_A_TAG
+ && TREE_CODE (var) != RESULT_DECL
&& !is_global_var (var))
{
/* The address of VAR is not needed, remove the