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
This commit is contained in:
Jakub Jelinek 2019-07-19 12:26:23 +02:00 committed by Jakub Jelinek
parent 22469e4244
commit 14298fa489
4 changed files with 43 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2019-07-19 Jakub Jelinek <jakub@redhat.com>
PR middle-end/91190
* function.c (insert_temp_slot_address): Store into the hash table
a copy of address to avoid RTL sharing issues.
2019-07-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/91207

View File

@ -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;

View File

@ -1,3 +1,8 @@
2019-07-19 Jakub Jelinek <jakub@redhat.com>
PR middle-end/91190
* gcc.c-torture/compile/pr91190.c: New test.
2019-07-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/91207

View File

@ -0,0 +1,31 @@
/* PR middle-end/91190 */
unsigned a[1], c;
long d, h;
int e[2], f, g;
char i;
int
main ()
{
char k = 0;
int l;
while (i || d)
{
if (g)
while (1)
;
e[1] = 0;
long m[2], n = ~(3 & (5 | (h | 9) * 2237420170));
g = 90 * n;
char b = m[300000000], j = 0;
c = 5 ^ a[c ^ (b & 5)];
int o = d;
k = o ? : j;
if (k)
for (l = 0; l < 3; l++)
if (m[200000000000000000])
__builtin_printf ("%d", f);
}
return 0;
}