diff options
Diffstat (limited to 'gcc/cp/semantics.c')
-rw-r--r-- | gcc/cp/semantics.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index bb535559117..9ecace6806a 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1293,6 +1293,10 @@ tree finish_label_stmt (tree name) { tree decl = define_label (input_location, name); + + if (decl == error_mark_node) + return error_mark_node; + return add_stmt (build_stmt (LABEL_EXPR, decl)); } @@ -2161,7 +2165,7 @@ check_template_template_default_arg (tree argument) /* Begin a class definition, as indicated by T. */ tree -begin_class_definition (tree t) +begin_class_definition (tree t, tree attributes) { if (t == error_mark_node) return error_mark_node; @@ -2200,6 +2204,9 @@ begin_class_definition (tree t) maybe_process_partial_specialization (t); pushclass (t); TYPE_BEING_DEFINED (t) = 1; + + cplus_decl_attributes (&t, attributes, (int) ATTR_FLAG_TYPE_IN_PLACE); + if (flag_pack_struct) { tree v; |