diff options
Diffstat (limited to 'gcc/treelang')
-rw-r--r-- | gcc/treelang/Make-lang.in | 1 | ||||
-rw-r--r-- | gcc/treelang/lex.l | 2 | ||||
-rw-r--r-- | gcc/treelang/parse.y | 108 | ||||
-rw-r--r-- | gcc/treelang/tree1.c | 14 | ||||
-rw-r--r-- | gcc/treelang/treetree.c | 25 |
5 files changed, 76 insertions, 74 deletions
diff --git a/gcc/treelang/Make-lang.in b/gcc/treelang/Make-lang.in index 00d9ac88a31..83c2e0013f7 100644 --- a/gcc/treelang/Make-lang.in +++ b/gcc/treelang/Make-lang.in @@ -84,6 +84,7 @@ tree1$(exeext): treelang/tree1.o treelang/treetree.o treelang/tree-convert.o \ $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ treelang/tree1.o treelang/treetree.o treelang/tree-convert.o \ treelang/lex.o treelang/parse.o \ + tree-mudflap.o \ $(BACKEND) $(LIBS) attribs.o # Create the compiler driver treelang. diff --git a/gcc/treelang/lex.l b/gcc/treelang/lex.l index a372f984c80..9612bc20ca1 100644 --- a/gcc/treelang/lex.l +++ b/gcc/treelang/lex.l @@ -263,7 +263,7 @@ void update_yylval (int a) { struct prod_token_parm_item * tok; - tok = yylval; + tok = (struct prod_token_parm_item *) yylval; tok->category = token_category; tok->type = a; diff --git a/gcc/treelang/parse.y b/gcc/treelang/parse.y index 740237c8b98..ff6e551fc27 100644 --- a/gcc/treelang/parse.y +++ b/gcc/treelang/parse.y @@ -181,11 +181,11 @@ variable_def: storage typename NAME init_opt SEMICOLON { struct prod_token_parm_item *tok; struct prod_token_parm_item *prod; - tok = $3; + tok = (struct prod_token_parm_item *) $3; prod = make_production (PROD_VARIABLE_NAME, tok); SYMBOL_TABLE_NAME (prod) = tok; - EXPRESSION_TYPE (prod) = $2; - VAR_INIT (prod) = $4; + EXPRESSION_TYPE (prod) = (struct prod_token_parm_item *) $2; + VAR_INIT (prod) = (struct prod_token_parm_item *) $4; NUMERIC_TYPE (prod) = NUMERIC_TYPE (( (struct prod_token_parm_item *)EXPRESSION_TYPE (prod))); ensure_not_void (NUMERIC_TYPE (prod), tok); @@ -193,7 +193,7 @@ storage typename NAME init_opt SEMICOLON { { YYERROR; } - STORAGE_CLASS_TOKEN (prod) = $1; + STORAGE_CLASS_TOKEN (prod) = (struct prod_token_parm_item *) $1; set_storage (prod); if (VAR_INIT (prod)) @@ -234,10 +234,10 @@ typename NAME { struct prod_token_parm_item *tok; struct prod_token_parm_item *prod; struct prod_token_parm_item *prod2; - tok = $2; + tok = (struct prod_token_parm_item *) $2; prod = make_production (PROD_VARIABLE_NAME, tok); - SYMBOL_TABLE_NAME (prod) = $2; - EXPRESSION_TYPE (prod) = $1; + SYMBOL_TABLE_NAME (prod) = (struct prod_token_parm_item *) $2; + EXPRESSION_TYPE (prod) = (struct prod_token_parm_item *) $1; NUMERIC_TYPE (prod) = NUMERIC_TYPE (( (struct prod_token_parm_item *)EXPRESSION_TYPE (prod))); ensure_not_void (NUMERIC_TYPE (prod), tok); @@ -261,15 +261,15 @@ storage typename NAME LEFT_PARENTHESIS parameters_opt RIGHT_PARENTHESIS SEMICOLO struct prod_token_parm_item *this_parms; struct prod_token_parm_item *this_parm; struct prod_token_parm_item *this_parm_var; - tok = $3; - prod = make_production (PROD_FUNCTION_NAME, $3); - SYMBOL_TABLE_NAME (prod) = $3; - EXPRESSION_TYPE (prod) = $2; + tok = (struct prod_token_parm_item *) $3; + prod = make_production (PROD_FUNCTION_NAME, (struct prod_token_parm_item *)$3); + SYMBOL_TABLE_NAME (prod) = (struct prod_token_parm_item *)$3; + EXPRESSION_TYPE (prod) = (struct prod_token_parm_item *)$2; NUMERIC_TYPE (prod) = NUMERIC_TYPE (( (struct prod_token_parm_item *)EXPRESSION_TYPE (prod))); - PARAMETERS (prod) = reverse_prod_list ($5); + PARAMETERS (prod) = reverse_prod_list ((struct prod_token_parm_item *)$5); insert_tree_name (prod); - STORAGE_CLASS_TOKEN (prod) = $1; + STORAGE_CLASS_TOKEN (prod) = (struct prod_token_parm_item *)$1; set_storage (prod); switch (STORAGE_CLASS (prod)) { @@ -300,7 +300,7 @@ storage typename NAME LEFT_PARENTHESIS parameters_opt RIGHT_PARENTHESIS SEMICOLO gcc_assert (this_parm_var->category == production_category); gcc_assert (this_parm_var->tp.pro.main_token); - this_parms = my_malloc (sizeof (struct prod_token_parm_item)); + this_parms = (struct prod_token_parm_item *)my_malloc (sizeof (struct prod_token_parm_item)); this_parms->tp.par.variable_name = this_parm_var->tp.pro.main_token->tp.tok.chars; @@ -347,7 +347,7 @@ NAME LEFT_BRACE { struct prod_token_parm_item *proto; struct prod_token_parm_item search_prod; struct prod_token_parm_item *tok; - tok = $1; + tok = (struct prod_token_parm_item *)$1; SYMBOL_TABLE_NAME ((&search_prod)) = tok; search_prod.category = token_category; current_function = proto = lookup_tree_name (&search_prod); @@ -365,7 +365,7 @@ NAME LEFT_BRACE { variable_defs_opt statements_opt RIGHT_BRACE { struct prod_token_parm_item *tok; - tok = $1; + tok = (struct prod_token_parm_item *)$1; tree_code_create_function_wrapup (tok->tp.tok.location); current_function = NULL; } @@ -402,7 +402,7 @@ typename: INT { struct prod_token_parm_item *tok; struct prod_token_parm_item *prod; - tok = $1; + tok = (struct prod_token_parm_item *)$1; prod = make_production (PROD_TYPE_NAME, tok); NUMERIC_TYPE (prod) = SIGNED_INT; prod->tp.pro.code = tree_code_get_type (NUMERIC_TYPE (prod)); @@ -411,7 +411,7 @@ INT { |UNSIGNED INT { struct prod_token_parm_item *tok; struct prod_token_parm_item *prod; - tok = $1; + tok = (struct prod_token_parm_item *)$1; prod = make_production (PROD_TYPE_NAME, tok); NUMERIC_TYPE (prod) = UNSIGNED_INT; prod->tp.pro.code = tree_code_get_type (NUMERIC_TYPE (prod)); @@ -420,7 +420,7 @@ INT { |CHAR { struct prod_token_parm_item *tok; struct prod_token_parm_item *prod; - tok = $1; + tok = (struct prod_token_parm_item *)$1; prod = make_production (PROD_TYPE_NAME, tok); NUMERIC_TYPE (prod) = SIGNED_CHAR; prod->tp.pro.code = tree_code_get_type (NUMERIC_TYPE (prod)); @@ -429,7 +429,7 @@ INT { |UNSIGNED CHAR { struct prod_token_parm_item *tok; struct prod_token_parm_item *prod; - tok = $1; + tok = (struct prod_token_parm_item *)$1; prod = make_production (PROD_TYPE_NAME, tok); NUMERIC_TYPE (prod) = UNSIGNED_CHAR; prod->tp.pro.code = tree_code_get_type (NUMERIC_TYPE (prod)); @@ -438,7 +438,7 @@ INT { |VOID { struct prod_token_parm_item *tok; struct prod_token_parm_item *prod; - tok = $1; + tok = (struct prod_token_parm_item *)$1; prod = make_production (PROD_TYPE_NAME, tok); NUMERIC_TYPE (prod) = VOID_TYPE; prod->tp.pro.code = tree_code_get_type (NUMERIC_TYPE (prod)); @@ -462,8 +462,8 @@ parameter { } |parameters COMMA parameter { struct prod_token_parm_item *prod1; - prod1 = $3; - prod1->tp.pro.next = $1; /* Insert in reverse order. */ + prod1 = (struct prod_token_parm_item *)$3; + prod1->tp.pro.next = (struct prod_token_parm_item *)$1; /* Insert in reverse order. */ $$ = prod1; } ; @@ -480,7 +480,7 @@ statement { statement: expression SEMICOLON { struct prod_token_parm_item *exp; - exp = $1; + exp = (struct prod_token_parm_item *)$1; tree_code_output_expression_statement (exp->tp.pro.code, exp->tp.pro.main_token->tp.tok.location); } @@ -496,8 +496,8 @@ if_statement: IF LEFT_PARENTHESIS expression RIGHT_PARENTHESIS { struct prod_token_parm_item *tok; struct prod_token_parm_item *exp; - tok = $1; - exp = $3; + tok = (struct prod_token_parm_item *)$1; + exp = (struct prod_token_parm_item *)$3; ensure_not_void (NUMERIC_TYPE (exp), exp->tp.pro.main_token); tree_code_if_start (exp->tp.pro.code, tok->tp.tok.location); } @@ -506,12 +506,12 @@ LEFT_BRACE variable_defs_opt statements_opt RIGHT_BRACE { } ELSE { struct prod_token_parm_item *tok; - tok = $1; + tok = (struct prod_token_parm_item *)$1; tree_code_if_else (tok->tp.tok.location); } LEFT_BRACE variable_defs_opt statements_opt RIGHT_BRACE { struct prod_token_parm_item *tok; - tok = $1; + tok = (struct prod_token_parm_item *)$1; tree_code_if_end (tok->tp.tok.location); } ; @@ -520,8 +520,8 @@ LEFT_BRACE variable_defs_opt statements_opt RIGHT_BRACE { return: tl_RETURN expression_opt { struct prod_token_parm_item *type_prod; - struct prod_token_parm_item *ret_tok = $1; - struct prod_token_parm_item *exp = $2; + struct prod_token_parm_item *ret_tok = (struct prod_token_parm_item *)$1; + struct prod_token_parm_item *exp = (struct prod_token_parm_item *)$2; type_prod = EXPRESSION_TYPE (current_function); if (NUMERIC_TYPE (type_prod) == VOID_TYPE) @@ -558,7 +558,7 @@ expression_opt: } |expression { struct prod_token_parm_item *exp; - exp = $1; + exp = (struct prod_token_parm_item *)$1; gcc_assert (exp->tp.pro.code); $$ = $1; @@ -567,33 +567,33 @@ expression_opt: expression: INTEGER { - $$ = make_integer_constant ($1); + $$ = make_integer_constant ((struct prod_token_parm_item *)$1); } |variable_ref { $$ = $1; } |expression tl_PLUS expression { - struct prod_token_parm_item *tok = $2; - struct prod_token_parm_item *op1 = $1; - struct prod_token_parm_item *op2 = $3; + struct prod_token_parm_item *tok = (struct prod_token_parm_item *)$2; + struct prod_token_parm_item *op1 = (struct prod_token_parm_item *)$1; + struct prod_token_parm_item *op2 = (struct prod_token_parm_item *)$3; int type_code = get_common_type (op1, op2); if (!type_code) YYERROR; $$ = make_plus_expression (tok, op1, op2, type_code, EXP_PLUS); } |expression tl_MINUS expression %prec tl_PLUS { - struct prod_token_parm_item *tok = $2; - struct prod_token_parm_item *op1 = $1; - struct prod_token_parm_item *op2 = $3; + struct prod_token_parm_item *tok = (struct prod_token_parm_item *)$2; + struct prod_token_parm_item *op1 = (struct prod_token_parm_item *)$1; + struct prod_token_parm_item *op2 = (struct prod_token_parm_item *)$3; int type_code = get_common_type (op1, op2); if (!type_code) YYERROR; $$ = make_plus_expression (tok, op1, op2, type_code, EXP_MINUS); } |expression EQUALS expression { - struct prod_token_parm_item *tok = $2; - struct prod_token_parm_item *op1 = $1; - struct prod_token_parm_item *op2 = $3; + struct prod_token_parm_item *tok = (struct prod_token_parm_item *)$2; + struct prod_token_parm_item *op1 = (struct prod_token_parm_item *)$1; + struct prod_token_parm_item *op2 = (struct prod_token_parm_item *)$3; int type_code = NUMERIC_TYPE (op1); if (!type_code) YYERROR; @@ -601,9 +601,9 @@ INTEGER { (tok, op1, op2, type_code, EXP_EQUALS); } |variable_ref ASSIGN expression { - struct prod_token_parm_item *tok = $2; - struct prod_token_parm_item *op1 = $1; - struct prod_token_parm_item *op2 = $3; + struct prod_token_parm_item *tok = (struct prod_token_parm_item *)$2; + struct prod_token_parm_item *op1 = (struct prod_token_parm_item *)$1; + struct prod_token_parm_item *op2 = (struct prod_token_parm_item *)$3; int type_code = NUMERIC_TYPE (op1); if (!type_code) YYERROR; @@ -629,10 +629,10 @@ NAME LEFT_PARENTHESIS expressions_with_commas_opt RIGHT_PARENTHESIS { tree parms; tree type; - tok = $1; + tok = (struct prod_token_parm_item *)$1; prod = make_production (PROD_FUNCTION_INVOCATION, tok); SYMBOL_TABLE_NAME (prod) = tok; - PARAMETERS (prod) = reverse_prod_list ($3); + PARAMETERS (prod) = reverse_prod_list ((struct prod_token_parm_item *)$3); SYMBOL_TABLE_NAME ((&search_prod)) = tok; search_prod.category = token_category; proto = lookup_tree_name (&search_prod); @@ -694,15 +694,15 @@ $$ = 0 expressions_with_commas: expression { struct prod_token_parm_item *exp; - exp = $1; + exp = (struct prod_token_parm_item *)$1; ensure_not_void (NUMERIC_TYPE (exp), exp->tp.pro.main_token); $$ = $1; } |expressions_with_commas COMMA expression { struct prod_token_parm_item *exp; - exp = $3; + exp = (struct prod_token_parm_item *)$3; ensure_not_void (NUMERIC_TYPE (exp), exp->tp.pro.main_token); - exp->tp.pro.next = $1; /* Reverse order. */ + exp->tp.pro.next = (struct prod_token_parm_item *)$1; /* Reverse order. */ $$ = exp; } ; @@ -715,7 +715,7 @@ NAME { struct prod_token_parm_item *tok; tree type; - tok = $1; + tok = (struct prod_token_parm_item *)$1; SYMBOL_TABLE_NAME ((&search_prod)) = tok; search_prod.category = token_category; symbol_table_entry = lookup_tree_name (&search_prod); @@ -731,7 +731,7 @@ NAME { type = tree_code_get_type (NUMERIC_TYPE (prod)); if (!NUMERIC_TYPE (prod)) YYERROR; - OP1 (prod) = $1; + OP1 (prod) = (struct prod_token_parm_item *)$1; prod->tp.pro.code = tree_code_get_expression (EXP_REFERENCE, type, @@ -758,7 +758,7 @@ ASSIGN init_element { init_element: INTEGER { - $$ = make_integer_constant ($1); + $$ = make_integer_constant ((struct prod_token_parm_item *)$1); } ; @@ -773,7 +773,7 @@ print_token (FILE *file, unsigned int type ATTRIBUTE_UNUSED, YYSTYPE value) struct prod_token_parm_item *tok; unsigned int ix; - tok = value; + tok = (struct prod_token_parm_item *)value; fprintf (file, "%d \"", LOCATION_LINE (tok->tp.tok.location)); for (ix = 0; ix < tok->tp.tok.length; ix++) fprintf (file, "%c", tok->tp.tok.chars[ix]); @@ -787,7 +787,7 @@ yyerror (const char *error_message) { struct prod_token_parm_item *tok; - tok = yylval; + tok = (struct prod_token_parm_item *)yylval; if (tok) error ("%H%s", &tok->tp.tok.location, error_message); else diff --git a/gcc/treelang/tree1.c b/gcc/treelang/tree1.c index cec2baf717d..54578d34f5e 100644 --- a/gcc/treelang/tree1.c +++ b/gcc/treelang/tree1.c @@ -231,7 +231,7 @@ my_malloc (size_t size) struct prod_token_parm_item* lookup_tree_name (struct prod_token_parm_item *prod) { - struct prod_token_parm_item *this; + struct prod_token_parm_item *it; struct prod_token_parm_item *this_tok; struct prod_token_parm_item *tok; @@ -240,10 +240,10 @@ lookup_tree_name (struct prod_token_parm_item *prod) tok = SYMBOL_TABLE_NAME (prod); sanity_check (tok); - for (this = symbol_table; this; this = this->tp.pro.next) + for (it = symbol_table; it; it = it->tp.pro.next) { - sanity_check (this); - this_tok = this->tp.pro.main_token; + sanity_check (it); + this_tok = it->tp.pro.main_token; sanity_check (this_tok); if (tok->tp.tok.length != this_tok->tp.tok.length) continue; @@ -254,8 +254,8 @@ lookup_tree_name (struct prod_token_parm_item *prod) if (option_parser_trace) fprintf (stderr, "Found symbol %s (%i:%i) as %i \n", tok->tp.tok.chars, LOCATION_LINE (tok->tp.tok.location), - tok->tp.tok.charno, NUMERIC_TYPE (this)); - return this; + tok->tp.tok.charno, NUMERIC_TYPE (it)); + return it; } if (option_parser_trace) @@ -291,7 +291,7 @@ struct prod_token_parm_item * make_production (int type, struct prod_token_parm_item *main_tok) { struct prod_token_parm_item *prod; - prod = my_malloc (sizeof (struct prod_token_parm_item)); + prod = (struct prod_token_parm_item *) my_malloc (sizeof (struct prod_token_parm_item)); prod->category = production_category; prod->type = type; prod->tp.pro.main_token = main_tok; diff --git a/gcc/treelang/treetree.c b/gcc/treelang/treetree.c index 98c3694f3a9..42695f00d82 100644 --- a/gcc/treelang/treetree.c +++ b/gcc/treelang/treetree.c @@ -138,8 +138,9 @@ static tree pushdecl (tree decl); static tree* getstmtlist (void); /* Langhooks. */ -static tree builtin_function (const char *name, tree type, int function_code, - enum built_in_class class, +static tree builtin_function (const char *name, tree type, + enum built_in_function function_code, + enum built_in_class cls, const char *library_name, tree attrs); extern const struct attribute_spec treelang_attribute_table[]; @@ -654,34 +655,34 @@ tree_code_get_expression (unsigned int exp_type, location_t loc) { tree ret1; - int operator; + enum tree_code op; switch (exp_type) { case EXP_ASSIGN: gcc_assert (op1 && op2); - operator = MODIFY_EXPR; - ret1 = fold_build2 (operator, void_type_node, op1, + op = MODIFY_EXPR; + ret1 = fold_build2 (op, void_type_node, op1, fold_convert (TREE_TYPE (op1), op2)); break; case EXP_PLUS: - operator = PLUS_EXPR; + op = PLUS_EXPR; goto binary_expression; case EXP_MINUS: - operator = MINUS_EXPR; + op = MINUS_EXPR; goto binary_expression; case EXP_EQUALS: - operator = EQ_EXPR; + op = EQ_EXPR; goto binary_expression; /* Expand a binary expression. Ensure the operands are the right type. */ binary_expression: gcc_assert (op1 && op2); - ret1 = fold_build2 (operator, type, + ret1 = fold_build2 (op, type, fold_convert (type, op1), fold_convert (type, op2)); break; @@ -1237,8 +1238,8 @@ const struct attribute_spec treelang_attribute_table[] = */ static tree -builtin_function (const char *name, tree type, int function_code, - enum built_in_class class, const char *library_name, +builtin_function (const char *name, tree type, enum built_in_function function_code, + enum built_in_class cls, const char *library_name, tree attrs) { tree decl = build_decl (FUNCTION_DECL, get_identifier (name), type); @@ -1247,7 +1248,7 @@ builtin_function (const char *name, tree type, int function_code, if (library_name) SET_DECL_ASSEMBLER_NAME (decl, get_identifier (library_name)); pushdecl (decl); - DECL_BUILT_IN_CLASS (decl) = class; + DECL_BUILT_IN_CLASS (decl) = cls; DECL_FUNCTION_CODE (decl) = function_code; /* Possibly apply some default attributes to this built-in function. */ |