From 7d386d45085cbe472089a8df4a2f033d9d5999a5 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 29 Sep 2017 19:45:32 +0200 Subject: c-attribs.c (handle_packed_attribute): Test DECL_C_BIT_FIELD rather than DECL_INITIAL. c-family/ * c-attribs.c (handle_packed_attribute): Test DECL_C_BIT_FIELD rather than DECL_INITIAL. (common_handle_aligned_attribute): Likewise. c/ * c-decl.c (grokfield): Use SET_DECL_C_BIT_FIELD here if width is non-NULL. (finish_struct): Test DECL_C_BIT_FIELD instead of DECL_INITIAL, don't SET_DECL_C_BIT_FIELD here. cp/ * class.c (check_bitfield_decl): Retrieve and clear width from DECL_BIT_FIELD_REPRESENTATIVE rather than DECL_INITIAL. (check_field_decls): Test DECL_BIT_FIELD_REPRESENTATIVE rather than DECL_INITIAL. (remove_zero_width_bit_fields): Adjust comment. * decl2.c (grokbitfield): Stash width into DECL_BIT_FIELD_REPRESENTATIVE rather than DECL_INITIAL. * pt.c (tsubst_decl): For DECL_C_BIT_FIELD, tsubst_expr DECL_BIT_FIELD_REPRESENTATIVE rather than DECL_INITIAL for width. objc/ * objc-act.c (check_ivars, gen_declaration): For OBJCPLUS look at DECL_BIT_FIELD_REPRESENTATIVE rather than DECL_INITIAL. From-SVN: r253301 --- gcc/objc/ChangeLog | 5 +++++ gcc/objc/objc-act.c | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'gcc/objc') diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index d592949..ddfdb1c 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,8 @@ +2017-09-29 Jakub Jelinek + + * objc-act.c (check_ivars, gen_declaration): For OBJCPLUS look at + DECL_BIT_FIELD_REPRESENTATIVE rather than DECL_INITIAL. + 2017-08-30 Richard Sandiford Alan Hayward David Sherwood diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 5f70961..5d81af7 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -4602,8 +4602,14 @@ check_ivars (tree inter, tree imp) t1 = TREE_TYPE (intdecls); t2 = TREE_TYPE (impdecls); if (!comptypes (t1, t2) +#ifdef OBJCPLUS + || !tree_int_cst_equal (DECL_BIT_FIELD_REPRESENTATIVE (intdecls), + DECL_BIT_FIELD_REPRESENTATIVE (impdecls)) +#else || !tree_int_cst_equal (DECL_INITIAL (intdecls), - DECL_INITIAL (impdecls))) + DECL_INITIAL (impdecls)) +#endif + ) { if (DECL_NAME (intdecls) == DECL_NAME (impdecls)) { @@ -8895,10 +8901,14 @@ gen_declaration (tree decl) strcat (errbuf, IDENTIFIER_POINTER (DECL_NAME (decl))); } - if (DECL_INITIAL (decl) - && TREE_CODE (DECL_INITIAL (decl)) == INTEGER_CST) +#ifdef OBJCPLUS + tree w = DECL_BIT_FIELD_REPRESENTATIVE (decl); +#else + tree w = DECL_INITIAL (decl); +#endif + if (w && TREE_CODE (w) == INTEGER_CST) sprintf (errbuf + strlen (errbuf), ": " HOST_WIDE_INT_PRINT_DEC, - TREE_INT_CST_LOW (DECL_INITIAL (decl))); + TREE_INT_CST_LOW (w)); } return errbuf; -- cgit v1.1