diff options
author | Richard Biener <rguenther@suse.de> | 2016-08-15 09:56:00 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-08-15 09:56:00 +0000 |
commit | e4969090b68ff266b29c86b6aebec25812666fc4 (patch) | |
tree | c23c379cf6e756837d03ce0db535edbb68acd4cc /gcc/testsuite/gcc.dg | |
parent | 980bd53780025944008dbcd89caeed8d6e782715 (diff) | |
download | gcc-e4969090b68ff266b29c86b6aebec25812666fc4.zip gcc-e4969090b68ff266b29c86b6aebec25812666fc4.tar.gz gcc-e4969090b68ff266b29c86b6aebec25812666fc4.tar.bz2 |
re PR tree-optimization/73434 (Wrong code with casting, branches and aliasing)
2016-08-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/73434
* tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Preserve
TBAA info on the base when forwarding a non-invariant address.
* gcc.dg/torture/pr73434.c: New testcase.
From-SVN: r239471
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr73434.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr73434.c b/gcc/testsuite/gcc.dg/torture/pr73434.c new file mode 100644 index 0000000..624e0c6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr73434.c @@ -0,0 +1,19 @@ +/* { dg-do run } */ + +typedef struct { unsigned char x; } A; +typedef struct { unsigned char x; } B; + +int idx = 0; + +A objs[1] = {{0}}; + +int main() +{ + B *b = (B*)&objs[idx]; + b->x++; + if (b->x) + b->x = 0; + if (b->x) + __builtin_abort (); + return 0; +} |