re PR tree-optimization/16721 (Accesses to volatile objects optimized away)
PR tree-optimization/16721 * tree-dfa.c (dump_variable): Show TREE_THIS_VOLATILE. * tree-ssa-alias.c (create_memory_tag): Move setting of TREE_THIS_VOLATILE ... (get_tmt_for): ... here. testsuite/ChangeLog PR tree-optimization/16721 * testsuite/gcc.dg/tree-ssa/pr16721.c: New test. From-SVN: r87895
This commit is contained in:
parent
ba652ba925
commit
c04f07f4cf
|
@ -1,3 +1,11 @@
|
|||
2004-09-22 Diego Novillo <dnovillo@redhat.com>
|
||||
|
||||
PR tree-optimization/16721
|
||||
* tree-dfa.c (dump_variable): Show TREE_THIS_VOLATILE.
|
||||
* tree-ssa-alias.c (create_memory_tag): Move setting of
|
||||
TREE_THIS_VOLATILE ...
|
||||
(get_tmt_for): ... here.
|
||||
|
||||
2004-09-22 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* config/sparc/sparc.md (cmove splitter): Fix formatting.
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2004-09-22 Diego Novillo <dnovillo@redhat.com>
|
||||
|
||||
PR tree-optimization/16721
|
||||
* testsuite/gcc.dg/tree-ssa/pr16721.c: New test.
|
||||
|
||||
2004-09-23 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* gcc.dg/20030123-1.c: Add prototypes for builtin functions.
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fno-strict-aliasing -fdump-tree-optimized" } */
|
||||
|
||||
struct data {
|
||||
volatile unsigned long *addr;
|
||||
} *p;
|
||||
|
||||
int test()
|
||||
{
|
||||
*p->addr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* The load from p->addr should not disappear. */
|
||||
/* { dg-final { scan-tree-dump-times "\->addr" 1 "optimized"} } */
|
|
@ -552,6 +552,9 @@ dump_variable (FILE *file, tree var)
|
|||
if (is_global_var (var))
|
||||
fprintf (file, ", is global");
|
||||
|
||||
if (TREE_THIS_VOLATILE (var))
|
||||
fprintf (file, ", is volatile");
|
||||
|
||||
if (is_call_clobbered (var))
|
||||
fprintf (file, ", call clobbered");
|
||||
|
||||
|
|
|
@ -2025,9 +2025,6 @@ create_memory_tag (tree type, bool is_type_tag)
|
|||
determine whether they should be considered globals. */
|
||||
DECL_CONTEXT (tag) = current_function_decl;
|
||||
|
||||
/* If the pointed-to type is volatile, so is the tag. */
|
||||
TREE_THIS_VOLATILE (tag) = TREE_THIS_VOLATILE (type);
|
||||
|
||||
/* Memory tags are by definition addressable. This also prevents
|
||||
is_gimple_ref frome confusing memory tags with optimizable
|
||||
variables. */
|
||||
|
@ -2126,6 +2123,9 @@ get_tmt_for (tree ptr, struct alias_info *ai)
|
|||
ai->pointers[ai->num_pointers++] = alias_map;
|
||||
}
|
||||
|
||||
/* If the pointed-to type is volatile, so is the tag. */
|
||||
TREE_THIS_VOLATILE (tag) = TREE_THIS_VOLATILE (tag_type);
|
||||
|
||||
/* Make sure that the type tag has the same alias set as the
|
||||
pointed-to type. */
|
||||
gcc_assert (tag_set == get_alias_set (tag));
|
||||
|
|
Loading…
Reference in New Issue