aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-07-28 19:48:33 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-07-28 19:48:33 -0400
commit62acb9781ff34c6da24a07e35c76927c86a20250 (patch)
tree389d9c87a9b7ce8a57370ce4644a4debf4a5dbb4 /gcc
parentbb14e22817b7bfb6773adc6945c9350ca8a47f84 (diff)
downloadgcc-62acb9781ff34c6da24a07e35c76927c86a20250.zip
gcc-62acb9781ff34c6da24a07e35c76927c86a20250.tar.gz
gcc-62acb9781ff34c6da24a07e35c76927c86a20250.tar.bz2
(expand_expr, case CONJ_EXPR): Use correct mode for parts of a complex
expression. From-SVN: r7815
Diffstat (limited to 'gcc')
-rw-r--r--gcc/expr.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 62eb5b8..b6c4e55 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6058,6 +6058,7 @@ expand_expr (exp, target, tmode, modifier)
case CONJ_EXPR:
{
+ enum machine_mode partmode = TYPE_MODE (TREE_TYPE (TREE_TYPE (exp)));
rtx imag_t;
rtx insns;
@@ -6069,11 +6070,12 @@ expand_expr (exp, target, tmode, modifier)
start_sequence ();
/* Store the realpart and the negated imagpart to target. */
- emit_move_insn (gen_realpart (mode, target), gen_realpart (mode, op0));
+ emit_move_insn (gen_realpart (partmode, target),
+ gen_realpart (partmode, op0));
- imag_t = gen_imagpart (mode, target);
- temp = expand_unop (mode, neg_optab,
- gen_imagpart (mode, op0), imag_t, 0);
+ imag_t = gen_imagpart (partmode, target);
+ temp = expand_unop (partmode, neg_optab,
+ gen_imagpart (partmode, op0), imag_t, 0);
if (temp != imag_t)
emit_move_insn (imag_t, temp);