Commit b5119fa1 by Richard Guenther Committed by Richard Biener

c-common.c (boolean_increment): Use correctly typed constant.

2007-07-06  Richard Guenther  <rguenther@suse.de>

	* c-common.c (boolean_increment): Use correctly typed
	constant.

	cp/
	* init.c (build_new_1): Use the correct pointer type.
	* typeck2.c (build_m_component_ref): Likewise.

From-SVN: r126405
parent 106b3d40
2007-07-06 Richard Guenther <rguenther@suse.de>
* c-common.c (boolean_increment): Use correctly typed
constant.
2007-07-06 Richard Sandiford <richard@codesourcery.com> 2007-07-06 Richard Sandiford <richard@codesourcery.com>
* config/mips/mips.c (mips16e_save_restore_pattern_p): Check that * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
......
...@@ -4348,7 +4348,7 @@ tree ...@@ -4348,7 +4348,7 @@ tree
boolean_increment (enum tree_code code, tree arg) boolean_increment (enum tree_code code, tree arg)
{ {
tree val; tree val;
tree true_res = boolean_true_node; tree true_res = build_int_cst (TREE_TYPE (arg), 1);
arg = stabilize_reference (arg); arg = stabilize_reference (arg);
switch (code) switch (code)
......
2007-07-06 Richard Guenther <rguenther@suse.de>
* init.c (build_new_1): Use the correct pointer type.
* typeck2.c (build_m_component_ref): Likewise.
2007-07-05 Mark Mitchell <mark@codesourcery.com> 2007-07-05 Mark Mitchell <mark@codesourcery.com>
PR c++/32245 PR c++/32245
......
...@@ -1915,6 +1915,7 @@ build_new_1 (tree placement, tree type, tree nelts, tree init, ...@@ -1915,6 +1915,7 @@ build_new_1 (tree placement, tree type, tree nelts, tree init,
{ {
tree cookie; tree cookie;
tree cookie_ptr; tree cookie_ptr;
tree size_ptr_type;
/* Adjust so we're pointing to the start of the object. */ /* Adjust so we're pointing to the start of the object. */
data_addr = get_target_expr (build2 (POINTER_PLUS_EXPR, full_pointer_type, data_addr = get_target_expr (build2 (POINTER_PLUS_EXPR, full_pointer_type,
...@@ -1924,8 +1925,9 @@ build_new_1 (tree placement, tree type, tree nelts, tree init, ...@@ -1924,8 +1925,9 @@ build_new_1 (tree placement, tree type, tree nelts, tree init,
many elements to destroy later. We use the last sizeof many elements to destroy later. We use the last sizeof
(size_t) bytes to store the number of elements. */ (size_t) bytes to store the number of elements. */
cookie_ptr = fold_build1 (NEGATE_EXPR, sizetype, size_in_bytes (sizetype)); cookie_ptr = fold_build1 (NEGATE_EXPR, sizetype, size_in_bytes (sizetype));
cookie_ptr = build2 (POINTER_PLUS_EXPR, build_pointer_type (sizetype), size_ptr_type = build_pointer_type (sizetype);
data_addr, cookie_ptr); cookie_ptr = build2 (POINTER_PLUS_EXPR, size_ptr_type,
fold_convert (size_ptr_type, data_addr), cookie_ptr);
cookie = build_indirect_ref (cookie_ptr, NULL); cookie = build_indirect_ref (cookie_ptr, NULL);
cookie_expr = build2 (MODIFY_EXPR, sizetype, cookie, nelts); cookie_expr = build2 (MODIFY_EXPR, sizetype, cookie, nelts);
......
...@@ -1261,6 +1261,8 @@ build_m_component_ref (tree datum, tree component) ...@@ -1261,6 +1261,8 @@ build_m_component_ref (tree datum, tree component)
if (TYPE_PTRMEM_P (ptrmem_type)) if (TYPE_PTRMEM_P (ptrmem_type))
{ {
tree ptype;
/* Compute the type of the field, as described in [expr.ref]. /* Compute the type of the field, as described in [expr.ref].
There's no such thing as a mutable pointer-to-member, so There's no such thing as a mutable pointer-to-member, so
things are not as complex as they are for references to things are not as complex as they are for references to
...@@ -1277,8 +1279,10 @@ build_m_component_ref (tree datum, tree component) ...@@ -1277,8 +1279,10 @@ build_m_component_ref (tree datum, tree component)
/* Build an expression for "object + offset" where offset is the /* Build an expression for "object + offset" where offset is the
value stored in the pointer-to-data-member. */ value stored in the pointer-to-data-member. */
datum = build2 (POINTER_PLUS_EXPR, build_pointer_type (type), ptype = build_pointer_type (type);
datum, build_nop (sizetype, component)); datum = build2 (POINTER_PLUS_EXPR, ptype,
fold_convert (ptype, datum),
build_nop (sizetype, component));
return build_indirect_ref (datum, 0); return build_indirect_ref (datum, 0);
} }
else else
......
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