re PR rtl-optimization/57459 (LRA inheritance bug)
2013-06-06 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/57459 * lra-constraints.c (update_ebb_live_info): Fix typo for operand type when setting live regs. 2013-06-06 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/57459 * gcc.target/i386/pr57459.c: New test. From-SVN: r199762
This commit is contained in:
parent
3597e1135e
commit
d89ae27c44
4 changed files with 72 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2013-06-06 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
PR rtl-optimization/57459
|
||||
* lra-constraints.c (update_ebb_live_info): Fix typo for operand
|
||||
type when setting live regs.
|
||||
|
||||
2013-06-06 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
* config/s390/s390.opt (mlra): New option.
|
||||
|
|
|
@ -4545,7 +4545,7 @@ update_ebb_live_info (rtx head, rtx tail)
|
|||
bitmap_clear_bit (&live_regs, reg->regno);
|
||||
/* Mark each used value as live. */
|
||||
for (reg = curr_id->regs; reg != NULL; reg = reg->next)
|
||||
if (reg->type == OP_IN
|
||||
if (reg->type != OP_OUT
|
||||
&& bitmap_bit_p (&check_only_regs, reg->regno))
|
||||
bitmap_set_bit (&live_regs, reg->regno);
|
||||
/* It is quite important to remove dead move insns because it
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2013-06-06 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
PR rtl-optimization/57459
|
||||
* gcc.target/i386/pr57459.c: New test.
|
||||
|
||||
2013-06-06 Teresa Johnson <tejohnson@google.com>
|
||||
|
||||
PR c++/53743
|
||||
|
|
60
gcc/testsuite/gcc.target/i386/pr57459.c
Normal file
60
gcc/testsuite/gcc.target/i386/pr57459.c
Normal file
|
@ -0,0 +1,60 @@
|
|||
/* PR rtl-optimization/57459 */
|
||||
/* { dg-do run } */
|
||||
/* { dg-options "-fno-inline -O2 -minline-all-stringops -fno-omit-frame-pointer" } */
|
||||
|
||||
int total1[10], total2[10], total3[10], total4[10], total5[10], a[20];
|
||||
int len;
|
||||
|
||||
void stackclean() {
|
||||
void *ptr = __builtin_alloca(20000);
|
||||
__builtin_memset(ptr, 0, 20000);
|
||||
}
|
||||
|
||||
void foo(const char *s) {
|
||||
int r1 = a[1];
|
||||
int r2 = a[2];
|
||||
int r3 = a[3];
|
||||
int r4 = a[4];
|
||||
int r5 = a[5];
|
||||
|
||||
len = __builtin_strlen(s);
|
||||
|
||||
if (s != 0)
|
||||
return;
|
||||
|
||||
while (r1) {
|
||||
total1[r1] = r1;
|
||||
r1--;
|
||||
}
|
||||
|
||||
while (r2) {
|
||||
total2[r2] = r2;
|
||||
r2--;
|
||||
}
|
||||
|
||||
while (r3) {
|
||||
total3[r3] = r3;
|
||||
r3--;
|
||||
}
|
||||
|
||||
while (r4) {
|
||||
total4[r4] = r4;
|
||||
r4--;
|
||||
}
|
||||
|
||||
while (r5) {
|
||||
total5[r5] = r5;
|
||||
r5--;
|
||||
}
|
||||
}
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
int main() {
|
||||
stackclean();
|
||||
foo("abcdefgh");
|
||||
if (len != 8)
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Add table
Reference in a new issue