diff options
Diffstat (limited to 'gcc/explow.c')
-rw-r--r-- | gcc/explow.c | 135 |
1 files changed, 41 insertions, 94 deletions
diff --git a/gcc/explow.c b/gcc/explow.c index 9568afc340e..e9ca57b7803 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -1,6 +1,6 @@ /* Subroutines for manipulating rtx's in semantically interesting ways. Copyright (C) 1987, 1991, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of GCC. @@ -38,16 +38,14 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "recog.h" #include "langhooks.h" -static rtx break_out_memory_refs PARAMS ((rtx)); -static void emit_stack_probe PARAMS ((rtx)); +static rtx break_out_memory_refs (rtx); +static void emit_stack_probe (rtx); /* Truncate and perhaps sign-extend C as appropriate for MODE. */ HOST_WIDE_INT -trunc_int_for_mode (c, mode) - HOST_WIDE_INT c; - enum machine_mode mode; +trunc_int_for_mode (HOST_WIDE_INT c, enum machine_mode mode) { int width = GET_MODE_BITSIZE (mode); @@ -78,9 +76,7 @@ trunc_int_for_mode (c, mode) This function should be used via the `plus_constant' macro. */ rtx -plus_constant_wide (x, c) - rtx x; - HOST_WIDE_INT c; +plus_constant_wide (rtx x, HOST_WIDE_INT c) { RTX_CODE code; rtx y; @@ -206,9 +202,7 @@ plus_constant_wide (x, c) it is not isomorphic to X. */ rtx -eliminate_constant_term (x, constptr) - rtx x; - rtx *constptr; +eliminate_constant_term (rtx x, rtx *constptr) { rtx x0, x1; rtx tem; @@ -244,8 +238,7 @@ eliminate_constant_term (x, constptr) /* Return an rtx for the size in bytes of the value of EXP. */ rtx -expr_size (exp) - tree exp; +expr_size (tree exp) { tree size = (*lang_hooks.expr_size) (exp); @@ -259,8 +252,7 @@ expr_size (exp) if the size can vary or is larger than an integer. */ HOST_WIDE_INT -int_expr_size (exp) - tree exp; +int_expr_size (tree exp) { tree t = (*lang_hooks.expr_size) (exp); @@ -292,8 +284,7 @@ int_expr_size (exp) Values returned by expand_expr with 1 for sum_ok fit this constraint. */ static rtx -break_out_memory_refs (x) - rtx x; +break_out_memory_refs (rtx x) { if (GET_CODE (x) == MEM || (CONSTANT_P (x) && CONSTANT_ADDRESS_P (x) @@ -321,9 +312,7 @@ break_out_memory_refs (x) used. */ rtx -convert_memory_address (to_mode, x) - enum machine_mode to_mode; - rtx x; +convert_memory_address (enum machine_mode to_mode, rtx x) { enum machine_mode from_mode = to_mode == ptr_mode ? Pmode : ptr_mode; rtx temp; @@ -409,8 +398,7 @@ convert_memory_address (to_mode, x) but then you wouldn't get indexed addressing in the reference. */ rtx -copy_all_regs (x) - rtx x; +copy_all_regs (rtx x) { if (GET_CODE (x) == REG) { @@ -439,9 +427,7 @@ copy_all_regs (x) works by copying X or subexpressions of it into registers. */ rtx -memory_address (mode, x) - enum machine_mode mode; - rtx x; +memory_address (enum machine_mode mode, rtx x) { rtx oldx = x; @@ -569,9 +555,7 @@ memory_address (mode, x) /* Like `memory_address' but pretend `flag_force_addr' is 0. */ rtx -memory_address_noforce (mode, x) - enum machine_mode mode; - rtx x; +memory_address_noforce (enum machine_mode mode, rtx x) { int ambient_force_addr = flag_force_addr; rtx val; @@ -586,8 +570,7 @@ memory_address_noforce (mode, x) Pass through anything else unchanged. */ rtx -validize_mem (ref) - rtx ref; +validize_mem (rtx ref) { if (GET_CODE (ref) != MEM) return ref; @@ -604,9 +587,7 @@ validize_mem (ref) appropriate. */ void -maybe_set_unchanging (ref, t) - rtx ref; - tree t; +maybe_set_unchanging (rtx ref, tree t) { /* We can set RTX_UNCHANGING_P from TREE_READONLY for decls whose initialization is only executed once, or whose initializer always @@ -635,8 +616,7 @@ maybe_set_unchanging (ref, t) Perhaps even if it is a MEM, if there is no need to change it. */ rtx -stabilize (x) - rtx x; +stabilize (rtx x) { if (GET_CODE (x) != MEM || ! rtx_unstable_p (XEXP (x, 0))) @@ -649,8 +629,7 @@ stabilize (x) /* Copy the value or contents of X to a new temp reg and return that reg. */ rtx -copy_to_reg (x) - rtx x; +copy_to_reg (rtx x) { rtx temp = gen_reg_rtx (GET_MODE (x)); @@ -669,8 +648,7 @@ copy_to_reg (x) in case X is a constant. */ rtx -copy_addr_to_reg (x) - rtx x; +copy_addr_to_reg (rtx x) { return copy_to_mode_reg (Pmode, x); } @@ -679,9 +657,7 @@ copy_addr_to_reg (x) in case X is a constant. */ rtx -copy_to_mode_reg (mode, x) - enum machine_mode mode; - rtx x; +copy_to_mode_reg (enum machine_mode mode, rtx x) { rtx temp = gen_reg_rtx (mode); @@ -706,9 +682,7 @@ copy_to_mode_reg (mode, x) since we mark it as a "constant" register. */ rtx -force_reg (mode, x) - enum machine_mode mode; - rtx x; +force_reg (enum machine_mode mode, rtx x) { rtx temp, insn, set; @@ -749,8 +723,7 @@ force_reg (mode, x) that reg. Otherwise, return X. */ rtx -force_not_mem (x) - rtx x; +force_not_mem (rtx x) { rtx temp; @@ -767,9 +740,7 @@ force_not_mem (x) MODE is the mode to use for X in case it is a constant. */ rtx -copy_to_suggested_reg (x, target, mode) - rtx x, target; - enum machine_mode mode; +copy_to_suggested_reg (rtx x, rtx target, enum machine_mode mode) { rtx temp; @@ -789,11 +760,8 @@ copy_to_suggested_reg (x, target, mode) FOR_CALL is nonzero if this call is promoting args for a call. */ enum machine_mode -promote_mode (type, mode, punsignedp, for_call) - tree type; - enum machine_mode mode; - int *punsignedp; - int for_call ATTRIBUTE_UNUSED; +promote_mode (tree type, enum machine_mode mode, int *punsignedp, + int for_call ATTRIBUTE_UNUSED) { enum tree_code code = TREE_CODE (type); int unsignedp = *punsignedp; @@ -832,8 +800,7 @@ promote_mode (type, mode, punsignedp, for_call) This pops when ADJUST is positive. ADJUST need not be constant. */ void -adjust_stack (adjust) - rtx adjust; +adjust_stack (rtx adjust) { rtx temp; adjust = protect_from_queue (adjust, 0); @@ -863,8 +830,7 @@ adjust_stack (adjust) This pushes when ADJUST is positive. ADJUST need not be constant. */ void -anti_adjust_stack (adjust) - rtx adjust; +anti_adjust_stack (rtx adjust) { rtx temp; adjust = protect_from_queue (adjust, 0); @@ -894,8 +860,7 @@ anti_adjust_stack (adjust) by this machine. SIZE is the desired size, which need not be constant. */ rtx -round_push (size) - rtx size; +round_push (rtx size) { int align = PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT; @@ -933,14 +898,11 @@ round_push (size) are emitted at the current position. */ void -emit_stack_save (save_level, psave, after) - enum save_level save_level; - rtx *psave; - rtx after; +emit_stack_save (enum save_level save_level, rtx *psave, rtx after) { rtx sa = *psave; /* The default is that we use a move insn and save in a Pmode object. */ - rtx (*fcn) PARAMS ((rtx, rtx)) = gen_move_insn; + rtx (*fcn) (rtx, rtx) = gen_move_insn; enum machine_mode mode = STACK_SAVEAREA_MODE (save_level); /* See if this machine has anything special to do for this kind of save. */ @@ -1016,13 +978,10 @@ emit_stack_save (save_level, psave, after) current position. */ void -emit_stack_restore (save_level, sa, after) - enum save_level save_level; - rtx after; - rtx sa; +emit_stack_restore (enum save_level save_level, rtx sa, rtx after) { /* The default is that we use a move insn. */ - rtx (*fcn) PARAMS ((rtx, rtx)) = gen_move_insn; + rtx (*fcn) (rtx, rtx) = gen_move_insn; /* See if this machine has anything special to do for this kind of save. */ switch (save_level) @@ -1056,7 +1015,7 @@ emit_stack_restore (save_level, sa, after) references to variable arrays below the code that deletes (pops) the arrays. */ emit_insn (gen_rtx_CLOBBER (VOIDmode, - gen_rtx_MEM (BLKmode, + gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode)))); emit_insn (gen_rtx_CLOBBER (VOIDmode, gen_rtx_MEM (BLKmode, stack_pointer_rtx))); @@ -1083,8 +1042,7 @@ emit_stack_restore (save_level, sa, after) frame, thus causing a crash if a longjmp unwinds to it. */ void -optimize_save_area_alloca (insns) - rtx insns; +optimize_save_area_alloca (rtx insns) { rtx insn; @@ -1168,10 +1126,7 @@ optimize_save_area_alloca (insns) KNOWN_ALIGN is the alignment (in bits) that we know SIZE has. */ rtx -allocate_dynamic_stack_space (size, target, known_align) - rtx size; - rtx target; - int known_align; +allocate_dynamic_stack_space (rtx size, rtx target, int known_align) { #ifdef SETJMP_VIA_SAVE_AREA rtx setjmpless_size = NULL_RTX; @@ -1416,8 +1371,7 @@ allocate_dynamic_stack_space (size, target, known_align) static GTY(()) rtx stack_check_libfunc; void -set_stack_check_libfunc (libfunc) - rtx libfunc; +set_stack_check_libfunc (rtx libfunc) { stack_check_libfunc = libfunc; } @@ -1425,8 +1379,7 @@ set_stack_check_libfunc (libfunc) /* Emit one stack probe at ADDRESS, an address within the stack. */ static void -emit_stack_probe (address) - rtx address; +emit_stack_probe (rtx address) { rtx memref = gen_rtx_MEM (word_mode, address); @@ -1451,9 +1404,7 @@ emit_stack_probe (address) #endif void -probe_stack_range (first, size) - HOST_WIDE_INT first; - rtx size; +probe_stack_range (HOST_WIDE_INT first, rtx size) { /* First ensure SIZE is Pmode. */ if (GET_MODE (size) != VOIDmode && GET_MODE (size) != Pmode) @@ -1585,10 +1536,8 @@ probe_stack_range (first, size) and 0 otherwise. */ rtx -hard_function_value (valtype, func, outgoing) - tree valtype; - tree func ATTRIBUTE_UNUSED; - int outgoing ATTRIBUTE_UNUSED; +hard_function_value (tree valtype, tree func ATTRIBUTE_UNUSED, + int outgoing ATTRIBUTE_UNUSED) { rtx val; @@ -1631,8 +1580,7 @@ hard_function_value (valtype, func, outgoing) in which a scalar value of mode MODE was returned by a library call. */ rtx -hard_libcall_value (mode) - enum machine_mode mode; +hard_libcall_value (enum machine_mode mode) { return LIBCALL_VALUE (mode); } @@ -1643,8 +1591,7 @@ hard_libcall_value (mode) what `enum tree_code' means. */ int -rtx_to_tree_code (code) - enum rtx_code code; +rtx_to_tree_code (enum rtx_code code) { enum tree_code tcode; |