rtx stack;
/* Location on the stack of the start of this argument slot. This can
differ from STACK if this arg pads downward. This location is known
- to be aligned to FUNCTION_ARG_BOUNDARY. */
+ to be aligned to TARGET_FUNCTION_ARG_BOUNDARY. */
rtx stack_slot;
/* Place that this stack area has been saved, if needed. */
rtx save_area;
if (DECL_IS_NOVOPS (exp))
flags |= ECF_NOVOPS;
+ if (lookup_attribute ("leaf", DECL_ATTRIBUTES (exp)))
+ flags |= ECF_LEAF;
if (TREE_NOTHROW (exp))
flags |= ECF_NOTHROW;
int bitsize = MIN (bytes * BITS_PER_UNIT, BITS_PER_WORD);
args[i].aligned_regs[j] = reg;
- word = extract_bit_field (word, bitsize, 0, 1, NULL_RTX,
+ word = extract_bit_field (word, bitsize, 0, 1, false, NULL_RTX,
word_mode, word_mode);
/* There is no need to restrict this code to loading items
/* We can pass TRUE as the 4th argument because we just
saved the stack pointer and will restore it right after
the call. */
- copy = gen_rtx_MEM (BLKmode,
- allocate_dynamic_stack_space
- (size_rtx, NULL_RTX,
- TYPE_ALIGN (type), TRUE));
+ copy = allocate_dynamic_stack_space (size_rtx,
+ TYPE_ALIGN (type),
+ TYPE_ALIGN (type),
+ true);
+ copy = gen_rtx_MEM (BLKmode, copy);
set_mem_attributes (copy, type, 1);
}
else
preferred_unit_stack_boundary = preferred_stack_boundary / BITS_PER_UNIT;
- if (SUPPORTS_STACK_ALIGNMENT)
- {
- /* All variable sized adjustments must be multiple of preferred
- stack boundary. Stack alignment may change preferred stack
- boundary after variable sized adjustments have been made. We
- need to compensate it here. */
- unsigned HOST_WIDE_INT delta
- = ((stack_pointer_delta - pending_stack_adjust)
- % preferred_unit_stack_boundary);
- if (delta)
- anti_adjust_stack (GEN_INT (preferred_unit_stack_boundary - delta));
- }
-
/* We want to make two insn chains; one for a sibling call, the other
for a normal call. We will select one of the two chains after
initial RTL generation is complete. */
/* We can pass TRUE as the 4th argument because we just
saved the stack pointer and will restore it right after
the call. */
- allocate_dynamic_stack_space (push_size, NULL_RTX,
- BITS_PER_UNIT, TRUE);
+ allocate_dynamic_stack_space (push_size, 0,
+ BIGGEST_ALIGNMENT, true);
}
/* If argument evaluation might modify the stack pointer,