aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-sra.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-04-12 11:08:43 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-04-12 11:08:43 +0200
commit4e0eea7560fdb90cbe3ee20eadbac0325d6e4e31 (patch)
treef33bf21edaeecb4d83030d5faf1e9251b1c88548 /gcc/tree-sra.c
parent21f3a2369bb56501115221846f63f54a035233bc (diff)
downloadgcc-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.c3
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)