------- 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

Reply via email to