200x-xx-xx Kaz Kylheku <kaz@zeugmasystems.com>
gcc/ 200x-xx-xx Kaz Kylheku <kaz@zeugmasystems.com> PR rtl-optimization/34456 * resource.c (mark_set_resources): Use regs_invalidated_by_call rather than call_used_regs and global_regs. gcc/testsuite/ PR rtl-optimization/34456 * gcc.c-torture/execute/pr34456.c: New test. From-SVN: r131033
This commit is contained in:
parent
b6541c1068
commit
eef75f5ec0
|
@ -1,3 +1,9 @@
|
|||
2007-12-18 Kaz Kylheku <kaz@zeugmasystems.com>
|
||||
|
||||
PR rtl-optimization/34456
|
||||
* resource.c (mark_set_resources): Use regs_invalidated_by_call
|
||||
rather than call_used_regs and global_regs.
|
||||
|
||||
2007-12-18 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/34490
|
||||
|
|
|
@ -663,9 +663,8 @@ mark_set_resources (rtx x, struct resources *res, int in_dest,
|
|||
rtx link;
|
||||
|
||||
res->cc = res->memory = 1;
|
||||
for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
|
||||
if (call_used_regs[r] || global_regs[r])
|
||||
SET_HARD_REG_BIT (res->regs, r);
|
||||
|
||||
IOR_HARD_REG_SET (res->regs, regs_invalidated_by_call);
|
||||
|
||||
for (link = CALL_INSN_FUNCTION_USAGE (x);
|
||||
link; link = XEXP (link, 1))
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2007-12-18 Richard Sandiford <rsandifo@nildram.co.uk>
|
||||
|
||||
PR rtl-optimization/34456
|
||||
* gcc.c-torture/execute/pr34456.c: New test.
|
||||
|
||||
2007-12-18 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/34488
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
#include <stdlib.h>
|
||||
|
||||
int __attribute__ ((noinline)) debug (void) { return 1; }
|
||||
int errors;
|
||||
|
||||
struct s { int elt; int (*compare) (int); };
|
||||
|
||||
static int
|
||||
compare (const void *x, const void *y)
|
||||
{
|
||||
const struct s *s1 = x, *s2 = y;
|
||||
int (*compare1) (int);
|
||||
int elt2;
|
||||
|
||||
compare1 = s1->compare;
|
||||
elt2 = s2->elt;
|
||||
if (elt2 != 0 && debug () && compare1 (s1->elt) != 0)
|
||||
errors++;
|
||||
return compare1 (elt2);
|
||||
}
|
||||
|
||||
int bad_compare (int x) { return -x; }
|
||||
struct s array[2] = { { 1, bad_compare }, { -1, bad_compare } };
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
qsort (array, 2, sizeof (struct s), compare);
|
||||
return errors == 0;
|
||||
}
|
Loading…
Reference in New Issue