Index: cp/decl2.c =================================================================== --- cp/decl2.c (revision 266884) +++ cp/decl2.c (working copy) @@ -1046,15 +1046,15 @@ grokbitfield (const cp_declarator *declarator, check here. */ if (TREE_CODE (value) == FUNCTION_DECL) { - error ("cannot declare bit-field %qD with function type", - DECL_NAME (value)); + error_at (DECL_SOURCE_LOCATION (value), + "cannot declare bit-field %qD with function type", value); return NULL_TREE; } - if (width && TYPE_WARN_IF_NOT_ALIGN (type)) + if (TYPE_WARN_IF_NOT_ALIGN (type)) { - error ("cannot declare bit-field %qD with % type", - DECL_NAME (value)); + error_at (DECL_SOURCE_LOCATION (value), "cannot declare bit-field " + "%qD with % type", value); return NULL_TREE; } @@ -1067,7 +1067,8 @@ grokbitfield (const cp_declarator *declarator, if (TREE_STATIC (value)) { - error ("static member %qD cannot be a bit-field", value); + error_at (DECL_SOURCE_LOCATION (value), + "static member %qD cannot be a bit-field", value); return NULL_TREE; } Index: testsuite/g++.dg/other/bitfield7.C =================================================================== --- testsuite/g++.dg/other/bitfield7.C (nonexistent) +++ testsuite/g++.dg/other/bitfield7.C (working copy) @@ -0,0 +1,7 @@ +typedef int __attribute__((warn_if_not_aligned(8))) intwna; + +struct S +{ + intwna : 2; // { dg-error "cannot declare bit-field" } + intwna i : 2; // { dg-error "10:cannot declare bit-field .i." } +}; Index: testsuite/g++.dg/parse/bitfield8.C =================================================================== --- testsuite/g++.dg/parse/bitfield8.C (nonexistent) +++ testsuite/g++.dg/parse/bitfield8.C (working copy) @@ -0,0 +1,4 @@ +struct A +{ + static int a : 1; // { dg-error "14:static member .a. cannot be a bit-field" } +}; Index: testsuite/g++.dg/parse/bitfield9.C =================================================================== --- testsuite/g++.dg/parse/bitfield9.C (nonexistent) +++ testsuite/g++.dg/parse/bitfield9.C (working copy) @@ -0,0 +1,6 @@ +template +struct A +{ + typedef T type(); + type i : 2; // { dg-error "8:cannot declare bit-field" } +}; Index: testsuite/g++.dg/pr53037-4.C =================================================================== --- testsuite/g++.dg/pr53037-4.C (revision 266884) +++ testsuite/g++.dg/pr53037-4.C (working copy) @@ -12,7 +12,7 @@ foo2 (void) /* { dg-error "'warn_if_not_aligned' m struct foo3 { - int i : 2 __attribute__((warn_if_not_aligned(8))); /* { dg-error "'warn_if_not_aligned' may not be specified for 'i'" } */ + int i : 2 __attribute__((warn_if_not_aligned(8))); /* { dg-error "7:'warn_if_not_aligned' may not be specified for 'i'" } */ }; typedef unsigned int __u32 @@ -20,5 +20,5 @@ typedef unsigned int __u32 struct foo4 { - __u32 i : 2; /* { dg-error "cannot declare bit-field 'i' with 'warn_if_not_aligned' type" } */ + __u32 i : 2; /* { dg-error "9:cannot declare bit-field 'i' with 'warn_if_not_aligned' type" } */ };