diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-04-12 11:08:43 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-04-12 11:08:43 +0200 |
commit | 4e0eea7560fdb90cbe3ee20eadbac0325d6e4e31 (patch) | |
tree | f33bf21edaeecb4d83030d5faf1e9251b1c88548 /gcc/tree-sra.c | |
parent | 21f3a2369bb56501115221846f63f54a035233bc (diff) | |
download | gcc-4e0eea7560fdb90cbe3ee20eadbac0325d6e4e31.zip gcc-4e0eea7560fdb90cbe3ee20eadbac0325d6e4e31.tar.gz gcc-4e0eea7560fdb90cbe3ee20eadbac0325d6e4e31.tar.bz2 |
re PR tree-optimization/70602 (wrong code at -O1 and above on x86_64-linux-gnu in 32-bit mode (and at -Os only in 64-bit mode))
PR tree-optimization/70602
* tree-sra.c (generate_subtree_copies): Don't write anything into
constant pool decls.
* gcc.c-torture/execute/pr70602.c: New test.
From-SVN: r234895
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r-- | gcc/tree-sra.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 738c1a7..1d2b1c5 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -2743,6 +2743,9 @@ generate_subtree_copies (struct access *access, tree agg, gimple_stmt_iterator *gsi, bool write, bool insert_after, location_t loc) { + /* Never write anything into constant pool decls. See PR70602. */ + if (!write && constant_decl_p (agg)) + return; do { if (chunk_size && access->offset >= start_offset + chunk_size) |