aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaveh Ghazi <ghazi@caip.rutgers.edu>2009-10-23 05:28:25 +0000
committerKaveh Ghazi <ghazi@caip.rutgers.edu>2009-10-23 05:28:25 +0000
commitb55caa712f100a32d61e8adf6cc28c6af1903a44 (patch)
tree2911de4c19dedd70bcd79acc922cbf6120fa258e
parentdc67971ccffcddcb739fc03b0f561d5b12156c6f (diff)
* builtins.c (fold_builtin_cabs): Use validate_arg().
(fold_builtin_cexp): Fix if-logic. (fold_builtin_1): Check subtype for BUILT_IN_CIMAG. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@153488 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/builtins.c7
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e5c26798384..0b4b8eebdc6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/builtins.c b/gcc/builtins.c
index d991408fa28..1243d72048b 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -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;