aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-structalias.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2006-05-07 21:03:55 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2006-05-07 21:03:55 +0000
commit18455d174e20136859caf15b360c6ba941fb6688 (patch)
tree73589bc29516aec8ae6263c78c3d383887aaa764 /gcc/tree-ssa-structalias.c
parente716a54401ce2848a0143d5e02a5b9f11015886a (diff)
downloadgcc-18455d174e20136859caf15b360c6ba941fb6688.zip
gcc-18455d174e20136859caf15b360c6ba941fb6688.tar.gz
gcc-18455d174e20136859caf15b360c6ba941fb6688.tar.bz2
re PR middle-end/27409 (ICE in get_constraint_for_component_ref)
2006-05-07 Richard Guenther <rguenther@suse.de> PR tree-optimization/27409 * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not try to find zero-sized subvars. * gcc.dg/torture/pr27409.c: New testcase. From-SVN: r113607
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r--gcc/tree-ssa-structalias.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index c5b6cab..26dbd0d 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -2378,7 +2378,8 @@ get_constraint_for_component_ref (tree t, VEC(ce_s, heap) **results)
ignore this constraint. When we handle pointer subtraction,
we may have to do something cute here. */
- if (result->offset < get_varinfo (result->var)->fullsize)
+ if (result->offset < get_varinfo (result->var)->fullsize
+ && bitmaxsize != 0)
{
/* It's also not true that the constraint will actually start at the
right offset, it may start in some padding. We only care about
@@ -2400,6 +2401,12 @@ get_constraint_for_component_ref (tree t, VEC(ce_s, heap) **results)
embedded in a struct resulting in accessing *only* padding. */
gcc_assert (curr || ref_contains_array_ref (orig_t));
}
+ else if (bitmaxsize == 0)
+ {
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "Access to zero-sized part of variable,"
+ "ignoring\n");
+ }
else
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "Access to past the end of variable, ignoring\n");