[committed][PR rtl-optimization/116544] Fix test for promoted subregs
This is a small bug in the ext-dce code's handling of promoted subregs. Essentially when we see a promoted subreg we need to make additional bit groups live as various parts of the RTL path know that an extension of a suitably promoted subreg can be trivially eliminated. When I added support for dealing with this quirk I failed to account for the larger modes properly and it ignored the case when the size of the inner object was > 32 bits. Opps. This does _not_ fix the outstanding x86 issue. That's caused by something completely different and more concerning ;( Bootstrapped and regression tested on x86. Obviously fixes the testcase on riscv as well. Pushing to the trunk. PR rtl-optimization/116544 gcc/ * ext-dce.cc (ext_dce_process_uses): Fix thinko in promoted subreg handling. gcc/testsuite/ * gcc.dg/torture/pr116544.c: New test.
This commit is contained in:
parent
f77435aa39
commit
0562976d62
2 changed files with 23 additions and 1 deletions
|
@ -846,7 +846,7 @@ ext_dce_process_uses (rtx_insn *insn, rtx obj,
|
|||
bitmap_set_bit (livenow, rn + 1);
|
||||
if (size > 16)
|
||||
bitmap_set_bit (livenow, rn + 2);
|
||||
if (size == 32)
|
||||
if (size >= 32)
|
||||
bitmap_set_bit (livenow, rn + 3);
|
||||
iter.skip_subrtxes ();
|
||||
}
|
||||
|
|
22
gcc/testsuite/gcc.dg/torture/pr116544.c
Normal file
22
gcc/testsuite/gcc.dg/torture/pr116544.c
Normal file
|
@ -0,0 +1,22 @@
|
|||
/* { dg-options "-fno-strict-aliasing -fwrapv" }
|
||||
/* { dg-do run { target longlong64 } } */
|
||||
|
||||
extern void abort (void);
|
||||
long long a;
|
||||
signed char b[60];
|
||||
signed char c;
|
||||
long long d[60];
|
||||
int e[30];
|
||||
long long *f = d;
|
||||
static void g(long long *j, long k) { *j = k; }
|
||||
int main() {
|
||||
d[5] = 0x100000000;
|
||||
for (int h = 2; h < 7; h += 3)
|
||||
for (int i = 0; i < (c || b[h]) + 10; i += 11)
|
||||
e[2] = f[h];
|
||||
g(&a, e[2]);
|
||||
if (a != 0)
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Add table
Reference in a new issue