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
This commit is contained in:
parent
5a023baa1f
commit
725d6b877d
@ -1,3 +1,10 @@
|
|||||||
|
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>
|
2007-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
|
||||||
|
|
||||||
* error.c (dump_expr): Handle dependent names that designate types.
|
* 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);
|
tcode = TREE_CODE (to);
|
||||||
|
|
||||||
conv = build_identity_conv (from, expr);
|
conv = build_identity_conv (from, expr);
|
||||||
if (fcode == FUNCTION_TYPE)
|
if (fcode == FUNCTION_TYPE || fcode == ARRAY_TYPE)
|
||||||
{
|
{
|
||||||
from = build_pointer_type (from);
|
from = type_decays_to (from);
|
||||||
fcode = TREE_CODE (from);
|
|
||||||
conv = build_conv (ck_lvalue, from, conv);
|
|
||||||
}
|
|
||||||
else if (fcode == ARRAY_TYPE)
|
|
||||||
{
|
|
||||||
from = build_pointer_type (TREE_TYPE (from));
|
|
||||||
fcode = TREE_CODE (from);
|
fcode = TREE_CODE (from);
|
||||||
conv = build_conv (ck_lvalue, from, conv);
|
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;
|
tree bitfield_type;
|
||||||
bitfield_type = is_bitfield_expr_with_lowered_type (expr);
|
bitfield_type = is_bitfield_expr_with_lowered_type (expr);
|
||||||
if (bitfield_type)
|
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);
|
conv = build_conv (ck_rvalue, from, conv);
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
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>
|
2007-03-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
|
||||||
|
|
||||||
PR other/23572
|
PR other/23572
|
||||||
|
8
gcc/testsuite/g++.dg/expr/bitfield7.C
Normal file
8
gcc/testsuite/g++.dg/expr/bitfield7.C
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// PR c++/31273
|
||||||
|
|
||||||
|
enum E { e };
|
||||||
|
struct S {
|
||||||
|
E v:5;
|
||||||
|
};
|
||||||
|
S s;
|
||||||
|
int main() { if (!s.v) return 0; }
|
Loading…
Reference in New Issue
Block a user