aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2003-09-09 19:20:42 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2003-09-09 19:20:42 +0000
commit892955bff08d660ba36d42e32f3b7a0c7d3acd61 (patch)
tree823a28a2d46337361bda4fb8b420c47fe0f5c672 /gcc
parent086a4bd7ddda8e5ac0faeee217f6ff5564bb1b4f (diff)
downloadgcc-892955bff08d660ba36d42e32f3b7a0c7d3acd61.zip
gcc-892955bff08d660ba36d42e32f3b7a0c7d3acd61.tar.gz
gcc-892955bff08d660ba36d42e32f3b7a0c7d3acd61.tar.bz2
builtins.c (fold_builtin_cabs): Protect the complex argument against multiple evaluation when...
* builtins.c (fold_builtin_cabs): Protect the complex argument against multiple evaluation when optimizing cabs* into sqrt*. From-SVN: r71242
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/builtins.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d103a85..6754c80 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-09-09 Roger Sayle <roger@eyesopen.com>
+
+ * builtins.c (fold_builtin_cabs): Protect the complex argument
+ against multiple evaluation when optimizing cabs* into sqrt*.
+
Tue Sep 9 15:36:28 CEST 2003 Jan Hubicka <jh@suse.cz>
* varasm.c (notice_global_symbol): Properly deal with weak symbols.
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 290fac49..92e6a70 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -5718,6 +5718,8 @@ fold_builtin_cabs (tree fndecl, tree arglist, tree type)
{
tree rpart, ipart, result, arglist;
+ arg = save_expr (arg);
+
rpart = fold (build1 (REALPART_EXPR, type, arg));
ipart = fold (build1 (IMAGPART_EXPR, type, arg));