diff options
author | Per Bothner <per@bothner.com> | 1994-03-30 06:59:16 +0000 |
---|---|---|
committer | Per Bothner <per@bothner.com> | 1994-03-30 06:59:16 +0000 |
commit | 58cda66eeb172461c8b9361b20311448a6384983 (patch) | |
tree | cda340fb9f31fed8cbceb2296deb2894e1a20025 /gdb/ch-exp.y | |
parent | 73cd3b4911899b642e8b560cec05180a40480feb (diff) | |
download | gdb-58cda66eeb172461c8b9361b20311448a6384983.zip gdb-58cda66eeb172461c8b9361b20311448a6384983.tar.gz gdb-58cda66eeb172461c8b9361b20311448a6384983.tar.bz2 |
* ch-exp.y: Implement SIZE(mode_name) and SIZE(expression).
Diffstat (limited to 'gdb/ch-exp.y')
-rw-r--r-- | gdb/ch-exp.y | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/gdb/ch-exp.y b/gdb/ch-exp.y index e818803..cb6aa18 100644 --- a/gdb/ch-exp.y +++ b/gdb/ch-exp.y @@ -295,7 +295,7 @@ yyerror PARAMS ((char *)); %type <voidval> lower_element %type <voidval> upper_element %type <voidval> first_element -%type <voidval> mode_argument +%type <tval> mode_argument %type <voidval> upper_lower_argument %type <voidval> length_argument %type <voidval> array_mode_name @@ -903,14 +903,13 @@ chill_value_built_in_routine_call : { $$ = 0; /* FIXME */ } - | SIZE '(' location ')' - { - $$ = 0; /* FIXME */ - } + | SIZE '(' expression ')' + { write_exp_elt_opcode (UNOP_SIZEOF); } | SIZE '(' mode_argument ')' - { - $$ = 0; /* FIXME */ - } + { write_exp_elt_opcode (OP_LONG); + write_exp_elt_type (builtin_type_int); + write_exp_elt_longcst ((LONGEST) TYPE_LENGTH ($3)); + write_exp_elt_opcode (OP_LONG); } | UPPER '(' upper_lower_argument ')' { $$ = 0; /* FIXME */ @@ -927,7 +926,7 @@ chill_value_built_in_routine_call : mode_argument : mode_name { - $$ = 0; /* FIXME */ + $$ = $1.type; } | array_mode_name '(' expression ')' { |