diff options
author | Jakub Jelinek <jakub@redhat.com> | 2004-12-14 19:04:56 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2004-12-14 19:04:56 +0100 |
commit | 29bfcb6de7ffe290a8944f067eaba33622bac5f2 (patch) | |
tree | 138d28ee62311126a15e66e1d41d8da6f421547a /gcc/builtins.c | |
parent | 2a1a3cd51f8bb928fe7291d8dcb84492bc49f6ed (diff) | |
download | gcc-29bfcb6de7ffe290a8944f067eaba33622bac5f2.zip gcc-29bfcb6de7ffe290a8944f067eaba33622bac5f2.tar.gz gcc-29bfcb6de7ffe290a8944f067eaba33622bac5f2.tar.bz2 |
re PR middle-end/18951 (Invalid code generated by expand_errno_check)
PR middle-end/18951
* builtins.c (expand_builtin_mathfn, expand_builtin_mathfn_2,
expand_builtin_mathfn_3): Avoid using arguments passed to
save_expr after that call.
* gcc.c-torture/execute/20041213-1.c: New test.
From-SVN: r92151
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index dfad35c..a6a80cf 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -1771,6 +1771,7 @@ expand_builtin_mathfn (tree exp, rtx target, rtx subtarget) narg = builtin_save_expr (arg); if (narg != arg) { + arg = narg; arglist = build_tree_list (NULL_TREE, arg); exp = build_function_call_expr (fndecl, arglist); } @@ -1910,6 +1911,7 @@ expand_builtin_mathfn_2 (tree exp, rtx target, rtx subtarget) narg = builtin_save_expr (arg1); if (narg != arg1) { + arg1 = narg; temp = build_tree_list (NULL_TREE, narg); stable = false; } @@ -1919,6 +1921,7 @@ expand_builtin_mathfn_2 (tree exp, rtx target, rtx subtarget) narg = builtin_save_expr (arg0); if (narg != arg0) { + arg0 = narg; arglist = tree_cons (NULL_TREE, narg, temp); stable = false; } @@ -2029,6 +2032,7 @@ expand_builtin_mathfn_3 (tree exp, rtx target, rtx subtarget) narg = save_expr (arg); if (narg != arg) { + arg = narg; arglist = build_tree_list (NULL_TREE, arg); exp = build_function_call_expr (fndecl, arglist); } |