summaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
authorgeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-01 01:03:29 +0000
committergeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-01 01:03:29 +0000
commit316bc009df44b63977cb0f1e4a51678920a6e8f3 (patch)
tree72e5e800965de1a0aefec76ff7020c0d0810bdc1 /gcc/emit-rtl.c
parente424e632b56a0536f9a4ee300716fc05e07cf48d (diff)
downloadgcc-316bc009df44b63977cb0f1e4a51678920a6e8f3.tar.gz
* stmt.c (expand_asm_operands): Twiddle generating_concat_p
so that CONCATs are not generated for ASMs. * emit-rtl.c (gen_reg_rtx): Don't generate CONCATs when not generating_concat_p. * function.c (pop_function_context_from): Reset generating_concat_p. (prepare_function_start): Likewise. * rtl.c (generating_concat_p): Define. * rtl.h (generating_concat_p): Declare. * toplev.c (rest_of_compilation): No CONCATs after RTL generation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36088 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r--gcc/emit-rtl.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 632c4e24e25..9a3258248bd 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -539,8 +539,9 @@ gen_reg_rtx (mode)
if (no_new_pseudos)
abort ();
- if (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT
- || GET_MODE_CLASS (mode) == MODE_COMPLEX_INT)
+ if (generating_concat_p
+ && (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT
+ || GET_MODE_CLASS (mode) == MODE_COMPLEX_INT))
{
/* For complex modes, don't make a single pseudo.
Instead, make a CONCAT of two pseudos.