* ch-exp.y (expression_conversion): Recognize 'ARRAY () TYPE (EXPR)'
(same as C's '(TYPE[])EXPR')
This commit is contained in:
parent
d439f0eca6
commit
835c255965
2 changed files with 27 additions and 0 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
Tue Feb 21 20:48:42 1995 Per Bothner <bothner@kalessin.cygnus.com>
|
||||||
|
|
||||||
|
* valops.c (call_function_by_hand): Set using_gcc to 2 if gcc-2.
|
||||||
|
Call error if too few arguments.
|
||||||
|
If REG_STRUCT_HAS_ADDR (structs passed by invisible reference),
|
||||||
|
copy and convert to reference *before* we calculate alignment.
|
||||||
|
Also, make sure structs allocated for return values and invisible
|
||||||
|
reference don't violate STACK_ALIGN.
|
||||||
|
|
||||||
Tue Feb 21 11:47:26 1995 Stan Shebs <shebs@andros.cygnus.com>
|
Tue Feb 21 11:47:26 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||||
|
|
||||||
* top.c (print_gdb_version): Update the year.
|
* top.c (print_gdb_version): Update the year.
|
||||||
|
|
18
gdb/ch-exp.y
18
gdb/ch-exp.y
|
@ -237,6 +237,7 @@ yyerror PARAMS ((char *));
|
||||||
%token <voidval> UPPER
|
%token <voidval> UPPER
|
||||||
%token <voidval> LOWER
|
%token <voidval> LOWER
|
||||||
%token <voidval> LENGTH
|
%token <voidval> LENGTH
|
||||||
|
%token <voidval> ARRAY
|
||||||
|
|
||||||
/* Tokens which are not Chill tokens used in expressions, but rather GDB
|
/* Tokens which are not Chill tokens used in expressions, but rather GDB
|
||||||
specific things that we recognize in the same context as Chill tokens
|
specific things that we recognize in the same context as Chill tokens
|
||||||
|
@ -608,6 +609,22 @@ expression_conversion: mode_name parenthesised_expression
|
||||||
write_exp_elt_type ($1.type);
|
write_exp_elt_type ($1.type);
|
||||||
write_exp_elt_opcode (UNOP_CAST);
|
write_exp_elt_opcode (UNOP_CAST);
|
||||||
}
|
}
|
||||||
|
| ARRAY '(' ')' mode_name parenthesised_expression
|
||||||
|
/* This is pseudo-Chill, similar to C's '(TYPE[])EXPR'
|
||||||
|
which casts to an artificial array. */
|
||||||
|
{
|
||||||
|
struct type *range_type
|
||||||
|
= create_range_type ((struct type *) NULL,
|
||||||
|
builtin_type_int, 0, 0);
|
||||||
|
struct type *array_type
|
||||||
|
= create_array_type ((struct type *) NULL,
|
||||||
|
$4.type, range_type);
|
||||||
|
TYPE_ARRAY_UPPER_BOUND_TYPE(array_type)
|
||||||
|
= BOUND_CANNOT_BE_DETERMINED;
|
||||||
|
write_exp_elt_opcode (UNOP_CAST);
|
||||||
|
write_exp_elt_type (array_type);
|
||||||
|
write_exp_elt_opcode (UNOP_CAST);
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
/* Z.200, 5.2.12 */
|
/* Z.200, 5.2.12 */
|
||||||
|
@ -1717,6 +1734,7 @@ struct token
|
||||||
|
|
||||||
static const struct token idtokentab[] =
|
static const struct token idtokentab[] =
|
||||||
{
|
{
|
||||||
|
{ "array", ARRAY },
|
||||||
{ "length", LENGTH },
|
{ "length", LENGTH },
|
||||||
{ "lower", LOWER },
|
{ "lower", LOWER },
|
||||||
{ "upper", UPPER },
|
{ "upper", UPPER },
|
||||||
|
|
Loading…
Reference in a new issue