diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-09-29 19:02:39 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-09-29 19:02:39 -0400 |
commit | b217d7febe66988b50d0dd41303dc332c0281acc (patch) | |
tree | e8047acb948312a724d16e4692c42d2624ba5a3b | |
parent | a5ee6e448487ac6c76cce0da796451a8c2c54ea4 (diff) | |
download | gcc-b217d7febe66988b50d0dd41303dc332c0281acc.zip gcc-b217d7febe66988b50d0dd41303dc332c0281acc.tar.gz gcc-b217d7febe66988b50d0dd41303dc332c0281acc.tar.bz2 |
(build_complex): Add new argument, TYPE.
From-SVN: r12863
-rw-r--r-- | gcc/tree.c | 11 | ||||
-rw-r--r-- | gcc/tree.h | 2 |
2 files changed, 7 insertions, 6 deletions
@@ -1444,18 +1444,19 @@ build_string (len, str) /* Return a newly constructed COMPLEX_CST node whose value is specified by the real and imaginary parts REAL and IMAG. - Both REAL and IMAG should be constant nodes. - The TREE_TYPE is not initialized. */ + Both REAL and IMAG should be constant nodes. TYPE, if specified, + will be the type of the COMPLEX_CST; otherwise a new type will be made. */ tree -build_complex (real, imag) +build_complex (type, real, imag) + tree type; tree real, imag; { register tree t = make_node (COMPLEX_CST); TREE_REALPART (t) = real; TREE_IMAGPART (t) = imag; - TREE_TYPE (t) = build_complex_type (TREE_TYPE (real)); + TREE_TYPE (t) = type ? type : build_complex_type (TREE_TYPE (real)); TREE_OVERFLOW (t) = TREE_OVERFLOW (real) | TREE_OVERFLOW (imag); TREE_CONSTANT_OVERFLOW (t) = TREE_CONSTANT_OVERFLOW (real) | TREE_CONSTANT_OVERFLOW (imag); @@ -3164,7 +3165,7 @@ build_type_variant (type, constp, volatilep) like the one we need to have. If so, use that existing one. We must preserve the TYPE_NAME, since there is code that depends on this. */ - for (t = TYPE_MAIN_VARIANT(type); t; t = TYPE_NEXT_VARIANT (t)) + for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t)) if (constp == TYPE_READONLY (t) && volatilep == TYPE_VOLATILE (t) && TYPE_NAME (t) == TYPE_NAME (type)) return t; @@ -1251,7 +1251,7 @@ extern tree build_parse_node PVPROTO((enum tree_code, ...)); extern tree build_int_2_wide PROTO((HOST_WIDE_INT, HOST_WIDE_INT)); extern tree build_real PROTO((tree, REAL_VALUE_TYPE)); extern tree build_real_from_int_cst PROTO((tree, tree)); -extern tree build_complex PROTO((tree, tree)); +extern tree build_complex PROTO((tree, tree, tree)); extern tree build_string PROTO((int, char *)); extern tree build1 PROTO((enum tree_code, tree, tree)); extern tree build_tree_list PROTO((tree, tree)); |