summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-10 19:46:03 +0000
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-10 19:46:03 +0000
commit36d3581db58c2c293f415e2b6a243efd2fd2db33 (patch)
tree27e962afc2c93f9a1bdca1d109ae79576073d54b
parentd1842279b37497a076438c5f52eca86bb94434fd (diff)
downloadppe42-gcc-36d3581db58c2c293f415e2b6a243efd2fd2db33.tar.gz
ppe42-gcc-36d3581db58c2c293f415e2b6a243efd2fd2db33.zip
* builtins.c (expand_builtin): Fall back to library function call for
conj, conjf, conjl, creal, crealf, creall, cimag, cimagf and cimagl. (fold_builtin_1): Lower built-ins BUILT_IN_CONJ{,F,L} to CONJ_EXPR, BUILT_IN_CREAL{,F,L} to REALPART_EXPR, and BUILT_IN_CIMAG{,F,L} to IMAGPART_EXPR respectively. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82938 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/builtins.c36
2 files changed, 31 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ef9d7a37620..9bf98563d42 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2004-06-10 Roger Sayle <roger@eyesopen.com>
+
+ * builtins.c (expand_builtin): Fall back to library function call for
+ conj, conjf, conjl, creal, crealf, creall, cimag, cimagf and cimagl.
+ (fold_builtin_1): Lower built-ins BUILT_IN_CONJ{,F,L} to CONJ_EXPR,
+ BUILT_IN_CREAL{,F,L} to REALPART_EXPR, and BUILT_IN_CIMAG{,F,L} to
+ IMAGPART_EXPR respectively.
+
2004-06-10 J"orn Rennecke <joern.rennecke@superh.com>
* sh.c (dump_table): New argument start. Changed caller.
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 384173f2bd2..199900e2228 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -5656,19 +5656,6 @@ expand_builtin (tree exp, rtx target, rtx subtarget, enum machine_mode mode,
}
break;
- case BUILT_IN_CONJ:
- case BUILT_IN_CONJF:
- case BUILT_IN_CONJL:
- case BUILT_IN_CREAL:
- case BUILT_IN_CREALF:
- case BUILT_IN_CREALL:
- case BUILT_IN_CIMAG:
- case BUILT_IN_CIMAGF:
- case BUILT_IN_CIMAGL:
- /* expand_tree_builtin changes these into CONJ_EXPR, REALPART_EXPR
- and IMAGPART_EXPR. */
- abort ();
-
case BUILT_IN_EXP:
case BUILT_IN_EXPF:
case BUILT_IN_EXPL:
@@ -7670,6 +7657,29 @@ fold_builtin_1 (tree exp)
case BUILT_IN_IMAXABS:
return fold_builtin_abs (arglist, type);
+ case BUILT_IN_CONJ:
+ case BUILT_IN_CONJF:
+ case BUILT_IN_CONJL:
+ if (validate_arglist (arglist, COMPLEX_TYPE, VOID_TYPE))
+ return fold (build1 (CONJ_EXPR, type, TREE_VALUE (arglist)));
+ break;
+
+ case BUILT_IN_CREAL:
+ case BUILT_IN_CREALF:
+ case BUILT_IN_CREALL:
+ if (validate_arglist (arglist, COMPLEX_TYPE, VOID_TYPE))
+ return non_lvalue (fold (build1 (REALPART_EXPR, type,
+ TREE_VALUE (arglist))));
+ break;
+
+ case BUILT_IN_CIMAG:
+ case BUILT_IN_CIMAGF:
+ case BUILT_IN_CIMAGL:
+ if (validate_arglist (arglist, COMPLEX_TYPE, VOID_TYPE))
+ return non_lvalue (fold (build1 (IMAGPART_EXPR, type,
+ TREE_VALUE (arglist))));
+ break;
+
case BUILT_IN_CABS:
case BUILT_IN_CABSF:
case BUILT_IN_CABSL:
OpenPOWER on IntegriCloud