builtins.c (fold_builtin_1): Take decomposed arguments of CALL_EXPR.
authorKazu Hirata <kazu@cs.umass.edu>
Mon, 21 Mar 2005 14:26:34 +0000 (14:26 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Mon, 21 Mar 2005 14:26:34 +0000 (14:26 +0000)
* builtins.c (fold_builtin_1): Take decomposed arguments of
CALL_EXPR.

From-SVN: r96797

gcc/ChangeLog
gcc/builtins.c

index 2baf95e003ab8345a3a47c4ac9098dbde4ab9ed5..5201ca4efd0d386c6d23ac84d82104e4afb436af 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-21  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * builtins.c (fold_builtin_1): Take decomposed arguments of
+       CALL_EXPR.
+
 2005-03-21  Nathan Sidwell  <nathan@codesourcery.com>
 
        PR other/20564
index a2b08f6d749bcd68abf01353b1d1af7f25f8dccb..e326c15376b5b299fa227a3eb01f11e672bbe063 100644 (file)
@@ -178,7 +178,7 @@ static tree fold_builtin_fabs (tree, tree);
 static tree fold_builtin_abs (tree, tree);
 static tree fold_builtin_unordered_cmp (tree, tree, enum tree_code,
                                        enum tree_code);
-static tree fold_builtin_1 (tree, bool);
+static tree fold_builtin_1 (tree, tree, bool);
 
 static tree fold_builtin_strpbrk (tree, tree);
 static tree fold_builtin_strstr (tree, tree);
@@ -7939,10 +7939,8 @@ fold_builtin_complex_div (tree type, tree arglist)
    if no simplification was possible.  */
 
 static tree
-fold_builtin_1 (tree exp, bool ignore)
+fold_builtin_1 (tree fndecl, tree arglist, bool ignore)
 {
-  tree fndecl = get_callee_fndecl (exp);
-  tree arglist = TREE_OPERAND (exp, 1);
   tree type = TREE_TYPE (TREE_TYPE (fndecl));
   enum built_in_function fcode;
 
@@ -8300,7 +8298,10 @@ fold_builtin_1 (tree exp, bool ignore)
 tree
 fold_builtin (tree exp, bool ignore)
 {
-  exp = fold_builtin_1 (exp, ignore);
+  tree fndecl = get_callee_fndecl (exp);
+  tree arglist = TREE_OPERAND (exp, 1);
+
+  exp = fold_builtin_1 (fndecl, arglist, ignore);
   if (exp)
     {
       /* ??? Don't clobber shared nodes such as integer_zero_node.  */