diff options
author | Richard Stallman <rms@gnu.org> | 1992-06-03 19:42:57 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-06-03 19:42:57 +0000 |
commit | db0e6d01ad5dac14ab89ad75ae723891bcedebcc (patch) | |
tree | 2f4db798a76013a9b9a89f49b602fb74d3b6cf54 /gcc | |
parent | 80f5b9d8135c93cbec206a232bf78328752029da (diff) | |
download | gcc-db0e6d01ad5dac14ab89ad75ae723891bcedebcc.zip gcc-db0e6d01ad5dac14ab89ad75ae723891bcedebcc.tar.gz gcc-db0e6d01ad5dac14ab89ad75ae723891bcedebcc.tar.bz2 |
*** empty log message ***
From-SVN: r1147
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/expr.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -4858,7 +4858,15 @@ expand_builtin (exp, target, subtarget, mode, ignore) || TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))) != REAL_TYPE) return CONST0_RTX (TYPE_MODE (TREE_TYPE (exp))); - /* Compute the argument. */ + /* Stabilize and compute the argument. */ + if (TREE_CODE (TREE_VALUE (arglist)) != VAR_DECL + && TREE_CODE (TREE_VALUE (arglist)) != PARM_DECL) + { + exp = copy_node (exp); + arglist = copy_node (arglist); + TREE_OPERAND (exp, 1) = arglist; + TREE_VALUE (arglist) = save_expr (TREE_VALUE (arglist)); + } op0 = expand_expr (TREE_VALUE (arglist), subtarget, VOIDmode, 0); /* Make a suitable register to place result in. */ |