This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/19609] [4.0 Regression] real and imaginary part interchanged when flags_complex_divide_method=1


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]