------- Comment #15 from ebotcazou at gcc dot gnu dot org  2009-02-08 10:58 
-------
> This is a bug in the qsort implementation on Solaris 8:

Browsing the Sun database shows several related tickets, but most have been
closed as "not a defect" on the ground that the comparator function fails to
impose a total order on the array.  That's the case here because of overflow:

(gdb) p cl->sorted[0].cost
$29 = 2147483646
(gdb) p cl->sorted[1].cost
$30 = -2147483644
(gdb) p cl->sorted[2].cost
$31 = -2147483648
(gdb) p cl->sorted[3].cost
$32 = 2
(gdb) p cl->sorted[4].cost
$33 = -2147483648
(gdb) p cl->sorted[5].cost
$34 = 2
(gdb) p cl->sorted[6].cost
$35 = 2147483646
(gdb) p cl->sorted[7].cost
$36 = 2147483646

Breakpoint 2, compare_pairs (p1=0x1cc4e88, p2=0x1cc4e8c)
    at /nile.build/botcazou/gcc-head/src/gcc/tree-ssa-coalesce.c:314
314       const_coalesce_pair_p const *const pp1 = (const_coalesce_pair_p const
*) p1;
(gdb) next
315       const_coalesce_pair_p const *const pp2 = (const_coalesce_pair_p const
*) p2;
(gdb)
318       result = (* pp2)->cost - (* pp1)->cost;
(gdb) p (* pp2)->cost
$46 = -2147483644
(gdb) p (* pp1)->cost
$47 = 2147483646
(gdb) next
322       if (result == 0)
(gdb) p result
$48 = 6


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38981

Reply via email to