summaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-07-19 12:26:23 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2019-07-19 12:26:23 +0200
commit14298fa4891ee9b347d7f286cc8ef266976f9e18 (patch)
treee9fc9b6ab66a0e34aca203c1589f4af86f54f457 /gcc/function.c
parent22469e4244a549e0745299578ebc5144505a6a51 (diff)
re PR middle-end/91190 (ICE on valid code: in hashtab_chk_error, at hash-table.c:137)
PR middle-end/91190 * function.c (insert_temp_slot_address): Store into the hash table a copy of address to avoid RTL sharing issues. * gcc.c-torture/compile/pr91190.c: New test. From-SVN: r273599
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 373c1f2beb2..2a0061cad35 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -704,7 +704,7 @@ static void
insert_temp_slot_address (rtx address, class temp_slot *temp_slot)
{
struct temp_slot_address_entry *t = ggc_alloc<temp_slot_address_entry> ();
- t->address = address;
+ t->address = copy_rtx (address);
t->temp_slot = temp_slot;
t->hash = temp_slot_address_compute_hash (t);
*temp_slot_address_table->find_slot_with_hash (t, t->hash, INSERT) = t;