aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-flow-inline.h
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2005-03-15 01:26:35 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2005-03-15 01:26:35 +0000
commit9044951e0d66b05fb6f5b2982a99857d67d7c486 (patch)
tree5152c9ec2737c779726a8e050244706fcefdc704 /gcc/tree-flow-inline.h
parent50668cf626cf30043890f1000f500ce69a54fedb (diff)
downloadgcc-9044951e0d66b05fb6f5b2982a99857d67d7c486.zip
gcc-9044951e0d66b05fb6f5b2982a99857d67d7c486.tar.gz
gcc-9044951e0d66b05fb6f5b2982a99857d67d7c486.tar.bz2
re PR tree-optimization/20458 (structure aliasing causes wrong code)
2005-03-14 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/20458 * tree-flow-inline.h (mark_call_clobbered): Don't fiddle DECL_EXTERNAL on STRUCT_FIELD tags. (clear_call_clobbered): Ditto. * tree-ssa-operands.c (note_addressable): Make sure the original variable doesn't slip into the addressable list if we have subvars. * tree-tailcall.c (suitable_for_tail_opt_p): Look at STRUCT_FIELD tags too. From-SVN: r96462
Diffstat (limited to 'gcc/tree-flow-inline.h')
-rw-r--r--gcc/tree-flow-inline.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h
index 7701e5c..2d29eb2 100644
--- a/gcc/tree-flow-inline.h
+++ b/gcc/tree-flow-inline.h
@@ -619,7 +619,7 @@ mark_call_clobbered (tree var)
variable. This is because the pointer that VAR represents has
been found to point to either an arbitrary location or to a known
location in global memory. */
- if (ann->mem_tag_kind != NOT_A_TAG)
+ if (ann->mem_tag_kind != NOT_A_TAG && ann->mem_tag_kind != STRUCT_FIELD)
DECL_EXTERNAL (var) = 1;
bitmap_set_bit (call_clobbered_vars, ann->uid);
ssa_call_clobbered_cache_valid = false;
@@ -631,7 +631,7 @@ static inline void
clear_call_clobbered (tree var)
{
var_ann_t ann = var_ann (var);
- if (ann->mem_tag_kind != NOT_A_TAG)
+ if (ann->mem_tag_kind != NOT_A_TAG && ann->mem_tag_kind != STRUCT_FIELD)
DECL_EXTERNAL (var) = 0;
bitmap_clear_bit (call_clobbered_vars, ann->uid);
ssa_call_clobbered_cache_valid = false;