Commit 725d6b87 by Mark Mitchell

Mark Mitchell <mark@codesourcery.com> PR c++/31273

	    Mark Mitchell  <mark@codesourcery.com>
	PR c++/31273
	* call.c (standard_conversion): Use type_decays_to.  Keep FCODE
	consistent with FROM.
	PR c++/31273
	* g++.dg/expr/bitfield7.C: New test.

From-SVN: r123150
parent 5a023baa
2007-03-22 Jim Wilson <wilson@specifix.com>
Mark Mitchell <mark@codesourcery.com>
PR c++/31273
* call.c (standard_conversion): Use type_decays_to. Keep FCODE
consistent with FROM.
2007-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
* error.c (dump_expr): Handle dependent names that designate types.
......
......@@ -636,15 +636,9 @@ standard_conversion (tree to, tree from, tree expr, bool c_cast_p,
tcode = TREE_CODE (to);
conv = build_identity_conv (from, expr);
if (fcode == FUNCTION_TYPE)
if (fcode == FUNCTION_TYPE || fcode == ARRAY_TYPE)
{
from = build_pointer_type (from);
fcode = TREE_CODE (from);
conv = build_conv (ck_lvalue, from, conv);
}
else if (fcode == ARRAY_TYPE)
{
from = build_pointer_type (TREE_TYPE (from));
from = type_decays_to (from);
fcode = TREE_CODE (from);
conv = build_conv (ck_lvalue, from, conv);
}
......@@ -655,7 +649,10 @@ standard_conversion (tree to, tree from, tree expr, bool c_cast_p,
tree bitfield_type;
bitfield_type = is_bitfield_expr_with_lowered_type (expr);
if (bitfield_type)
from = strip_top_quals (bitfield_type);
{
from = strip_top_quals (bitfield_type);
fcode = TREE_CODE (from);
}
}
conv = build_conv (ck_rvalue, from, conv);
}
......
2007-03-22 Mark Mitchell <mark@codesourcery.com>
PR c++/31273
* g++.dg/expr/bitfield7.C: New test.
2007-03-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR other/23572
// PR c++/31273
enum E { e };
struct S {
E v:5;
};
S s;
int main() { if (!s.v) return 0; }
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