From b217d7febe66988b50d0dd41303dc332c0281acc Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 29 Sep 1996 19:02:39 -0400 Subject: [PATCH] (build_complex): Add new argument, TYPE. From-SVN: r12863 --- gcc/tree.c | 11 ++++++----- gcc/tree.h | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/gcc/tree.c b/gcc/tree.c index d42458a..a5b67dd 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -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; diff --git a/gcc/tree.h b/gcc/tree.h index ee2f72f..2d37be9 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -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)); -- 2.7.4