diff options
author | Richard Stallman <rms@gnu.org> | 1992-11-04 07:03:33 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-11-04 07:03:33 +0000 |
commit | 5145eda8f01658086322f1b52e6d9d3285c3744e (patch) | |
tree | c0573dd98dc03ac372565a94c6927fddd842fecb /gcc | |
parent | 8f54a09b29d5a56da5a452ec1117731841de2a8a (diff) | |
download | gcc-5145eda8f01658086322f1b52e6d9d3285c3744e.zip gcc-5145eda8f01658086322f1b52e6d9d3285c3744e.tar.gz gcc-5145eda8f01658086322f1b52e6d9d3285c3744e.tar.bz2 |
(immed_real_const_1, immed_double_const):
Don't push on const_double_chain in nested function.
From-SVN: r2688
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/varasm.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c index 66d5c78..228833c 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1324,8 +1324,13 @@ immed_double_const (i0, i1, mode) if (in_current_obstack) rtl_in_current_obstack (); - CONST_DOUBLE_CHAIN (r) = const_double_chain; - const_double_chain = r; + /* Don't touch const_double_chain in nested function; + see force_const_mem. */ + if (outer_function_chain != 0) + { + CONST_DOUBLE_CHAIN (r) = const_double_chain; + const_double_chain = r; + } /* Store const0_rtx in mem-slot since this CONST_DOUBLE is on the chain. Actual use of mem-slot is only through force_const_mem. */ @@ -1390,8 +1395,13 @@ immed_real_const_1 (d, mode) if (in_current_obstack) rtl_in_current_obstack (); - CONST_DOUBLE_CHAIN (r) = const_double_chain; - const_double_chain = r; + /* Don't touch const_double_chain in nested function; + see force_const_mem. */ + if (outer_function_change != 0) + { + CONST_DOUBLE_CHAIN (r) = const_double_chain; + const_double_chain = r; + } /* Store const0_rtx in CONST_DOUBLE_MEM since this CONST_DOUBLE is on the chain, but has not been allocated memory. Actual use of CONST_DOUBLE_MEM |