diff -Nrcpad gcc-4.0.3/gcc/objc/ChangeLog gcc-4.0.4/gcc/objc/ChangeLog *** gcc-4.0.3/gcc/objc/ChangeLog 2006-03-09 20:44:16.000000000 +0000 --- gcc-4.0.4/gcc/objc/ChangeLog 2007-01-31 10:21:53.000000000 +0000 *************** *** 1,3 **** --- 1,7 ---- + 2007-01-31 Release Manager + + * GCC 4.0.4 released. + 2006-03-09 Release Manager * GCC 4.0.3 released. diff -Nrcpad gcc-4.0.3/gcc/objc/objc-parse.c gcc-4.0.4/gcc/objc/objc-parse.c *** gcc-4.0.3/gcc/objc/objc-parse.c 2006-03-09 20:51:49.000000000 +0000 --- gcc-4.0.4/gcc/objc/objc-parse.c 2007-01-31 10:49:32.000000000 +0000 *************** *** 1,7 **** ! /* A Bison parser, made by GNU Bison 2.0. */ /* Skeleton parser for Yacc-like parsing with Bison, ! Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,7 ---- ! /* A Bison parser, made by GNU Bison 1.875. */ /* Skeleton parser for Yacc-like parsing with Bison, ! Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** typedef union YYSTYPE {long itype; tree *** 285,292 **** struct c_type_name *typenametype; struct c_parm *parmtype; struct c_declspecs *dsptype; struct c_typespec tstype; enum tree_code code; location_t location; } YYSTYPE; ! /* Line 190 of yacc.c. */ ! #line 290 "objc/objc-parse.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 --- 285,292 ---- struct c_type_name *typenametype; struct c_parm *parmtype; struct c_declspecs *dsptype; struct c_typespec tstype; enum tree_code code; location_t location; } YYSTYPE; ! /* Line 191 of yacc.c. */ ! #line 289 "objc/objc-parse.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 *************** c_parse_init (void) *** 394,419 **** ! /* Line 213 of yacc.c. */ ! #line 399 "objc/objc-parse.c" #if ! defined (yyoverflow) || YYERROR_VERBOSE - # ifndef YYFREE - # define YYFREE free - # endif - # ifndef YYMALLOC - # define YYMALLOC malloc - # endif - /* The parser invokes alloca or malloc; define the necessary symbols. */ ! # ifdef YYSTACK_USE_ALLOCA ! # if YYSTACK_USE_ALLOCA ! # ifdef __GNUC__ ! # define YYSTACK_ALLOC __builtin_alloca ! # else # define YYSTACK_ALLOC alloca # endif # endif # endif --- 394,416 ---- ! /* Line 214 of yacc.c. */ ! #line 398 "objc/objc-parse.c" #if ! defined (yyoverflow) || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ ! # if YYSTACK_USE_ALLOCA ! # define YYSTACK_ALLOC alloca ! # else ! # ifndef YYSTACK_USE_ALLOCA ! # if defined (alloca) || defined (_ALLOCA_H) # define YYSTACK_ALLOC alloca + # else + # ifdef __GNUC__ + # define YYSTACK_ALLOC __builtin_alloca + # endif # endif # endif # endif *************** c_parse_init (void) *** 426,445 **** # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # endif ! # define YYSTACK_ALLOC YYMALLOC ! # define YYSTACK_FREE YYFREE # endif #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ #if (! defined (yyoverflow) \ && (! defined (__cplusplus) \ ! || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { ! short int yyss; YYSTYPE yyvs; }; --- 423,442 ---- # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # endif ! # define YYSTACK_ALLOC malloc ! # define YYSTACK_FREE free # endif #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ #if (! defined (yyoverflow) \ && (! defined (__cplusplus) \ ! || (YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { ! short yyss; YYSTYPE yyvs; }; *************** union yyalloc *** 449,461 **** /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ! ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY ! # if defined (__GNUC__) && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else --- 446,458 ---- /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ! ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY ! # if 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else *************** union yyalloc *** 491,497 **** #if defined (__STDC__) || defined (__cplusplus) typedef signed char yysigned_char; #else ! typedef short int yysigned_char; #endif /* YYFINAL -- State number of the termination state. */ --- 488,494 ---- #if defined (__STDC__) || defined (__cplusplus) typedef signed char yysigned_char; #else ! typedef short yysigned_char; #endif /* YYFINAL -- State number of the termination state. */ *************** static const unsigned char yytranslate[] *** 556,562 **** #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ ! static const unsigned short int yyprhs[] = { 0, 0, 3, 4, 6, 7, 11, 12, 17, 19, 21, 23, 26, 28, 29, 33, 38, 43, 46, 49, --- 553,559 ---- #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ ! static const unsigned short yyprhs[] = { 0, 0, 3, 4, 6, 7, 11, 12, 17, 19, 21, 23, 26, 28, 29, 33, 38, 43, 46, 49, *************** static const unsigned short int yyprhs[] *** 634,640 **** }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ ! static const short int yyrhs[] = { 96, 0, -1, -1, 97, -1, -1, 101, 98, 100, -1, -1, 97, 101, 99, 100, -1, 103, -1, 102, --- 631,637 ---- }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ ! static const short yyrhs[] = { 96, 0, -1, -1, 97, -1, -1, 101, 98, 100, -1, -1, 97, 101, 99, 100, -1, 103, -1, 102, *************** static const short int yyrhs[] = *** 858,864 **** }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ ! static const unsigned short int yyrline[] = { 0, 364, 364, 367, 375, 375, 378, 377, 383, 384, 385, 386, 388, 394, 398, 401, 403, 405, 407, 408, --- 855,861 ---- }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ ! static const unsigned short yyrline[] = { 0, 364, 364, 367, 375, 375, 378, 377, 383, 384, 385, 386, 388, 394, 398, 401, 403, 405, 407, 408, *************** static const unsigned short int yyrline[ *** 941,1038 **** First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { ! "$end", "error", "$undefined", "IDENTIFIER", "TYPENAME", "SCSPEC", ! "STATIC", "TYPESPEC", "TYPE_QUAL", "OBJC_TYPE_QUAL", "CONSTANT", ! "STRING", "ELLIPSIS", "SIZEOF", "ENUM", "STRUCT", "UNION", "IF", "ELSE", ! "WHILE", "DO", "FOR", "SWITCH", "CASE", "DEFAULT", "BREAK", "CONTINUE", ! "RETURN", "GOTO", "ASM_KEYWORD", "TYPEOF", "ALIGNOF", "ATTRIBUTE", ! "EXTENSION", "LABEL", "REALPART", "IMAGPART", "VA_ARG", "CHOOSE_EXPR", ! "TYPES_COMPATIBLE_P", "FUNC_NAME", "OFFSETOF", "'='", "ASSIGN", "'?'", ! "':'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQCOMPARE", ! "ARITHCOMPARE", "RSHIFT", "LSHIFT", "'+'", "'-'", "'*'", "'/'", "'%'", ! "MINUSMINUS", "PLUSPLUS", "UNARY", "HYPERUNARY", "'.'", "'('", "'['", ! "POINTSAT", "AT_INTERFACE", "AT_IMPLEMENTATION", "AT_END", "AT_SELECTOR", ! "AT_DEFS", "AT_ENCODE", "CLASSNAME", "AT_PUBLIC", "AT_PRIVATE", ! "AT_PROTECTED", "AT_PROTOCOL", "AT_CLASS", "AT_ALIAS", "AT_THROW", ! "AT_TRY", "AT_CATCH", "AT_FINALLY", "AT_SYNCHRONIZED", "OBJC_STRING", ! "';'", "'}'", "'~'", "'!'", "','", "')'", "'{'", "']'", "$accept", ! "program", "extdefs", "@1", "@2", "extdef", "save_obstack_position", ! "datadef", "fndef", "@3", "@4", "@5", "@6", "@7", "@8", "identifier", ! "unop", "expr", "exprlist", "nonnull_exprlist", "unary_expr", "sizeof", ! "alignof", "typeof", "cast_expr", "expr_no_commas", "@9", "@10", "@11", ! "@12", "@13", "primary", "@14", "@15", "offsetof_member_designator", ! "old_style_parm_decls", "lineno_datadecl", "datadecls", "datadecl", ! "lineno_decl", "setspecs", "maybe_resetattrs", "decl", ! "declspecs_nosc_nots_nosa_noea", "declspecs_nosc_nots_nosa_ea", ! "declspecs_nosc_nots_sa_noea", "declspecs_nosc_nots_sa_ea", ! "declspecs_nosc_ts_nosa_noea", "declspecs_nosc_ts_nosa_ea", ! "declspecs_nosc_ts_sa_noea", "declspecs_nosc_ts_sa_ea", ! "declspecs_sc_nots_nosa_noea", "declspecs_sc_nots_nosa_ea", ! "declspecs_sc_nots_sa_noea", "declspecs_sc_nots_sa_ea", ! "declspecs_sc_ts_nosa_noea", "declspecs_sc_ts_nosa_ea", ! "declspecs_sc_ts_sa_noea", "declspecs_sc_ts_sa_ea", "declspecs_ts", ! "declspecs_nots", "declspecs_ts_nosa", "declspecs_nots_nosa", ! "declspecs_nosc_ts", "declspecs_nosc_nots", "declspecs_nosc", ! "declspecs", "maybe_type_quals_attrs", "typespec_nonattr", ! "typespec_attr", "typespec_reserved_nonattr", "typespec_reserved_attr", ! "typespec_nonreserved_nonattr", "initdecls", "notype_initdecls", ! "initdcl", "@16", "notype_initdcl", "@17", "maybe_attribute", ! "attributes", "attribute", "attribute_list", "attrib", "any_word", ! "scspec", "init", "@18", "initlist_maybe_comma", "initlist1", "initelt", ! "@19", "initval", "@20", "designator_list", "designator", ! "array_designator", "nested_function", "@21", "@22", ! "notype_nested_function", "@23", "@24", "declarator", ! "after_type_declarator", "parm_declarator", ! "parm_declarator_starttypename", "parm_declarator_nostarttypename", ! "notype_declarator", "struct_head", "union_head", "enum_head", ! "structsp_attr", "@25", "@26", "@27", "@28", "structsp_nonattr", ! "maybecomma", "maybecomma_warn", "component_decl_list", ! "component_decl_list2", "component_decl", "components", ! "components_notype", "component_declarator", ! "component_notype_declarator", "enumlist", "enumerator", "typename", ! "@29", "absdcl", "absdcl_maybe_attribute", "absdcl1", "absdcl1_noea", ! "absdcl1_ea", "direct_absdcl1", "array_declarator", "stmts_and_decls", ! "lineno_stmt_decl_or_labels_ending_stmt", ! "lineno_stmt_decl_or_labels_ending_decl", ! "lineno_stmt_decl_or_labels_ending_label", ! "lineno_stmt_decl_or_labels_ending_error", "lineno_stmt_decl_or_labels", ! "errstmt", "c99_block_start", "maybe_label_decls", "label_decls", ! "label_decl", "compstmt_or_error", "compstmt_start", "compstmt_nostart", ! "compstmt_contents_nonempty", "compstmt_primary_start", "compstmt", ! "save_location", "lineno_labels", "c99_block_lineno_labeled_stmt", ! "lineno_stmt", "lineno_label", "condition", "if_statement_1", ! "if_statement_2", "if_statement", "start_break", "start_continue", ! "while_statement", "do_statement", "@30", "@31", "xexpr", ! "for_init_stmt", "for_cond_expr", "for_incr_expr", "for_statement", ! "switch_statement", "@32", "stmt_nocomp", "objc_catch_prefix", ! "objc_catch_clause", "objc_opt_catch_list", "objc_try_catch_clause", ! "@33", "objc_finally_clause", "objc_try_catch_stmt", "stmt", "label", ! "simple_asm_expr", "maybeasm", "asmdef", "asm_stmt", "asm_argument", ! "maybe_volatile", "asm_operands", "nonnull_asm_operands", "asm_operand", ! "asm_clobbers", "asm_string", "stop_string_translation", ! "start_string_translation", "parmlist", "@34", "parmlist_1", "@35", ! "@36", "parmlist_2", "parms", "parm", "firstparm", "setspecs_fp", ! "parmlist_or_identifiers", "@37", "parmlist_or_identifiers_1", ! "identifiers", "identifiers_or_typenames", "extension", "objcdef", ! "identifier_list", "classdecl", "aliasdecl", "superclass", "class_ivars", ! "classdef", "@38", "@39", "@40", "@41", "protocoldef", "@42", ! "protocolrefs", "non_empty_protocolrefs", "ivar_decl_list", ! "visibility_spec", "ivar_decls", "ivar_decl", "opt_semi", "methodtype", ! "methoddef", "@43", "@44", "methodprotolist", "@45", "semi_or_error", ! "methodproto", "@46", "@47", "methoddecl", "optparmlist", "optparms", ! "optellipsis", "unaryselector", "keywordselector", "selector", ! "reservedwords", "objc_qual", "objc_quals", "objc_typename", ! "keyworddecl", "messageargs", "keywordarglist", "keywordexpr", ! "keywordarg", "receiver", "objcmessageexpr", "selectorarg", ! "keywordnamelist", "keywordname", "objcselectorexpr", "objcprotocolexpr", ! "objcencodeexpr", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ ! static const unsigned short int yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, --- 938,1036 ---- First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { ! "$end", "error", "$undefined", "IDENTIFIER", "TYPENAME", "SCSPEC", ! "STATIC", "TYPESPEC", "TYPE_QUAL", "OBJC_TYPE_QUAL", "CONSTANT", ! "STRING", "ELLIPSIS", "SIZEOF", "ENUM", "STRUCT", "UNION", "IF", "ELSE", ! "WHILE", "DO", "FOR", "SWITCH", "CASE", "DEFAULT", "BREAK", "CONTINUE", ! "RETURN", "GOTO", "ASM_KEYWORD", "TYPEOF", "ALIGNOF", "ATTRIBUTE", ! "EXTENSION", "LABEL", "REALPART", "IMAGPART", "VA_ARG", "CHOOSE_EXPR", ! "TYPES_COMPATIBLE_P", "FUNC_NAME", "OFFSETOF", "'='", "ASSIGN", "'?'", ! "':'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQCOMPARE", ! "ARITHCOMPARE", "RSHIFT", "LSHIFT", "'+'", "'-'", "'*'", "'/'", "'%'", ! "MINUSMINUS", "PLUSPLUS", "UNARY", "HYPERUNARY", "'.'", "'('", "'['", ! "POINTSAT", "AT_INTERFACE", "AT_IMPLEMENTATION", "AT_END", ! "AT_SELECTOR", "AT_DEFS", "AT_ENCODE", "CLASSNAME", "AT_PUBLIC", ! "AT_PRIVATE", "AT_PROTECTED", "AT_PROTOCOL", "AT_CLASS", "AT_ALIAS", ! "AT_THROW", "AT_TRY", "AT_CATCH", "AT_FINALLY", "AT_SYNCHRONIZED", ! "OBJC_STRING", "';'", "'}'", "'~'", "'!'", "','", "')'", "'{'", "']'", ! "$accept", "program", "extdefs", "@1", "@2", "extdef", ! "save_obstack_position", "datadef", "fndef", "@3", "@4", "@5", "@6", ! "@7", "@8", "identifier", "unop", "expr", "exprlist", ! "nonnull_exprlist", "unary_expr", "sizeof", "alignof", "typeof", ! "cast_expr", "expr_no_commas", "@9", "@10", "@11", "@12", "@13", ! "primary", "@14", "@15", "offsetof_member_designator", ! "old_style_parm_decls", "lineno_datadecl", "datadecls", "datadecl", ! "lineno_decl", "setspecs", "maybe_resetattrs", "decl", ! "declspecs_nosc_nots_nosa_noea", "declspecs_nosc_nots_nosa_ea", ! "declspecs_nosc_nots_sa_noea", "declspecs_nosc_nots_sa_ea", ! "declspecs_nosc_ts_nosa_noea", "declspecs_nosc_ts_nosa_ea", ! "declspecs_nosc_ts_sa_noea", "declspecs_nosc_ts_sa_ea", ! "declspecs_sc_nots_nosa_noea", "declspecs_sc_nots_nosa_ea", ! "declspecs_sc_nots_sa_noea", "declspecs_sc_nots_sa_ea", ! "declspecs_sc_ts_nosa_noea", "declspecs_sc_ts_nosa_ea", ! "declspecs_sc_ts_sa_noea", "declspecs_sc_ts_sa_ea", "declspecs_ts", ! "declspecs_nots", "declspecs_ts_nosa", "declspecs_nots_nosa", ! "declspecs_nosc_ts", "declspecs_nosc_nots", "declspecs_nosc", ! "declspecs", "maybe_type_quals_attrs", "typespec_nonattr", ! "typespec_attr", "typespec_reserved_nonattr", "typespec_reserved_attr", ! "typespec_nonreserved_nonattr", "initdecls", "notype_initdecls", ! "initdcl", "@16", "notype_initdcl", "@17", "maybe_attribute", ! "attributes", "attribute", "attribute_list", "attrib", "any_word", ! "scspec", "init", "@18", "initlist_maybe_comma", "initlist1", "initelt", ! "@19", "initval", "@20", "designator_list", "designator", ! "array_designator", "nested_function", "@21", "@22", ! "notype_nested_function", "@23", "@24", "declarator", ! "after_type_declarator", "parm_declarator", ! "parm_declarator_starttypename", "parm_declarator_nostarttypename", ! "notype_declarator", "struct_head", "union_head", "enum_head", ! "structsp_attr", "@25", "@26", "@27", "@28", "structsp_nonattr", ! "maybecomma", "maybecomma_warn", "component_decl_list", ! "component_decl_list2", "component_decl", "components", ! "components_notype", "component_declarator", ! "component_notype_declarator", "enumlist", "enumerator", "typename", ! "@29", "absdcl", "absdcl_maybe_attribute", "absdcl1", "absdcl1_noea", ! "absdcl1_ea", "direct_absdcl1", "array_declarator", "stmts_and_decls", ! "lineno_stmt_decl_or_labels_ending_stmt", ! "lineno_stmt_decl_or_labels_ending_decl", ! "lineno_stmt_decl_or_labels_ending_label", ! "lineno_stmt_decl_or_labels_ending_error", "lineno_stmt_decl_or_labels", ! "errstmt", "c99_block_start", "maybe_label_decls", "label_decls", ! "label_decl", "compstmt_or_error", "compstmt_start", "compstmt_nostart", ! "compstmt_contents_nonempty", "compstmt_primary_start", "compstmt", ! "save_location", "lineno_labels", "c99_block_lineno_labeled_stmt", ! "lineno_stmt", "lineno_label", "condition", "if_statement_1", ! "if_statement_2", "if_statement", "start_break", "start_continue", ! "while_statement", "do_statement", "@30", "@31", "xexpr", ! "for_init_stmt", "for_cond_expr", "for_incr_expr", "for_statement", ! "switch_statement", "@32", "stmt_nocomp", "objc_catch_prefix", ! "objc_catch_clause", "objc_opt_catch_list", "objc_try_catch_clause", ! "@33", "objc_finally_clause", "objc_try_catch_stmt", "stmt", "label", ! "simple_asm_expr", "maybeasm", "asmdef", "asm_stmt", "asm_argument", ! "maybe_volatile", "asm_operands", "nonnull_asm_operands", "asm_operand", ! "asm_clobbers", "asm_string", "stop_string_translation", ! "start_string_translation", "parmlist", "@34", "parmlist_1", "@35", ! "@36", "parmlist_2", "parms", "parm", "firstparm", "setspecs_fp", ! "parmlist_or_identifiers", "@37", "parmlist_or_identifiers_1", ! "identifiers", "identifiers_or_typenames", "extension", "objcdef", ! "identifier_list", "classdecl", "aliasdecl", "superclass", ! "class_ivars", "classdef", "@38", "@39", "@40", "@41", "protocoldef", ! "@42", "protocolrefs", "non_empty_protocolrefs", "ivar_decl_list", ! "visibility_spec", "ivar_decls", "ivar_decl", "opt_semi", "methodtype", ! "methoddef", "@43", "@44", "methodprotolist", "@45", "semi_or_error", ! "methodproto", "@46", "@47", "methoddecl", "optparmlist", "optparms", ! "optellipsis", "unaryselector", "keywordselector", "selector", ! "reservedwords", "objc_qual", "objc_quals", "objc_typename", ! "keyworddecl", "messageargs", "keywordarglist", "keywordexpr", ! "keywordarg", "receiver", "objcmessageexpr", "selectorarg", ! "keywordnamelist", "keywordname", "objcselectorexpr", ! "objcprotocolexpr", "objcencodeexpr", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ ! static const unsigned short yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, *************** static const unsigned short int yytoknum *** 1048,1054 **** # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ ! static const unsigned short int yyr1[] = { 0, 95, 96, 96, 98, 97, 99, 97, 100, 100, 100, 100, 100, 101, 102, 102, 102, 102, 102, 102, --- 1046,1052 ---- # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ ! static const unsigned short yyr1[] = { 0, 95, 96, 96, 98, 97, 99, 97, 100, 100, 100, 100, 100, 101, 102, 102, 102, 102, 102, 102, *************** static const unsigned char yyr2[] = *** 1206,1212 **** /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ ! static const unsigned short int yydefact[] = { 13, 0, 13, 4, 1, 6, 0, 0, 0, 282, 316, 315, 279, 141, 372, 368, 370, 0, 62, 0, --- 1204,1210 ---- /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ ! static const unsigned short yydefact[] = { 13, 0, 13, 4, 1, 6, 0, 0, 0, 282, 316, 315, 279, 141, 372, 368, 370, 0, 62, 0, *************** static const unsigned short int yydefact *** 1328,1334 **** }; /* YYDEFGOTO[NTERM-NUM]. */ ! static const short int yydefgoto[] = { -1, 1, 2, 6, 7, 32, 3, 33, 34, 423, 858, 429, 860, 276, 726, 898, 238, 353, 523, 524, --- 1326,1332 ---- }; /* YYDEFGOTO[NTERM-NUM]. */ ! static const short yydefgoto[] = { -1, 1, 2, 6, 7, 32, 3, 33, 34, 423, 858, 429, 860, 276, 726, 898, 238, 353, 523, 524, *************** static const short int yydefgoto[] = *** 1362,1368 **** /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -970 ! static const short int yypact[] = { 135, 149, 154, -970, -970, -970, 3846, 3846, 514, 111, -970, -970, -970, -970, 153, 153, 153, 117, -970, 128, --- 1360,1366 ---- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -970 ! static const short yypact[] = { 135, 149, 154, -970, -970, -970, 3846, 3846, 514, 111, -970, -970, -970, -970, 153, 153, 153, 117, -970, 128, *************** static const short int yypact[] = *** 1484,1490 **** }; /* YYPGOTO[NTERM-NUM]. */ ! static const short int yypgoto[] = { -970, -970, -970, -970, -970, 177, 1118, 501, -970, -970, -970, -970, -970, -970, -970, 146, -970, -27, 509, -425, --- 1482,1488 ---- }; /* YYPGOTO[NTERM-NUM]. */ ! static const short yypgoto[] = { -970, -970, -970, -970, -970, 177, 1118, 501, -970, -970, -970, -970, -970, -970, -970, 146, -970, -27, 509, -425, *************** static const short int yypgoto[] = *** 1520,1526 **** number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -630 ! static const short int yytable[] = { 90, 61, 61, 770, 37, 37, 38, 38, 198, 84, 85, 86, 424, 285, 584, 288, 409, 333, 531, 71, --- 1518,1524 ---- number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -630 ! static const short yytable[] = { 90, 61, 61, 770, 37, 37, 38, 38, 198, 84, 85, 86, 424, 285, 584, 288, 409, 333, 531, 71, *************** static const short int yytable[] = *** 2013,2019 **** 385 }; ! static const short int yycheck[] = { 19, 6, 7, 605, 6, 7, 6, 7, 89, 14, 15, 16, 285, 183, 425, 184, 275, 197, 392, 6, --- 2011,2017 ---- 385 }; ! static const short yycheck[] = { 19, 6, 7, 605, 6, 7, 6, 7, 89, 14, 15, 16, 285, 183, 425, 184, 275, 197, 392, 6, *************** static const short int yycheck[] = *** 2508,2514 **** /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ ! static const unsigned short int yystos[] = { 0, 96, 97, 101, 0, 101, 98, 99, 1, 4, 5, 6, 7, 8, 14, 15, 16, 29, 30, 32, --- 2506,2512 ---- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ ! static const unsigned short yystos[] = { 0, 96, 97, 101, 0, 101, 98, 99, 1, 4, 5, 6, 7, 8, 14, 15, 16, 29, 30, 32, *************** static const unsigned short int yystos[] *** 2652,2659 **** #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab ! #define YYERROR goto yyerrorlab ! /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. --- 2650,2656 ---- #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab ! #define YYERROR goto yyerrlab1 /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. *************** do \ *** 2680,2732 **** } \ while (0) - #define YYTERROR 1 #define YYERRCODE 256 - /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - - #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT ! # define YYLLOC_DEFAULT(Current, Rhs, N) \ ! do \ ! if (N) \ ! { \ ! (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ ! (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ ! (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ ! (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ ! } \ ! else \ ! { \ ! (Current).first_line = (Current).last_line = \ ! YYRHSLOC (Rhs, 0).last_line; \ ! (Current).first_column = (Current).last_column = \ ! YYRHSLOC (Rhs, 0).last_column; \ ! } \ ! while (0) ! #endif ! ! ! /* YY_LOCATION_PRINT -- Print the location on the stream. ! This macro was not mandated originally: define only if we know ! we won't break user code: when these are the locations we know. */ ! ! #ifndef YY_LOCATION_PRINT ! # if YYLTYPE_IS_TRIVIAL ! # define YY_LOCATION_PRINT(File, Loc) \ ! fprintf (File, "%d.%d-%d.%d", \ ! (Loc).first_line, (Loc).first_column, \ ! (Loc).last_line, (Loc).last_column) ! # else ! # define YY_LOCATION_PRINT(File, Loc) ((void) 0) ! # endif #endif - /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM --- 2677,2696 ---- } \ while (0) #define YYTERROR 1 #define YYERRCODE 256 + /* YYLLOC_DEFAULT -- Compute the default location (before the actions + are run). */ #ifndef YYLLOC_DEFAULT ! # define YYLLOC_DEFAULT(Current, Rhs, N) \ ! Current.first_line = Rhs[1].first_line; \ ! Current.first_column = Rhs[1].first_column; \ ! Current.last_line = Rhs[N].last_line; \ ! Current.last_column = Rhs[N].last_column; #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM *************** do { \ *** 2749,2778 **** YYFPRINTF Args; \ } while (0) ! # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yysymprint (stderr, \ ! Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | ! | TOP (included). | `------------------------------------------------------------------*/ #if defined (__STDC__) || defined (__cplusplus) static void ! yy_stack_print (short int *bottom, short int *top) #else static void yy_stack_print (bottom, top) ! short int *bottom; ! short int *top; #endif { YYFPRINTF (stderr, "Stack now"); --- 2713,2748 ---- YYFPRINTF Args; \ } while (0) ! # define YYDSYMPRINT(Args) \ ! do { \ ! if (yydebug) \ ! yysymprint Args; \ ! } while (0) ! ! # define YYDSYMPRINTF(Title, Token, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yysymprint (stderr, \ ! Token, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | ! | TOP (cinluded). | `------------------------------------------------------------------*/ #if defined (__STDC__) || defined (__cplusplus) static void ! yy_stack_print (short *bottom, short *top) #else static void yy_stack_print (bottom, top) ! short *bottom; ! short *top; #endif { YYFPRINTF (stderr, "Stack now"); *************** yy_reduce_print (yyrule) *** 2802,2810 **** #endif { int yyi; ! unsigned int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", ! yyrule - 1, yylno); /* Print the symbols being reduced, and their result. */ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); --- 2772,2780 ---- #endif { int yyi; ! unsigned int yylineno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", ! yyrule - 1, yylineno); /* Print the symbols being reduced, and their result. */ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); *************** do { \ *** 2822,2828 **** int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) ! # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ --- 2792,2799 ---- int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) ! # define YYDSYMPRINT(Args) ! # define YYDSYMPRINTF(Title, Token, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ *************** int yydebug; *** 2840,2845 **** --- 2811,2820 ---- SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ + #if YYMAXDEPTH == 0 + # undef YYMAXDEPTH + #endif + #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif *************** yysymprint (yyoutput, yytype, yyvaluep) *** 2921,2935 **** (void) yyvaluep; if (yytype < YYNTOKENS) ! YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - - # ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); - # endif switch (yytype) { default: --- 2896,2910 ---- (void) yyvaluep; if (yytype < YYNTOKENS) ! { ! YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); ! # ifdef YYPRINT ! YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); ! # endif ! } else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); switch (yytype) { default: *************** yysymprint (yyoutput, yytype, yyvaluep) *** 2945,2955 **** #if defined (__STDC__) || defined (__cplusplus) static void ! yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void ! yydestruct (yymsg, yytype, yyvaluep) ! const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif --- 2920,2929 ---- #if defined (__STDC__) || defined (__cplusplus) static void ! yydestruct (int yytype, YYSTYPE *yyvaluep) #else static void ! yydestruct (yytype, yyvaluep) int yytype; YYSTYPE *yyvaluep; #endif *************** yydestruct (yymsg, yytype, yyvaluep) *** 2957,2966 **** /* Pacify ``unused variable'' warnings. */ (void) yyvaluep; - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) { --- 2931,2936 ---- *************** int yyparse (); *** 2988,2997 **** ! /* The look-ahead symbol. */ int yychar; ! /* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ --- 2958,2967 ---- ! /* The lookahead symbol. */ int yychar; ! /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ *************** yyparse () *** 3027,3033 **** int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; ! /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; /* Three stacks and their tools: --- 2997,3003 ---- int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; ! /* Lookahead token as an internal (translated) token number. */ int yytoken = 0; /* Three stacks and their tools: *************** yyparse () *** 3039,3047 **** to reallocate them elsewhere. */ /* The state stack. */ ! short int yyssa[YYINITDEPTH]; ! short int *yyss = yyssa; ! register short int *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; --- 3009,3017 ---- to reallocate them elsewhere. */ /* The state stack. */ ! short yyssa[YYINITDEPTH]; ! short *yyss = yyssa; ! register short *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; *************** yyparse () *** 3078,3086 **** yyssp = yyss; yyvsp = yyvs; - - yyvsp[0] = yylval; - goto yysetstate; /*------------------------------------------------------------. --- 3048,3053 ---- *************** yyparse () *** 3106,3112 **** these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; ! short int *yyss1 = yyss; /* Each stack pointer address is followed by the size of the --- 3073,3079 ---- these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; ! short *yyss1 = yyss; /* Each stack pointer address is followed by the size of the *************** yyparse () *** 3134,3140 **** yystacksize = YYMAXDEPTH; { ! short int *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) --- 3101,3107 ---- yystacksize = YYMAXDEPTH; { ! short *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) *************** yyparse () *** 3170,3187 **** yybackup: /* Do appropriate processing given the current state. */ ! /* Read a look-ahead token if we need one and don't already have one. */ /* yyresume: */ ! /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; ! /* Not known => get a look-ahead token if don't already have one. */ ! /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); --- 3137,3154 ---- yybackup: /* Do appropriate processing given the current state. */ ! /* Read a lookahead token if we need one and don't already have one. */ /* yyresume: */ ! /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; ! /* Not known => get a lookahead token if don't already have one. */ ! /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); *************** yybackup: *** 3196,3202 **** else { yytoken = YYTRANSLATE (yychar); ! YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to --- 3163,3169 ---- else { yytoken = YYTRANSLATE (yychar); ! YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to *************** yybackup: *** 3216,3223 **** if (yyn == YYFINAL) YYACCEPT; ! /* Shift the look-ahead token. */ ! YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) --- 3183,3190 ---- if (yyn == YYFINAL) YYACCEPT; ! /* Shift the lookahead token. */ ! YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken])); /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) *************** yyreduce: *** 3275,3306 **** case 4: #line 375 "objc/objc-parse.y" ! { (yyval.dsptype) = NULL; ;} break; case 5: #line 376 "objc/objc-parse.y" ! { obstack_free (&parser_obstack, (yyvsp[-2].otype)); ;} break; case 6: #line 378 "objc/objc-parse.y" ! { (yyval.dsptype) = NULL; ggc_collect (); ;} break; case 7: #line 379 "objc/objc-parse.y" ! { obstack_free (&parser_obstack, (yyvsp[-2].otype)); ;} break; case 11: #line 387 "objc/objc-parse.y" ! { RESTORE_EXT_FLAGS ((yyvsp[-1].itype)); ;} break; case 13: #line 394 "objc/objc-parse.y" ! { (yyval.otype) = obstack_alloc (&parser_obstack, 0); ;} break; case 14: --- 3242,3273 ---- case 4: #line 375 "objc/objc-parse.y" ! { yyval.dsptype = NULL; ;} break; case 5: #line 376 "objc/objc-parse.y" ! { obstack_free (&parser_obstack, yyvsp[-2].otype); ;} break; case 6: #line 378 "objc/objc-parse.y" ! { yyval.dsptype = NULL; ggc_collect (); ;} break; case 7: #line 379 "objc/objc-parse.y" ! { obstack_free (&parser_obstack, yyvsp[-2].otype); ;} break; case 11: #line 387 "objc/objc-parse.y" ! { RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;} break; case 13: #line 394 "objc/objc-parse.y" ! { yyval.otype = obstack_alloc (&parser_obstack, 0); ;} break; case 14: *************** yyreduce: *** 3321,3327 **** case 17: #line 406 "objc/objc-parse.y" ! { shadow_tag (finish_declspecs ((yyvsp[-1].dsptype))); ;} break; case 20: --- 3288,3294 ---- case 17: #line 406 "objc/objc-parse.y" ! { shadow_tag (finish_declspecs (yyvsp[-1].dsptype)); ;} break; case 20: *************** yyreduce: *** 3332,3338 **** case 21: #line 416 "objc/objc-parse.y" ! { if (!start_function (current_declspecs, (yyvsp[0].dtrtype), all_prefix_attributes)) YYERROR1; ;} --- 3299,3305 ---- case 21: #line 416 "objc/objc-parse.y" ! { if (!start_function (current_declspecs, yyvsp[0].dtrtype, all_prefix_attributes)) YYERROR1; ;} *************** yyreduce: *** 3340,3346 **** case 22: #line 421 "objc/objc-parse.y" ! { DECL_SOURCE_LOCATION (current_function_decl) = (yyvsp[0].location); store_parm_decls (); ;} break; --- 3307,3313 ---- case 22: #line 421 "objc/objc-parse.y" ! { DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location; store_parm_decls (); ;} break; *************** yyreduce: *** 3357,3363 **** case 25: #line 429 "objc/objc-parse.y" ! { if (!start_function (current_declspecs, (yyvsp[0].dtrtype), all_prefix_attributes)) YYERROR1; ;} --- 3324,3330 ---- case 25: #line 429 "objc/objc-parse.y" ! { if (!start_function (current_declspecs, yyvsp[0].dtrtype, all_prefix_attributes)) YYERROR1; ;} *************** yyreduce: *** 3365,3371 **** case 26: #line 434 "objc/objc-parse.y" ! { DECL_SOURCE_LOCATION (current_function_decl) = (yyvsp[0].location); store_parm_decls (); ;} break; --- 3332,3338 ---- case 26: #line 434 "objc/objc-parse.y" ! { DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location; store_parm_decls (); ;} break; *************** yyreduce: *** 3382,3388 **** case 29: #line 442 "objc/objc-parse.y" ! { if (!start_function (current_declspecs, (yyvsp[0].dtrtype), all_prefix_attributes)) YYERROR1; ;} --- 3349,3355 ---- case 29: #line 442 "objc/objc-parse.y" ! { if (!start_function (current_declspecs, yyvsp[0].dtrtype, all_prefix_attributes)) YYERROR1; ;} *************** yyreduce: *** 3390,3396 **** case 30: #line 447 "objc/objc-parse.y" ! { DECL_SOURCE_LOCATION (current_function_decl) = (yyvsp[0].location); store_parm_decls (); ;} break; --- 3357,3363 ---- case 30: #line 447 "objc/objc-parse.y" ! { DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location; store_parm_decls (); ;} break; *************** yyreduce: *** 3407,3535 **** case 36: #line 463 "objc/objc-parse.y" ! { (yyval.code) = ADDR_EXPR; ;} break; case 37: #line 465 "objc/objc-parse.y" ! { (yyval.code) = NEGATE_EXPR; ;} break; case 38: #line 467 "objc/objc-parse.y" ! { (yyval.code) = CONVERT_EXPR; ;} break; case 39: #line 470 "objc/objc-parse.y" ! { (yyval.code) = PREINCREMENT_EXPR; ;} break; case 40: #line 472 "objc/objc-parse.y" ! { (yyval.code) = PREDECREMENT_EXPR; ;} break; case 41: #line 474 "objc/objc-parse.y" ! { (yyval.code) = BIT_NOT_EXPR; ;} break; case 42: #line 476 "objc/objc-parse.y" ! { (yyval.code) = TRUTH_NOT_EXPR; ;} break; case 44: #line 481 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_compound_expr ((yyvsp[-2].exprtype).value, (yyvsp[0].exprtype).value); ! (yyval.exprtype).original_code = COMPOUND_EXPR; ;} break; case 45: #line 487 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 47: #line 493 "objc/objc-parse.y" ! { (yyval.ttype) = build_tree_list (NULL_TREE, (yyvsp[0].exprtype).value); ;} break; case 48: #line 495 "objc/objc-parse.y" ! { chainon ((yyvsp[-2].ttype), build_tree_list (NULL_TREE, (yyvsp[0].exprtype).value)); ;} break; case 50: #line 501 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_indirect_ref ((yyvsp[0].exprtype).value, "unary *"); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 51: #line 505 "objc/objc-parse.y" ! { (yyval.exprtype) = (yyvsp[0].exprtype); ! RESTORE_EXT_FLAGS ((yyvsp[-1].itype)); ;} break; case 52: #line 508 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_unary_op ((yyvsp[-1].code), (yyvsp[0].exprtype).value, 0); ! overflow_warning ((yyval.exprtype).value); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 53: #line 513 "objc/objc-parse.y" ! { (yyval.exprtype).value = finish_label_address_expr ((yyvsp[0].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 54: #line 516 "objc/objc-parse.y" { skip_evaluation--; in_sizeof--; ! if (TREE_CODE ((yyvsp[0].exprtype).value) == COMPONENT_REF ! && DECL_C_BIT_FIELD (TREE_OPERAND ((yyvsp[0].exprtype).value, 1))) error ("% applied to a bit-field"); ! (yyval.exprtype) = c_expr_sizeof_expr ((yyvsp[0].exprtype)); ;} break; case 55: #line 523 "objc/objc-parse.y" { skip_evaluation--; in_sizeof--; ! (yyval.exprtype) = c_expr_sizeof_type ((yyvsp[-1].typenametype)); ;} break; case 56: #line 527 "objc/objc-parse.y" { skip_evaluation--; in_alignof--; ! (yyval.exprtype).value = c_alignof_expr ((yyvsp[0].exprtype).value); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 57: #line 532 "objc/objc-parse.y" { skip_evaluation--; in_alignof--; ! (yyval.exprtype).value = c_alignof (groktypename ((yyvsp[-1].typenametype))); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 58: #line 537 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_unary_op (REALPART_EXPR, (yyvsp[0].exprtype).value, 0); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 59: #line 540 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_unary_op (IMAGPART_EXPR, (yyvsp[0].exprtype).value, 0); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 60: --- 3374,3502 ---- case 36: #line 463 "objc/objc-parse.y" ! { yyval.code = ADDR_EXPR; ;} break; case 37: #line 465 "objc/objc-parse.y" ! { yyval.code = NEGATE_EXPR; ;} break; case 38: #line 467 "objc/objc-parse.y" ! { yyval.code = CONVERT_EXPR; ;} break; case 39: #line 470 "objc/objc-parse.y" ! { yyval.code = PREINCREMENT_EXPR; ;} break; case 40: #line 472 "objc/objc-parse.y" ! { yyval.code = PREDECREMENT_EXPR; ;} break; case 41: #line 474 "objc/objc-parse.y" ! { yyval.code = BIT_NOT_EXPR; ;} break; case 42: #line 476 "objc/objc-parse.y" ! { yyval.code = TRUTH_NOT_EXPR; ;} break; case 44: #line 481 "objc/objc-parse.y" ! { yyval.exprtype.value = build_compound_expr (yyvsp[-2].exprtype.value, yyvsp[0].exprtype.value); ! yyval.exprtype.original_code = COMPOUND_EXPR; ;} break; case 45: #line 487 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 47: #line 493 "objc/objc-parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].exprtype.value); ;} break; case 48: #line 495 "objc/objc-parse.y" ! { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].exprtype.value)); ;} break; case 50: #line 501 "objc/objc-parse.y" ! { yyval.exprtype.value = build_indirect_ref (yyvsp[0].exprtype.value, "unary *"); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 51: #line 505 "objc/objc-parse.y" ! { yyval.exprtype = yyvsp[0].exprtype; ! RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;} break; case 52: #line 508 "objc/objc-parse.y" ! { yyval.exprtype.value = build_unary_op (yyvsp[-1].code, yyvsp[0].exprtype.value, 0); ! overflow_warning (yyval.exprtype.value); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 53: #line 513 "objc/objc-parse.y" ! { yyval.exprtype.value = finish_label_address_expr (yyvsp[0].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 54: #line 516 "objc/objc-parse.y" { skip_evaluation--; in_sizeof--; ! if (TREE_CODE (yyvsp[0].exprtype.value) == COMPONENT_REF ! && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].exprtype.value, 1))) error ("% applied to a bit-field"); ! yyval.exprtype = c_expr_sizeof_expr (yyvsp[0].exprtype); ;} break; case 55: #line 523 "objc/objc-parse.y" { skip_evaluation--; in_sizeof--; ! yyval.exprtype = c_expr_sizeof_type (yyvsp[-1].typenametype); ;} break; case 56: #line 527 "objc/objc-parse.y" { skip_evaluation--; in_alignof--; ! yyval.exprtype.value = c_alignof_expr (yyvsp[0].exprtype.value); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 57: #line 532 "objc/objc-parse.y" { skip_evaluation--; in_alignof--; ! yyval.exprtype.value = c_alignof (groktypename (yyvsp[-1].typenametype)); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 58: #line 537 "objc/objc-parse.y" ! { yyval.exprtype.value = build_unary_op (REALPART_EXPR, yyvsp[0].exprtype.value, 0); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 59: #line 540 "objc/objc-parse.y" ! { yyval.exprtype.value = build_unary_op (IMAGPART_EXPR, yyvsp[0].exprtype.value, 0); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 60: *************** yyreduce: *** 3549,3663 **** case 64: #line 559 "objc/objc-parse.y" ! { (yyval.exprtype).value = c_cast_expr ((yyvsp[-2].typenametype), (yyvsp[0].exprtype).value); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 66: #line 566 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 67: #line 568 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 68: #line 570 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 69: #line 572 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 70: #line 574 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 71: #line 576 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 72: #line 578 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 73: #line 580 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 74: #line 582 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 75: #line 584 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 76: #line 586 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 77: #line 588 "objc/objc-parse.y" ! { (yyval.exprtype) = parser_build_binary_op ((yyvsp[-1].code), (yyvsp[-2].exprtype), (yyvsp[0].exprtype)); ;} break; case 78: #line 590 "objc/objc-parse.y" ! { (yyvsp[-1].exprtype).value = lang_hooks.truthvalue_conversion ! (default_conversion ((yyvsp[-1].exprtype).value)); ! skip_evaluation += (yyvsp[-1].exprtype).value == truthvalue_false_node; ;} break; case 79: #line 594 "objc/objc-parse.y" ! { skip_evaluation -= (yyvsp[-3].exprtype).value == truthvalue_false_node; ! (yyval.exprtype) = parser_build_binary_op (TRUTH_ANDIF_EXPR, (yyvsp[-3].exprtype), (yyvsp[0].exprtype)); ;} break; case 80: #line 597 "objc/objc-parse.y" ! { (yyvsp[-1].exprtype).value = lang_hooks.truthvalue_conversion ! (default_conversion ((yyvsp[-1].exprtype).value)); ! skip_evaluation += (yyvsp[-1].exprtype).value == truthvalue_true_node; ;} break; case 81: #line 601 "objc/objc-parse.y" ! { skip_evaluation -= (yyvsp[-3].exprtype).value == truthvalue_true_node; ! (yyval.exprtype) = parser_build_binary_op (TRUTH_ORIF_EXPR, (yyvsp[-3].exprtype), (yyvsp[0].exprtype)); ;} break; case 82: #line 604 "objc/objc-parse.y" ! { (yyvsp[-1].exprtype).value = lang_hooks.truthvalue_conversion ! (default_conversion ((yyvsp[-1].exprtype).value)); ! skip_evaluation += (yyvsp[-1].exprtype).value == truthvalue_false_node; ;} break; case 83: #line 608 "objc/objc-parse.y" ! { skip_evaluation += (((yyvsp[-4].exprtype).value == truthvalue_true_node) ! - ((yyvsp[-4].exprtype).value == truthvalue_false_node)); ;} break; case 84: #line 611 "objc/objc-parse.y" ! { skip_evaluation -= (yyvsp[-6].exprtype).value == truthvalue_true_node; ! (yyval.exprtype).value = build_conditional_expr ((yyvsp[-6].exprtype).value, (yyvsp[-3].exprtype).value, ! (yyvsp[0].exprtype).value); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 85: --- 3516,3630 ---- case 64: #line 559 "objc/objc-parse.y" ! { yyval.exprtype.value = c_cast_expr (yyvsp[-2].typenametype, yyvsp[0].exprtype.value); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 66: #line 566 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 67: #line 568 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 68: #line 570 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 69: #line 572 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 70: #line 574 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 71: #line 576 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 72: #line 578 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 73: #line 580 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 74: #line 582 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 75: #line 584 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 76: #line 586 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 77: #line 588 "objc/objc-parse.y" ! { yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;} break; case 78: #line 590 "objc/objc-parse.y" ! { yyvsp[-1].exprtype.value = lang_hooks.truthvalue_conversion ! (default_conversion (yyvsp[-1].exprtype.value)); ! skip_evaluation += yyvsp[-1].exprtype.value == truthvalue_false_node; ;} break; case 79: #line 594 "objc/objc-parse.y" ! { skip_evaluation -= yyvsp[-3].exprtype.value == truthvalue_false_node; ! yyval.exprtype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].exprtype, yyvsp[0].exprtype); ;} break; case 80: #line 597 "objc/objc-parse.y" ! { yyvsp[-1].exprtype.value = lang_hooks.truthvalue_conversion ! (default_conversion (yyvsp[-1].exprtype.value)); ! skip_evaluation += yyvsp[-1].exprtype.value == truthvalue_true_node; ;} break; case 81: #line 601 "objc/objc-parse.y" ! { skip_evaluation -= yyvsp[-3].exprtype.value == truthvalue_true_node; ! yyval.exprtype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].exprtype, yyvsp[0].exprtype); ;} break; case 82: #line 604 "objc/objc-parse.y" ! { yyvsp[-1].exprtype.value = lang_hooks.truthvalue_conversion ! (default_conversion (yyvsp[-1].exprtype.value)); ! skip_evaluation += yyvsp[-1].exprtype.value == truthvalue_false_node; ;} break; case 83: #line 608 "objc/objc-parse.y" ! { skip_evaluation += ((yyvsp[-4].exprtype.value == truthvalue_true_node) ! - (yyvsp[-4].exprtype.value == truthvalue_false_node)); ;} break; case 84: #line 611 "objc/objc-parse.y" ! { skip_evaluation -= yyvsp[-6].exprtype.value == truthvalue_true_node; ! yyval.exprtype.value = build_conditional_expr (yyvsp[-6].exprtype.value, yyvsp[-3].exprtype.value, ! yyvsp[0].exprtype.value); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 85: *************** yyreduce: *** 3665,3695 **** { if (pedantic) pedwarn ("ISO C forbids omitting the middle term of a ?: expression"); /* Make sure first operand is calculated only once. */ ! (yyvsp[0].ttype) = save_expr (default_conversion ((yyvsp[-1].exprtype).value)); ! (yyvsp[-1].exprtype).value = lang_hooks.truthvalue_conversion ((yyvsp[0].ttype)); ! skip_evaluation += (yyvsp[-1].exprtype).value == truthvalue_true_node; ;} break; case 86: #line 623 "objc/objc-parse.y" ! { skip_evaluation -= (yyvsp[-4].exprtype).value == truthvalue_true_node; ! (yyval.exprtype).value = build_conditional_expr ((yyvsp[-4].exprtype).value, (yyvsp[-3].ttype), ! (yyvsp[0].exprtype).value); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 87: #line 628 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_modify_expr ((yyvsp[-2].exprtype).value, NOP_EXPR, (yyvsp[0].exprtype).value); ! (yyval.exprtype).original_code = MODIFY_EXPR; ;} break; case 88: #line 632 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_modify_expr ((yyvsp[-2].exprtype).value, (yyvsp[-1].code), (yyvsp[0].exprtype).value); ! TREE_NO_WARNING ((yyval.exprtype).value) = 1; ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; --- 3632,3662 ---- { if (pedantic) pedwarn ("ISO C forbids omitting the middle term of a ?: expression"); /* Make sure first operand is calculated only once. */ ! yyvsp[0].ttype = save_expr (default_conversion (yyvsp[-1].exprtype.value)); ! yyvsp[-1].exprtype.value = lang_hooks.truthvalue_conversion (yyvsp[0].ttype); ! skip_evaluation += yyvsp[-1].exprtype.value == truthvalue_true_node; ;} break; case 86: #line 623 "objc/objc-parse.y" ! { skip_evaluation -= yyvsp[-4].exprtype.value == truthvalue_true_node; ! yyval.exprtype.value = build_conditional_expr (yyvsp[-4].exprtype.value, yyvsp[-3].ttype, ! yyvsp[0].exprtype.value); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 87: #line 628 "objc/objc-parse.y" ! { yyval.exprtype.value = build_modify_expr (yyvsp[-2].exprtype.value, NOP_EXPR, yyvsp[0].exprtype.value); ! yyval.exprtype.original_code = MODIFY_EXPR; ;} break; case 88: #line 632 "objc/objc-parse.y" ! { yyval.exprtype.value = build_modify_expr (yyvsp[-2].exprtype.value, yyvsp[-1].code, yyvsp[0].exprtype.value); ! TREE_NO_WARNING (yyval.exprtype.value) = 1; ! yyval.exprtype.original_code = ERROR_MARK; ;} break; *************** yyreduce: *** 3698,3796 **** { if (yychar == YYEMPTY) yychar = YYLEX; ! (yyval.exprtype).value = build_external_ref ((yyvsp[0].ttype), yychar == '('); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 90: #line 647 "objc/objc-parse.y" ! { (yyval.exprtype).value = (yyvsp[0].ttype); (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 91: #line 649 "objc/objc-parse.y" ! { (yyval.exprtype).value = (yyvsp[0].ttype); (yyval.exprtype).original_code = STRING_CST; ;} break; case 92: #line 651 "objc/objc-parse.y" ! { (yyval.exprtype).value = fname_decl (C_RID_CODE ((yyvsp[0].ttype)), (yyvsp[0].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 93: #line 654 "objc/objc-parse.y" { start_init (NULL_TREE, NULL, 0); ! (yyval.ttype) = groktypename ((yyvsp[-2].typenametype)); ! if (C_TYPE_VARIABLE_SIZE ((yyval.ttype))) { error ("compound literal has variable size"); ! (yyval.ttype) = error_mark_node; } ! really_start_incremental_init ((yyval.ttype)); ;} break; case 94: #line 663 "objc/objc-parse.y" { struct c_expr init = pop_init_level (0); tree constructor = init.value; ! tree type = (yyvsp[-2].ttype); finish_init (); maybe_warn_string_init (type, init); if (pedantic && !flag_isoc99) pedwarn ("ISO C90 forbids compound literals"); ! (yyval.exprtype).value = build_compound_literal (type, constructor); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 95: #line 675 "objc/objc-parse.y" ! { (yyval.exprtype).value = (yyvsp[-1].exprtype).value; ! if (TREE_CODE ((yyval.exprtype).value) == MODIFY_EXPR) ! TREE_NO_WARNING ((yyval.exprtype).value) = 1; ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 96: #line 680 "objc/objc-parse.y" ! { (yyval.exprtype).value = error_mark_node; (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 97: #line 682 "objc/objc-parse.y" { if (pedantic) pedwarn ("ISO C forbids braced-groups within expressions"); ! (yyval.exprtype).value = c_finish_stmt_expr ((yyvsp[-2].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 98: #line 688 "objc/objc-parse.y" ! { c_finish_stmt_expr ((yyvsp[-2].ttype)); ! (yyval.exprtype).value = error_mark_node; ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 99: #line 693 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_function_call ((yyvsp[-3].exprtype).value, (yyvsp[-1].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 100: #line 696 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_va_arg ((yyvsp[-3].exprtype).value, groktypename ((yyvsp[-1].typenametype))); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 101: #line 700 "objc/objc-parse.y" ! { tree type = groktypename ((yyvsp[-1].typenametype)); if (type == error_mark_node) offsetof_base = error_mark_node; else --- 3665,3763 ---- { if (yychar == YYEMPTY) yychar = YYLEX; ! yyval.exprtype.value = build_external_ref (yyvsp[0].ttype, yychar == '('); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 90: #line 647 "objc/objc-parse.y" ! { yyval.exprtype.value = yyvsp[0].ttype; yyval.exprtype.original_code = ERROR_MARK; ;} break; case 91: #line 649 "objc/objc-parse.y" ! { yyval.exprtype.value = yyvsp[0].ttype; yyval.exprtype.original_code = STRING_CST; ;} break; case 92: #line 651 "objc/objc-parse.y" ! { yyval.exprtype.value = fname_decl (C_RID_CODE (yyvsp[0].ttype), yyvsp[0].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 93: #line 654 "objc/objc-parse.y" { start_init (NULL_TREE, NULL, 0); ! yyval.ttype = groktypename (yyvsp[-2].typenametype); ! if (C_TYPE_VARIABLE_SIZE (yyval.ttype)) { error ("compound literal has variable size"); ! yyval.ttype = error_mark_node; } ! really_start_incremental_init (yyval.ttype); ;} break; case 94: #line 663 "objc/objc-parse.y" { struct c_expr init = pop_init_level (0); tree constructor = init.value; ! tree type = yyvsp[-2].ttype; finish_init (); maybe_warn_string_init (type, init); if (pedantic && !flag_isoc99) pedwarn ("ISO C90 forbids compound literals"); ! yyval.exprtype.value = build_compound_literal (type, constructor); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 95: #line 675 "objc/objc-parse.y" ! { yyval.exprtype.value = yyvsp[-1].exprtype.value; ! if (TREE_CODE (yyval.exprtype.value) == MODIFY_EXPR) ! TREE_NO_WARNING (yyval.exprtype.value) = 1; ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 96: #line 680 "objc/objc-parse.y" ! { yyval.exprtype.value = error_mark_node; yyval.exprtype.original_code = ERROR_MARK; ;} break; case 97: #line 682 "objc/objc-parse.y" { if (pedantic) pedwarn ("ISO C forbids braced-groups within expressions"); ! yyval.exprtype.value = c_finish_stmt_expr (yyvsp[-2].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 98: #line 688 "objc/objc-parse.y" ! { c_finish_stmt_expr (yyvsp[-2].ttype); ! yyval.exprtype.value = error_mark_node; ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 99: #line 693 "objc/objc-parse.y" ! { yyval.exprtype.value = build_function_call (yyvsp[-3].exprtype.value, yyvsp[-1].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 100: #line 696 "objc/objc-parse.y" ! { yyval.exprtype.value = build_va_arg (yyvsp[-3].exprtype.value, groktypename (yyvsp[-1].typenametype)); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 101: #line 700 "objc/objc-parse.y" ! { tree type = groktypename (yyvsp[-1].typenametype); if (type == error_mark_node) offsetof_base = error_mark_node; else *************** yyreduce: *** 3800,3812 **** case 102: #line 707 "objc/objc-parse.y" ! { (yyval.exprtype).value = fold_offsetof ((yyvsp[-1].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 103: #line 710 "objc/objc-parse.y" ! { (yyval.exprtype).value = error_mark_node; (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 104: --- 3767,3779 ---- case 102: #line 707 "objc/objc-parse.y" ! { yyval.exprtype.value = fold_offsetof (yyvsp[-1].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 103: #line 710 "objc/objc-parse.y" ! { yyval.exprtype.value = error_mark_node; yyval.exprtype.original_code = ERROR_MARK; ;} break; case 104: *************** yyreduce: *** 3814,3831 **** { tree c; ! c = fold ((yyvsp[-5].exprtype).value); STRIP_NOPS (c); if (TREE_CODE (c) != INTEGER_CST) error ("first argument to %<__builtin_choose_expr%> not" " a constant"); ! (yyval.exprtype) = integer_zerop (c) ? (yyvsp[-1].exprtype) : (yyvsp[-3].exprtype); ;} break; case 105: #line 724 "objc/objc-parse.y" ! { (yyval.exprtype).value = error_mark_node; (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 106: --- 3781,3798 ---- { tree c; ! c = fold (yyvsp[-5].exprtype.value); STRIP_NOPS (c); if (TREE_CODE (c) != INTEGER_CST) error ("first argument to %<__builtin_choose_expr%> not" " a constant"); ! yyval.exprtype = integer_zerop (c) ? yyvsp[-1].exprtype : yyvsp[-3].exprtype; ;} break; case 105: #line 724 "objc/objc-parse.y" ! { yyval.exprtype.value = error_mark_node; yyval.exprtype.original_code = ERROR_MARK; ;} break; case 106: *************** yyreduce: *** 3833,3929 **** { tree e1, e2; ! e1 = TYPE_MAIN_VARIANT (groktypename ((yyvsp[-3].typenametype))); ! e2 = TYPE_MAIN_VARIANT (groktypename ((yyvsp[-1].typenametype))); ! (yyval.exprtype).value = comptypes (e1, e2) ? build_int_cst (NULL_TREE, 1) : build_int_cst (NULL_TREE, 0); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 107: #line 738 "objc/objc-parse.y" ! { (yyval.exprtype).value = error_mark_node; (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 108: #line 740 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_array_ref ((yyvsp[-3].exprtype).value, (yyvsp[-1].exprtype).value); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 109: #line 743 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_component_ref ((yyvsp[-2].exprtype).value, (yyvsp[0].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 110: #line 746 "objc/objc-parse.y" { ! tree expr = build_indirect_ref ((yyvsp[-2].exprtype).value, "->"); ! (yyval.exprtype).value = build_component_ref (expr, (yyvsp[0].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 111: #line 752 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_unary_op (POSTINCREMENT_EXPR, (yyvsp[-1].exprtype).value, 0); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 112: #line 755 "objc/objc-parse.y" ! { (yyval.exprtype).value = build_unary_op (POSTDECREMENT_EXPR, (yyvsp[-1].exprtype).value, 0); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 113: #line 758 "objc/objc-parse.y" ! { (yyval.exprtype).value = objc_build_message_expr ((yyvsp[0].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 114: #line 761 "objc/objc-parse.y" ! { (yyval.exprtype).value = objc_build_selector_expr ((yyvsp[0].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 115: #line 764 "objc/objc-parse.y" ! { (yyval.exprtype).value = objc_build_protocol_expr ((yyvsp[0].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 116: #line 767 "objc/objc-parse.y" ! { (yyval.exprtype).value = objc_build_encode_expr ((yyvsp[0].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 117: #line 770 "objc/objc-parse.y" ! { (yyval.exprtype).value = objc_build_string_object ((yyvsp[0].ttype)); ! (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 118: #line 780 "objc/objc-parse.y" ! { (yyval.ttype) = build_component_ref (offsetof_base, (yyvsp[0].ttype)); ;} break; case 119: #line 782 "objc/objc-parse.y" ! { (yyval.ttype) = build_component_ref ((yyvsp[-2].ttype), (yyvsp[0].ttype)); ;} break; case 120: #line 784 "objc/objc-parse.y" ! { (yyval.ttype) = build_array_ref ((yyvsp[-3].ttype), (yyvsp[-1].exprtype).value); ;} break; case 123: --- 3800,3896 ---- { tree e1, e2; ! e1 = TYPE_MAIN_VARIANT (groktypename (yyvsp[-3].typenametype)); ! e2 = TYPE_MAIN_VARIANT (groktypename (yyvsp[-1].typenametype)); ! yyval.exprtype.value = comptypes (e1, e2) ? build_int_cst (NULL_TREE, 1) : build_int_cst (NULL_TREE, 0); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 107: #line 738 "objc/objc-parse.y" ! { yyval.exprtype.value = error_mark_node; yyval.exprtype.original_code = ERROR_MARK; ;} break; case 108: #line 740 "objc/objc-parse.y" ! { yyval.exprtype.value = build_array_ref (yyvsp[-3].exprtype.value, yyvsp[-1].exprtype.value); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 109: #line 743 "objc/objc-parse.y" ! { yyval.exprtype.value = build_component_ref (yyvsp[-2].exprtype.value, yyvsp[0].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 110: #line 746 "objc/objc-parse.y" { ! tree expr = build_indirect_ref (yyvsp[-2].exprtype.value, "->"); ! yyval.exprtype.value = build_component_ref (expr, yyvsp[0].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 111: #line 752 "objc/objc-parse.y" ! { yyval.exprtype.value = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].exprtype.value, 0); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 112: #line 755 "objc/objc-parse.y" ! { yyval.exprtype.value = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].exprtype.value, 0); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 113: #line 758 "objc/objc-parse.y" ! { yyval.exprtype.value = objc_build_message_expr (yyvsp[0].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 114: #line 761 "objc/objc-parse.y" ! { yyval.exprtype.value = objc_build_selector_expr (yyvsp[0].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 115: #line 764 "objc/objc-parse.y" ! { yyval.exprtype.value = objc_build_protocol_expr (yyvsp[0].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 116: #line 767 "objc/objc-parse.y" ! { yyval.exprtype.value = objc_build_encode_expr (yyvsp[0].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 117: #line 770 "objc/objc-parse.y" ! { yyval.exprtype.value = objc_build_string_object (yyvsp[0].ttype); ! yyval.exprtype.original_code = ERROR_MARK; ;} break; case 118: #line 780 "objc/objc-parse.y" ! { yyval.ttype = build_component_ref (offsetof_base, yyvsp[0].ttype); ;} break; case 119: #line 782 "objc/objc-parse.y" ! { yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 120: #line 784 "objc/objc-parse.y" ! { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].exprtype.value); ;} break; case 123: *************** yyreduce: *** 3943,3949 **** case 130: #line 817 "objc/objc-parse.y" ! { shadow_tag_warned (finish_declspecs ((yyvsp[-1].dsptype)), 1); pedwarn ("empty declaration"); ;} break; --- 3910,3916 ---- case 130: #line 817 "objc/objc-parse.y" ! { shadow_tag_warned (finish_declspecs (yyvsp[-1].dsptype), 1); pedwarn ("empty declaration"); ;} break; *************** yyreduce: *** 3961,3971 **** #line 837 "objc/objc-parse.y" { pending_xref_error (); PUSH_DECLSPEC_STACK; ! if ((yyvsp[0].dsptype)) { ! prefix_attributes = (yyvsp[0].dsptype)->attrs; ! (yyvsp[0].dsptype)->attrs = NULL_TREE; ! current_declspecs = (yyvsp[0].dsptype); } else { --- 3928,3938 ---- #line 837 "objc/objc-parse.y" { pending_xref_error (); PUSH_DECLSPEC_STACK; ! if (yyvsp[0].dsptype) { ! prefix_attributes = yyvsp[0].dsptype->attrs; ! yyvsp[0].dsptype->attrs = NULL_TREE; ! current_declspecs = yyvsp[0].dsptype; } else { *************** yyreduce: *** 3978,3984 **** case 134: #line 858 "objc/objc-parse.y" ! { all_prefix_attributes = chainon ((yyvsp[0].ttype), prefix_attributes); ;} break; case 135: --- 3945,3951 ---- case 134: #line 858 "objc/objc-parse.y" ! { all_prefix_attributes = chainon (yyvsp[0].ttype, prefix_attributes); ;} break; case 135: *************** yyreduce: *** 4003,4454 **** case 139: #line 871 "objc/objc-parse.y" ! { shadow_tag (finish_declspecs ((yyvsp[-1].dsptype))); ;} break; case 140: #line 873 "objc/objc-parse.y" ! { RESTORE_EXT_FLAGS ((yyvsp[-1].itype)); ;} break; case 141: #line 919 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual (build_null_declspecs (), (yyvsp[0].ttype)); ;} break; case 142: #line 921 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 143: #line 923 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 144: #line 928 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_attrs ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 145: #line 933 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 146: #line 935 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 147: #line 940 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_attrs (build_null_declspecs (), (yyvsp[0].ttype)); ;} break; case 148: #line 942 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_attrs ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 149: #line 947 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type (build_null_declspecs (), (yyvsp[0].tstype)); ;} break; case 150: #line 949 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 151: #line 951 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 152: #line 953 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 153: #line 955 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 154: #line 957 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 155: #line 959 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 156: #line 964 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type (build_null_declspecs (), (yyvsp[0].tstype)); ;} break; case 157: #line 966 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_attrs ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 158: #line 968 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 159: #line 970 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 160: #line 972 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 161: #line 974 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 162: #line 979 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 163: #line 981 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 164: #line 983 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 165: #line 985 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 166: #line 987 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 167: #line 989 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 168: #line 994 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_attrs ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 169: #line 996 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 170: #line 998 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 171: #line 1000 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 172: #line 1002 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 173: #line 1007 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec (build_null_declspecs (), (yyvsp[0].ttype)); ;} break; case 174: #line 1009 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 175: #line 1011 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 176: #line 1013 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 177: #line 1015 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 178: #line 1017 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 179: #line 1019 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 180: #line 1024 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_attrs ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 181: #line 1029 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 182: #line 1031 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 183: #line 1033 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 184: #line 1035 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 185: #line 1037 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 186: #line 1039 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 187: #line 1044 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_attrs ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 188: #line 1049 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 189: #line 1051 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 190: #line 1053 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 191: #line 1055 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 192: #line 1057 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 193: #line 1059 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 194: #line 1061 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 195: #line 1063 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 196: #line 1065 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 197: #line 1067 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 198: #line 1072 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_attrs ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 199: #line 1074 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 200: #line 1076 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 201: #line 1078 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 202: #line 1080 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 203: #line 1085 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 204: #line 1087 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_qual ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 205: #line 1089 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 206: #line 1091 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 207: #line 1093 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 208: #line 1095 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 209: #line 1097 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 210: #line 1099 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 211: #line 1101 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 212: #line 1103 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_scspec ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 213: #line 1108 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_attrs ((yyvsp[-1].dsptype), (yyvsp[0].ttype)); ;} break; case 214: #line 1110 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 215: #line 1112 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 216: #line 1114 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 217: #line 1116 "objc/objc-parse.y" ! { (yyval.dsptype) = declspecs_add_type ((yyvsp[-1].dsptype), (yyvsp[0].tstype)); ;} break; case 274: #line 1203 "objc/objc-parse.y" ! { (yyval.dsptype) = NULL; ;} break; case 275: #line 1205 "objc/objc-parse.y" ! { (yyval.dsptype) = (yyvsp[0].dsptype); ;} break; case 279: #line 1240 "objc/objc-parse.y" { OBJC_NEED_RAW_IDENTIFIER (1); ! (yyval.tstype).kind = ctsk_resword; ! (yyval.tstype).spec = (yyvsp[0].ttype); ;} break; case 282: #line 1252 "objc/objc-parse.y" { /* For a typedef name, record the meaning, not the name. In case of `foo foo, bar;'. */ ! (yyval.tstype).kind = ctsk_typedef; ! (yyval.tstype).spec = lookup_name ((yyvsp[0].ttype)); ;} break; case 283: #line 1257 "objc/objc-parse.y" ! { (yyval.tstype).kind = ctsk_objc; ! (yyval.tstype).spec = objc_get_protocol_qualified_type ((yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; case 284: #line 1260 "objc/objc-parse.y" ! { (yyval.tstype).kind = ctsk_objc; ! (yyval.tstype).spec = objc_get_protocol_qualified_type ((yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; case 285: #line 1266 "objc/objc-parse.y" ! { (yyval.tstype).kind = ctsk_objc; ! (yyval.tstype).spec = objc_get_protocol_qualified_type (NULL_TREE, (yyvsp[0].ttype)); ;} break; case 286: #line 1269 "objc/objc-parse.y" { skip_evaluation--; in_typeof--; ! if (TREE_CODE ((yyvsp[-1].exprtype).value) == COMPONENT_REF ! && DECL_C_BIT_FIELD (TREE_OPERAND ((yyvsp[-1].exprtype).value, 1))) error ("% applied to a bit-field"); ! (yyval.tstype).kind = ctsk_typeof; ! (yyval.tstype).spec = TREE_TYPE ((yyvsp[-1].exprtype).value); ! pop_maybe_used (variably_modified_type_p ((yyval.tstype).spec, NULL_TREE)); ;} break; --- 3970,4421 ---- case 139: #line 871 "objc/objc-parse.y" ! { shadow_tag (finish_declspecs (yyvsp[-1].dsptype)); ;} break; case 140: #line 873 "objc/objc-parse.y" ! { RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;} break; case 141: #line 919 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (build_null_declspecs (), yyvsp[0].ttype); ;} break; case 142: #line 921 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 143: #line 923 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 144: #line 928 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 145: #line 933 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 146: #line 935 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 147: #line 940 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_attrs (build_null_declspecs (), yyvsp[0].ttype); ;} break; case 148: #line 942 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 149: #line 947 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (build_null_declspecs (), yyvsp[0].tstype); ;} break; case 150: #line 949 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 151: #line 951 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 152: #line 953 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 153: #line 955 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 154: #line 957 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 155: #line 959 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 156: #line 964 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (build_null_declspecs (), yyvsp[0].tstype); ;} break; case 157: #line 966 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 158: #line 968 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 159: #line 970 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 160: #line 972 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 161: #line 974 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 162: #line 979 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 163: #line 981 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 164: #line 983 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 165: #line 985 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 166: #line 987 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 167: #line 989 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 168: #line 994 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 169: #line 996 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 170: #line 998 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 171: #line 1000 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 172: #line 1002 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 173: #line 1007 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (build_null_declspecs (), yyvsp[0].ttype); ;} break; case 174: #line 1009 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 175: #line 1011 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 176: #line 1013 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 177: #line 1015 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 178: #line 1017 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 179: #line 1019 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 180: #line 1024 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 181: #line 1029 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 182: #line 1031 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 183: #line 1033 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 184: #line 1035 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 185: #line 1037 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 186: #line 1039 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 187: #line 1044 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 188: #line 1049 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 189: #line 1051 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 190: #line 1053 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 191: #line 1055 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 192: #line 1057 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 193: #line 1059 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 194: #line 1061 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 195: #line 1063 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 196: #line 1065 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 197: #line 1067 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 198: #line 1072 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 199: #line 1074 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 200: #line 1076 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 201: #line 1078 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 202: #line 1080 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 203: #line 1085 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 204: #line 1087 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 205: #line 1089 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 206: #line 1091 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 207: #line 1093 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 208: #line 1095 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 209: #line 1097 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 210: #line 1099 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 211: #line 1101 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 212: #line 1103 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 213: #line 1108 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;} break; case 214: #line 1110 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 215: #line 1112 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 216: #line 1114 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 217: #line 1116 "objc/objc-parse.y" ! { yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;} break; case 274: #line 1203 "objc/objc-parse.y" ! { yyval.dsptype = NULL; ;} break; case 275: #line 1205 "objc/objc-parse.y" ! { yyval.dsptype = yyvsp[0].dsptype; ;} break; case 279: #line 1240 "objc/objc-parse.y" { OBJC_NEED_RAW_IDENTIFIER (1); ! yyval.tstype.kind = ctsk_resword; ! yyval.tstype.spec = yyvsp[0].ttype; ;} break; case 282: #line 1252 "objc/objc-parse.y" { /* For a typedef name, record the meaning, not the name. In case of `foo foo, bar;'. */ ! yyval.tstype.kind = ctsk_typedef; ! yyval.tstype.spec = lookup_name (yyvsp[0].ttype); ;} break; case 283: #line 1257 "objc/objc-parse.y" ! { yyval.tstype.kind = ctsk_objc; ! yyval.tstype.spec = objc_get_protocol_qualified_type (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 284: #line 1260 "objc/objc-parse.y" ! { yyval.tstype.kind = ctsk_objc; ! yyval.tstype.spec = objc_get_protocol_qualified_type (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 285: #line 1266 "objc/objc-parse.y" ! { yyval.tstype.kind = ctsk_objc; ! yyval.tstype.spec = objc_get_protocol_qualified_type (NULL_TREE, yyvsp[0].ttype); ;} break; case 286: #line 1269 "objc/objc-parse.y" { skip_evaluation--; in_typeof--; ! if (TREE_CODE (yyvsp[-1].exprtype.value) == COMPONENT_REF ! && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[-1].exprtype.value, 1))) error ("% applied to a bit-field"); ! yyval.tstype.kind = ctsk_typeof; ! yyval.tstype.spec = TREE_TYPE (yyvsp[-1].exprtype.value); ! pop_maybe_used (variably_modified_type_p (yyval.tstype.spec, NULL_TREE)); ;} break; *************** yyreduce: *** 4456,4592 **** #line 1279 "objc/objc-parse.y" { skip_evaluation--; in_typeof--; ! (yyval.tstype).kind = ctsk_typeof; ! (yyval.tstype).spec = groktypename ((yyvsp[-1].typenametype)); ! pop_maybe_used (variably_modified_type_p ((yyval.tstype).spec, NULL_TREE)); ;} break; case 292: #line 1301 "objc/objc-parse.y" ! { (yyval.ttype) = start_decl ((yyvsp[-3].dtrtype), current_declspecs, true, ! chainon ((yyvsp[-1].ttype), all_prefix_attributes)); ! if (!(yyval.ttype)) ! (yyval.ttype) = error_mark_node; ! start_init ((yyval.ttype), (yyvsp[-2].ttype), global_bindings_p ()); ;} break; case 293: #line 1308 "objc/objc-parse.y" { finish_init (); ! if ((yyvsp[-1].ttype) != error_mark_node) { ! maybe_warn_string_init (TREE_TYPE ((yyvsp[-1].ttype)), (yyvsp[0].exprtype)); ! finish_decl ((yyvsp[-1].ttype), (yyvsp[0].exprtype).value, (yyvsp[-4].ttype)); } ;} break; case 294: #line 1316 "objc/objc-parse.y" ! { tree d = start_decl ((yyvsp[-2].dtrtype), current_declspecs, false, ! chainon ((yyvsp[0].ttype), all_prefix_attributes)); if (d) ! finish_decl (d, NULL_TREE, (yyvsp[-1].ttype)); ;} break; case 295: #line 1325 "objc/objc-parse.y" ! { (yyval.ttype) = start_decl ((yyvsp[-3].dtrtype), current_declspecs, true, ! chainon ((yyvsp[-1].ttype), all_prefix_attributes)); ! if (!(yyval.ttype)) ! (yyval.ttype) = error_mark_node; ! start_init ((yyval.ttype), (yyvsp[-2].ttype), global_bindings_p ()); ;} break; case 296: #line 1332 "objc/objc-parse.y" { finish_init (); ! if ((yyvsp[-1].ttype) != error_mark_node) { ! maybe_warn_string_init (TREE_TYPE ((yyvsp[-1].ttype)), (yyvsp[0].exprtype)); ! finish_decl ((yyvsp[-1].ttype), (yyvsp[0].exprtype).value, (yyvsp[-4].ttype)); } ;} break; case 297: #line 1340 "objc/objc-parse.y" ! { tree d = start_decl ((yyvsp[-2].dtrtype), current_declspecs, false, ! chainon ((yyvsp[0].ttype), all_prefix_attributes)); if (d) ! finish_decl (d, NULL_TREE, (yyvsp[-1].ttype)); ;} break; case 298: #line 1349 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 299: #line 1351 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 300: #line 1356 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 301: #line 1358 "objc/objc-parse.y" ! { (yyval.ttype) = chainon ((yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; case 302: #line 1364 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[-3].ttype); ;} break; case 303: #line 1366 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 304: #line 1371 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 305: #line 1373 "objc/objc-parse.y" ! { (yyval.ttype) = chainon ((yyvsp[-2].ttype), (yyvsp[0].ttype)); ;} break; case 306: #line 1378 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 307: #line 1380 "objc/objc-parse.y" ! { (yyval.ttype) = build_tree_list ((yyvsp[0].ttype), NULL_TREE); ;} break; case 308: #line 1382 "objc/objc-parse.y" ! { (yyval.ttype) = build_tree_list ((yyvsp[-3].ttype), build_tree_list (NULL_TREE, (yyvsp[-1].ttype))); ;} break; case 309: #line 1384 "objc/objc-parse.y" ! { (yyval.ttype) = build_tree_list ((yyvsp[-5].ttype), tree_cons (NULL_TREE, (yyvsp[-3].ttype), (yyvsp[-1].ttype))); ;} break; case 310: #line 1386 "objc/objc-parse.y" ! { (yyval.ttype) = build_tree_list ((yyvsp[-3].ttype), (yyvsp[-1].ttype)); ;} break; case 317: #line 1408 "objc/objc-parse.y" ! { (yyval.exprtype) = (yyvsp[0].exprtype); ;} break; case 318: --- 4423,4559 ---- #line 1279 "objc/objc-parse.y" { skip_evaluation--; in_typeof--; ! yyval.tstype.kind = ctsk_typeof; ! yyval.tstype.spec = groktypename (yyvsp[-1].typenametype); ! pop_maybe_used (variably_modified_type_p (yyval.tstype.spec, NULL_TREE)); ;} break; case 292: #line 1301 "objc/objc-parse.y" ! { yyval.ttype = start_decl (yyvsp[-3].dtrtype, current_declspecs, true, ! chainon (yyvsp[-1].ttype, all_prefix_attributes)); ! if (!yyval.ttype) ! yyval.ttype = error_mark_node; ! start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;} break; case 293: #line 1308 "objc/objc-parse.y" { finish_init (); ! if (yyvsp[-1].ttype != error_mark_node) { ! maybe_warn_string_init (TREE_TYPE (yyvsp[-1].ttype), yyvsp[0].exprtype); ! finish_decl (yyvsp[-1].ttype, yyvsp[0].exprtype.value, yyvsp[-4].ttype); } ;} break; case 294: #line 1316 "objc/objc-parse.y" ! { tree d = start_decl (yyvsp[-2].dtrtype, current_declspecs, false, ! chainon (yyvsp[0].ttype, all_prefix_attributes)); if (d) ! finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;} break; case 295: #line 1325 "objc/objc-parse.y" ! { yyval.ttype = start_decl (yyvsp[-3].dtrtype, current_declspecs, true, ! chainon (yyvsp[-1].ttype, all_prefix_attributes)); ! if (!yyval.ttype) ! yyval.ttype = error_mark_node; ! start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;} break; case 296: #line 1332 "objc/objc-parse.y" { finish_init (); ! if (yyvsp[-1].ttype != error_mark_node) { ! maybe_warn_string_init (TREE_TYPE (yyvsp[-1].ttype), yyvsp[0].exprtype); ! finish_decl (yyvsp[-1].ttype, yyvsp[0].exprtype.value, yyvsp[-4].ttype); } ;} break; case 297: #line 1340 "objc/objc-parse.y" ! { tree d = start_decl (yyvsp[-2].dtrtype, current_declspecs, false, ! chainon (yyvsp[0].ttype, all_prefix_attributes)); if (d) ! finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;} break; case 298: #line 1349 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 299: #line 1351 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 300: #line 1356 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 301: #line 1358 "objc/objc-parse.y" ! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 302: #line 1364 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[-3].ttype; ;} break; case 303: #line 1366 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 304: #line 1371 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 305: #line 1373 "objc/objc-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 306: #line 1378 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 307: #line 1380 "objc/objc-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;} break; case 308: #line 1382 "objc/objc-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;} break; case 309: #line 1384 "objc/objc-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;} break; case 310: #line 1386 "objc/objc-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;} break; case 317: #line 1408 "objc/objc-parse.y" ! { yyval.exprtype = yyvsp[0].exprtype; ;} break; case 318: *************** yyreduce: *** 4596,4607 **** case 319: #line 1412 "objc/objc-parse.y" ! { (yyval.exprtype) = pop_init_level (0); ;} break; case 320: #line 1414 "objc/objc-parse.y" ! { (yyval.exprtype).value = error_mark_node; (yyval.exprtype).original_code = ERROR_MARK; ;} break; case 321: --- 4563,4574 ---- case 319: #line 1412 "objc/objc-parse.y" ! { yyval.exprtype = pop_init_level (0); ;} break; case 320: #line 1414 "objc/objc-parse.y" ! { yyval.exprtype.value = error_mark_node; yyval.exprtype.original_code = ERROR_MARK; ;} break; case 321: *************** yyreduce: *** 4624,4630 **** case 327: #line 1440 "objc/objc-parse.y" ! { set_init_label ((yyvsp[-1].ttype)); if (pedantic) pedwarn ("obsolete use of designated initializer with %<:%>"); ;} break; --- 4591,4597 ---- case 327: #line 1440 "objc/objc-parse.y" ! { set_init_label (yyvsp[-1].ttype); if (pedantic) pedwarn ("obsolete use of designated initializer with %<:%>"); ;} break; *************** yyreduce: *** 4646,4669 **** case 332: #line 1454 "objc/objc-parse.y" ! { process_init_element ((yyvsp[0].exprtype)); ;} break; case 336: #line 1465 "objc/objc-parse.y" ! { set_init_label ((yyvsp[0].ttype)); ;} break; case 338: #line 1471 "objc/objc-parse.y" ! { set_init_index ((yyvsp[-3].exprtype).value, (yyvsp[-1].exprtype).value); if (pedantic) pedwarn ("ISO C forbids specifying range of elements to initialize"); ;} break; case 339: #line 1475 "objc/objc-parse.y" ! { set_init_index ((yyvsp[-1].exprtype).value, NULL_TREE); ;} break; case 340: --- 4613,4636 ---- case 332: #line 1454 "objc/objc-parse.y" ! { process_init_element (yyvsp[0].exprtype); ;} break; case 336: #line 1465 "objc/objc-parse.y" ! { set_init_label (yyvsp[0].ttype); ;} break; case 338: #line 1471 "objc/objc-parse.y" ! { set_init_index (yyvsp[-3].exprtype.value, yyvsp[-1].exprtype.value); if (pedantic) pedwarn ("ISO C forbids specifying range of elements to initialize"); ;} break; case 339: #line 1475 "objc/objc-parse.y" ! { set_init_index (yyvsp[-1].exprtype.value, NULL_TREE); ;} break; case 340: *************** yyreduce: *** 4672,4678 **** pedwarn ("ISO C forbids nested functions"); push_function_context (); ! if (!start_function (current_declspecs, (yyvsp[0].dtrtype), all_prefix_attributes)) { pop_function_context (); --- 4639,4645 ---- pedwarn ("ISO C forbids nested functions"); push_function_context (); ! if (!start_function (current_declspecs, yyvsp[0].dtrtype, all_prefix_attributes)) { pop_function_context (); *************** yyreduce: *** 4684,4697 **** case 341: #line 1492 "objc/objc-parse.y" { tree decl = current_function_decl; ! DECL_SOURCE_LOCATION (decl) = (yyvsp[0].location); store_parm_decls (); ;} break; case 342: #line 1501 "objc/objc-parse.y" { tree decl = current_function_decl; ! add_stmt ((yyvsp[0].ttype)); finish_function (); pop_function_context (); add_stmt (build_stmt (DECL_EXPR, decl)); ;} --- 4651,4664 ---- case 341: #line 1492 "objc/objc-parse.y" { tree decl = current_function_decl; ! DECL_SOURCE_LOCATION (decl) = yyvsp[0].location; store_parm_decls (); ;} break; case 342: #line 1501 "objc/objc-parse.y" { tree decl = current_function_decl; ! add_stmt (yyvsp[0].ttype); finish_function (); pop_function_context (); add_stmt (build_stmt (DECL_EXPR, decl)); ;} *************** yyreduce: *** 4703,4709 **** pedwarn ("ISO C forbids nested functions"); push_function_context (); ! if (!start_function (current_declspecs, (yyvsp[0].dtrtype), all_prefix_attributes)) { pop_function_context (); --- 4670,4676 ---- pedwarn ("ISO C forbids nested functions"); push_function_context (); ! if (!start_function (current_declspecs, yyvsp[0].dtrtype, all_prefix_attributes)) { pop_function_context (); *************** yyreduce: *** 4715,4728 **** case 344: #line 1522 "objc/objc-parse.y" { tree decl = current_function_decl; ! DECL_SOURCE_LOCATION (decl) = (yyvsp[0].location); store_parm_decls (); ;} break; case 345: #line 1531 "objc/objc-parse.y" { tree decl = current_function_decl; ! add_stmt ((yyvsp[0].ttype)); finish_function (); pop_function_context (); add_stmt (build_stmt (DECL_EXPR, decl)); ;} --- 4682,4695 ---- case 344: #line 1522 "objc/objc-parse.y" { tree decl = current_function_decl; ! DECL_SOURCE_LOCATION (decl) = yyvsp[0].location; store_parm_decls (); ;} break; case 345: #line 1531 "objc/objc-parse.y" { tree decl = current_function_decl; ! add_stmt (yyvsp[0].ttype); finish_function (); pop_function_context (); add_stmt (build_stmt (DECL_EXPR, decl)); ;} *************** yyreduce: *** 4730,4937 **** case 348: #line 1550 "objc/objc-parse.y" ! { (yyval.dtrtype) = (yyvsp[-2].ttype) ? build_attrs_declarator ((yyvsp[-2].ttype), (yyvsp[-1].dtrtype)) : (yyvsp[-1].dtrtype); ;} break; case 349: #line 1552 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_function_declarator ((yyvsp[0].arginfotype), (yyvsp[-2].dtrtype)); ;} break; case 350: #line 1554 "objc/objc-parse.y" ! { (yyval.dtrtype) = set_array_declarator_inner ((yyvsp[0].dtrtype), (yyvsp[-1].dtrtype), false); ;} break; case 351: #line 1556 "objc/objc-parse.y" ! { (yyval.dtrtype) = make_pointer_declarator ((yyvsp[-1].dsptype), (yyvsp[0].dtrtype)); ;} break; case 352: #line 1558 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_id_declarator ((yyvsp[0].ttype)); ;} break; case 355: #line 1572 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_function_declarator ((yyvsp[0].arginfotype), (yyvsp[-2].dtrtype)); ;} break; case 356: #line 1574 "objc/objc-parse.y" ! { (yyval.dtrtype) = set_array_declarator_inner ((yyvsp[0].dtrtype), (yyvsp[-1].dtrtype), false); ;} break; case 357: #line 1576 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_id_declarator ((yyvsp[0].ttype)); ;} break; case 358: #line 1581 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_function_declarator ((yyvsp[0].arginfotype), (yyvsp[-2].dtrtype)); ;} break; case 359: #line 1583 "objc/objc-parse.y" ! { (yyval.dtrtype) = set_array_declarator_inner ((yyvsp[0].dtrtype), (yyvsp[-1].dtrtype), false); ;} break; case 360: #line 1585 "objc/objc-parse.y" ! { (yyval.dtrtype) = make_pointer_declarator ((yyvsp[-1].dsptype), (yyvsp[0].dtrtype)); ;} break; case 361: #line 1587 "objc/objc-parse.y" ! { (yyval.dtrtype) = make_pointer_declarator ((yyvsp[-1].dsptype), (yyvsp[0].dtrtype)); ;} break; case 362: #line 1589 "objc/objc-parse.y" ! { (yyval.dtrtype) = (yyvsp[-2].ttype) ? build_attrs_declarator ((yyvsp[-2].ttype), (yyvsp[-1].dtrtype)) : (yyvsp[-1].dtrtype); ;} break; case 363: #line 1597 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_function_declarator ((yyvsp[0].arginfotype), (yyvsp[-2].dtrtype)); ;} break; case 364: #line 1599 "objc/objc-parse.y" ! { (yyval.dtrtype) = (yyvsp[-2].ttype) ? build_attrs_declarator ((yyvsp[-2].ttype), (yyvsp[-1].dtrtype)) : (yyvsp[-1].dtrtype); ;} break; case 365: #line 1601 "objc/objc-parse.y" ! { (yyval.dtrtype) = make_pointer_declarator ((yyvsp[-1].dsptype), (yyvsp[0].dtrtype)); ;} break; case 366: #line 1603 "objc/objc-parse.y" ! { (yyval.dtrtype) = set_array_declarator_inner ((yyvsp[0].dtrtype), (yyvsp[-1].dtrtype), false); ;} break; case 367: #line 1605 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_id_declarator ((yyvsp[0].ttype)); ;} break; case 368: #line 1610 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 369: #line 1612 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 370: #line 1617 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 371: #line 1619 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 372: #line 1624 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 373: #line 1626 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 374: #line 1637 "objc/objc-parse.y" ! { (yyval.ttype) = start_struct (RECORD_TYPE, (yyvsp[-1].ttype)); /* Start scope of tag before parsing components. */ ;} break; case 375: #line 1641 "objc/objc-parse.y" ! { (yyval.tstype).spec = finish_struct ((yyvsp[-3].ttype), nreverse ((yyvsp[-2].ttype)), ! chainon ((yyvsp[-6].ttype), (yyvsp[0].ttype))); ! (yyval.tstype).kind = ctsk_tagdef; ;} break; case 376: #line 1645 "objc/objc-parse.y" ! { (yyval.tstype).spec = finish_struct (start_struct (RECORD_TYPE, NULL_TREE), ! nreverse ((yyvsp[-2].ttype)), chainon ((yyvsp[-4].ttype), (yyvsp[0].ttype))); ! (yyval.tstype).kind = ctsk_tagdef; ;} break; case 377: #line 1651 "objc/objc-parse.y" ! { (yyval.ttype) = start_struct (UNION_TYPE, (yyvsp[-1].ttype)); ;} break; case 378: #line 1653 "objc/objc-parse.y" ! { (yyval.tstype).spec = finish_struct ((yyvsp[-3].ttype), nreverse ((yyvsp[-2].ttype)), ! chainon ((yyvsp[-6].ttype), (yyvsp[0].ttype))); ! (yyval.tstype).kind = ctsk_tagdef; ;} break; case 379: #line 1657 "objc/objc-parse.y" ! { (yyval.tstype).spec = finish_struct (start_struct (UNION_TYPE, NULL_TREE), ! nreverse ((yyvsp[-2].ttype)), chainon ((yyvsp[-4].ttype), (yyvsp[0].ttype))); ! (yyval.tstype).kind = ctsk_tagdef; ;} break; case 380: #line 1663 "objc/objc-parse.y" ! { (yyval.ttype) = start_enum ((yyvsp[-1].ttype)); ;} break; case 381: #line 1665 "objc/objc-parse.y" ! { (yyval.tstype).spec = finish_enum ((yyvsp[-4].ttype), nreverse ((yyvsp[-3].ttype)), ! chainon ((yyvsp[-7].ttype), (yyvsp[0].ttype))); ! (yyval.tstype).kind = ctsk_tagdef; ;} break; case 382: #line 1669 "objc/objc-parse.y" ! { (yyval.ttype) = start_enum (NULL_TREE); ;} break; case 383: #line 1671 "objc/objc-parse.y" ! { (yyval.tstype).spec = finish_enum ((yyvsp[-4].ttype), nreverse ((yyvsp[-3].ttype)), ! chainon ((yyvsp[-6].ttype), (yyvsp[0].ttype))); ! (yyval.tstype).kind = ctsk_tagdef; ;} break; case 384: #line 1678 "objc/objc-parse.y" ! { (yyval.tstype) = parser_xref_tag (RECORD_TYPE, (yyvsp[0].ttype)); ;} break; case 385: #line 1680 "objc/objc-parse.y" ! { (yyval.tstype) = parser_xref_tag (UNION_TYPE, (yyvsp[0].ttype)); ;} break; case 386: #line 1682 "objc/objc-parse.y" ! { (yyval.tstype) = parser_xref_tag (ENUMERAL_TYPE, (yyvsp[0].ttype)); /* In ISO C, enumerated types can be referred to only if already defined. */ ! if (pedantic && !COMPLETE_TYPE_P ((yyval.tstype).spec)) pedwarn ("ISO C forbids forward references to % types"); ;} break; --- 4697,4904 ---- case 348: #line 1550 "objc/objc-parse.y" ! { yyval.dtrtype = yyvsp[-2].ttype ? build_attrs_declarator (yyvsp[-2].ttype, yyvsp[-1].dtrtype) : yyvsp[-1].dtrtype; ;} break; case 349: #line 1552 "objc/objc-parse.y" ! { yyval.dtrtype = build_function_declarator (yyvsp[0].arginfotype, yyvsp[-2].dtrtype); ;} break; case 350: #line 1554 "objc/objc-parse.y" ! { yyval.dtrtype = set_array_declarator_inner (yyvsp[0].dtrtype, yyvsp[-1].dtrtype, false); ;} break; case 351: #line 1556 "objc/objc-parse.y" ! { yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;} break; case 352: #line 1558 "objc/objc-parse.y" ! { yyval.dtrtype = build_id_declarator (yyvsp[0].ttype); ;} break; case 355: #line 1572 "objc/objc-parse.y" ! { yyval.dtrtype = build_function_declarator (yyvsp[0].arginfotype, yyvsp[-2].dtrtype); ;} break; case 356: #line 1574 "objc/objc-parse.y" ! { yyval.dtrtype = set_array_declarator_inner (yyvsp[0].dtrtype, yyvsp[-1].dtrtype, false); ;} break; case 357: #line 1576 "objc/objc-parse.y" ! { yyval.dtrtype = build_id_declarator (yyvsp[0].ttype); ;} break; case 358: #line 1581 "objc/objc-parse.y" ! { yyval.dtrtype = build_function_declarator (yyvsp[0].arginfotype, yyvsp[-2].dtrtype); ;} break; case 359: #line 1583 "objc/objc-parse.y" ! { yyval.dtrtype = set_array_declarator_inner (yyvsp[0].dtrtype, yyvsp[-1].dtrtype, false); ;} break; case 360: #line 1585 "objc/objc-parse.y" ! { yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;} break; case 361: #line 1587 "objc/objc-parse.y" ! { yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;} break; case 362: #line 1589 "objc/objc-parse.y" ! { yyval.dtrtype = yyvsp[-2].ttype ? build_attrs_declarator (yyvsp[-2].ttype, yyvsp[-1].dtrtype) : yyvsp[-1].dtrtype; ;} break; case 363: #line 1597 "objc/objc-parse.y" ! { yyval.dtrtype = build_function_declarator (yyvsp[0].arginfotype, yyvsp[-2].dtrtype); ;} break; case 364: #line 1599 "objc/objc-parse.y" ! { yyval.dtrtype = yyvsp[-2].ttype ? build_attrs_declarator (yyvsp[-2].ttype, yyvsp[-1].dtrtype) : yyvsp[-1].dtrtype; ;} break; case 365: #line 1601 "objc/objc-parse.y" ! { yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;} break; case 366: #line 1603 "objc/objc-parse.y" ! { yyval.dtrtype = set_array_declarator_inner (yyvsp[0].dtrtype, yyvsp[-1].dtrtype, false); ;} break; case 367: #line 1605 "objc/objc-parse.y" ! { yyval.dtrtype = build_id_declarator (yyvsp[0].ttype); ;} break; case 368: #line 1610 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 369: #line 1612 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 370: #line 1617 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 371: #line 1619 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 372: #line 1624 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 373: #line 1626 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 374: #line 1637 "objc/objc-parse.y" ! { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype); /* Start scope of tag before parsing components. */ ;} break; case 375: #line 1641 "objc/objc-parse.y" ! { yyval.tstype.spec = finish_struct (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype), ! chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ! yyval.tstype.kind = ctsk_tagdef; ;} break; case 376: #line 1645 "objc/objc-parse.y" ! { yyval.tstype.spec = finish_struct (start_struct (RECORD_TYPE, NULL_TREE), ! nreverse (yyvsp[-2].ttype), chainon (yyvsp[-4].ttype, yyvsp[0].ttype)); ! yyval.tstype.kind = ctsk_tagdef; ;} break; case 377: #line 1651 "objc/objc-parse.y" ! { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;} break; case 378: #line 1653 "objc/objc-parse.y" ! { yyval.tstype.spec = finish_struct (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype), ! chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ! yyval.tstype.kind = ctsk_tagdef; ;} break; case 379: #line 1657 "objc/objc-parse.y" ! { yyval.tstype.spec = finish_struct (start_struct (UNION_TYPE, NULL_TREE), ! nreverse (yyvsp[-2].ttype), chainon (yyvsp[-4].ttype, yyvsp[0].ttype)); ! yyval.tstype.kind = ctsk_tagdef; ;} break; case 380: #line 1663 "objc/objc-parse.y" ! { yyval.ttype = start_enum (yyvsp[-1].ttype); ;} break; case 381: #line 1665 "objc/objc-parse.y" ! { yyval.tstype.spec = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), ! chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); ! yyval.tstype.kind = ctsk_tagdef; ;} break; case 382: #line 1669 "objc/objc-parse.y" ! { yyval.ttype = start_enum (NULL_TREE); ;} break; case 383: #line 1671 "objc/objc-parse.y" ! { yyval.tstype.spec = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), ! chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ! yyval.tstype.kind = ctsk_tagdef; ;} break; case 384: #line 1678 "objc/objc-parse.y" ! { yyval.tstype = parser_xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;} break; case 385: #line 1680 "objc/objc-parse.y" ! { yyval.tstype = parser_xref_tag (UNION_TYPE, yyvsp[0].ttype); ;} break; case 386: #line 1682 "objc/objc-parse.y" ! { yyval.tstype = parser_xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); /* In ISO C, enumerated types can be referred to only if already defined. */ ! if (pedantic && !COMPLETE_TYPE_P (yyval.tstype.spec)) pedwarn ("ISO C forbids forward references to % types"); ;} break; *************** yyreduce: *** 4943,4965 **** case 391: #line 1715 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 392: #line 1717 "objc/objc-parse.y" ! { (yyval.ttype) = chainon ((yyvsp[0].ttype), (yyvsp[-1].ttype)); pedwarn ("no semicolon at end of struct or union"); ;} break; case 393: #line 1722 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 394: #line 1724 "objc/objc-parse.y" ! { (yyval.ttype) = chainon ((yyvsp[-1].ttype), (yyvsp[-2].ttype)); ;} break; case 395: --- 4910,4932 ---- case 391: #line 1715 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 392: #line 1717 "objc/objc-parse.y" ! { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); pedwarn ("no semicolon at end of struct or union"); ;} break; case 393: #line 1722 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 394: #line 1724 "objc/objc-parse.y" ! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[-2].ttype); ;} break; case 395: *************** yyreduce: *** 4970,4981 **** case 396: #line 1730 "objc/objc-parse.y" ! { (yyval.ttype) = nreverse (objc_get_class_ivars ((yyvsp[-1].ttype))); ;} break; case 397: #line 1735 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); POP_DECLSPEC_STACK; ;} break; --- 4937,4948 ---- case 396: #line 1730 "objc/objc-parse.y" ! { yyval.ttype = nreverse (objc_get_class_ivars (yyvsp[-1].ttype)); ;} break; case 397: #line 1735 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ;} break; *************** yyreduce: *** 4985,4998 **** /* Support for unnamed structs or unions as members of structs or unions (which is [a] useful and [b] supports MS P-SDK). */ ! (yyval.ttype) = grokfield (build_id_declarator (NULL_TREE), current_declspecs, NULL_TREE); POP_DECLSPEC_STACK; ;} break; case 399: #line 1746 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); POP_DECLSPEC_STACK; ;} break; --- 4952,4965 ---- /* Support for unnamed structs or unions as members of structs or unions (which is [a] useful and [b] supports MS P-SDK). */ ! yyval.ttype = grokfield (build_id_declarator (NULL_TREE), current_declspecs, NULL_TREE); POP_DECLSPEC_STACK; ;} break; case 399: #line 1746 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; POP_DECLSPEC_STACK; ;} break; *************** yyreduce: *** 5000,5200 **** #line 1749 "objc/objc-parse.y" { if (pedantic) pedwarn ("ISO C forbids member declarations with no members"); ! shadow_tag_warned (finish_declspecs ((yyvsp[0].dsptype)), pedantic); ! (yyval.ttype) = NULL_TREE; ;} break; case 401: #line 1754 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 402: #line 1756 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); ! RESTORE_EXT_FLAGS ((yyvsp[-1].itype)); ;} break; case 404: #line 1763 "objc/objc-parse.y" ! { TREE_CHAIN ((yyvsp[0].ttype)) = (yyvsp[-3].ttype); (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 406: #line 1769 "objc/objc-parse.y" ! { TREE_CHAIN ((yyvsp[0].ttype)) = (yyvsp[-3].ttype); (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 407: #line 1774 "objc/objc-parse.y" ! { (yyval.ttype) = grokfield ((yyvsp[-1].dtrtype), current_declspecs, NULL_TREE); ! decl_attributes (&(yyval.ttype), ! chainon ((yyvsp[0].ttype), all_prefix_attributes), 0); ;} break; case 408: #line 1778 "objc/objc-parse.y" ! { (yyval.ttype) = grokfield ((yyvsp[-3].dtrtype), current_declspecs, (yyvsp[-1].exprtype).value); ! decl_attributes (&(yyval.ttype), ! chainon ((yyvsp[0].ttype), all_prefix_attributes), 0); ;} break; case 409: #line 1782 "objc/objc-parse.y" ! { (yyval.ttype) = grokfield (build_id_declarator (NULL_TREE), ! current_declspecs, (yyvsp[-1].exprtype).value); ! decl_attributes (&(yyval.ttype), ! chainon ((yyvsp[0].ttype), all_prefix_attributes), 0); ;} break; case 410: #line 1790 "objc/objc-parse.y" ! { (yyval.ttype) = grokfield ((yyvsp[-1].dtrtype), current_declspecs, NULL_TREE); ! decl_attributes (&(yyval.ttype), ! chainon ((yyvsp[0].ttype), all_prefix_attributes), 0); ;} break; case 411: #line 1794 "objc/objc-parse.y" ! { (yyval.ttype) = grokfield ((yyvsp[-3].dtrtype), current_declspecs, (yyvsp[-1].exprtype).value); ! decl_attributes (&(yyval.ttype), ! chainon ((yyvsp[0].ttype), all_prefix_attributes), 0); ;} break; case 412: #line 1798 "objc/objc-parse.y" ! { (yyval.ttype) = grokfield (build_id_declarator (NULL_TREE), ! current_declspecs, (yyvsp[-1].exprtype).value); ! decl_attributes (&(yyval.ttype), ! chainon ((yyvsp[0].ttype), all_prefix_attributes), 0); ;} break; case 414: #line 1810 "objc/objc-parse.y" ! { if ((yyvsp[-2].ttype) == error_mark_node) ! (yyval.ttype) = (yyvsp[-2].ttype); else ! TREE_CHAIN ((yyvsp[0].ttype)) = (yyvsp[-2].ttype), (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 415: #line 1815 "objc/objc-parse.y" ! { (yyval.ttype) = error_mark_node; ;} break; case 416: #line 1821 "objc/objc-parse.y" ! { (yyval.ttype) = build_enumerator ((yyvsp[0].ttype), NULL_TREE); ;} break; case 417: #line 1823 "objc/objc-parse.y" ! { (yyval.ttype) = build_enumerator ((yyvsp[-2].ttype), (yyvsp[0].exprtype).value); ;} break; case 418: #line 1828 "objc/objc-parse.y" { pending_xref_error (); ! (yyval.dsptype) = finish_declspecs ((yyvsp[0].dsptype)); ;} break; case 419: #line 1831 "objc/objc-parse.y" ! { (yyval.typenametype) = XOBNEW (&parser_obstack, struct c_type_name); ! (yyval.typenametype)->specs = (yyvsp[-1].dsptype); ! (yyval.typenametype)->declarator = (yyvsp[0].dtrtype); ;} break; case 420: #line 1838 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_id_declarator (NULL_TREE); ;} break; case 422: #line 1844 "objc/objc-parse.y" ! { (yyval.parmtype) = build_c_parm (current_declspecs, all_prefix_attributes, build_id_declarator (NULL_TREE)); ;} break; case 423: #line 1847 "objc/objc-parse.y" ! { (yyval.parmtype) = build_c_parm (current_declspecs, all_prefix_attributes, ! (yyvsp[0].dtrtype)); ;} break; case 424: #line 1850 "objc/objc-parse.y" ! { (yyval.parmtype) = build_c_parm (current_declspecs, ! chainon ((yyvsp[0].ttype), all_prefix_attributes), ! (yyvsp[-1].dtrtype)); ;} break; case 428: #line 1863 "objc/objc-parse.y" ! { (yyval.dtrtype) = make_pointer_declarator ((yyvsp[-1].dsptype), (yyvsp[0].dtrtype)); ;} break; case 429: #line 1868 "objc/objc-parse.y" ! { (yyval.dtrtype) = make_pointer_declarator ! ((yyvsp[0].dsptype), build_id_declarator (NULL_TREE)); ;} break; case 430: #line 1871 "objc/objc-parse.y" ! { (yyval.dtrtype) = make_pointer_declarator ((yyvsp[-1].dsptype), (yyvsp[0].dtrtype)); ;} break; case 431: #line 1876 "objc/objc-parse.y" ! { (yyval.dtrtype) = (yyvsp[-2].ttype) ? build_attrs_declarator ((yyvsp[-2].ttype), (yyvsp[-1].dtrtype)) : (yyvsp[-1].dtrtype); ;} break; case 432: #line 1878 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_function_declarator ((yyvsp[0].arginfotype), (yyvsp[-2].dtrtype)); ;} break; case 433: #line 1880 "objc/objc-parse.y" ! { (yyval.dtrtype) = set_array_declarator_inner ((yyvsp[0].dtrtype), (yyvsp[-1].dtrtype), true); ;} break; case 434: #line 1882 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_function_declarator ! ((yyvsp[0].arginfotype), build_id_declarator (NULL_TREE)); ;} break; case 435: #line 1885 "objc/objc-parse.y" ! { (yyval.dtrtype) = set_array_declarator_inner ! ((yyvsp[0].dtrtype), build_id_declarator (NULL_TREE), true); ;} break; case 436: #line 1893 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_array_declarator ((yyvsp[-1].exprtype).value, (yyvsp[-2].dsptype), false, false); ;} break; case 437: #line 1895 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_array_declarator (NULL_TREE, (yyvsp[-1].dsptype), false, false); ;} break; case 438: #line 1897 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_array_declarator (NULL_TREE, (yyvsp[-2].dsptype), false, true); ;} break; case 439: #line 1899 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_array_declarator ((yyvsp[-1].exprtype).value, (yyvsp[-2].dsptype), true, false); ;} break; case 440: #line 1902 "objc/objc-parse.y" ! { (yyval.dtrtype) = build_array_declarator ((yyvsp[-1].exprtype).value, (yyvsp[-3].dsptype), true, false); ;} break; case 443: --- 4967,5167 ---- #line 1749 "objc/objc-parse.y" { if (pedantic) pedwarn ("ISO C forbids member declarations with no members"); ! shadow_tag_warned (finish_declspecs (yyvsp[0].dsptype), pedantic); ! yyval.ttype = NULL_TREE; ;} break; case 401: #line 1754 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 402: #line 1756 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ! RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;} break; case 404: #line 1763 "objc/objc-parse.y" ! { TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-3].ttype; yyval.ttype = yyvsp[0].ttype; ;} break; case 406: #line 1769 "objc/objc-parse.y" ! { TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-3].ttype; yyval.ttype = yyvsp[0].ttype; ;} break; case 407: #line 1774 "objc/objc-parse.y" ! { yyval.ttype = grokfield (yyvsp[-1].dtrtype, current_declspecs, NULL_TREE); ! decl_attributes (&yyval.ttype, ! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;} break; case 408: #line 1778 "objc/objc-parse.y" ! { yyval.ttype = grokfield (yyvsp[-3].dtrtype, current_declspecs, yyvsp[-1].exprtype.value); ! decl_attributes (&yyval.ttype, ! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;} break; case 409: #line 1782 "objc/objc-parse.y" ! { yyval.ttype = grokfield (build_id_declarator (NULL_TREE), ! current_declspecs, yyvsp[-1].exprtype.value); ! decl_attributes (&yyval.ttype, ! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;} break; case 410: #line 1790 "objc/objc-parse.y" ! { yyval.ttype = grokfield (yyvsp[-1].dtrtype, current_declspecs, NULL_TREE); ! decl_attributes (&yyval.ttype, ! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;} break; case 411: #line 1794 "objc/objc-parse.y" ! { yyval.ttype = grokfield (yyvsp[-3].dtrtype, current_declspecs, yyvsp[-1].exprtype.value); ! decl_attributes (&yyval.ttype, ! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;} break; case 412: #line 1798 "objc/objc-parse.y" ! { yyval.ttype = grokfield (build_id_declarator (NULL_TREE), ! current_declspecs, yyvsp[-1].exprtype.value); ! decl_attributes (&yyval.ttype, ! chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;} break; case 414: #line 1810 "objc/objc-parse.y" ! { if (yyvsp[-2].ttype == error_mark_node) ! yyval.ttype = yyvsp[-2].ttype; else ! TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-2].ttype, yyval.ttype = yyvsp[0].ttype; ;} break; case 415: #line 1815 "objc/objc-parse.y" ! { yyval.ttype = error_mark_node; ;} break; case 416: #line 1821 "objc/objc-parse.y" ! { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;} break; case 417: #line 1823 "objc/objc-parse.y" ! { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].exprtype.value); ;} break; case 418: #line 1828 "objc/objc-parse.y" { pending_xref_error (); ! yyval.dsptype = finish_declspecs (yyvsp[0].dsptype); ;} break; case 419: #line 1831 "objc/objc-parse.y" ! { yyval.typenametype = XOBNEW (&parser_obstack, struct c_type_name); ! yyval.typenametype->specs = yyvsp[-1].dsptype; ! yyval.typenametype->declarator = yyvsp[0].dtrtype; ;} break; case 420: #line 1838 "objc/objc-parse.y" ! { yyval.dtrtype = build_id_declarator (NULL_TREE); ;} break; case 422: #line 1844 "objc/objc-parse.y" ! { yyval.parmtype = build_c_parm (current_declspecs, all_prefix_attributes, build_id_declarator (NULL_TREE)); ;} break; case 423: #line 1847 "objc/objc-parse.y" ! { yyval.parmtype = build_c_parm (current_declspecs, all_prefix_attributes, ! yyvsp[0].dtrtype); ;} break; case 424: #line 1850 "objc/objc-parse.y" ! { yyval.parmtype = build_c_parm (current_declspecs, ! chainon (yyvsp[0].ttype, all_prefix_attributes), ! yyvsp[-1].dtrtype); ;} break; case 428: #line 1863 "objc/objc-parse.y" ! { yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;} break; case 429: #line 1868 "objc/objc-parse.y" ! { yyval.dtrtype = make_pointer_declarator ! (yyvsp[0].dsptype, build_id_declarator (NULL_TREE)); ;} break; case 430: #line 1871 "objc/objc-parse.y" ! { yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;} break; case 431: #line 1876 "objc/objc-parse.y" ! { yyval.dtrtype = yyvsp[-2].ttype ? build_attrs_declarator (yyvsp[-2].ttype, yyvsp[-1].dtrtype) : yyvsp[-1].dtrtype; ;} break; case 432: #line 1878 "objc/objc-parse.y" ! { yyval.dtrtype = build_function_declarator (yyvsp[0].arginfotype, yyvsp[-2].dtrtype); ;} break; case 433: #line 1880 "objc/objc-parse.y" ! { yyval.dtrtype = set_array_declarator_inner (yyvsp[0].dtrtype, yyvsp[-1].dtrtype, true); ;} break; case 434: #line 1882 "objc/objc-parse.y" ! { yyval.dtrtype = build_function_declarator ! (yyvsp[0].arginfotype, build_id_declarator (NULL_TREE)); ;} break; case 435: #line 1885 "objc/objc-parse.y" ! { yyval.dtrtype = set_array_declarator_inner ! (yyvsp[0].dtrtype, build_id_declarator (NULL_TREE), true); ;} break; case 436: #line 1893 "objc/objc-parse.y" ! { yyval.dtrtype = build_array_declarator (yyvsp[-1].exprtype.value, yyvsp[-2].dsptype, false, false); ;} break; case 437: #line 1895 "objc/objc-parse.y" ! { yyval.dtrtype = build_array_declarator (NULL_TREE, yyvsp[-1].dsptype, false, false); ;} break; case 438: #line 1897 "objc/objc-parse.y" ! { yyval.dtrtype = build_array_declarator (NULL_TREE, yyvsp[-2].dsptype, false, true); ;} break; case 439: #line 1899 "objc/objc-parse.y" ! { yyval.dtrtype = build_array_declarator (yyvsp[-1].exprtype.value, yyvsp[-2].dsptype, true, false); ;} break; case 440: #line 1902 "objc/objc-parse.y" ! { yyval.dtrtype = build_array_declarator (yyvsp[-1].exprtype.value, yyvsp[-3].dsptype, true, false); ;} break; case 443: *************** yyreduce: *** 5215,5221 **** case 466: #line 1966 "objc/objc-parse.y" ! { (yyval.ttype) = c_begin_compound_stmt (flag_isoc99); ;} break; case 468: --- 5182,5188 ---- case 466: #line 1966 "objc/objc-parse.y" ! { yyval.ttype = c_begin_compound_stmt (flag_isoc99); ;} break; case 468: *************** yyreduce: *** 5227,5233 **** case 471: #line 1985 "objc/objc-parse.y" { tree link; ! for (link = (yyvsp[-1].ttype); link; link = TREE_CHAIN (link)) { tree label = declare_label (TREE_VALUE (link)); C_DECLARED_LABEL_FLAG (label) = 1; --- 5194,5200 ---- case 471: #line 1985 "objc/objc-parse.y" { tree link; ! for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { tree label = declare_label (TREE_VALUE (link)); C_DECLARED_LABEL_FLAG (label) = 1; *************** yyreduce: *** 5238,5249 **** case 472: #line 1999 "objc/objc-parse.y" ! { add_stmt ((yyvsp[0].ttype)); ;} break; case 474: #line 2003 "objc/objc-parse.y" ! { (yyval.ttype) = c_begin_compound_stmt (true); ;} break; case 479: --- 5205,5216 ---- case 472: #line 1999 "objc/objc-parse.y" ! { add_stmt (yyvsp[0].ttype); ;} break; case 474: #line 2003 "objc/objc-parse.y" ! { yyval.ttype = c_begin_compound_stmt (true); ;} break; case 479: *************** yyreduce: *** 5254,5278 **** "only inside a function"); YYERROR; } ! (yyval.ttype) = c_begin_stmt_expr (); ;} break; case 480: #line 2028 "objc/objc-parse.y" ! { (yyval.ttype) = c_end_compound_stmt ((yyvsp[-1].ttype), true); ;} break; case 481: #line 2036 "objc/objc-parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; ! (yyval.location) = input_location; ;} break; case 484: #line 2049 "objc/objc-parse.y" ! { (yyval.ttype) = c_end_compound_stmt ((yyvsp[-2].ttype), flag_isoc99); ;} break; case 485: --- 5221,5245 ---- "only inside a function"); YYERROR; } ! yyval.ttype = c_begin_stmt_expr (); ;} break; case 480: #line 2028 "objc/objc-parse.y" ! { yyval.ttype = c_end_compound_stmt (yyvsp[-1].ttype, true); ;} break; case 481: #line 2036 "objc/objc-parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; ! yyval.location = input_location; ;} break; case 484: #line 2049 "objc/objc-parse.y" ! { yyval.ttype = c_end_compound_stmt (yyvsp[-2].ttype, flag_isoc99); ;} break; case 485: *************** yyreduce: *** 5288,5394 **** and will have a bare STATEMENT_LIST. But that's ok because (recursively) all of the component statments should already have line numbers assigned. */ ! if ((yyvsp[0].ttype) && EXPR_P ((yyvsp[0].ttype))) ! SET_EXPR_LOCATION ((yyvsp[0].ttype), (yyvsp[-1].location)); ;} break; case 486: #line 2072 "objc/objc-parse.y" ! { if ((yyvsp[0].ttype)) SET_EXPR_LOCATION ((yyvsp[0].ttype), (yyvsp[-1].location)); ;} break; case 487: #line 2076 "objc/objc-parse.y" ! { (yyval.ttype) = lang_hooks.truthvalue_conversion ((yyvsp[0].exprtype).value); ! if (EXPR_P ((yyval.ttype))) ! SET_EXPR_LOCATION ((yyval.ttype), (yyvsp[-1].location)); ;} break; case 488: #line 2089 "objc/objc-parse.y" ! { (yyval.ttype) = c_end_compound_stmt ((yyvsp[-2].ttype), flag_isoc99); ;} break; case 489: #line 2094 "objc/objc-parse.y" { if (extra_warnings) add_stmt (build (NOP_EXPR, NULL_TREE, NULL_TREE)); ! (yyval.ttype) = c_end_compound_stmt ((yyvsp[-2].ttype), flag_isoc99); ;} break; case 491: #line 2103 "objc/objc-parse.y" ! { c_finish_if_stmt ((yyvsp[-6].location), (yyvsp[-4].ttype), (yyvsp[-2].ttype), (yyvsp[0].ttype), true); ! add_stmt (c_end_compound_stmt ((yyvsp[-7].ttype), flag_isoc99)); ;} break; case 492: #line 2107 "objc/objc-parse.y" ! { c_finish_if_stmt ((yyvsp[-6].location), (yyvsp[-4].ttype), (yyvsp[-2].ttype), (yyvsp[0].ttype), false); ! add_stmt (c_end_compound_stmt ((yyvsp[-7].ttype), flag_isoc99)); ;} break; case 493: #line 2111 "objc/objc-parse.y" ! { c_finish_if_stmt ((yyvsp[-4].location), (yyvsp[-2].ttype), (yyvsp[0].ttype), NULL, true); ! add_stmt (c_end_compound_stmt ((yyvsp[-5].ttype), flag_isoc99)); ;} break; case 494: #line 2115 "objc/objc-parse.y" ! { c_finish_if_stmt ((yyvsp[-4].location), (yyvsp[-2].ttype), (yyvsp[0].ttype), NULL, false); ! add_stmt (c_end_compound_stmt ((yyvsp[-5].ttype), flag_isoc99)); ;} break; case 495: #line 2120 "objc/objc-parse.y" ! { (yyval.ttype) = c_break_label; c_break_label = NULL; ;} break; case 496: #line 2124 "objc/objc-parse.y" ! { (yyval.ttype) = c_cont_label; c_cont_label = NULL; ;} break; case 497: #line 2130 "objc/objc-parse.y" ! { c_finish_loop ((yyvsp[-6].location), (yyvsp[-4].ttype), NULL, (yyvsp[0].ttype), c_break_label, c_cont_label, true); ! add_stmt (c_end_compound_stmt ((yyvsp[-7].ttype), flag_isoc99)); ! c_break_label = (yyvsp[-2].ttype); c_cont_label = (yyvsp[-1].ttype); ;} break; case 498: #line 2139 "objc/objc-parse.y" ! { (yyval.ttype) = c_break_label; c_break_label = (yyvsp[-3].ttype); ;} break; case 499: #line 2140 "objc/objc-parse.y" ! { (yyval.ttype) = c_cont_label; c_cont_label = (yyvsp[-3].ttype); ;} break; case 500: #line 2142 "objc/objc-parse.y" ! { c_finish_loop ((yyvsp[-10].location), (yyvsp[-2].ttype), NULL, (yyvsp[-7].ttype), (yyvsp[-5].ttype), ! (yyvsp[-4].ttype), false); ! add_stmt (c_end_compound_stmt ((yyvsp[-11].ttype), flag_isoc99)); ;} break; case 501: #line 2149 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 502: #line 2151 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].exprtype).value; ;} break; case 503: #line 2156 "objc/objc-parse.y" ! { c_finish_expr_stmt ((yyvsp[-1].ttype)); ;} break; case 504: --- 5255,5361 ---- and will have a bare STATEMENT_LIST. But that's ok because (recursively) all of the component statments should already have line numbers assigned. */ ! if (yyvsp[0].ttype && EXPR_P (yyvsp[0].ttype)) ! SET_EXPR_LOCATION (yyvsp[0].ttype, yyvsp[-1].location); ;} break; case 486: #line 2072 "objc/objc-parse.y" ! { if (yyvsp[0].ttype) SET_EXPR_LOCATION (yyvsp[0].ttype, yyvsp[-1].location); ;} break; case 487: #line 2076 "objc/objc-parse.y" ! { yyval.ttype = lang_hooks.truthvalue_conversion (yyvsp[0].exprtype.value); ! if (EXPR_P (yyval.ttype)) ! SET_EXPR_LOCATION (yyval.ttype, yyvsp[-1].location); ;} break; case 488: #line 2089 "objc/objc-parse.y" ! { yyval.ttype = c_end_compound_stmt (yyvsp[-2].ttype, flag_isoc99); ;} break; case 489: #line 2094 "objc/objc-parse.y" { if (extra_warnings) add_stmt (build (NOP_EXPR, NULL_TREE, NULL_TREE)); ! yyval.ttype = c_end_compound_stmt (yyvsp[-2].ttype, flag_isoc99); ;} break; case 491: #line 2103 "objc/objc-parse.y" ! { c_finish_if_stmt (yyvsp[-6].location, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, true); ! add_stmt (c_end_compound_stmt (yyvsp[-7].ttype, flag_isoc99)); ;} break; case 492: #line 2107 "objc/objc-parse.y" ! { c_finish_if_stmt (yyvsp[-6].location, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, false); ! add_stmt (c_end_compound_stmt (yyvsp[-7].ttype, flag_isoc99)); ;} break; case 493: #line 2111 "objc/objc-parse.y" ! { c_finish_if_stmt (yyvsp[-4].location, yyvsp[-2].ttype, yyvsp[0].ttype, NULL, true); ! add_stmt (c_end_compound_stmt (yyvsp[-5].ttype, flag_isoc99)); ;} break; case 494: #line 2115 "objc/objc-parse.y" ! { c_finish_if_stmt (yyvsp[-4].location, yyvsp[-2].ttype, yyvsp[0].ttype, NULL, false); ! add_stmt (c_end_compound_stmt (yyvsp[-5].ttype, flag_isoc99)); ;} break; case 495: #line 2120 "objc/objc-parse.y" ! { yyval.ttype = c_break_label; c_break_label = NULL; ;} break; case 496: #line 2124 "objc/objc-parse.y" ! { yyval.ttype = c_cont_label; c_cont_label = NULL; ;} break; case 497: #line 2130 "objc/objc-parse.y" ! { c_finish_loop (yyvsp[-6].location, yyvsp[-4].ttype, NULL, yyvsp[0].ttype, c_break_label, c_cont_label, true); ! add_stmt (c_end_compound_stmt (yyvsp[-7].ttype, flag_isoc99)); ! c_break_label = yyvsp[-2].ttype; c_cont_label = yyvsp[-1].ttype; ;} break; case 498: #line 2139 "objc/objc-parse.y" ! { yyval.ttype = c_break_label; c_break_label = yyvsp[-3].ttype; ;} break; case 499: #line 2140 "objc/objc-parse.y" ! { yyval.ttype = c_cont_label; c_cont_label = yyvsp[-3].ttype; ;} break; case 500: #line 2142 "objc/objc-parse.y" ! { c_finish_loop (yyvsp[-10].location, yyvsp[-2].ttype, NULL, yyvsp[-7].ttype, yyvsp[-5].ttype, ! yyvsp[-4].ttype, false); ! add_stmt (c_end_compound_stmt (yyvsp[-11].ttype, flag_isoc99)); ;} break; case 501: #line 2149 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 502: #line 2151 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].exprtype.value; ;} break; case 503: #line 2156 "objc/objc-parse.y" ! { c_finish_expr_stmt (yyvsp[-1].ttype); ;} break; case 504: *************** yyreduce: *** 5398,5530 **** case 505: #line 2162 "objc/objc-parse.y" ! { if ((yyvsp[0].ttype)) { ! (yyval.ttype) = lang_hooks.truthvalue_conversion ((yyvsp[0].ttype)); ! if (EXPR_P ((yyval.ttype))) ! SET_EXPR_LOCATION ((yyval.ttype), (yyvsp[-1].location)); } else ! (yyval.ttype) = NULL; ;} break; case 506: #line 2174 "objc/objc-parse.y" ! { (yyval.ttype) = c_process_expr_stmt ((yyvsp[0].ttype)); ;} break; case 507: #line 2181 "objc/objc-parse.y" ! { c_finish_loop ((yyvsp[-7].location), (yyvsp[-6].ttype), (yyvsp[-4].ttype), (yyvsp[0].ttype), c_break_label, c_cont_label, true); ! add_stmt (c_end_compound_stmt ((yyvsp[-10].ttype), flag_isoc99)); ! c_break_label = (yyvsp[-2].ttype); c_cont_label = (yyvsp[-1].ttype); ;} break; case 508: #line 2189 "objc/objc-parse.y" ! { (yyval.ttype) = c_start_case ((yyvsp[-1].exprtype).value); ;} break; case 509: #line 2191 "objc/objc-parse.y" ! { c_finish_case ((yyvsp[0].ttype)); if (c_break_label) add_stmt (build (LABEL_EXPR, void_type_node, c_break_label)); ! c_break_label = (yyvsp[-1].ttype); ! add_stmt (c_end_compound_stmt ((yyvsp[-6].ttype), flag_isoc99)); ;} break; case 510: #line 2202 "objc/objc-parse.y" ! { (yyval.ttype) = c_finish_expr_stmt ((yyvsp[-1].exprtype).value); ;} break; case 511: #line 2204 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 512: #line 2206 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 513: #line 2208 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 514: #line 2210 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 515: #line 2212 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 516: #line 2214 "objc/objc-parse.y" ! { (yyval.ttype) = c_finish_bc_stmt (&c_break_label, true); ;} break; case 517: #line 2216 "objc/objc-parse.y" ! { (yyval.ttype) = c_finish_bc_stmt (&c_cont_label, false); ;} break; case 518: #line 2218 "objc/objc-parse.y" ! { (yyval.ttype) = c_finish_return (NULL_TREE); ;} break; case 519: #line 2220 "objc/objc-parse.y" ! { (yyval.ttype) = c_finish_return ((yyvsp[-1].exprtype).value); ;} break; case 521: #line 2223 "objc/objc-parse.y" ! { (yyval.ttype) = c_finish_goto_label ((yyvsp[-1].ttype)); ;} break; case 522: #line 2225 "objc/objc-parse.y" ! { (yyval.ttype) = c_finish_goto_ptr ((yyvsp[-1].exprtype).value); ;} break; case 523: #line 2227 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 524: #line 2229 "objc/objc-parse.y" ! { (yyval.ttype) = objc_build_throw_stmt ((yyvsp[-1].exprtype).value); ;} break; case 525: #line 2231 "objc/objc-parse.y" ! { (yyval.ttype) = objc_build_throw_stmt (NULL_TREE); ;} break; case 526: #line 2233 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 527: #line 2235 "objc/objc-parse.y" ! { objc_build_synchronized ((yyvsp[-4].location), (yyvsp[-2].exprtype).value, (yyvsp[0].ttype)); (yyval.ttype) = NULL_TREE; ;} break; case 528: #line 2240 "objc/objc-parse.y" ! { objc_begin_catch_clause (grokparm ((yyvsp[-1].parmtype))); ;} break; case 529: --- 5365,5497 ---- case 505: #line 2162 "objc/objc-parse.y" ! { if (yyvsp[0].ttype) { ! yyval.ttype = lang_hooks.truthvalue_conversion (yyvsp[0].ttype); ! if (EXPR_P (yyval.ttype)) ! SET_EXPR_LOCATION (yyval.ttype, yyvsp[-1].location); } else ! yyval.ttype = NULL; ;} break; case 506: #line 2174 "objc/objc-parse.y" ! { yyval.ttype = c_process_expr_stmt (yyvsp[0].ttype); ;} break; case 507: #line 2181 "objc/objc-parse.y" ! { c_finish_loop (yyvsp[-7].location, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[0].ttype, c_break_label, c_cont_label, true); ! add_stmt (c_end_compound_stmt (yyvsp[-10].ttype, flag_isoc99)); ! c_break_label = yyvsp[-2].ttype; c_cont_label = yyvsp[-1].ttype; ;} break; case 508: #line 2189 "objc/objc-parse.y" ! { yyval.ttype = c_start_case (yyvsp[-1].exprtype.value); ;} break; case 509: #line 2191 "objc/objc-parse.y" ! { c_finish_case (yyvsp[0].ttype); if (c_break_label) add_stmt (build (LABEL_EXPR, void_type_node, c_break_label)); ! c_break_label = yyvsp[-1].ttype; ! add_stmt (c_end_compound_stmt (yyvsp[-6].ttype, flag_isoc99)); ;} break; case 510: #line 2202 "objc/objc-parse.y" ! { yyval.ttype = c_finish_expr_stmt (yyvsp[-1].exprtype.value); ;} break; case 511: #line 2204 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 512: #line 2206 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 513: #line 2208 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 514: #line 2210 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 515: #line 2212 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 516: #line 2214 "objc/objc-parse.y" ! { yyval.ttype = c_finish_bc_stmt (&c_break_label, true); ;} break; case 517: #line 2216 "objc/objc-parse.y" ! { yyval.ttype = c_finish_bc_stmt (&c_cont_label, false); ;} break; case 518: #line 2218 "objc/objc-parse.y" ! { yyval.ttype = c_finish_return (NULL_TREE); ;} break; case 519: #line 2220 "objc/objc-parse.y" ! { yyval.ttype = c_finish_return (yyvsp[-1].exprtype.value); ;} break; case 521: #line 2223 "objc/objc-parse.y" ! { yyval.ttype = c_finish_goto_label (yyvsp[-1].ttype); ;} break; case 522: #line 2225 "objc/objc-parse.y" ! { yyval.ttype = c_finish_goto_ptr (yyvsp[-1].exprtype.value); ;} break; case 523: #line 2227 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 524: #line 2229 "objc/objc-parse.y" ! { yyval.ttype = objc_build_throw_stmt (yyvsp[-1].exprtype.value); ;} break; case 525: #line 2231 "objc/objc-parse.y" ! { yyval.ttype = objc_build_throw_stmt (NULL_TREE); ;} break; case 526: #line 2233 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 527: #line 2235 "objc/objc-parse.y" ! { objc_build_synchronized (yyvsp[-4].location, yyvsp[-2].exprtype.value, yyvsp[0].ttype); yyval.ttype = NULL_TREE; ;} break; case 528: #line 2240 "objc/objc-parse.y" ! { objc_begin_catch_clause (grokparm (yyvsp[-1].parmtype)); ;} break; case 529: *************** yyreduce: *** 5539,5550 **** case 533: #line 2257 "objc/objc-parse.y" ! { objc_begin_try_stmt ((yyvsp[-1].location), (yyvsp[0].ttype)); ;} break; case 535: #line 2263 "objc/objc-parse.y" ! { objc_build_finally_clause ((yyvsp[-1].location), (yyvsp[0].ttype)); ;} break; case 536: --- 5506,5517 ---- case 533: #line 2257 "objc/objc-parse.y" ! { objc_begin_try_stmt (yyvsp[-1].location, yyvsp[0].ttype); ;} break; case 535: #line 2263 "objc/objc-parse.y" ! { objc_build_finally_clause (yyvsp[-1].location, yyvsp[0].ttype); ;} break; case 536: *************** yyreduce: *** 5559,5608 **** case 538: #line 2276 "objc/objc-parse.y" ! { add_stmt ((yyvsp[0].ttype)); (yyval.ttype) = NULL_TREE; ;} break; case 540: #line 2285 "objc/objc-parse.y" ! { (yyval.ttype) = do_case ((yyvsp[-1].exprtype).value, NULL_TREE); ;} break; case 541: #line 2287 "objc/objc-parse.y" ! { (yyval.ttype) = do_case ((yyvsp[-3].exprtype).value, (yyvsp[-1].exprtype).value); ;} break; case 542: #line 2289 "objc/objc-parse.y" ! { (yyval.ttype) = do_case (NULL_TREE, NULL_TREE); ;} break; case 543: #line 2291 "objc/objc-parse.y" ! { tree label = define_label ((yyvsp[-2].location), (yyvsp[-3].ttype)); if (label) { ! decl_attributes (&label, (yyvsp[0].ttype), 0); ! (yyval.ttype) = add_stmt (build_stmt (LABEL_EXPR, label)); } else ! (yyval.ttype) = NULL_TREE; ;} break; case 544: #line 2309 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[-2].ttype); ;} break; case 545: #line 2315 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 547: #line 2322 "objc/objc-parse.y" ! { assemble_asm ((yyvsp[-1].ttype)); ;} break; case 548: --- 5526,5575 ---- case 538: #line 2276 "objc/objc-parse.y" ! { add_stmt (yyvsp[0].ttype); yyval.ttype = NULL_TREE; ;} break; case 540: #line 2285 "objc/objc-parse.y" ! { yyval.ttype = do_case (yyvsp[-1].exprtype.value, NULL_TREE); ;} break; case 541: #line 2287 "objc/objc-parse.y" ! { yyval.ttype = do_case (yyvsp[-3].exprtype.value, yyvsp[-1].exprtype.value); ;} break; case 542: #line 2289 "objc/objc-parse.y" ! { yyval.ttype = do_case (NULL_TREE, NULL_TREE); ;} break; case 543: #line 2291 "objc/objc-parse.y" ! { tree label = define_label (yyvsp[-2].location, yyvsp[-3].ttype); if (label) { ! decl_attributes (&label, yyvsp[0].ttype, 0); ! yyval.ttype = add_stmt (build_stmt (LABEL_EXPR, label)); } else ! yyval.ttype = NULL_TREE; ;} break; case 544: #line 2309 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[-2].ttype; ;} break; case 545: #line 2315 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 547: #line 2322 "objc/objc-parse.y" ! { assemble_asm (yyvsp[-1].ttype); ;} break; case 548: *************** yyreduce: *** 5612,5700 **** case 549: #line 2332 "objc/objc-parse.y" ! { (yyval.ttype) = build_asm_stmt ((yyvsp[-6].ttype), (yyvsp[-3].ttype)); ;} break; case 550: #line 2338 "objc/objc-parse.y" ! { (yyval.ttype) = build_asm_expr ((yyvsp[0].ttype), 0, 0, 0, true); ;} break; case 551: #line 2341 "objc/objc-parse.y" ! { (yyval.ttype) = build_asm_expr ((yyvsp[-2].ttype), (yyvsp[0].ttype), 0, 0, false); ;} break; case 552: #line 2344 "objc/objc-parse.y" ! { (yyval.ttype) = build_asm_expr ((yyvsp[-4].ttype), (yyvsp[-2].ttype), (yyvsp[0].ttype), 0, false); ;} break; case 553: #line 2347 "objc/objc-parse.y" ! { (yyval.ttype) = build_asm_expr ((yyvsp[-6].ttype), (yyvsp[-4].ttype), (yyvsp[-2].ttype), (yyvsp[0].ttype), false); ;} break; case 554: #line 2354 "objc/objc-parse.y" ! { (yyval.ttype) = 0; ;} break; case 555: #line 2356 "objc/objc-parse.y" ! { if ((yyvsp[0].ttype) != ridpointers[RID_VOLATILE]) { ! warning ("%E qualifier ignored on asm", (yyvsp[0].ttype)); ! (yyval.ttype) = 0; } else ! (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 556: #line 2369 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 559: #line 2376 "objc/objc-parse.y" ! { (yyval.ttype) = chainon ((yyvsp[-2].ttype), (yyvsp[0].ttype)); ;} break; case 560: #line 2382 "objc/objc-parse.y" ! { (yyval.ttype) = build_tree_list (build_tree_list (NULL_TREE, (yyvsp[-5].ttype)), ! (yyvsp[-2].exprtype).value); ;} break; case 561: #line 2386 "objc/objc-parse.y" ! { (yyvsp[-7].ttype) = build_string (IDENTIFIER_LENGTH ((yyvsp[-7].ttype)), ! IDENTIFIER_POINTER ((yyvsp[-7].ttype))); ! (yyval.ttype) = build_tree_list (build_tree_list ((yyvsp[-7].ttype), (yyvsp[-5].ttype)), (yyvsp[-2].exprtype).value); ;} break; case 562: #line 2393 "objc/objc-parse.y" ! { (yyval.ttype) = tree_cons (NULL_TREE, (yyvsp[0].ttype), NULL_TREE); ;} break; case 563: #line 2395 "objc/objc-parse.y" ! { (yyval.ttype) = tree_cons (NULL_TREE, (yyvsp[0].ttype), (yyvsp[-2].ttype)); ;} break; case 564: #line 2401 "objc/objc-parse.y" ! { if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE ((yyvsp[0].ttype)))) != char_type_node) { error ("wide string literal in %"); ! (yyval.ttype) = build_string (1, ""); } else ! (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 565: --- 5579,5667 ---- case 549: #line 2332 "objc/objc-parse.y" ! { yyval.ttype = build_asm_stmt (yyvsp[-6].ttype, yyvsp[-3].ttype); ;} break; case 550: #line 2338 "objc/objc-parse.y" ! { yyval.ttype = build_asm_expr (yyvsp[0].ttype, 0, 0, 0, true); ;} break; case 551: #line 2341 "objc/objc-parse.y" ! { yyval.ttype = build_asm_expr (yyvsp[-2].ttype, yyvsp[0].ttype, 0, 0, false); ;} break; case 552: #line 2344 "objc/objc-parse.y" ! { yyval.ttype = build_asm_expr (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, 0, false); ;} break; case 553: #line 2347 "objc/objc-parse.y" ! { yyval.ttype = build_asm_expr (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, false); ;} break; case 554: #line 2354 "objc/objc-parse.y" ! { yyval.ttype = 0; ;} break; case 555: #line 2356 "objc/objc-parse.y" ! { if (yyvsp[0].ttype != ridpointers[RID_VOLATILE]) { ! warning ("%E qualifier ignored on asm", yyvsp[0].ttype); ! yyval.ttype = 0; } else ! yyval.ttype = yyvsp[0].ttype; ;} break; case 556: #line 2369 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 559: #line 2376 "objc/objc-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 560: #line 2382 "objc/objc-parse.y" ! { yyval.ttype = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-5].ttype), ! yyvsp[-2].exprtype.value); ;} break; case 561: #line 2386 "objc/objc-parse.y" ! { yyvsp[-7].ttype = build_string (IDENTIFIER_LENGTH (yyvsp[-7].ttype), ! IDENTIFIER_POINTER (yyvsp[-7].ttype)); ! yyval.ttype = build_tree_list (build_tree_list (yyvsp[-7].ttype, yyvsp[-5].ttype), yyvsp[-2].exprtype.value); ;} break; case 562: #line 2393 "objc/objc-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;} break; case 563: #line 2395 "objc/objc-parse.y" ! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;} break; case 564: #line 2401 "objc/objc-parse.y" ! { if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (yyvsp[0].ttype))) != char_type_node) { error ("wide string literal in %"); ! yyval.ttype = build_string (1, ""); } else ! yyval.ttype = yyvsp[0].ttype; ;} break; case 565: *************** yyreduce: *** 5715,5721 **** case 568: #line 2430 "objc/objc-parse.y" ! { (yyval.arginfotype) = (yyvsp[0].arginfotype); pop_scope (); ;} break; --- 5682,5688 ---- case 568: #line 2430 "objc/objc-parse.y" ! { yyval.arginfotype = yyvsp[0].arginfotype; pop_scope (); ;} break; *************** yyreduce: *** 5732,5859 **** case 572: #line 2442 "objc/objc-parse.y" ! { (yyval.arginfotype) = (yyvsp[0].arginfotype); ;} break; case 573: #line 2444 "objc/objc-parse.y" ! { (yyval.arginfotype) = XOBNEW (&parser_obstack, struct c_arg_info); ! (yyval.arginfotype)->parms = 0; ! (yyval.arginfotype)->tags = 0; ! (yyval.arginfotype)->types = 0; ! (yyval.arginfotype)->others = 0; ;} break; case 574: #line 2454 "objc/objc-parse.y" ! { (yyval.arginfotype) = XOBNEW (&parser_obstack, struct c_arg_info); ! (yyval.arginfotype)->parms = 0; ! (yyval.arginfotype)->tags = 0; ! (yyval.arginfotype)->types = 0; ! (yyval.arginfotype)->others = 0; ;} break; case 575: #line 2460 "objc/objc-parse.y" ! { (yyval.arginfotype) = XOBNEW (&parser_obstack, struct c_arg_info); ! (yyval.arginfotype)->parms = 0; ! (yyval.arginfotype)->tags = 0; ! (yyval.arginfotype)->others = 0; /* Suppress -Wold-style-definition for this case. */ ! (yyval.arginfotype)->types = error_mark_node; error ("ISO C requires a named argument before %<...%>"); ;} break; case 576: #line 2469 "objc/objc-parse.y" ! { (yyval.arginfotype) = get_parm_info (/*ellipsis=*/false); ;} break; case 577: #line 2471 "objc/objc-parse.y" ! { (yyval.arginfotype) = get_parm_info (/*ellipsis=*/true); ;} break; case 578: #line 2476 "objc/objc-parse.y" ! { push_parm_decl ((yyvsp[0].parmtype)); ;} break; case 579: #line 2478 "objc/objc-parse.y" ! { push_parm_decl ((yyvsp[0].parmtype)); ;} break; case 580: #line 2485 "objc/objc-parse.y" ! { (yyval.parmtype) = build_c_parm (current_declspecs, ! chainon ((yyvsp[0].ttype), all_prefix_attributes), (yyvsp[-1].dtrtype)); POP_DECLSPEC_STACK; ;} break; case 581: #line 2489 "objc/objc-parse.y" ! { (yyval.parmtype) = build_c_parm (current_declspecs, ! chainon ((yyvsp[0].ttype), all_prefix_attributes), (yyvsp[-1].dtrtype)); POP_DECLSPEC_STACK; ;} break; case 582: #line 2493 "objc/objc-parse.y" ! { (yyval.parmtype) = (yyvsp[0].parmtype); POP_DECLSPEC_STACK; ;} break; case 583: #line 2496 "objc/objc-parse.y" ! { (yyval.parmtype) = build_c_parm (current_declspecs, ! chainon ((yyvsp[0].ttype), all_prefix_attributes), (yyvsp[-1].dtrtype)); POP_DECLSPEC_STACK; ;} break; case 584: #line 2501 "objc/objc-parse.y" ! { (yyval.parmtype) = (yyvsp[0].parmtype); POP_DECLSPEC_STACK; ;} break; case 585: #line 2509 "objc/objc-parse.y" ! { (yyval.parmtype) = build_c_parm (current_declspecs, ! chainon ((yyvsp[0].ttype), all_prefix_attributes), (yyvsp[-1].dtrtype)); POP_DECLSPEC_STACK; ;} break; case 586: #line 2513 "objc/objc-parse.y" ! { (yyval.parmtype) = build_c_parm (current_declspecs, ! chainon ((yyvsp[0].ttype), all_prefix_attributes), (yyvsp[-1].dtrtype)); POP_DECLSPEC_STACK; ;} break; case 587: #line 2517 "objc/objc-parse.y" ! { (yyval.parmtype) = (yyvsp[0].parmtype); POP_DECLSPEC_STACK; ;} break; case 588: #line 2520 "objc/objc-parse.y" ! { (yyval.parmtype) = build_c_parm (current_declspecs, ! chainon ((yyvsp[0].ttype), all_prefix_attributes), (yyvsp[-1].dtrtype)); POP_DECLSPEC_STACK; ;} break; case 589: #line 2525 "objc/objc-parse.y" ! { (yyval.parmtype) = (yyvsp[0].parmtype); POP_DECLSPEC_STACK; ;} break; case 590: #line 2531 "objc/objc-parse.y" ! { prefix_attributes = chainon (prefix_attributes, (yyvsp[-3].ttype)); all_prefix_attributes = prefix_attributes; ;} break; --- 5699,5826 ---- case 572: #line 2442 "objc/objc-parse.y" ! { yyval.arginfotype = yyvsp[0].arginfotype; ;} break; case 573: #line 2444 "objc/objc-parse.y" ! { yyval.arginfotype = XOBNEW (&parser_obstack, struct c_arg_info); ! yyval.arginfotype->parms = 0; ! yyval.arginfotype->tags = 0; ! yyval.arginfotype->types = 0; ! yyval.arginfotype->others = 0; ;} break; case 574: #line 2454 "objc/objc-parse.y" ! { yyval.arginfotype = XOBNEW (&parser_obstack, struct c_arg_info); ! yyval.arginfotype->parms = 0; ! yyval.arginfotype->tags = 0; ! yyval.arginfotype->types = 0; ! yyval.arginfotype->others = 0; ;} break; case 575: #line 2460 "objc/objc-parse.y" ! { yyval.arginfotype = XOBNEW (&parser_obstack, struct c_arg_info); ! yyval.arginfotype->parms = 0; ! yyval.arginfotype->tags = 0; ! yyval.arginfotype->others = 0; /* Suppress -Wold-style-definition for this case. */ ! yyval.arginfotype->types = error_mark_node; error ("ISO C requires a named argument before %<...%>"); ;} break; case 576: #line 2469 "objc/objc-parse.y" ! { yyval.arginfotype = get_parm_info (/*ellipsis=*/false); ;} break; case 577: #line 2471 "objc/objc-parse.y" ! { yyval.arginfotype = get_parm_info (/*ellipsis=*/true); ;} break; case 578: #line 2476 "objc/objc-parse.y" ! { push_parm_decl (yyvsp[0].parmtype); ;} break; case 579: #line 2478 "objc/objc-parse.y" ! { push_parm_decl (yyvsp[0].parmtype); ;} break; case 580: #line 2485 "objc/objc-parse.y" ! { yyval.parmtype = build_c_parm (current_declspecs, ! chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype); POP_DECLSPEC_STACK; ;} break; case 581: #line 2489 "objc/objc-parse.y" ! { yyval.parmtype = build_c_parm (current_declspecs, ! chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype); POP_DECLSPEC_STACK; ;} break; case 582: #line 2493 "objc/objc-parse.y" ! { yyval.parmtype = yyvsp[0].parmtype; POP_DECLSPEC_STACK; ;} break; case 583: #line 2496 "objc/objc-parse.y" ! { yyval.parmtype = build_c_parm (current_declspecs, ! chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype); POP_DECLSPEC_STACK; ;} break; case 584: #line 2501 "objc/objc-parse.y" ! { yyval.parmtype = yyvsp[0].parmtype; POP_DECLSPEC_STACK; ;} break; case 585: #line 2509 "objc/objc-parse.y" ! { yyval.parmtype = build_c_parm (current_declspecs, ! chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype); POP_DECLSPEC_STACK; ;} break; case 586: #line 2513 "objc/objc-parse.y" ! { yyval.parmtype = build_c_parm (current_declspecs, ! chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype); POP_DECLSPEC_STACK; ;} break; case 587: #line 2517 "objc/objc-parse.y" ! { yyval.parmtype = yyvsp[0].parmtype; POP_DECLSPEC_STACK; ;} break; case 588: #line 2520 "objc/objc-parse.y" ! { yyval.parmtype = build_c_parm (current_declspecs, ! chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype); POP_DECLSPEC_STACK; ;} break; case 589: #line 2525 "objc/objc-parse.y" ! { yyval.parmtype = yyvsp[0].parmtype; POP_DECLSPEC_STACK; ;} break; case 590: #line 2531 "objc/objc-parse.y" ! { prefix_attributes = chainon (prefix_attributes, yyvsp[-3].ttype); all_prefix_attributes = prefix_attributes; ;} break; *************** yyreduce: *** 5865,5911 **** case 592: #line 2543 "objc/objc-parse.y" ! { (yyval.arginfotype) = (yyvsp[0].arginfotype); pop_scope (); ;} break; case 594: #line 2550 "objc/objc-parse.y" ! { (yyval.arginfotype) = XOBNEW (&parser_obstack, struct c_arg_info); ! (yyval.arginfotype)->parms = 0; ! (yyval.arginfotype)->tags = 0; ! (yyval.arginfotype)->types = (yyvsp[-1].ttype); ! (yyval.arginfotype)->others = 0; /* Make sure we have a parmlist after attributes. */ ! if ((yyvsp[-3].ttype) != 0) YYERROR1; ;} break; case 595: #line 2565 "objc/objc-parse.y" ! { (yyval.ttype) = build_tree_list (NULL_TREE, (yyvsp[0].ttype)); ;} break; case 596: #line 2567 "objc/objc-parse.y" ! { (yyval.ttype) = chainon ((yyvsp[-2].ttype), build_tree_list (NULL_TREE, (yyvsp[0].ttype))); ;} break; case 597: #line 2573 "objc/objc-parse.y" ! { (yyval.ttype) = build_tree_list (NULL_TREE, (yyvsp[0].ttype)); ;} break; case 598: #line 2575 "objc/objc-parse.y" ! { (yyval.ttype) = chainon ((yyvsp[-2].ttype), build_tree_list (NULL_TREE, (yyvsp[0].ttype))); ;} break; case 599: #line 2580 "objc/objc-parse.y" ! { (yyval.itype) = SAVE_EXT_FLAGS (); pedantic = 0; warn_pointer_arith = 0; warn_traditional = 0; --- 5832,5878 ---- case 592: #line 2543 "objc/objc-parse.y" ! { yyval.arginfotype = yyvsp[0].arginfotype; pop_scope (); ;} break; case 594: #line 2550 "objc/objc-parse.y" ! { yyval.arginfotype = XOBNEW (&parser_obstack, struct c_arg_info); ! yyval.arginfotype->parms = 0; ! yyval.arginfotype->tags = 0; ! yyval.arginfotype->types = yyvsp[-1].ttype; ! yyval.arginfotype->others = 0; /* Make sure we have a parmlist after attributes. */ ! if (yyvsp[-3].ttype != 0) YYERROR1; ;} break; case 595: #line 2565 "objc/objc-parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;} break; case 596: #line 2567 "objc/objc-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;} break; case 597: #line 2573 "objc/objc-parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;} break; case 598: #line 2575 "objc/objc-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;} break; case 599: #line 2580 "objc/objc-parse.y" ! { yyval.itype = SAVE_EXT_FLAGS (); pedantic = 0; warn_pointer_arith = 0; warn_traditional = 0; *************** yyreduce: *** 5921,5962 **** case 606: #line 2604 "objc/objc-parse.y" ! { (yyval.ttype) = build_tree_list (NULL_TREE, (yyvsp[0].ttype)); ;} break; case 607: #line 2606 "objc/objc-parse.y" ! { (yyval.ttype) = chainon ((yyvsp[-2].ttype), build_tree_list (NULL_TREE, (yyvsp[0].ttype))); ;} break; case 608: #line 2611 "objc/objc-parse.y" { ! objc_declare_class ((yyvsp[-1].ttype)); ;} break; case 609: #line 2618 "objc/objc-parse.y" { ! objc_declare_alias ((yyvsp[-2].ttype), (yyvsp[-1].ttype)); ;} break; case 610: #line 2624 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 611: #line 2625 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 614: #line 2635 "objc/objc-parse.y" { ! objc_start_class_interface ((yyvsp[-2].ttype), (yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; --- 5888,5929 ---- case 606: #line 2604 "objc/objc-parse.y" ! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;} break; case 607: #line 2606 "objc/objc-parse.y" ! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;} break; case 608: #line 2611 "objc/objc-parse.y" { ! objc_declare_class (yyvsp[-1].ttype); ;} break; case 609: #line 2618 "objc/objc-parse.y" { ! objc_declare_alias (yyvsp[-2].ttype, yyvsp[-1].ttype); ;} break; case 610: #line 2624 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].ttype; ;} break; case 611: #line 2625 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 614: #line 2635 "objc/objc-parse.y" { ! objc_start_class_interface (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; *************** yyreduce: *** 5977,5983 **** case 617: #line 2648 "objc/objc-parse.y" { ! objc_start_class_implementation ((yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; --- 5944,5950 ---- case 617: #line 2648 "objc/objc-parse.y" { ! objc_start_class_implementation (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; *************** yyreduce: *** 5991,5997 **** case 619: #line 2657 "objc/objc-parse.y" { ! objc_start_category_interface ((yyvsp[-4].ttype), (yyvsp[-2].ttype), (yyvsp[0].ttype)); ;} break; --- 5958,5964 ---- case 619: #line 2657 "objc/objc-parse.y" { ! objc_start_category_interface (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; *************** yyreduce: *** 6005,6011 **** case 621: #line 2666 "objc/objc-parse.y" { ! objc_start_category_implementation ((yyvsp[-3].ttype), (yyvsp[-1].ttype)); ;} break; --- 5972,5978 ---- case 621: #line 2666 "objc/objc-parse.y" { ! objc_start_category_implementation (yyvsp[-3].ttype, yyvsp[-1].ttype); ;} break; *************** yyreduce: *** 6013,6019 **** #line 2673 "objc/objc-parse.y" { objc_pq_context = 1; ! objc_start_protocol ((yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; --- 5980,5986 ---- #line 2673 "objc/objc-parse.y" { objc_pq_context = 1; ! objc_start_protocol (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; *************** yyreduce: *** 6028,6049 **** case 624: #line 2686 "objc/objc-parse.y" { ! objc_declare_protocols ((yyvsp[-1].ttype)); ;} break; case 625: #line 2693 "objc/objc-parse.y" { ! (yyval.ttype) = NULL_TREE; ;} break; case 627: #line 2701 "objc/objc-parse.y" { ! if ((yyvsp[-2].code) == LT_EXPR && (yyvsp[0].code) == GT_EXPR) ! (yyval.ttype) = (yyvsp[-1].ttype); else YYERROR1; ;} --- 5995,6016 ---- case 624: #line 2686 "objc/objc-parse.y" { ! objc_declare_protocols (yyvsp[-1].ttype); ;} break; case 625: #line 2693 "objc/objc-parse.y" { ! yyval.ttype = NULL_TREE; ;} break; case 627: #line 2701 "objc/objc-parse.y" { ! if (yyvsp[-2].code == LT_EXPR && yyvsp[0].code == GT_EXPR) ! yyval.ttype = yyvsp[-1].ttype; else YYERROR1; ;} *************** yyreduce: *** 6077,6083 **** { /* Comma-separated ivars are chained together in reverse order; add them one by one. */ ! tree ivar = nreverse ((yyvsp[0].ttype)); for (; ivar; ivar = TREE_CHAIN (ivar)) objc_add_instance_variable (copy_node (ivar)); --- 6044,6050 ---- { /* Comma-separated ivars are chained together in reverse order; add them one by one. */ ! tree ivar = nreverse (yyvsp[0].ttype); for (; ivar; ivar = TREE_CHAIN (ivar)) objc_add_instance_variable (copy_node (ivar)); *************** yyreduce: *** 6095,6101 **** case 642: #line 2759 "objc/objc-parse.y" { ! objc_set_method_type ((yyvsp[0].code)); objc_pq_context = 1; ;} break; --- 6062,6068 ---- case 642: #line 2759 "objc/objc-parse.y" { ! objc_set_method_type (yyvsp[0].code); objc_pq_context = 1; ;} break; *************** yyreduce: *** 6104,6110 **** #line 2764 "objc/objc-parse.y" { objc_pq_context = 0; ! objc_start_method_definition ((yyvsp[-1].ttype)); ;} break; --- 6071,6077 ---- #line 2764 "objc/objc-parse.y" { objc_pq_context = 0; ! objc_start_method_definition (yyvsp[-1].ttype); ;} break; *************** yyreduce: *** 6117,6129 **** case 647: #line 2781 "objc/objc-parse.y" ! { (yyval.ttype) = NULL_TREE; ;} break; case 651: #line 2791 "objc/objc-parse.y" { ! objc_set_method_type ((yyvsp[0].code)); /* Remember protocol qualifiers in prototypes. */ objc_pq_context = 1; ;} --- 6084,6096 ---- case 647: #line 2781 "objc/objc-parse.y" ! { yyval.ttype = NULL_TREE; ;} break; case 651: #line 2791 "objc/objc-parse.y" { ! objc_set_method_type (yyvsp[0].code); /* Remember protocol qualifiers in prototypes. */ objc_pq_context = 1; ;} *************** yyreduce: *** 6134,6374 **** { /* Forget protocol qualifiers here. */ objc_pq_context = 0; ! objc_add_method_declaration ((yyvsp[0].ttype)); ;} break; case 654: #line 2807 "objc/objc-parse.y" { ! (yyval.ttype) = objc_build_method_signature ((yyvsp[-2].ttype), (yyvsp[0].ttype), NULL_TREE); ;} break; case 655: #line 2812 "objc/objc-parse.y" { ! (yyval.ttype) = objc_build_method_signature (NULL_TREE, (yyvsp[0].ttype), NULL_TREE); ;} break; case 656: #line 2817 "objc/objc-parse.y" { ! (yyval.ttype) = objc_build_method_signature ((yyvsp[-3].ttype), (yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; case 657: #line 2822 "objc/objc-parse.y" { ! (yyval.ttype) = objc_build_method_signature (NULL_TREE, (yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; case 658: #line 2832 "objc/objc-parse.y" { ! TREE_OVERFLOW ((yyval.ttype)) = (yyvsp[0].itype); ;} break; case 659: #line 2839 "objc/objc-parse.y" { ! (yyval.ttype) = make_node (TREE_LIST); ;} break; case 660: #line 2843 "objc/objc-parse.y" { ! (yyval.ttype) = chainon ((yyvsp[-2].ttype), build_tree_list (NULL_TREE, ! grokparm ((yyvsp[0].parmtype)))); ;} break; case 661: #line 2851 "objc/objc-parse.y" { ! (yyval.itype) = 0; ;} break; case 662: #line 2855 "objc/objc-parse.y" { ! (yyval.itype) = 1; ;} break; case 665: #line 2868 "objc/objc-parse.y" { ! (yyval.ttype) = chainon ((yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; case 693: #line 2893 "objc/objc-parse.y" { ! (yyval.ttype) = chainon ((yyvsp[-1].ttype), build_tree_list (NULL_TREE, (yyvsp[0].ttype))); ;} break; case 694: #line 2897 "objc/objc-parse.y" { ! (yyval.ttype) = NULL_TREE; ;} break; case 695: #line 2904 "objc/objc-parse.y" { ! (yyval.ttype) = build_tree_list ((yyvsp[-1].ttype), groktypename ((yyvsp[0].typenametype))); ;} break; case 696: #line 2908 "objc/objc-parse.y" { ! (yyval.ttype) = build_tree_list ((yyvsp[0].ttype), NULL_TREE); ;} break; case 697: #line 2915 "objc/objc-parse.y" { ! (yyval.ttype) = objc_build_keyword_decl ((yyvsp[-5].ttype), (yyvsp[-2].ttype), (yyvsp[0].ttype)); ;} break; case 698: #line 2920 "objc/objc-parse.y" { ! (yyval.ttype) = objc_build_keyword_decl ((yyvsp[-2].ttype), NULL_TREE, (yyvsp[0].ttype)); ;} break; case 699: #line 2925 "objc/objc-parse.y" { ! (yyval.ttype) = objc_build_keyword_decl (NULL_TREE, (yyvsp[-2].ttype), (yyvsp[0].ttype)); ;} break; case 700: #line 2930 "objc/objc-parse.y" { ! (yyval.ttype) = objc_build_keyword_decl (NULL_TREE, NULL_TREE, (yyvsp[0].ttype)); ;} break; case 704: #line 2943 "objc/objc-parse.y" { ! (yyval.ttype) = chainon ((yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; case 705: #line 2951 "objc/objc-parse.y" { ! if (TREE_CHAIN ((yyvsp[0].ttype)) == NULL_TREE) /* just return the expr., remove a level of indirection */ ! (yyval.ttype) = TREE_VALUE ((yyvsp[0].ttype)); else /* we have a comma expr., we will collapse later */ ! (yyval.ttype) = (yyvsp[0].ttype); ;} break; case 706: #line 2963 "objc/objc-parse.y" { ! (yyval.ttype) = build_tree_list ((yyvsp[-2].ttype), (yyvsp[0].ttype)); ;} break; case 707: #line 2967 "objc/objc-parse.y" { ! (yyval.ttype) = build_tree_list (NULL_TREE, (yyvsp[0].ttype)); ;} break; case 708: #line 2974 "objc/objc-parse.y" ! { (yyval.ttype) = (yyvsp[0].exprtype).value; ;} break; case 709: #line 2976 "objc/objc-parse.y" { ! (yyval.ttype) = objc_get_class_reference ((yyvsp[0].ttype)); ;} break; case 710: #line 2980 "objc/objc-parse.y" { ! (yyval.ttype) = objc_get_class_reference ((yyvsp[0].ttype)); ;} break; case 711: #line 2987 "objc/objc-parse.y" ! { (yyval.ttype) = build_tree_list ((yyvsp[-2].ttype), (yyvsp[-1].ttype)); ;} break; case 715: #line 2998 "objc/objc-parse.y" { ! (yyval.ttype) = chainon ((yyvsp[-1].ttype), (yyvsp[0].ttype)); ;} break; case 716: #line 3005 "objc/objc-parse.y" { ! (yyval.ttype) = build_tree_list ((yyvsp[-1].ttype), NULL_TREE); ;} break; case 717: #line 3009 "objc/objc-parse.y" { ! (yyval.ttype) = build_tree_list (NULL_TREE, NULL_TREE); ;} break; case 718: #line 3016 "objc/objc-parse.y" { ! (yyval.ttype) = (yyvsp[-1].ttype); ;} break; case 719: #line 3023 "objc/objc-parse.y" { ! (yyval.ttype) = (yyvsp[-1].ttype); ;} break; case 720: #line 3032 "objc/objc-parse.y" { ! (yyval.ttype) = groktypename ((yyvsp[-1].typenametype)); ;} break; } ! /* Line 1037 of yacc.c. */ ! #line 6372 "objc/objc-parse.c" yyvsp -= yylen; yyssp -= yylen; --- 6101,6341 ---- { /* Forget protocol qualifiers here. */ objc_pq_context = 0; ! objc_add_method_declaration (yyvsp[0].ttype); ;} break; case 654: #line 2807 "objc/objc-parse.y" { ! yyval.ttype = objc_build_method_signature (yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;} break; case 655: #line 2812 "objc/objc-parse.y" { ! yyval.ttype = objc_build_method_signature (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;} break; case 656: #line 2817 "objc/objc-parse.y" { ! yyval.ttype = objc_build_method_signature (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 657: #line 2822 "objc/objc-parse.y" { ! yyval.ttype = objc_build_method_signature (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 658: #line 2832 "objc/objc-parse.y" { ! TREE_OVERFLOW (yyval.ttype) = yyvsp[0].itype; ;} break; case 659: #line 2839 "objc/objc-parse.y" { ! yyval.ttype = make_node (TREE_LIST); ;} break; case 660: #line 2843 "objc/objc-parse.y" { ! yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, ! grokparm (yyvsp[0].parmtype))); ;} break; case 661: #line 2851 "objc/objc-parse.y" { ! yyval.itype = 0; ;} break; case 662: #line 2855 "objc/objc-parse.y" { ! yyval.itype = 1; ;} break; case 665: #line 2868 "objc/objc-parse.y" { ! yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 693: #line 2893 "objc/objc-parse.y" { ! yyval.ttype = chainon (yyvsp[-1].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;} break; case 694: #line 2897 "objc/objc-parse.y" { ! yyval.ttype = NULL_TREE; ;} break; case 695: #line 2904 "objc/objc-parse.y" { ! yyval.ttype = build_tree_list (yyvsp[-1].ttype, groktypename (yyvsp[0].typenametype)); ;} break; case 696: #line 2908 "objc/objc-parse.y" { ! yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;} break; case 697: #line 2915 "objc/objc-parse.y" { ! yyval.ttype = objc_build_keyword_decl (yyvsp[-5].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 698: #line 2920 "objc/objc-parse.y" { ! yyval.ttype = objc_build_keyword_decl (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype); ;} break; case 699: #line 2925 "objc/objc-parse.y" { ! yyval.ttype = objc_build_keyword_decl (NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 700: #line 2930 "objc/objc-parse.y" { ! yyval.ttype = objc_build_keyword_decl (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;} break; case 704: #line 2943 "objc/objc-parse.y" { ! yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 705: #line 2951 "objc/objc-parse.y" { ! if (TREE_CHAIN (yyvsp[0].ttype) == NULL_TREE) /* just return the expr., remove a level of indirection */ ! yyval.ttype = TREE_VALUE (yyvsp[0].ttype); else /* we have a comma expr., we will collapse later */ ! yyval.ttype = yyvsp[0].ttype; ;} break; case 706: #line 2963 "objc/objc-parse.y" { ! yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;} break; case 707: #line 2967 "objc/objc-parse.y" { ! yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;} break; case 708: #line 2974 "objc/objc-parse.y" ! { yyval.ttype = yyvsp[0].exprtype.value; ;} break; case 709: #line 2976 "objc/objc-parse.y" { ! yyval.ttype = objc_get_class_reference (yyvsp[0].ttype); ;} break; case 710: #line 2980 "objc/objc-parse.y" { ! yyval.ttype = objc_get_class_reference (yyvsp[0].ttype); ;} break; case 711: #line 2987 "objc/objc-parse.y" ! { yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[-1].ttype); ;} break; case 715: #line 2998 "objc/objc-parse.y" { ! yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;} break; case 716: #line 3005 "objc/objc-parse.y" { ! yyval.ttype = build_tree_list (yyvsp[-1].ttype, NULL_TREE); ;} break; case 717: #line 3009 "objc/objc-parse.y" { ! yyval.ttype = build_tree_list (NULL_TREE, NULL_TREE); ;} break; case 718: #line 3016 "objc/objc-parse.y" { ! yyval.ttype = yyvsp[-1].ttype; ;} break; case 719: #line 3023 "objc/objc-parse.y" { ! yyval.ttype = yyvsp[-1].ttype; ;} break; case 720: #line 3032 "objc/objc-parse.y" { ! yyval.ttype = groktypename (yyvsp[-1].typenametype); ;} break; } ! /* Line 991 of yacc.c. */ ! #line 6338 "objc/objc-parse.c" yyvsp -= yylen; yyssp -= yylen; *************** yyerrlab: *** 6409,6441 **** { YYSIZE_T yysize = 0; int yytype = YYTRANSLATE (yychar); - const char* yyprefix; char *yymsg; ! int yyx; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ ! int yyxbegin = yyn < 0 ? -yyn : 0; ! ! /* Stay within bounds of both yycheck and yytname. */ ! int yychecklim = YYLAST - yyn; ! int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; ! int yycount = 0; ! ! yyprefix = ", expecting "; ! for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) ! { ! yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]); ! yycount += 1; ! if (yycount == 5) ! { ! yysize = 0; ! break; ! } ! } ! yysize += (sizeof ("syntax error, unexpected ") ! + yystrlen (yytname[yytype])); yymsg = (char *) YYSTACK_ALLOC (yysize); if (yymsg != 0) { --- 6376,6393 ---- { YYSIZE_T yysize = 0; int yytype = YYTRANSLATE (yychar); char *yymsg; ! int yyx, yycount; + yycount = 0; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ ! for (yyx = yyn < 0 ? -yyn : 0; ! yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) ! yysize += yystrlen (yytname[yyx]) + 15, yycount++; ! yysize += yystrlen ("syntax error, unexpected ") + 1; ! yysize += yystrlen (yytname[yytype]); yymsg = (char *) YYSTACK_ALLOC (yysize); if (yymsg != 0) { *************** yyerrlab: *** 6444,6456 **** if (yycount < 5) { ! yyprefix = ", expecting "; ! for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { ! yyp = yystpcpy (yyp, yyprefix); yyp = yystpcpy (yyp, yytname[yyx]); ! yyprefix = " or "; } } yyerror (yymsg); --- 6396,6411 ---- if (yycount < 5) { ! yycount = 0; ! for (yyx = yyn < 0 ? -yyn : 0; ! yyx < (int) (sizeof (yytname) / sizeof (char *)); ! yyx++) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { ! const char *yyq = ! yycount ? ", expecting " : " or "; ! yyp = yystpcpy (yyp, yyq); yyp = yystpcpy (yyp, yytname[yyx]); ! yycount++; } } yyerror (yymsg); *************** yyerrlab: *** 6468,6525 **** if (yyerrstatus == 3) { ! /* If just tried and failed to reuse look-ahead token after an error, discard it. */ ! if (yychar <= YYEOF) { ! /* If at end of input, pop the error token, ! then the rest of the stack, then return failure. */ ! if (yychar == YYEOF) ! for (;;) ! { ! ! YYPOPSTACK; ! if (yyssp == yyss) ! YYABORT; ! yydestruct ("Error: popping", ! yystos[*yyssp], yyvsp); ! } } ! else ! { ! yydestruct ("Error: discarding", yytoken, &yylval); ! yychar = YYEMPTY; ! } } ! /* Else will try to reuse look-ahead token after shifting the error token. */ ! goto yyerrlab1; ! /*---------------------------------------------------. ! | yyerrorlab -- error raised explicitly by YYERROR. | ! `---------------------------------------------------*/ ! yyerrorlab: ! #ifdef __GNUC__ ! /* Pacify GCC when the user code never invokes YYERROR and the label ! yyerrorlab therefore never appears in user code. */ ! if (0) ! goto yyerrorlab; #endif - yyvsp -= yylen; - yyssp -= yylen; - yystate = *yyssp; - goto yyerrlab1; ! /*-------------------------------------------------------------. ! | yyerrlab1 -- common code for both syntax error and YYERROR. | ! `-------------------------------------------------------------*/ ! yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) --- 6423,6477 ---- if (yyerrstatus == 3) { ! /* If just tried and failed to reuse lookahead token after an error, discard it. */ ! /* Return failure if at end of input. */ ! if (yychar == YYEOF) { ! /* Pop the error token. */ ! YYPOPSTACK; ! /* Pop the rest of the stack. */ ! while (yyss < yyssp) ! { ! YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); ! yydestruct (yystos[*yyssp], yyvsp); ! YYPOPSTACK; ! } ! YYABORT; } ! ! YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); ! yydestruct (yytoken, &yylval); ! yychar = YYEMPTY; ! } ! /* Else will try to reuse lookahead token after shifting the error token. */ ! goto yyerrlab2; ! /*----------------------------------------------------. ! | yyerrlab1 -- error raised explicitly by an action. | ! `----------------------------------------------------*/ ! yyerrlab1: ! /* Suppress GCC warning that yyerrlab1 is unused when no action ! invokes YYERROR. */ ! #if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) \ ! && !defined __cplusplus ! __attribute__ ((__unused__)) #endif + goto yyerrlab2; ! ! /*---------------------------------------------------------------. ! | yyerrlab2 -- pop states until the error token can be shifted. | ! `---------------------------------------------------------------*/ ! yyerrlab2: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) *************** yyerrlab1: *** 6540,6560 **** if (yyssp == yyss) YYABORT; - yydestruct ("Error: popping", yystos[yystate], yyvsp); - YYPOPSTACK; - yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; ! *++yyvsp = yylval; - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; --- 6492,6512 ---- if (yyssp == yyss) YYABORT; + YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); + yydestruct (yystos[yystate], yyvsp); + yyvsp--; + yystate = *--yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; ! YYDPRINTF ((stderr, "Shifting error token, ")); + *++yyvsp = yylval; yystate = yyn; goto yynewstate; *************** yyacceptlab: *** 6571,6579 **** | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: - yydestruct ("Error: discarding lookahead", - yytoken, &yylval); - yychar = YYEMPTY; yyresult = 1; goto yyreturn; --- 6523,6528 ---- diff -Nrcpad gcc-4.0.3/libobjc/ChangeLog gcc-4.0.4/libobjc/ChangeLog *** gcc-4.0.3/libobjc/ChangeLog 2006-03-09 20:44:51.000000000 +0000 --- gcc-4.0.4/libobjc/ChangeLog 2007-01-31 10:23:55.000000000 +0000 *************** *** 1,3 **** --- 1,7 ---- + 2007-01-31 Release Manager + + * GCC 4.0.4 released. + 2006-03-09 Release Manager * GCC 4.0.3 released.