re PR tree-optimization/16867 (Inline array initializer miscompilation at -O)
authorDiego Novillo <dnovillo@redhat.com>
Thu, 12 Aug 2004 14:34:11 +0000 (14:34 +0000)
committerDiego Novillo <dnovillo@gcc.gnu.org>
Thu, 12 Aug 2004 14:34:11 +0000 (10:34 -0400)
commitc597ef4eab9a2de9ad0b2187547ac9bac0b53132
treea0fa15664fe5d4dfd7f6bced8b73b4839f33dfcb
parentab5c8549a48977b865f8ed8dd4bd4e745b1cec75
re PR tree-optimization/16867 (Inline array initializer miscompilation at -O)

PR tree-optimization/16867
* tree.c (is_global_var): New function.
(needs_to_live_in_memory): Check for TREE_ADDRESSABLE.
Call is_global_var.
* tree.h (DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL): Remove.
Update all users.
(is_global_var): Declare.
* tree-dfa.c (dump_variable): Display global and addressable
attributes.
(add_referenced_var): Clarify documentation when marking
variables call-clobbered.
* tree-flow-inline.h (is_call_clobbered): Call is_global_var
instead of needs_to_live_in_memory.
(mark_call_clobbered): If the variable is a tag, mark it
DECL_EXTERNAL.
* tree-gimple.c (is_gimple_reg): Don't check for
TREE_ADDRESSABLE.
(is_gimple_non_addressable): Likewise.
* tree-ssa-alias.c (get_nmt_for): Always check whether the tag
needs to be marked call-clobbered.
(setup_pointers_and_addressables): Call is_global_var instead
of needs_to_live_in_memory.
* tree-ssa-dce.c (need_to_preserve_store): Remove.
Update all users with is_global_var.
(mark_stmt_if_obviously_necessary): Fix processing of aliased
stores.  Don't check the virtual definitions.  Rather, check
whether the store is going into global memory.
(find_obviously_necessary_stmts): Get the symbol from the PHI
result.
* tree-ssa-operands.c (get_call_expr_operands): Do not add
clobbering may-defs if the call does not have side effects.

libjava/ChangeLog

PR tree-optimization/16867
* testsuite/libjava.lang/PR16867.java: New test.

From-SVN: r85874
12 files changed:
gcc/ChangeLog
gcc/tree-dfa.c
gcc/tree-flow-inline.h
gcc/tree-gimple.c
gcc/tree-ssa-alias.c
gcc/tree-ssa-dce.c
gcc/tree-ssa-operands.c
gcc/tree.c
gcc/tree.h
libjava/ChangeLog
libjava/testsuite/libjava.lang/PR16867.java [new file with mode: 0644]
libjava/testsuite/libjava.lang/PR16867.out [new file with mode: 0644]