https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107242
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- >From the original dump: { const struct complex a = {._M_value=__complex__ (1.10000002384185791015625e+0, 2.2000000476837158203125e+0)}; const struct complex b = {._M_value=__complex__ (3.2999999523162841796875e+0, 4.400000095367431640625e+0)}; <<cleanup_point const struct complex a = {._M_value=__complex__ (1.10000002384185791015625e+0, 2.2000000476837158203125e+0)};>>; <<cleanup_point const struct complex b = {._M_value=__complex__ (3.2999999523162841796875e+0, 4.400000095367431640625e+0)};>>; <<cleanup_point return <retval> = TARGET_EXPR <D.68654, TARGET_EXPR <D.68676, {._M_value=__complex__ (1.10000002384185791015625e+0, 2.2000000476837158203125e+0) + __complex__ (3.2999999523162841796875e+0, 4.400000095367431640625e+0)}>>>>; } Which looks fine as we have COMPLEX_CST+COMPLEX_CST But then in the gimple dump we get: <retval> = *.LC2D.78102; Which is broken.