mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 15:41:09 +08:00
re PR c++/35336 (Broken diagnostic: 'bit_field_ref' not supported by dump_expr)
PR c++/35336 * c-pretty-print.c (pp_c_postfix_expression): Handle BIT_FIELD_REF. (pp_c_expression): Likewise. * error.c (dump_expr): Handle BIT_FIELD_REF. * g++.dg/other/error30.C: New test. From-SVN: r142497
This commit is contained in:
parent
4f809983df
commit
5eddced53a
@ -1,3 +1,9 @@
|
||||
2008-12-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/35336
|
||||
* c-pretty-print.c (pp_c_postfix_expression): Handle BIT_FIELD_REF.
|
||||
(pp_c_expression): Likewise.
|
||||
|
||||
2008-12-05 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||
|
||||
PR c/38416
|
||||
|
@ -1444,6 +1444,36 @@ pp_c_postfix_expression (c_pretty_printer *pp, tree e)
|
||||
}
|
||||
break;
|
||||
|
||||
case BIT_FIELD_REF:
|
||||
{
|
||||
tree type = TREE_TYPE (e);
|
||||
|
||||
type = signed_or_unsigned_type_for (TYPE_UNSIGNED (type), type);
|
||||
if (type
|
||||
&& tree_int_cst_equal (TYPE_SIZE (type), TREE_OPERAND (e, 1)))
|
||||
{
|
||||
HOST_WIDE_INT bitpos = tree_low_cst (TREE_OPERAND (e, 2), 0);
|
||||
HOST_WIDE_INT size = tree_low_cst (TYPE_SIZE (type), 0);
|
||||
if ((bitpos % size) == 0)
|
||||
{
|
||||
pp_c_left_paren (pp);
|
||||
pp_c_left_paren (pp);
|
||||
pp_type_id (pp, type);
|
||||
pp_c_star (pp);
|
||||
pp_c_right_paren (pp);
|
||||
pp_c_ampersand (pp);
|
||||
pp_expression (pp, TREE_OPERAND (e, 0));
|
||||
pp_c_right_paren (pp);
|
||||
pp_c_left_bracket (pp);
|
||||
pp_wide_integer (pp, bitpos / size);
|
||||
pp_c_right_bracket (pp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
pp_unsupported_tree (pp, e);
|
||||
}
|
||||
break;
|
||||
|
||||
case COMPLEX_CST:
|
||||
case VECTOR_CST:
|
||||
pp_c_compound_literal (pp, e);
|
||||
@ -1955,6 +1985,7 @@ pp_c_expression (c_pretty_printer *pp, tree e)
|
||||
case ARRAY_REF:
|
||||
case CALL_EXPR:
|
||||
case COMPONENT_REF:
|
||||
case BIT_FIELD_REF:
|
||||
case COMPLEX_CST:
|
||||
case COMPLEX_EXPR:
|
||||
case VECTOR_CST:
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-12-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/35336
|
||||
* error.c (dump_expr): Handle BIT_FIELD_REF.
|
||||
|
||||
2008-12-05 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR bootstrap/38262
|
||||
|
@ -2071,6 +2071,7 @@ dump_expr (tree t, int flags)
|
||||
case UNEQ_EXPR:
|
||||
case LTGT_EXPR:
|
||||
case COMPLEX_EXPR:
|
||||
case BIT_FIELD_REF:
|
||||
pp_expression (cxx_pp, t);
|
||||
break;
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-12-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/35336
|
||||
* g++.dg/other/error30.C: New test.
|
||||
|
||||
2008-12-05 Janis Johnson <janis187@us.ibm.com>
|
||||
|
||||
* lib/target-supports.exp (check_effective_target_hard_dfp): New.
|
||||
|
14
gcc/testsuite/g++.dg/other/error30.C
Normal file
14
gcc/testsuite/g++.dg/other/error30.C
Normal file
@ -0,0 +1,14 @@
|
||||
// PR c++/35336
|
||||
// { dg-do compile }
|
||||
// { dg-bogus "not supported by" "" { target *-*-* } 0 }
|
||||
|
||||
struct A
|
||||
{
|
||||
int i : 2;
|
||||
};
|
||||
|
||||
void foo (bool b)
|
||||
{
|
||||
A a;
|
||||
(a.i || b) (); // { dg-error "cannot be used as" }
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user