Mercurial > hg > CbC > CbC_gcc
diff gcc/cbc-goto.h @ 58:3aaf117db171
error at dwarf2out.c
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 15 Feb 2010 14:58:24 +0900 |
parents | 2476ed92181e |
children |
line wrap: on
line diff
--- a/gcc/cbc-goto.h Mon Feb 15 00:54:17 2010 +0900 +++ b/gcc/cbc-goto.h Mon Feb 15 14:58:24 2010 +0900 @@ -17,22 +17,22 @@ static rtx expand_cbc_goto (tree exp, rtx target, tree fndecl, tree funtype, tree fntype, - tree addr, - int ignore, - int flags, - int num_actuals, - struct arg_data *args, - struct args_size *args_size, - CUMULATIVE_ARGS args_so_far, - rtx old_stack_level, - int reg_parm_stack_space, - int old_pending_adj, - unsigned HOST_WIDE_INT preferred_stack_boundary, - unsigned HOST_WIDE_INT preferred_unit_stack_boundary, - rtx structure_value_addr, - //int structure_value_addr_parm, - int old_inhibit_defer_pop - ) + tree addr, + int ignore, + int flags, + int num_actuals, + struct arg_data *args, + struct args_size *args_size, + CUMULATIVE_ARGS args_so_far, + rtx old_stack_level, + int reg_parm_stack_space, + int old_pending_adj, + unsigned HOST_WIDE_INT preferred_stack_boundary, + unsigned HOST_WIDE_INT preferred_unit_stack_boundary, + rtx structure_value_addr, + //int structure_value_addr_parm, + int old_inhibit_defer_pop + ) { /* folowing variables is just copied from expand_call. */ @@ -101,9 +101,9 @@ exception handling can fail; PR 19225. */ if (pending_stack_adjust >= 32 || (pending_stack_adjust > 0 - && (flags & ECF_MAY_BE_ALLOCA)) + && (flags & ECF_MAY_BE_ALLOCA)) || (pending_stack_adjust > 0 - && flag_exceptions && !(flags & ECF_NOTHROW)) + && flag_exceptions && !(flags & ECF_NOTHROW)) || pass == 0) do_pending_stack_adjust (); @@ -119,20 +119,20 @@ caller provided. */ unadjusted_args_size = compute_argument_block_size (reg_parm_stack_space, - &adjusted_args_size, - fndecl, fntype, - (pass == 0 ? 0 - : preferred_stack_boundary)); + &adjusted_args_size, + fndecl, fntype, + (pass == 0 ? 0 + : preferred_stack_boundary)); old_stack_allocated = stack_pointer_delta - pending_stack_adjust; - argblock = crtl->args.internal_arg_pointer; + argblock = crtl->args.internal_arg_pointer; - argblock + argblock #ifdef STACK_GROWS_DOWNWARD - = plus_constant (argblock, crtl->args.pretend_args_size); + = plus_constant (argblock, crtl->args.pretend_args_size); #else - = plus_constant (argblock, -crtl->args.pretend_args_size); + = plus_constant (argblock, -crtl->args.pretend_args_size); #endif @@ -143,65 +143,65 @@ if (ACCUMULATE_OUTGOING_ARGS) { /* The save/restore code in store_one_arg handles all - cases except one: a constructor call (including a C - function returning a BLKmode struct) to initialize - an argument. */ + cases except one: a constructor call (including a C + function returning a BLKmode struct) to initialize + an argument. */ if (stack_arg_under_construction) - { - rtx push_size - = GEN_INT (adjusted_args_size.constant - + (OUTGOING_REG_PARM_STACK_SPACE ((!fndecl ? fntype - : TREE_TYPE (fndecl))) ? 0 - : reg_parm_stack_space)); - if (old_stack_level == 0) - { - emit_stack_save (SAVE_BLOCK, &old_stack_level, - NULL_RTX); - old_stack_pointer_delta = stack_pointer_delta; - old_pending_adj = pending_stack_adjust; - pending_stack_adjust = 0; - /* stack_arg_under_construction says whether a stack - arg is being constructed at the old stack level. - Pushing the stack gets a clean outgoing argument - block. */ - old_stack_arg_under_construction - = stack_arg_under_construction; - stack_arg_under_construction = 0; - /* Make a new map for the new argument list. */ - if (stack_usage_map_buf) - free (stack_usage_map_buf); - stack_usage_map_buf = XNEWVEC (char, highest_outgoing_arg_in_use); - stack_usage_map = stack_usage_map_buf; - memset (stack_usage_map, 0, highest_outgoing_arg_in_use); - highest_outgoing_arg_in_use = 0; - } - allocate_dynamic_stack_space (push_size, NULL_RTX, - BITS_PER_UNIT); - } + { + rtx push_size + = GEN_INT (adjusted_args_size.constant + + (OUTGOING_REG_PARM_STACK_SPACE ((!fndecl ? fntype + : TREE_TYPE (fndecl))) ? 0 + : reg_parm_stack_space)); + if (old_stack_level == 0) + { + emit_stack_save (SAVE_BLOCK, &old_stack_level, + NULL_RTX); + old_stack_pointer_delta = stack_pointer_delta; + old_pending_adj = pending_stack_adjust; + pending_stack_adjust = 0; + /* stack_arg_under_construction says whether a stack + arg is being constructed at the old stack level. + Pushing the stack gets a clean outgoing argument + block. */ + old_stack_arg_under_construction + = stack_arg_under_construction; + stack_arg_under_construction = 0; + /* Make a new map for the new argument list. */ + if (stack_usage_map_buf) + free (stack_usage_map_buf); + stack_usage_map_buf = XNEWVEC (char, highest_outgoing_arg_in_use); + stack_usage_map = stack_usage_map_buf; + memset (stack_usage_map, 0, highest_outgoing_arg_in_use); + highest_outgoing_arg_in_use = 0; + } + allocate_dynamic_stack_space (push_size, NULL_RTX, + BITS_PER_UNIT); + } /* If argument evaluation might modify the stack pointer, - copy the address of the argument list to a register. */ + copy the address of the argument list to a register. */ for (i = 0; i < num_actuals; i++) - if (args[i].pass_on_stack) - { - argblock = copy_addr_to_reg (argblock); - break; - } - } + if (args[i].pass_on_stack) + { + argblock = copy_addr_to_reg (argblock); + break; + } + } compute_argument_addresses (args, argblock, num_actuals); /* in the case that - a function goto codesegment. + a function goto codesegment. adjust stack space. */ if ( !CbC_IS_CODE_SEGMENT(TREE_TYPE(current_function_decl)) ) - //if ( !(current_function_decl&&CbC_IS_CODE_SEGMENT(current_function_decl)) ) + //if ( !(current_function_decl&&CbC_IS_CODE_SEGMENT(current_function_decl)) ) { HOST_WIDE_INT padding; - padding = CbC_PRETENDED_STACK_SIZE - - (crtl->args.size - crtl->args.pretend_args_size); + padding = CbC_PRETENDED_STACK_SIZE - + (crtl->args.size - crtl->args.pretend_args_size); if (0&&padding > 0) - anti_adjust_stack (GEN_INT (padding)); + anti_adjust_stack (GEN_INT (padding)); } /* Now that the stack is properly aligned, pops can't safely @@ -219,9 +219,9 @@ precompute_register_parameters (num_actuals, args, ®_parm_seen); if (CALL_EXPR_STATIC_CHAIN (exp)) - static_chain_value = expand_normal (CALL_EXPR_STATIC_CHAIN (exp)); + static_chain_value = expand_normal (CALL_EXPR_STATIC_CHAIN (exp)); else - static_chain_value = 0; + static_chain_value = 0; /* parallel assignment */ @@ -232,10 +232,10 @@ for (i = 0; i < num_actuals; i++) { if (args[i].reg == 0 || args[i].pass_on_stack) - { - preexpand_argument_expr (&args[i], - adjusted_args_size.var != 0); - } + { + preexpand_argument_expr (&args[i], + adjusted_args_size.var != 0); + } } @@ -251,13 +251,13 @@ for (i = 0; i < num_actuals; i++) { if (args[store_order[i]].reg == 0 - || args[store_order[i]].pass_on_stack - || args[store_order[i]].partial!=0 ) - { - expand_one_arg_push (&args[store_order[i]], argblock, flags, - adjusted_args_size.var != 0, - reg_parm_stack_space); - } + || args[store_order[i]].pass_on_stack + || args[store_order[i]].partial!=0 ) + { + expand_one_arg_push (&args[store_order[i]], argblock, flags, + adjusted_args_size.var != 0, + reg_parm_stack_space); + } } @@ -271,13 +271,13 @@ #endif /* */ - funexp = prepare_call_address (funexp, static_chain_value, - &call_fusage, reg_parm_seen, pass == 0); + funexp = prepare_call_address (fndecl, funexp, static_chain_value, + &call_fusage, reg_parm_seen, pass == 0); /* store args into register. */ load_register_parameters (args, num_actuals, &call_fusage, flags, - //pass == 0, &sibcall_failure); - 0, NULL); + //pass == 0, &sibcall_failure); + 0, NULL); /* Save a pointer to the last insn before the call, so that we can later safely search backwards to find the CALL_INSN. */ @@ -288,25 +288,25 @@ #ifdef FUNCTION_INCOMING_ARG if (pass == 0) next_arg_reg = FUNCTION_INCOMING_ARG (args_so_far, VOIDmode, - void_type_node, 1); + void_type_node, 1); else #endif next_arg_reg = FUNCTION_ARG (args_so_far, VOIDmode, - void_type_node, 1); + void_type_node, 1); /* All arguments and registers used for the call must be set up by now! */ /* Stack must be properly aligned now. */ gcc_assert (!pass - || !(stack_pointer_delta % preferred_unit_stack_boundary)); + || !(stack_pointer_delta % preferred_unit_stack_boundary)); #if 0 /* store environment. */ if ( env_tree!=NULL ) { emit_insn (gen_rtx_CLOBBER (VOIDmode, - gen_rtx_MEM (BLKmode, - hard_frame_pointer_rtx))); + gen_rtx_MEM (BLKmode, + hard_frame_pointer_rtx))); emit_move_insn (hard_frame_pointer_rtx, env_rtx); emit_insn (gen_rtx_USE (VOIDmode, hard_frame_pointer_rtx)); //pop_temp_slots (); @@ -320,21 +320,21 @@ preserve_temp_slots(funexp); /* Generate the actual call instruction. */ emit_call_1 (funexp, exp, fndecl, funtype, unadjusted_args_size, - adjusted_args_size.constant, struct_value_size, - //next_arg_reg, valreg, old_inhibit_defer_pop, call_fusage, - next_arg_reg, valreg, 0, call_fusage, - flags, & args_so_far); + adjusted_args_size.constant, struct_value_size, + //next_arg_reg, valreg, old_inhibit_defer_pop, call_fusage, + next_arg_reg, valreg, 0, call_fusage, + flags, & args_so_far); pop_temp_slots(); } else { - /* Generate the actual call instruction. */ - emit_call_1 (funexp, exp, fndecl, funtype, unadjusted_args_size, - adjusted_args_size.constant, struct_value_size, - //next_arg_reg, valreg, old_inhibit_defer_pop, call_fusage, - next_arg_reg, valreg, 0, call_fusage, - flags, & args_so_far); + /* Generate the actual call instruction. */ + emit_call_1 (funexp, exp, fndecl, funtype, unadjusted_args_size, + adjusted_args_size.constant, struct_value_size, + //next_arg_reg, valreg, old_inhibit_defer_pop, call_fusage, + next_arg_reg, valreg, 0, call_fusage, + flags, & args_so_far); } /* If a non-BLKmode value is returned at the most significant end @@ -347,7 +347,7 @@ && targetm.calls.return_in_msb (TREE_TYPE (exp))) { if (shift_return_value (TYPE_MODE (TREE_TYPE (exp)), false, valreg)) - sibcall_failure = 1; + sibcall_failure = 1; valreg = gen_rtx_REG (TYPE_MODE (TREE_TYPE (exp)), REGNO (valreg)); } @@ -359,27 +359,27 @@ if ((flags & ECF_NORETURN) || pass == 0) { /* The barrier must be emitted - immediately after the CALL_INSN. Some ports emit more - than just a CALL_INSN above, so we must search for it here. */ + immediately after the CALL_INSN. Some ports emit more + than just a CALL_INSN above, so we must search for it here. */ rtx last = get_last_insn (); while (!CALL_P (last)) - { - last = PREV_INSN (last); - /* There was no CALL_INSN? */ - gcc_assert (last != before_call); - } + { + last = PREV_INSN (last); + /* There was no CALL_INSN? */ + gcc_assert (last != before_call); + } emit_barrier_after (last); /* Stack adjustments after a noreturn call are dead code. - However when NO_DEFER_POP is in effect, we must preserve - stack_pointer_delta. */ + However when NO_DEFER_POP is in effect, we must preserve + stack_pointer_delta. */ if (inhibit_defer_pop == 0) - { - stack_pointer_delta = old_stack_allocated; - pending_stack_adjust = 0; - } + { + stack_pointer_delta = old_stack_allocated; + pending_stack_adjust = 0; + } } /* If value type not void, return an rtx for the value. */ @@ -388,38 +388,41 @@ || ignore) target = const0_rtx; - if (targetm.calls.promote_function_return(funtype)) + tree type = TREE_TYPE (exp); + int unsignedp = TYPE_UNSIGNED (type); + + /* if (targetm.calls.promote_function_return(funtype))*/ + if (promote_function_mode(type, TYPE_MODE (type), &unsignedp, + fndecl ? TREE_TYPE (fndecl) : fntype, 0)) { /* If we promoted this return value, make the proper SUBREG. - TARGET might be const0_rtx here, so be careful. */ + TARGET might be const0_rtx here, so be careful. */ if (REG_P (target) - && TYPE_MODE (TREE_TYPE (exp)) != BLKmode - && GET_MODE (target) != TYPE_MODE (TREE_TYPE (exp))) - { - tree type = TREE_TYPE (exp); - int unsignedp = TYPE_UNSIGNED (type); - int offset = 0; - enum machine_mode pmode; + && TYPE_MODE (TREE_TYPE (exp)) != BLKmode + && GET_MODE (target) != TYPE_MODE (TREE_TYPE (exp))) + { + int offset = 0; + enum machine_mode pmode; - pmode = promote_mode (type, TYPE_MODE (type), &unsignedp, 1); - /* If we don't promote as expected, something is wrong. */ - gcc_assert (GET_MODE (target) == pmode); + pmode = promote_mode (type, TYPE_MODE (type), &unsignedp);//, 1); + /* If we don't promote as expected, something is wrong. */ + gcc_assert (GET_MODE (target) == pmode); - if ((WORDS_BIG_ENDIAN || BYTES_BIG_ENDIAN) - && (GET_MODE_SIZE (GET_MODE (target)) - > GET_MODE_SIZE (TYPE_MODE (type)))) - { - offset = GET_MODE_SIZE (GET_MODE (target)) - - GET_MODE_SIZE (TYPE_MODE (type)); - if (! BYTES_BIG_ENDIAN) - offset = (offset / UNITS_PER_WORD) * UNITS_PER_WORD; - else if (! WORDS_BIG_ENDIAN) - offset %= UNITS_PER_WORD; - } - target = gen_rtx_SUBREG (TYPE_MODE (type), target, offset); - SUBREG_PROMOTED_VAR_P (target) = 1; - SUBREG_PROMOTED_UNSIGNED_SET (target, unsignedp); - } + if ((WORDS_BIG_ENDIAN || BYTES_BIG_ENDIAN) + && (GET_MODE_SIZE (GET_MODE (target)) + > GET_MODE_SIZE (TYPE_MODE (type)))) + { + offset = GET_MODE_SIZE (GET_MODE (target)) + - GET_MODE_SIZE (TYPE_MODE (type)); + if (! BYTES_BIG_ENDIAN) + offset = (offset / UNITS_PER_WORD) * UNITS_PER_WORD; + else if (! WORDS_BIG_ENDIAN) + offset %= UNITS_PER_WORD; + } + target = gen_rtx_SUBREG (TYPE_MODE (type), target, offset); + SUBREG_PROMOTED_VAR_P (target) = 1; + SUBREG_PROMOTED_UNSIGNED_SET (target, unsignedp); + } } /* If size of args is variable or this was a constructor call for a stack @@ -479,7 +482,7 @@ static void preexpand_argument_expr (struct arg_data *arg, - int variable_size ATTRIBUTE_UNUSED) + int variable_size ATTRIBUTE_UNUSED) { tree pval = arg->tree_value; rtx reg = 0; @@ -521,17 +524,17 @@ stack_arg_under_construction++; arg->value = expand_expr (pval, - (partial - || TYPE_MODE (TREE_TYPE (pval)) != arg->mode) - ? NULL_RTX : arg->stack, - VOIDmode, EXPAND_STACK_PARM); + (partial + || TYPE_MODE (TREE_TYPE (pval)) != arg->mode) + ? NULL_RTX : arg->stack, + VOIDmode, EXPAND_STACK_PARM); /* If we are promoting object (or for any other reason) the mode doesn't agree, convert the mode. */ if (arg->mode != TYPE_MODE (TREE_TYPE (pval))) arg->value = convert_modes (arg->mode, TYPE_MODE (TREE_TYPE (pval)), - arg->value, arg->unsignedp); + arg->value, arg->unsignedp); if (arg->pass_on_stack) stack_arg_under_construction--; @@ -549,7 +552,7 @@ static int expand_one_arg_push (struct arg_data *arg, rtx argblock, int flags, - int variable_size ATTRIBUTE_UNUSED, int reg_parm_stack_space) + int variable_size ATTRIBUTE_UNUSED, int reg_parm_stack_space) { tree pval = arg->tree_value; int used = 0; @@ -592,42 +595,42 @@ int size; /* Argument is a scalar, not entirely passed in registers. - (If part is passed in registers, arg->partial says how much - and emit_push_insn will take care of putting it there.) + (If part is passed in registers, arg->partial says how much + and emit_push_insn will take care of putting it there.) - Push it, and if its size is less than the - amount of space allocated to it, - also bump stack pointer by the additional space. - Note that in C the default argument promotions - will prevent such mismatches. */ + Push it, and if its size is less than the + amount of space allocated to it, + also bump stack pointer by the additional space. + Note that in C the default argument promotions + will prevent such mismatches. */ size = GET_MODE_SIZE (arg->mode); /* Compute how much space the push instruction will push. - On many machines, pushing a byte will advance the stack - pointer by a halfword. */ + On many machines, pushing a byte will advance the stack + pointer by a halfword. */ #ifdef PUSH_ROUNDING size = PUSH_ROUNDING (size); #endif used = size; /* Compute how much space the argument should get: - round up to a multiple of the alignment for arguments. */ + round up to a multiple of the alignment for arguments. */ if (none != FUNCTION_ARG_PADDING (arg->mode, TREE_TYPE (pval))) - used = (((size + PARM_BOUNDARY / BITS_PER_UNIT - 1) - / (PARM_BOUNDARY / BITS_PER_UNIT)) - * (PARM_BOUNDARY / BITS_PER_UNIT)); + used = (((size + PARM_BOUNDARY / BITS_PER_UNIT - 1) + / (PARM_BOUNDARY / BITS_PER_UNIT)) + * (PARM_BOUNDARY / BITS_PER_UNIT)); /* This isn't already where we want it on the stack, so put it there. - This can either be done with push or copy insns. */ + This can either be done with push or copy insns. */ emit_push_insn (arg->value, arg->mode, TREE_TYPE (pval), NULL_RTX, - PARM_BOUNDARY, partial, reg, used - size, argblock, - ARGS_SIZE_RTX (arg->locate.offset), reg_parm_stack_space, - ARGS_SIZE_RTX (arg->locate.alignment_pad)); + PARM_BOUNDARY, partial, reg, used - size, argblock, + ARGS_SIZE_RTX (arg->locate.offset), reg_parm_stack_space, + ARGS_SIZE_RTX (arg->locate.alignment_pad)); /* Unless this is a partially-in-register argument, the argument is now - in the stack. */ + in the stack. */ if (partial == 0) - arg->value = arg->stack; + arg->value = arg->stack; } else { @@ -638,88 +641,88 @@ rtx size_rtx; /* Pushing a nonscalar. - If part is passed in registers, PARTIAL says how much - and emit_push_insn will take care of putting it there. */ + If part is passed in registers, PARTIAL says how much + and emit_push_insn will take care of putting it there. */ /* Round its size up to a multiple - of the allocation unit for arguments. */ + of the allocation unit for arguments. */ if (arg->locate.size.var != 0) - { - excess = 0; - size_rtx = ARGS_SIZE_RTX (arg->locate.size); - } + { + excess = 0; + size_rtx = ARGS_SIZE_RTX (arg->locate.size); + } else - { - /* PUSH_ROUNDING has no effect on us, because emit_push_insn - for BLKmode is careful to avoid it. */ - excess = (arg->locate.size.constant - - int_size_in_bytes (TREE_TYPE (pval)) - + partial); - size_rtx = expand_expr (size_in_bytes (TREE_TYPE (pval)), - NULL_RTX, TYPE_MODE (sizetype), 0); - } + { + /* PUSH_ROUNDING has no effect on us, because emit_push_insn + for BLKmode is careful to avoid it. */ + excess = (arg->locate.size.constant + - int_size_in_bytes (TREE_TYPE (pval)) + + partial); + size_rtx = expand_expr (size_in_bytes (TREE_TYPE (pval)), + NULL_RTX, TYPE_MODE (sizetype), 0); + } parm_align = arg->locate.boundary; /* When an argument is padded down, the block is aligned to - PARM_BOUNDARY, but the actual argument isn't. */ + PARM_BOUNDARY, but the actual argument isn't. */ if (FUNCTION_ARG_PADDING (arg->mode, TREE_TYPE (pval)) == downward) - { - if (arg->locate.size.var) - parm_align = BITS_PER_UNIT; - else if (excess) - { - unsigned int excess_align = (excess & -excess) * BITS_PER_UNIT; - parm_align = MIN (parm_align, excess_align); - } - } + { + if (arg->locate.size.var) + parm_align = BITS_PER_UNIT; + else if (excess) + { + unsigned int excess_align = (excess & -excess) * BITS_PER_UNIT; + parm_align = MIN (parm_align, excess_align); + } + } if ((flags & ECF_SIBCALL) && MEM_P (arg->value)) - { - /* emit_push_insn might not work properly if arg->value and - argblock + arg->locate.offset areas overlap. */ - rtx x = arg->value; - int i = 0; + { + /* emit_push_insn might not work properly if arg->value and + argblock + arg->locate.offset areas overlap. */ + rtx x = arg->value; + int i = 0; - if (XEXP (x, 0) == crtl->args.internal_arg_pointer - || (GET_CODE (XEXP (x, 0)) == PLUS - && XEXP (XEXP (x, 0), 0) == - crtl->args.internal_arg_pointer - && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT)) - { - if (XEXP (x, 0) != crtl->args.internal_arg_pointer) - i = INTVAL (XEXP (XEXP (x, 0), 1)); + if (XEXP (x, 0) == crtl->args.internal_arg_pointer + || (GET_CODE (XEXP (x, 0)) == PLUS + && XEXP (XEXP (x, 0), 0) == + crtl->args.internal_arg_pointer + && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT)) + { + if (XEXP (x, 0) != crtl->args.internal_arg_pointer) + i = INTVAL (XEXP (XEXP (x, 0), 1)); - /* expand_call should ensure this. */ - gcc_assert (!arg->locate.offset.var - && GET_CODE (size_rtx) == CONST_INT); - } - } + /* expand_call should ensure this. */ + gcc_assert (!arg->locate.offset.var + && GET_CODE (size_rtx) == CONST_INT); + } + } emit_push_insn (arg->value, arg->mode, TREE_TYPE (pval), size_rtx, - parm_align, partial, reg, excess, argblock, - ARGS_SIZE_RTX (arg->locate.offset), reg_parm_stack_space, - ARGS_SIZE_RTX (arg->locate.alignment_pad)); + parm_align, partial, reg, excess, argblock, + ARGS_SIZE_RTX (arg->locate.offset), reg_parm_stack_space, + ARGS_SIZE_RTX (arg->locate.alignment_pad)); /* Unless this is a partially-in-register argument, the argument is now - in the stack. + in the stack. - ??? Unlike the case above, in which we want the actual - address of the data, so that we can load it directly into a - register, here we want the address of the stack slot, so that - it's properly aligned for word-by-word copying or something - like that. It's not clear that this is always correct. */ + ??? Unlike the case above, in which we want the actual + address of the data, so that we can load it directly into a + register, here we want the address of the stack slot, so that + it's properly aligned for word-by-word copying or something + like that. It's not clear that this is always correct. */ if (partial == 0) - arg->value = arg->stack_slot; + arg->value = arg->stack_slot; } if (arg->reg && GET_CODE (arg->reg) == PARALLEL) { tree type = TREE_TYPE (arg->tree_value); arg->parallel_value - = emit_group_load_into_temps (arg->reg, arg->value, type, - int_size_in_bytes (type)); + = emit_group_load_into_temps (arg->reg, arg->value, type, + int_size_in_bytes (type)); } /* Mark all slots this store used. */ @@ -747,7 +750,7 @@ { int i; for (i=0; i<num_actuals; i++) - order[i] = num_actuals-i-1; + order[i] = num_actuals-i-1; return; } @@ -767,9 +770,9 @@ /* 退避 */ temp = assign_temp(args[i].tree_value, 1, 0, 0); if ( args[i].mode==BLKmode ) - emit_block_move ( temp, args[i].value, ARGS_SIZE_RTX(args[i].locate.size), 0 ); + emit_block_move ( temp, args[i].value, ARGS_SIZE_RTX(args[i].locate.size), 0 ); else - emit_move_insn ( temp, args[i].value ); + emit_move_insn ( temp, args[i].value ); args[i].value = temp; } @@ -782,21 +785,21 @@ int i; rtx addr; if ( !x || !MEM_P(x)) - return -1; + return -1; addr = XEXP(x, 0); if (addr == crtl->args.internal_arg_pointer) - i = 0; + i = 0; else if (GET_CODE (addr) == PLUS - && XEXP (addr, 0) == crtl->args.internal_arg_pointer - && GET_CODE (XEXP (addr, 1)) == CONST_INT) - i = INTVAL (XEXP (addr, 1)); + && XEXP (addr, 0) == crtl->args.internal_arg_pointer + && GET_CODE (XEXP (addr, 1)) == CONST_INT) + i = INTVAL (XEXP (addr, 1)); else if (GET_CODE (addr) == PLUS - && GET_CODE (XEXP (addr, 0)) == CONST_INT - && XEXP (addr, 1) == crtl->args.internal_arg_pointer ) - i = INTVAL (XEXP (addr, 0)); + && GET_CODE (XEXP (addr, 0)) == CONST_INT + && XEXP (addr, 1) == crtl->args.internal_arg_pointer ) + i = INTVAL (XEXP (addr, 0)); else - return -1; + return -1; return i; }