Commit 28f4ec01 by Bernd Schmidt Committed by Bernd Schmidt

Break out builtin function expansion from expr.c

From-SVN: r28217
parent 89d68df8
Thu Jul 22 11:25:20 1999 Bernd Schmidt <bernds@cygnus.co.uk>
* builtins.c: New file.
* expr.c (saveregs_value, apply_args_value): Delete definition,
moved into builtins.c.
(string_constant): No longer static.
(get_pointer_alignment, c_strlen, get_memory_rtx, expand_builtin,
apply_args_size, apply_result_size, result_vector,
expand_builtin_apply_args, expand_builtin_apply,
expand_builtin_return): Delete functions, moved into builtins.c.
(INCOMING_REGNO, OUTGOING_REGNO): Delete unused macros.
* expr.h (saveregs_value, apply_args_value): Declare variables.
(expand_builtin, string_constant): Declare functions.
* Makefile.in: Update to build builtin.o.
Wed Jul 21 12:37:34 IDT 1999 Vladik Goytin (goytin@yahoo.com) Wed Jul 21 12:37:34 IDT 1999 Vladik Goytin (goytin@yahoo.com)
* config/arm/aout.h (ASM_OUTPUT_SECTION_NAME): New macro: Support * config/arm/aout.h (ASM_OUTPUT_SECTION_NAME): New macro: Support
......
...@@ -673,8 +673,8 @@ SCHED_CFLAGS = @sched_cflags@ ...@@ -673,8 +673,8 @@ SCHED_CFLAGS = @sched_cflags@
# Language-independent object files. # Language-independent object files.
OBJS = toplev.o version.o tree.o print-tree.o stor-layout.o fold-const.o \ OBJS = toplev.o version.o tree.o print-tree.o stor-layout.o fold-const.o \
function.o stmt.o except.o expr.o calls.o expmed.o explow.o optabs.o \ function.o stmt.o except.o expr.o calls.o expmed.o explow.o optabs.o real.o \
intl.o varasm.o rtl.o print-rtl.o rtlanal.o emit-rtl.o genrtl.o real.o \ builtins.o intl.o varasm.o rtl.o print-rtl.o rtlanal.o emit-rtl.o genrtl.o \
dbxout.o sdbout.o dwarfout.o dwarf2out.o xcoffout.o bitmap.o alias.o gcse.o \ dbxout.o sdbout.o dwarfout.o dwarf2out.o xcoffout.o bitmap.o alias.o gcse.o \
integrate.o jump.o cse.o loop.o unroll.o flow.o stupid.o combine.o varray.o \ integrate.o jump.o cse.o loop.o unroll.o flow.o stupid.o combine.o varray.o \
regclass.o regmove.o local-alloc.o global.o reload.o reload1.o caller-save.o \ regclass.o regmove.o local-alloc.o global.o reload.o reload1.o caller-save.o \
...@@ -1484,6 +1484,10 @@ except.o : except.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \ ...@@ -1484,6 +1484,10 @@ except.o : except.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
expr.o : expr.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h function.h \ expr.o : expr.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h function.h \
$(REGS_H) insn-flags.h insn-codes.h $(EXPR_H) insn-config.h $(RECOG_H) \ $(REGS_H) insn-flags.h insn-codes.h $(EXPR_H) insn-config.h $(RECOG_H) \
output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h except.h output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h except.h
builtins.o : builtins.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
function.h $(REGS_H) insn-flags.h insn-codes.h $(EXPR_H) insn-config.h \
$(RECOG_H) output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h \
except.h
calls.o : calls.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h $(EXPR_H) \ calls.o : calls.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h $(EXPR_H) \
insn-flags.h $(REGS_H) toplev.h output.h insn-flags.h $(REGS_H) toplev.h output.h
expmed.o : expmed.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \ expmed.o : expmed.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
......
This diff is collapsed. Click to expand it.
...@@ -75,6 +75,14 @@ extern rtx forced_labels; ...@@ -75,6 +75,14 @@ extern rtx forced_labels;
So we can mark them all live at the end of the function, if stupid. */ So we can mark them all live at the end of the function, if stupid. */
extern rtx save_expr_regs; extern rtx save_expr_regs;
/* Nonzero means __builtin_saveregs has already been done in this function.
The value is the pseudoreg containing the value __builtin_saveregs
returned. */
extern rtx saveregs_value;
/* Similarly for __builtin_apply_args. */
extern rtx apply_args_value;
extern int current_function_calls_alloca; extern int current_function_calls_alloca;
extern int current_function_outgoing_args_size; extern int current_function_outgoing_args_size;
...@@ -727,6 +735,13 @@ extern rtx get_condition PROTO((rtx, rtx *)); ...@@ -727,6 +735,13 @@ extern rtx get_condition PROTO((rtx, rtx *));
/* Generate a conditional trap instruction. */ /* Generate a conditional trap instruction. */
extern rtx gen_cond_trap PROTO((enum rtx_code, rtx, rtx, rtx)); extern rtx gen_cond_trap PROTO((enum rtx_code, rtx, rtx, rtx));
/* Functions from builtins.c: */
#ifdef TREE_CODE
extern rtx expand_builtin PROTO((tree, rtx, rtx, enum machine_mode, int));
#endif
extern rtx expand_builtin_setjmp PROTO((rtx, rtx, rtx, rtx));
/* Functions from expr.c: */ /* Functions from expr.c: */
/* This is run once per compilation to set up which modes can be used /* This is run once per compilation to set up which modes can be used
...@@ -831,8 +846,6 @@ extern rtx store_expr PROTO((tree, rtx, int)); ...@@ -831,8 +846,6 @@ extern rtx store_expr PROTO((tree, rtx, int));
Useful after calling expand_expr with 1 as sum_ok. */ Useful after calling expand_expr with 1 as sum_ok. */
extern rtx force_operand PROTO((rtx, rtx)); extern rtx force_operand PROTO((rtx, rtx));
extern rtx expand_builtin_setjmp PROTO((rtx, rtx, rtx, rtx));
#ifdef TREE_CODE #ifdef TREE_CODE
/* Generate code for computing expression EXP. /* Generate code for computing expression EXP.
An rtx for the computed value is returned. The value is never null. An rtx for the computed value is returned. The value is never null.
...@@ -853,6 +866,10 @@ extern void clear_pending_stack_adjust PROTO((void)); ...@@ -853,6 +866,10 @@ extern void clear_pending_stack_adjust PROTO((void));
extern void do_pending_stack_adjust PROTO((void)); extern void do_pending_stack_adjust PROTO((void));
#ifdef TREE_CODE #ifdef TREE_CODE
/* Return the tree node and offset if a given argument corresponds to
a string constant. */
extern tree string_constant PROTO((tree, tree *));
/* Generate code to evaluate EXP and jump to LABEL if the value is zero. */ /* Generate code to evaluate EXP and jump to LABEL if the value is zero. */
extern void jumpifnot PROTO((tree, rtx)); extern void jumpifnot PROTO((tree, rtx));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment