Commit b217d7fe by Richard Kenner

(build_complex): Add new argument, TYPE.

From-SVN: r12863
parent a5ee6e44
...@@ -1444,18 +1444,19 @@ build_string (len, str) ...@@ -1444,18 +1444,19 @@ build_string (len, str)
/* Return a newly constructed COMPLEX_CST node whose value is /* Return a newly constructed COMPLEX_CST node whose value is
specified by the real and imaginary parts REAL and IMAG. specified by the real and imaginary parts REAL and IMAG.
Both REAL and IMAG should be constant nodes. Both REAL and IMAG should be constant nodes. TYPE, if specified,
The TREE_TYPE is not initialized. */ will be the type of the COMPLEX_CST; otherwise a new type will be made. */
tree tree
build_complex (real, imag) build_complex (type, real, imag)
tree type;
tree real, imag; tree real, imag;
{ {
register tree t = make_node (COMPLEX_CST); register tree t = make_node (COMPLEX_CST);
TREE_REALPART (t) = real; TREE_REALPART (t) = real;
TREE_IMAGPART (t) = imag; 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_OVERFLOW (t) = TREE_OVERFLOW (real) | TREE_OVERFLOW (imag);
TREE_CONSTANT_OVERFLOW (t) TREE_CONSTANT_OVERFLOW (t)
= TREE_CONSTANT_OVERFLOW (real) | TREE_CONSTANT_OVERFLOW (imag); = TREE_CONSTANT_OVERFLOW (real) | TREE_CONSTANT_OVERFLOW (imag);
...@@ -3164,7 +3165,7 @@ build_type_variant (type, constp, volatilep) ...@@ -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 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. */ 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) if (constp == TYPE_READONLY (t) && volatilep == TYPE_VOLATILE (t)
&& TYPE_NAME (t) == TYPE_NAME (type)) && TYPE_NAME (t) == TYPE_NAME (type))
return t; return t;
......
...@@ -1251,7 +1251,7 @@ extern tree build_parse_node PVPROTO((enum tree_code, ...)); ...@@ -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_int_2_wide PROTO((HOST_WIDE_INT, HOST_WIDE_INT));
extern tree build_real PROTO((tree, REAL_VALUE_TYPE)); extern tree build_real PROTO((tree, REAL_VALUE_TYPE));
extern tree build_real_from_int_cst PROTO((tree, tree)); 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 build_string PROTO((int, char *));
extern tree build1 PROTO((enum tree_code, tree, tree)); extern tree build1 PROTO((enum tree_code, tree, tree));
extern tree build_tree_list PROTO((tree, tree)); extern tree build_tree_list PROTO((tree, tree));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment