Commit 4a4b0aa3 by Richard Henderson Committed by Richard Henderson

decl.c (ptr_type_node, [...]): New.

        * decl.c (ptr_type_node, va_list_type_node): New.
        * gxx.gperf (__builtin_va_arg): New.
        * parse.y (VA_ARG): New token.
        (unary_expr): Recognize it.

From-SVN: r28242
parent 88c7af34
1999-07-24 Richard Henderson <rth@cygnus.com>
* decl.c (ptr_type_node, va_list_type_node): New.
* gxx.gperf (__builtin_va_arg): New.
* parse.y (VA_ARG): New token.
(unary_expr): Recognize it.
Sun Jul 25 15:24:21 1999 Jeffrey A Law (law@cygnus.com)
* g++FAQ.texi: Deleted per Joe Buck's request.
......
......@@ -275,6 +275,12 @@ tree char_type_node;
tree integer_type_node;
tree unsigned_type_node;
/* These can't be part of the above array, since they are declared
individially in tree.h and used by the target routines. */
tree ptr_type_node;
tree va_list_type_node;
/* Indicates that there is a type value in some namespace, although
that is not necessarily in scope at the moment. */
......
......@@ -9,6 +9,7 @@ __asm, ASM_KEYWORD, RID_UNUSED
__asm__, ASM_KEYWORD, RID_UNUSED
__attribute, ATTRIBUTE, RID_UNUSED
__attribute__, ATTRIBUTE, RID_UNUSED
__builtin_va_arg, VA_ARG, RID_UNUSED
__complex, TYPESPEC, RID_COMPLEX
__complex__, TYPESPEC, RID_COMPLEX
__const, CV_QUALIFIER, RID_CONST
......
This source diff could not be displayed because it is too large. You can view the blob instead.
typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE;
#define IDENTIFIER 258
#define TYPENAME 259
#define SELFNAME 260
#define PFUNCNAME 261
#define SCSPEC 262
#define TYPESPEC 263
#define CV_QUALIFIER 264
#define CONSTANT 265
#define STRING 266
#define ELLIPSIS 267
#define SIZEOF 268
#define ENUM 269
#define IF 270
#define ELSE 271
#define WHILE 272
#define DO 273
#define FOR 274
#define SWITCH 275
#define CASE 276
#define DEFAULT 277
#define BREAK 278
#define CONTINUE 279
#define RETURN_KEYWORD 280
#define GOTO 281
#define ASM_KEYWORD 282
#define TYPEOF 283
#define ALIGNOF 284
#define SIGOF 285
#define ATTRIBUTE 286
#define EXTENSION 287
#define LABEL 288
#define REALPART 289
#define IMAGPART 290
#define IDENTIFIER 257
#define TYPENAME 258
#define SELFNAME 259
#define PFUNCNAME 260
#define SCSPEC 261
#define TYPESPEC 262
#define CV_QUALIFIER 263
#define CONSTANT 264
#define STRING 265
#define ELLIPSIS 266
#define SIZEOF 267
#define ENUM 268
#define IF 269
#define ELSE 270
#define WHILE 271
#define DO 272
#define FOR 273
#define SWITCH 274
#define CASE 275
#define DEFAULT 276
#define BREAK 277
#define CONTINUE 278
#define RETURN_KEYWORD 279
#define GOTO 280
#define ASM_KEYWORD 281
#define TYPEOF 282
#define ALIGNOF 283
#define SIGOF 284
#define ATTRIBUTE 285
#define EXTENSION 286
#define LABEL 287
#define REALPART 288
#define IMAGPART 289
#define VA_ARG 290
#define AGGR 291
#define VISSPEC 292
#define DELETE 293
......
......@@ -133,7 +133,7 @@ empty_parms ()
%token BREAK CONTINUE RETURN_KEYWORD GOTO ASM_KEYWORD TYPEOF ALIGNOF
%token SIGOF
%token ATTRIBUTE EXTENSION LABEL
%token REALPART IMAGPART
%token REALPART IMAGPART VA_ARG
/* the reserved words... C++ extensions */
%token <ttype> AGGR
......@@ -1162,6 +1162,9 @@ unary_expr:
{ $$ = build_x_unary_op (REALPART_EXPR, $2); }
| IMAGPART cast_expr %prec UNARY
{ $$ = build_x_unary_op (IMAGPART_EXPR, $2); }
| VA_ARG '(' expr_no_commas ',' type_id ')'
{ $$ = build_va_arg ($3, groktypename ($5.t));
check_for_new_type ("__builtin_va_arg", $5); }
;
/* Note this rule is not suitable for use in new_placement
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment