------- Additional Comments From steven at gcc dot gnu dot org 2005-07-26 00:30 ------- This is miscompiled: SUBROUTINE foo (A, B) IMPLICIT NONE COMPLEX*16 A, Im1 REAL*8 B Im1 = Dcmplx(0.D0, 1.D0) A = A + Im1 * B RETURN END SUBROUTINE foo t.f90.t35.ch: ;; Function foo (foo_) foo (a, b) { complex8 im1; complex8 D.808; complex8 D.807; complex8 D.806; real8 D.805; complex8 D.804; <bb 0>: D.804_3 = *a_2; D.805_5 = *b_4; D.806_6 = COMPLEX_EXPR <D.805_5, 0.0>; D.807_7 = D.806_6 * __complex__ (0.0, 1.0e+0); D.808_8 = D.804_3 + D.807_7; *a_2 = D.808_8; return; } t.f90.t37.cplxlower: foo (a, b) { real8 CI.14; real8 D.834; real8 CI.13; real8 CR.12; real8 D.831; real8 D.830; complex8 im1; complex8 D.808; complex8 D.807; complex8 D.806; real8 D.805; complex8 D.804; <bb 0>: D.830_15 = REALPART_EXPR <*a_2>; D.831_16 = IMAGPART_EXPR <*a_2>; D.804_3 = COMPLEX_EXPR <D.830_15, D.831_16>; CR.12_12 = D.830_15; CI.13_13 = D.831_16; D.805_5 = *b_4; D.806_6 = COMPLEX_EXPR <D.805_5, 0.0>; D.807_7 = COMPLEX_EXPR <0.0, D.805_5>; D.834_17 = CI.13_13 - D.805_5; D.808_8 = COMPLEX_EXPR <CR.12_12, D.834_17>; CI.14_14 = D.834_17; REALPART_EXPR <*a_2> = CR.12_12; IMAGPART_EXPR <*a_2> = CI.14_14; return; }
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22504