OSDN Git Service

* builtins.c (fold_builtin_cabs): Use validate_arg().
authorghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Oct 2009 05:28:25 +0000 (05:28 +0000)
committerghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Oct 2009 05:28:25 +0000 (05:28 +0000)
(fold_builtin_cexp): Fix if-logic.
(fold_builtin_1): Check subtype for BUILT_IN_CIMAG.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@153488 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/builtins.c

index e5c2679..0b4b8ee 100644 (file)
@@ -1,3 +1,9 @@
+2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * builtins.c (fold_builtin_cabs): Use validate_arg().
+       (fold_builtin_cexp): Fix if-logic.
+       (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
+
 2009-10-22  Jeff Law  <law@redhat.com>
 
        * ira-lives.c (process_single_reg_class_operands): Update the 
index d991408..1243d72 100644 (file)
@@ -7194,7 +7194,7 @@ fold_builtin_cabs (location_t loc, tree arg, tree type, tree fndecl)
 {
   tree res;
 
-  if (TREE_CODE (TREE_TYPE (arg)) != COMPLEX_TYPE
+  if (!validate_arg (arg, COMPLEX_TYPE)
       || TREE_CODE (TREE_TYPE (TREE_TYPE (arg))) != REAL_TYPE)
     return NULL_TREE;
 
@@ -7583,7 +7583,7 @@ fold_builtin_cexp (location_t loc, tree arg0, tree type)
 #endif
 
   if (!validate_arg (arg0, COMPLEX_TYPE)
-      && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
+      || TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) != REAL_TYPE)
     return NULL_TREE;
 
 #ifdef HAVE_mpc
@@ -10017,7 +10017,8 @@ fold_builtin_1 (location_t loc, tree fndecl, tree arg0, bool ignore)
     break;
 
     CASE_FLT_FN (BUILT_IN_CIMAG):
-      if (validate_arg (arg0, COMPLEX_TYPE))
+      if (validate_arg (arg0, COMPLEX_TYPE)
+         && TREE_CODE (TREE_TYPE (TREE_TYPE (arg0))) == REAL_TYPE)
        return non_lvalue_loc (loc, fold_build1_loc (loc, IMAGPART_EXPR, type, arg0));
     break;