diff options
author | Richard Stallman <rms@gnu.org> | 1992-05-29 20:23:11 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-05-29 20:23:11 +0000 |
commit | 5cd76fcd7f0db9c993fcbd14c1b4b3f4204fc497 (patch) | |
tree | 704071c48eebf73028e8ad4982ef08b89e5622c0 /gcc | |
parent | d072107f2332b70700b7fbd9b27c802ff3cef1a2 (diff) | |
download | gcc-5cd76fcd7f0db9c993fcbd14c1b4b3f4204fc497.zip gcc-5cd76fcd7f0db9c993fcbd14c1b4b3f4204fc497.tar.gz gcc-5cd76fcd7f0db9c993fcbd14c1b4b3f4204fc497.tar.bz2 |
*** empty log message ***
From-SVN: r1126
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/integrate.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c index fae93a1..243f56d 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -1464,9 +1464,20 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add && GET_CODE (pattern) == SET && GET_CODE (SET_DEST (pattern)) == REG && REG_FUNCTION_VALUE_P (SET_DEST (pattern))) - break; - - copy = emit_insn (copy_rtx_and_substitute (pattern, map)); + { + if (volatile_refs_p (SET_SRC (pattern))) + { + /* If we must not delete the source, + load it into a new temporary. */ + copy = emit_insn (copy_rtx_and_substitute (pattern, map)); + SET_DEST (pattern) + = gen_reg_rtx (GET_MODE (SET_DEST (pattern))); + } + else + break; + } + else + copy = emit_insn (copy_rtx_and_substitute (pattern, map)); /* REG_NOTES will be copied later. */ #ifdef HAVE_cc0 |