symtab.c: Add cast
[deliverable/binutils-gdb.git] / gdb / d-exp.y
index dd87d8aa18849ed14d7a773de824ee1bfb706cd8..0481b14d5ffb0ddecc8b59d5d663c593a91b1671 100644 (file)
@@ -368,6 +368,8 @@ UnaryExpression:
                { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
 |      '~' UnaryExpression
                { write_exp_elt_opcode (pstate, UNOP_COMPLEMENT); }
+|      TypeExp '.' SIZEOF_KEYWORD
+               { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
 |      CastExpression
 |      PowExpression
 ;
@@ -410,6 +412,8 @@ PostfixExpression:
                  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
                  write_exp_string (pstate, $3);
                  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+|      PostfixExpression '.' SIZEOF_KEYWORD
+               { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
 |      PostfixExpression INCREMENT
                { write_exp_elt_opcode (pstate, UNOP_POSTINCREMENT); }
 |      PostfixExpression DECREMENT
@@ -483,9 +487,7 @@ PrimaryExpression:
                        }
 
                      write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-                     /* We want to use the selected frame, not another more inner frame
-                        which happens to be in the same block.  */
-                     write_exp_elt_block (pstate, NULL);
+                     write_exp_elt_block (pstate, sym.block);
                      write_exp_elt_sym (pstate, sym.symbol);
                      write_exp_elt_opcode (pstate, OP_VAR_VALUE);
                    }
@@ -616,6 +618,8 @@ PrimaryExpression:
                  write_exp_elt_longcst (pstate, (LONGEST) 0);
                  write_exp_elt_longcst (pstate, (LONGEST) $1 - 1);
                  write_exp_elt_opcode (pstate, OP_ARRAY); }
+|      TYPEOF_KEYWORD '(' Expression ')'
+               { write_exp_elt_opcode (pstate, OP_TYPEOF); }
 ;
 
 ArrayLiteral:
@@ -640,7 +644,7 @@ StringExp:
 
                  vec->type = $1.type;
                  vec->length = $1.length;
-                 vec->ptr = malloc ($1.length + 1);
+                 vec->ptr = (char *) malloc ($1.length + 1);
                  memcpy (vec->ptr, $1.ptr, $1.length + 1);
                }
 |      StringExp STRING_LITERAL
@@ -648,10 +652,10 @@ StringExp:
                     for convenience.  */
                  char *p;
                  ++$$.len;
-                 $$.tokens = realloc ($$.tokens,
-                                      $$.len * sizeof (struct typed_stoken));
+                 $$.tokens
+                   = XRESIZEVEC (struct typed_stoken, $$.tokens, $$.len);
 
-                 p = malloc ($2.length + 1);
+                 p = (char *) malloc ($2.length + 1);
                  memcpy (p, $2.ptr, $2.length + 1);
 
                  $$.tokens[$$.len - 1].type = $2.type;
This page took 0.024789 seconds and 4 git commands to generate.