+2004-05-15 Steven Bosscher <stevenb@suse.de>
+
+ * c-gimplify.c (c_genericize):
+ Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
+ * c-parse.in <expr_no_commas>: Likewise.
+ <if_prefix>: Likewise.
+ <select_or_iter_stmt>: Likewise.
+ * expr.c (expand_var, expand_expr_real_1): Likewise.
+ * expr.h (expand_expr): Make it a static inline function.
+ Move prototype for expand_expr_real up before this.
+ * fold-const.c (fold_relational_hi_lo, fold_relational_const):
+ Likewise.
+ * gimplify.c (gimple_boolify, gimplify_addr_expr,
+ gimplify_asm_expr, gimplify_expr): Likewise.
+ * tree-cfg.c (dump_tree_cfg, dump_cfg_stats, tree_cfg2vcg,
+ dump_function_to_file): Likewise.
+ * tree-dfa.c (dump_immediate_uses, dump_dfa_stats): Likewise.
+ * tree-inline.c (remap_block, save_body, walk_tree): Likewise.
+ * tree-into-ssa.c (dump_tree_ssa): Likewise.
+ * tree-mudflap.c (mf_varname_tree, mf_file_function_line_tree):
+ Likewise.
+ * tree-optimize.c (execute_one_pass): Likewise.
+ * tree-pretty-print.c (dump_generic_bb_buff): Likewise.
+ * tree-ssa-alias.c (dump_alias_stats, dump_alias_info): Likewise.
+
+ * objc/objc-act.c (objc_build_try_enter_fragment,
+ objc_build_try_epilogue, objc_build_catch_stmt,
+ objc_build_finally_prologue): Replace calls via (*lang_hooks.foo)
+ with lang_hooks.foo ().
+
2004-05-15 Roger Sayle <roger@eyesopen.com>
* builtins.c (simplify_builtin_strcpy): Avoid use of chainon, so
if (dump_file)
{
fprintf (dump_file, "\n;; Function %s",
- (*lang_hooks.decl_printable_name) (fndecl, 2));
+ lang_hooks.decl_printable_name (fndecl, 2));
fprintf (dump_file, " (%s)\n",
IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (fndecl)));
fprintf (dump_file, ";; enabled by -%s\n", dump_flag_name (TDI_original));
| expr_no_commas '^' expr_no_commas
{ $$ = parser_build_binary_op ($2, $1, $3); }
| expr_no_commas ANDAND
- { $1 = (*lang_hooks.truthvalue_conversion)
+ { $1 = lang_hooks.truthvalue_conversion
(default_conversion ($1));
skip_evaluation += $1 == truthvalue_false_node; }
expr_no_commas
{ skip_evaluation -= $1 == truthvalue_false_node;
$$ = parser_build_binary_op (TRUTH_ANDIF_EXPR, $1, $4); }
| expr_no_commas OROR
- { $1 = (*lang_hooks.truthvalue_conversion)
+ { $1 = lang_hooks.truthvalue_conversion
(default_conversion ($1));
skip_evaluation += $1 == truthvalue_true_node; }
expr_no_commas
{ skip_evaluation -= $1 == truthvalue_true_node;
$$ = parser_build_binary_op (TRUTH_ORIF_EXPR, $1, $4); }
| expr_no_commas '?'
- { $1 = (*lang_hooks.truthvalue_conversion)
+ { $1 = lang_hooks.truthvalue_conversion
(default_conversion ($1));
skip_evaluation += $1 == truthvalue_false_node; }
expr ':'
pedwarn ("ISO C forbids omitting the middle term of a ?: expression");
/* Make sure first operand is calculated only once. */
$<ttype>2 = save_expr (default_conversion ($1));
- $1 = (*lang_hooks.truthvalue_conversion) ($<ttype>2);
+ $1 = lang_hooks.truthvalue_conversion ($<ttype>2);
skip_evaluation += $1 == truthvalue_true_node; }
':' expr_no_commas
{ skip_evaluation -= $1 == truthvalue_true_node;
IF
{ $<ttype>$ = c_begin_if_stmt (); }
'(' expr ')'
- { c_expand_start_cond ((*lang_hooks.truthvalue_conversion) ($4),
+ { c_expand_start_cond (lang_hooks.truthvalue_conversion ($4),
compstmt_count,$<ttype>2);
$<itype>$ = stmt_count;
if_stmt_locus = $<location>-1; }
$<ttype>$ = c_begin_while_stmt (); }
'(' expr ')'
{ c_in_iteration_stmt++;
- $4 = (*lang_hooks.truthvalue_conversion) ($4);
+ $4 = lang_hooks.truthvalue_conversion ($4);
c_finish_while_stmt_cond
- ((*lang_hooks.truthvalue_conversion) ($4), $<ttype>2);
+ (lang_hooks.truthvalue_conversion ($4), $<ttype>2);
$<ttype>$ = add_stmt ($<ttype>2); }
c99_block_lineno_labeled_stmt
{ c_in_iteration_stmt--;
RECHAIN_STMTS ($<ttype>6, WHILE_BODY ($<ttype>6)); }
| do_stmt_start
'(' expr ')' ';'
- { DO_COND ($1) = (*lang_hooks.truthvalue_conversion) ($3); }
+ { DO_COND ($1) = lang_hooks.truthvalue_conversion ($3); }
| do_stmt_start error
{ }
| FOR
xexpr ';'
{ if ($6)
FOR_COND ($<ttype>2)
- = (*lang_hooks.truthvalue_conversion) ($6); }
+ = lang_hooks.truthvalue_conversion ($6); }
xexpr ')'
{ c_in_iteration_stmt++;
FOR_EXPR ($<ttype>2) = $9; }
set_mem_attributes (x, var, 1);
SET_DECL_RTL (var, x);
}
- else if ((*lang_hooks.expand_decl) (var))
+ else if (lang_hooks.expand_decl (var))
/* OK. */;
else if (TREE_CODE (var) == VAR_DECL && !TREE_STATIC (var))
expand_decl (var);
{
if (TREE_USED (block))
abort ();
- (*lang_hooks.decls.insert_block) (block);
+ lang_hooks.decls.insert_block (block);
}
}
{
if (DECL_BUILT_IN_CLASS (TREE_OPERAND (TREE_OPERAND (exp, 0), 0))
== BUILT_IN_FRONTEND)
- /* ??? Use (*fun) form because expand_expr is a macro. */
- return (*lang_hooks.expand_expr) (exp, original_target,
- tmode, modifier,
- alt_rtl);
+ return lang_hooks.expand_expr (exp, original_target,
+ tmode, modifier,
+ alt_rtl);
else
return expand_builtin (exp, target, subtarget, tmode, ignore);
}
return const0_rtx;
default:
- /* ??? Use (*fun) form because expand_expr is a macro. */
- return (*lang_hooks.expand_expr) (exp, original_target, tmode,
- modifier, alt_rtl);
+ return lang_hooks.expand_expr (exp, original_target, tmode,
+ modifier, alt_rtl);
}
/* Here to do an ordinary binary operator, generating an instruction
Useful after calling expand_expr with 1 as sum_ok. */
extern rtx force_operand (rtx, rtx);
+/* Work horse for expand_expr. */
+extern rtx expand_expr_real (tree, rtx, enum machine_mode,
+ enum expand_modifier, rtx *);
+
/* Generate code for computing expression EXP.
An rtx for the computed value is returned. The value is never null.
In the case of a void EXP, const0_rtx is returned. */
-#define expand_expr(EXP, TARGET, MODE, MODIFIER) \
- expand_expr_real((EXP), (TARGET), (MODE), (MODIFIER), NULL)
-extern rtx expand_expr_real (tree, rtx, enum machine_mode,
- enum expand_modifier, rtx *);
+static inline rtx
+expand_expr (tree exp, rtx target, enum machine_mode mode,
+ enum expand_modifier modifier)
+{
+ return expand_expr_real(exp, target, mode, modifier, NULL);
+}
extern void expand_var (tree);
if (code == LE_EXPR || code == GT_EXPR)
{
tree st0, st1, exp, retval;
- st0 = (*lang_hooks.types.signed_type) (TREE_TYPE (op0));
- st1 = (*lang_hooks.types.signed_type) (TREE_TYPE (op1));
+ st0 = lang_hooks.types.signed_type (TREE_TYPE (op0));
+ st1 = lang_hooks.types.signed_type (TREE_TYPE (op1));
exp = build (code == LE_EXPR ? GE_EXPR: LT_EXPR,
type,
TREE_TYPE (tem) = type;
if (TREE_CODE (type) == BOOLEAN_TYPE)
- return (*lang_hooks.truthvalue_conversion) (tem);
+ return lang_hooks.truthvalue_conversion (tem);
return tem;
}
/* If this is the predicate of a COND_EXPR, it might not even be a
truthvalue yet. */
- expr = (*lang_hooks.truthvalue_conversion) (expr);
+ expr = lang_hooks.truthvalue_conversion (expr);
switch (TREE_CODE (expr))
{
recompute_tree_invarant_for_addr_expr (expr);
/* Mark the RHS addressable. */
- (*lang_hooks.mark_addressable) (TREE_OPERAND (expr, 0));
+ lang_hooks.mark_addressable (TREE_OPERAND (expr, 0));
}
break;
}
&allows_mem, &allows_reg, &is_inout);
if (!allows_reg && allows_mem)
- (*lang_hooks.mark_addressable) (TREE_VALUE (link));
+ lang_hooks.mark_addressable (TREE_VALUE (link));
tret = gimplify_expr (&TREE_VALUE (link), pre_p, post_p,
is_inout ? is_gimple_min_lval : is_gimple_lvalue,
/* If the operand is a memory input, it should be an lvalue. */
if (!allows_reg && allows_mem)
{
- (*lang_hooks.mark_addressable) (TREE_VALUE (link));
+ lang_hooks.mark_addressable (TREE_VALUE (link));
tret = gimplify_expr (&TREE_VALUE (link), pre_p, post_p,
is_gimple_lvalue, fb_lvalue | fb_mayfail);
if (tret == GS_ERROR)
}
/* Do any language-specific gimplification. */
- ret = (*lang_hooks.gimplify_expr) (expr_p, pre_p, post_p);
+ ret = lang_hooks.gimplify_expr (expr_p, pre_p, post_p);
if (ret == GS_OK)
{
if (*expr_p == NULL_TREE)
cond = build_unary_op (TRUTH_NOT_EXPR,
build_function_call (objc_setjmp_decl, func_params),
0);
- c_expand_start_cond ((*lang_hooks.truthvalue_conversion) (cond),
- 0, if_stmt);
+ c_expand_start_cond (lang_hooks.truthvalue_conversion (cond), 0, if_stmt);
objc_enter_block ();
}
val_stack_push (&catch_count_stack, 1);
if_stmt = c_begin_if_stmt ();
if_nesting_count++;
- c_expand_start_cond ((*lang_hooks.truthvalue_conversion) (boolean_false_node),
+ c_expand_start_cond (lang_hooks.truthvalue_conversion (boolean_false_node),
0, if_stmt);
objc_enter_block ();
cond = build_function_call (objc_exception_match_decl, func_params);
}
- c_expand_start_cond ((*lang_hooks.truthvalue_conversion) (cond),
- 0, if_stmt);
+ c_expand_start_cond (lang_hooks.truthvalue_conversion (cond), 0, if_stmt);
objc_enter_block ();
objc_declare_variable (RID_REGISTER, var_name,
build_pointer_type (var_type),
tree if_stmt = c_begin_if_stmt ();
if_nesting_count++;
- c_expand_start_cond ((*lang_hooks.truthvalue_conversion)
- (build_unary_op
- (TRUTH_NOT_EXPR,
- TREE_VALUE (objc_rethrow_exception), 0)),
+ c_expand_start_cond (lang_hooks.truthvalue_conversion
+ (build_unary_op (TRUTH_NOT_EXPR,
+ TREE_VALUE (objc_rethrow_exception),
+ 0)),
0, if_stmt);
objc_enter_block ();
objc_build_try_exit_fragment ();
if_nesting_count++;
c_expand_start_cond
- ((*lang_hooks.truthvalue_conversion) (TREE_VALUE (objc_rethrow_exception)),
+ (lang_hooks.truthvalue_conversion (TREE_VALUE (objc_rethrow_exception)),
0, if_stmt);
objc_enter_block ();
objc_build_throw_stmt (TREE_VALUE (objc_rethrow_exception));
if (flags & TDF_DETAILS)
{
const char *funcname
- = (*lang_hooks.decl_printable_name) (current_function_decl, 2);
+ = lang_hooks.decl_printable_name (current_function_decl, 2);
fputc ('\n', file);
fprintf (file, ";; Function %s\n\n", funcname);
const char * const fmt_str_1 = "%-30s%13lu%11lu%c\n";
const char * const fmt_str_3 = "%-43s%11lu%c\n";
const char *funcname
- = (*lang_hooks.decl_printable_name) (current_function_decl, 2);
+ = lang_hooks.decl_printable_name (current_function_decl, 2);
fprintf (file, "\nCFG Statistics for %s\n\n", funcname);
edge e;
basic_block bb;
const char *funcname
- = (*lang_hooks.decl_printable_name) (current_function_decl, 2);
+ = lang_hooks.decl_printable_name (current_function_decl, 2);
/* Write the file header. */
fprintf (file, "graph: { title: \"%s\"\n", funcname);
basic_block bb;
tree chain;
- fprintf (file, "%s (", (*lang_hooks.decl_printable_name) (fn, 2));
+ fprintf (file, "%s (", lang_hooks.decl_printable_name (fn, 2));
arg = DECL_ARGUMENTS (fn);
while (arg)
basic_block bb;
block_stmt_iterator si;
const char *funcname
- = (*lang_hooks.decl_printable_name) (current_function_decl, 2);
+ = lang_hooks.decl_printable_name (current_function_decl, 2);
fprintf (file, "\nDef-use edges for function %s\n", funcname);
const char * const fmt_str_1 = "%-30s%13lu%11lu%c\n";
const char * const fmt_str_3 = "%-43s%11lu%c\n";
const char *funcname
- = (*lang_hooks.decl_printable_name) (current_function_decl, 2);
+ = lang_hooks.decl_printable_name (current_function_decl, 2);
collect_dfa_stats (&dfa_stats);
/* We're building a clone; DECL_INITIAL is still
error_mark_node, and current_binding_level is the parm
binding level. */
- (*lang_hooks.decls.insert_block) (new_block);
+ lang_hooks.decls.insert_block (new_block);
else
{
/* Attach this new block after the DECL_INITIAL block for the
for (parg = arg_copy; *parg; parg = &TREE_CHAIN (*parg))
{
tree new = copy_node (*parg);
- (*lang_hooks.dup_lang_specific_decl) (new);
+ lang_hooks.dup_lang_specific_decl (new);
DECL_ABSTRACT_ORIGIN (new) = DECL_ORIGIN (*parg);
insert_decl_map (&id, *parg, new);
TREE_CHAIN (new) = TREE_CHAIN (*parg);
return NULL_TREE;
}
- result = (*lang_hooks.tree_inlining.walk_subtrees) (tp, &walk_subtrees, func,
- data, htab);
+ result = lang_hooks.tree_inlining.walk_subtrees (tp, &walk_subtrees, func,
+ data, htab);
if (result || ! walk_subtrees)
return result;
}
#endif
- if ((*lang_hooks.tree_inlining.tree_chain_matters_p) (*tp))
+ if (lang_hooks.tree_inlining.tree_chain_matters_p (*tp))
/* Check our siblings. */
WALK_SUBTREE_TAIL (TREE_CHAIN (*tp));
}
{
basic_block bb;
const char *funcname
- = (*lang_hooks.decl_printable_name) (current_function_decl, 2);
+ = lang_hooks.decl_printable_name (current_function_decl, 2);
fprintf (file, "SSA information for %s\n\n", funcname);
{
const char *funcname = NULL;
if (DECL_NAME (current_function_decl))
- funcname = (*lang_hooks.decl_printable_name) (current_function_decl, 1);
+ funcname = lang_hooks.decl_printable_name (current_function_decl, 1);
if (funcname == NULL)
funcname = "anonymous fn";
}
if (declname == NULL)
- declname = (*lang_hooks.decl_printable_name) (decl, 3);
+ declname = lang_hooks.decl_printable_name (decl, 3);
if (declname == NULL)
declname = "<unnamed variable>";
colon = line = "";
/* Add (FUNCTION). */
- name = (*lang_hooks.decl_printable_name) (current_function_decl, 1);
+ name = lang_hooks.decl_printable_name (current_function_decl, 1);
if (name)
{
op = " (";
if (dump_file)
{
const char *dname, *aname;
- dname = (*lang_hooks.decl_printable_name) (current_function_decl, 2);
+ dname = lang_hooks.decl_printable_name (current_function_decl, 2);
aname = (IDENTIFIER_POINTER
(DECL_ASSEMBLER_NAME (current_function_decl)));
fprintf (dump_file, "\n;; Function %s (%s)\n\n", dname, aname);
#define PRINT_FUNCTION_NAME(NODE) pp_printf \
(buffer, "%s", TREE_CODE (NODE) == NOP_EXPR ? \
- (*lang_hooks.decl_printable_name) (TREE_OPERAND (NODE, 0), 1) : \
- (*lang_hooks.decl_printable_name) (NODE, 1))
+ lang_hooks.decl_printable_name (TREE_OPERAND (NODE, 0), 1) : \
+ lang_hooks.decl_printable_name (NODE, 1))
#define MASK_POINTER(P) ((unsigned)((unsigned long)(P) & 0xffff))
dump_alias_stats (FILE *file)
{
const char *funcname
- = (*lang_hooks.decl_printable_name) (current_function_decl, 2);
+ = lang_hooks.decl_printable_name (current_function_decl, 2);
fprintf (file, "\nAlias statistics for %s\n\n", funcname);
fprintf (file, "Total alias queries:\t%u\n", alias_stats.alias_queries);
fprintf (file, "Total alias mayalias results:\t%u\n",
{
size_t i;
const char *funcname
- = (*lang_hooks.decl_printable_name) (current_function_decl, 2);
+ = lang_hooks.decl_printable_name (current_function_decl, 2);
fprintf (file, "\nAlias information for %s\n\n", funcname);
block_stmt_iterator si;
size_t i;
const char *fname =
- (*lang_hooks.decl_printable_name) (current_function_decl, 2);
+ lang_hooks.decl_printable_name (current_function_decl, 2);
fprintf (file, "\n\nPointed-to sets for pointers in %s\n\n", fname);