mirror of
https://gcc.gnu.org/git/gcc.git
synced 2025-01-07 11:33:45 +08:00
builtins.c (ind_gimplify_va_arg_expr): New.
* builtins.c (ind_gimplify_va_arg_expr): New. * tree.h (ind_gimplify_va_arg_expr): Declare. * config/arc/arc.c (arc_gimplify_va_arg_expr): Use it. From-SVN: r84317
This commit is contained in:
parent
b42271d678
commit
083385aae9
@ -1,3 +1,9 @@
|
||||
2004-07-08 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* builtins.c (ind_gimplify_va_arg_expr): New.
|
||||
* tree.h (ind_gimplify_va_arg_expr): Declare.
|
||||
* config/arc/arc.c (arc_gimplify_va_arg_expr): Use it.
|
||||
|
||||
2004-07-08 Jan Beulich <jbeulich@novell.com>
|
||||
|
||||
* expmed.c (extract_bit_field): Correct condition to use vec_extract
|
||||
|
@ -4549,6 +4549,17 @@ std_gimplify_va_arg_expr (tree valist, tree type, tree *pre_p, tree *post_p)
|
||||
return build_fold_indirect_ref (addr);
|
||||
}
|
||||
|
||||
/* Like std_gimplify_va_arg_expr, but uses pass-by-reference. */
|
||||
|
||||
tree
|
||||
ind_gimplify_va_arg_expr (tree valist, tree type, tree *pre_p, tree *post_p)
|
||||
{
|
||||
tree t;
|
||||
t = build_pointer_type (type);
|
||||
t = std_gimplify_va_arg_expr (valist, t, pre_p, post_p);
|
||||
return build_fold_indirect_ref (t);
|
||||
}
|
||||
|
||||
/* Return a dummy expression of type TYPE in order to keep going after an
|
||||
error. */
|
||||
|
||||
|
@ -2299,11 +2299,7 @@ arc_gimplify_va_arg_expr (tree valist, tree type, tree *pre_p, tree *post_p)
|
||||
than 8 bytes are passed by reference. */
|
||||
|
||||
if (AGGREGATE_TYPE_P (type) || int_size_in_bytes (type) > 8)
|
||||
{
|
||||
tree type_ptr = build_pointer_type (type);
|
||||
tree addr = std_gimplify_va_arg_expr (valist, type_ptr, pre_p, post_p);
|
||||
return build_fold_indirect_ref (addr);
|
||||
}
|
||||
return ind_gimplify_va_arg_expr (valist, type, pre_p, post_p);
|
||||
|
||||
return std_gimplify_va_arg_expr (valist, type, pre_p, post_p);
|
||||
}
|
||||
|
@ -3434,6 +3434,7 @@ extern tree strip_float_extensions (tree);
|
||||
extern tree simplify_builtin (tree, int);
|
||||
extern tree c_strlen (tree, int);
|
||||
extern tree std_gimplify_va_arg_expr (tree, tree, tree *, tree *);
|
||||
extern tree ind_gimplify_va_arg_expr (tree, tree, tree *, tree *);
|
||||
|
||||
/* In convert.c */
|
||||
extern tree strip_float_extensions (tree);
|
||||
|
Loading…
Reference in New Issue
Block a user