diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-07-19 12:26:23 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-07-19 12:26:23 +0200 |
commit | 14298fa4891ee9b347d7f286cc8ef266976f9e18 (patch) | |
tree | e9fc9b6ab66a0e34aca203c1589f4af86f54f457 /gcc/function.c | |
parent | 22469e4244a549e0745299578ebc5144505a6a51 (diff) | |
download | gcc-14298fa4891ee9b347d7f286cc8ef266976f9e18.zip gcc-14298fa4891ee9b347d7f286cc8ef266976f9e18.tar.gz gcc-14298fa4891ee9b347d7f286cc8ef266976f9e18.tar.bz2 |
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.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/function.c b/gcc/function.c index 373c1f2..2a0061c 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; |