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

Thomas dot Koenig at online dot de gcc-bugzilla@gcc.gnu.org
Tue Jan 25 08:49:00 GMT 2005


------- Additional Comments From Thomas dot Koenig at online dot de  2005-01-25 08:48 -------
Same thing:

$ cat cdivide.c
#include <stdio.h>
#include <math.h>
#include <complex.h>

int main()
{
    float complex a,b,c;
    c = a/b;
}

$ ~/gcc-bin/gcc/xgcc -fdump-rtl-all-all -fdump-tree-all -B ~/gcc-bin/gcc/ cdivide.c
cdivide.c: In function 'main':
cdivide.c:9: internal compiler error: in purge_dead_edges, at cfgrtl.c:2460
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
$ cat cdivide.c.t14.oplower

;; Function main (main)

main ()
{
  float D.2722;
  float D.2721;
  float D.2720;
  float D.2719;
  float D.2718;
  float D.2717;
  float D.2716;
  float D.2715;
  float D.2714;
  float D.2713;
  float D.2712;
  float D.2711;
  float D.2710;
  float D.2709;
  float D.2708;
  float D.2707;
  float D.2706;
  float D.2705;
  float D.2704;
  float D.2703;
  float D.2700;
  float D.2699;
  float D.2698;
  float D.2697;
  float D.2696;
  float D.2695;
  complex float c;
  complex float b;
  complex float a;
  complex float D.2690;

<bb 0>:
  D.2695 = REALPART_EXPR <a>;
  D.2696 = IMAGPART_EXPR <a>;
  D.2697 = REALPART_EXPR <b>;
  D.2698 = IMAGPART_EXPR <b>;
  D.2699 = ABS_EXPR <D.2697>;
  D.2700 = ABS_EXPR <D.2698>;
  if (D.2699 < D.2700) goto <L0>; else goto <L1>;

<L0>:;
  D.2705 = D.2697 / D.2698;
  D.2706 = D.2697 * D.2705;
  D.2707 = D.2706 + D.2698;
  D.2708 = D.2695 * D.2705;
  D.2709 = D.2708 + D.2696;
  D.2710 = D.2696 * D.2705;
  D.2711 = D.2710 - D.2695;
  D.2712 = D.2709 / D.2707;
  D.2713 = D.2711 / D.2707;
  D.2703 = D.2712;
  D.2704 = D.2713;

<L1>:;
  D.2714 = D.2698 / D.2697;
  D.2715 = D.2698 * D.2714;
  D.2716 = D.2715 + D.2697;
  D.2717 = D.2696 * D.2714;
  D.2718 = D.2717 + D.2695;
  D.2719 = D.2695 * D.2714;
  D.2720 = D.2696 - D.2719;
  D.2721 = D.2718 / D.2716;
  D.2722 = D.2720 / D.2716;
  D.2703 = D.2721;
  D.2704 = D.2722;

<bb 1>:
  D.2690 = COMPLEX_EXPR <D.2703, D.2704>;
  c = D.2690;
  return;

}


-- 


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



More information about the Gcc-bugs mailing list