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) Sun Jul 25 15:24:21 1999 Jeffrey A Law (law@cygnus.com)
* g++FAQ.texi: Deleted per Joe Buck's request. * g++FAQ.texi: Deleted per Joe Buck's request.
......
...@@ -275,6 +275,12 @@ tree char_type_node; ...@@ -275,6 +275,12 @@ tree char_type_node;
tree integer_type_node; tree integer_type_node;
tree unsigned_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 /* Indicates that there is a type value in some namespace, although
that is not necessarily in scope at the moment. */ that is not necessarily in scope at the moment. */
......
...@@ -9,6 +9,7 @@ __asm, ASM_KEYWORD, RID_UNUSED ...@@ -9,6 +9,7 @@ __asm, ASM_KEYWORD, RID_UNUSED
__asm__, ASM_KEYWORD, RID_UNUSED __asm__, ASM_KEYWORD, RID_UNUSED
__attribute, ATTRIBUTE, RID_UNUSED __attribute, ATTRIBUTE, 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
__complex__, TYPESPEC, RID_COMPLEX __complex__, TYPESPEC, RID_COMPLEX
__const, CV_QUALIFIER, RID_CONST __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; typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE;
#define IDENTIFIER 258 #define IDENTIFIER 257
#define TYPENAME 259 #define TYPENAME 258
#define SELFNAME 260 #define SELFNAME 259
#define PFUNCNAME 261 #define PFUNCNAME 260
#define SCSPEC 262 #define SCSPEC 261
#define TYPESPEC 263 #define TYPESPEC 262
#define CV_QUALIFIER 264 #define CV_QUALIFIER 263
#define CONSTANT 265 #define CONSTANT 264
#define STRING 266 #define STRING 265
#define ELLIPSIS 267 #define ELLIPSIS 266
#define SIZEOF 268 #define SIZEOF 267
#define ENUM 269 #define ENUM 268
#define IF 270 #define IF 269
#define ELSE 271 #define ELSE 270
#define WHILE 272 #define WHILE 271
#define DO 273 #define DO 272
#define FOR 274 #define FOR 273
#define SWITCH 275 #define SWITCH 274
#define CASE 276 #define CASE 275
#define DEFAULT 277 #define DEFAULT 276
#define BREAK 278 #define BREAK 277
#define CONTINUE 279 #define CONTINUE 278
#define RETURN_KEYWORD 280 #define RETURN_KEYWORD 279
#define GOTO 281 #define GOTO 280
#define ASM_KEYWORD 282 #define ASM_KEYWORD 281
#define TYPEOF 283 #define TYPEOF 282
#define ALIGNOF 284 #define ALIGNOF 283
#define SIGOF 285 #define SIGOF 284
#define ATTRIBUTE 286 #define ATTRIBUTE 285
#define EXTENSION 287 #define EXTENSION 286
#define LABEL 288 #define LABEL 287
#define REALPART 289 #define REALPART 288
#define IMAGPART 290 #define IMAGPART 289
#define VA_ARG 290
#define AGGR 291 #define AGGR 291
#define VISSPEC 292 #define VISSPEC 292
#define DELETE 293 #define DELETE 293
......
...@@ -133,7 +133,7 @@ empty_parms () ...@@ -133,7 +133,7 @@ empty_parms ()
%token BREAK CONTINUE RETURN_KEYWORD GOTO ASM_KEYWORD TYPEOF ALIGNOF %token BREAK CONTINUE RETURN_KEYWORD GOTO ASM_KEYWORD TYPEOF ALIGNOF
%token SIGOF %token SIGOF
%token ATTRIBUTE EXTENSION LABEL %token ATTRIBUTE EXTENSION LABEL
%token REALPART IMAGPART %token REALPART IMAGPART VA_ARG
/* the reserved words... C++ extensions */ /* the reserved words... C++ extensions */
%token <ttype> AGGR %token <ttype> AGGR
...@@ -1162,6 +1162,9 @@ unary_expr: ...@@ -1162,6 +1162,9 @@ unary_expr:
{ $$ = build_x_unary_op (REALPART_EXPR, $2); } { $$ = build_x_unary_op (REALPART_EXPR, $2); }
| IMAGPART cast_expr %prec UNARY | IMAGPART cast_expr %prec UNARY
{ $$ = build_x_unary_op (IMAGPART_EXPR, $2); } { $$ = 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 /* 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