From: Diego Novillo Date: Sat, 18 Sep 2004 13:56:23 +0000 (+0000) Subject: tree-ssa-alias.c (setup_pointers_and_addressables): Don't remove TREE_ADDRESSABLE... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=57e28d7d7659ab3102d38deba7f02a687aa316d8;p=gcc.git tree-ssa-alias.c (setup_pointers_and_addressables): Don't remove TREE_ADDRESSABLE from RESULT_DECL. * tree-ssa-alias.c (setup_pointers_and_addressables): Don't remove TREE_ADDRESSABLE from RESULT_DECL. testsuite/ChangeLog * g++.dg/tree-ssa/pr17153.C: New test. From-SVN: r87703 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5981fed67f9..8ac66921107 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-09-18 Diego Novillo + + * tree-ssa-alias.c (setup_pointers_and_addressables): Don't + remove TREE_ADDRESSABLE from RESULT_DECL. + 2004-09-18 Diego Novillo * tree-ssa-alias.c (dump_alias_info): Ignore NULL SSA_NAMEs. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ddc44e64cdf..4bb46044e19 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-09-18 Diego Novillo + + * g++.dg/tree-ssa/pr17153.C: New test. + 2004-09-16 Geoffrey Keating 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 00000000000..91b4cfe1503 --- /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 34d9bb04212..baf5ff27696 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