------- Additional Comments From pcarlini at suse dot de 2005-01-25 10:49 ------- Hi, everything looks fine here (20050124 on x86-linux), double checked the formulas, bootstrapped c, c++, tested a few other divisions besides the testcase (now ok), and cannot reproduce the last dump of Thomas. The below is mine, seems ok (e.g., the goto at the end of block L0 is present):
;; Function main (main) main () { float D.2643; float D.2642; float D.2641; float D.2640; float D.2639; float D.2638; float D.2637; float D.2636; float D.2635; float D.2634; float D.2633; float D.2632; float D.2631; float D.2630; float D.2629; float D.2628; float D.2627; float D.2626; float D.2625; float D.2624; float D.2621; float D.2620; float D.2619; float D.2618; float D.2617; float D.2616; complex float c; complex float b; complex float a; complex float D.2611; <bb 0>: D.2616 = REALPART_EXPR <a>; D.2617 = IMAGPART_EXPR <a>; D.2618 = REALPART_EXPR <b>; D.2619 = IMAGPART_EXPR <b>; D.2620 = ABS_EXPR <D.2618>; D.2621 = ABS_EXPR <D.2619>; if (D.2620 < D.2621) goto <L0>; else goto <L1>; <L0>:; D.2626 = D.2618 / D.2619; D.2627 = D.2618 * D.2626; D.2628 = D.2627 + D.2619; D.2629 = D.2616 * D.2626; D.2630 = D.2629 + D.2617; D.2631 = D.2617 * D.2626; D.2632 = D.2631 - D.2616; D.2633 = D.2630 / D.2628; D.2634 = D.2632 / D.2628; D.2624 = D.2633; D.2625 = D.2634; goto <bb 1>; <L1>:; D.2635 = D.2619 / D.2618; D.2636 = D.2619 * D.2635; D.2637 = D.2636 + D.2618; D.2638 = D.2617 * D.2635; D.2639 = D.2638 + D.2616; D.2640 = D.2616 * D.2635; D.2641 = D.2617 - D.2640; D.2642 = D.2639 / D.2637; D.2643 = D.2641 / D.2637; D.2624 = D.2642; D.2625 = D.2643; <bb 1>: D.2611 = COMPLEX_EXPR <D.2624, D.2625>; c = D.2611; return; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19609