+2004-01-27 Zack Weinberg <zack@codesourcery.com>
+
+ * ia64.c (ia64_function_arg): When placing HFAs in integer
+ registers, do not special case the mode used for complex
+ types. Do not advance int_regs until the current register
+ is full.
+
2004-01-27 Richard Sandiford <rsandifo@redhat.com>
PR target/7297
(restore_stack_nonlocal): Same.
2004-01-27 Devang Patel <dpatel@apple.com>
-
+
* Makefile.in (dwarf2out.o): Depend on input.h
- * dbxout.c (dbx_debug_hooks): Add new empty hook for
+ * dbxout.c (dbx_debug_hooks): Add new empty hook for
imported_module_or_decl.
(xcoff_debug_hooks): Same.
* sdbout.c (sdb_debug_hooks): Same.
(dwarf2out_imported_module_or_decl): New function.
2004-01-27 Bob Wilson <bob.wilson@acm.org>
-
+
* config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Remove SUBREG
on CQImode and CHImode incoming arguments in register a7.
(function_arg): Wrap BLKmode argument in register a7 in a PARALLEL.
* config/xtensa/xtensa.h (BLOCK_REG_PADDING): Define.
* config/xtensa/xtensa.md (movdi, movdf): Only call force_reg or
xtensa_copy_incoming_a7 before reload.
-
+
2004-01-27 J"orn Rennecke <joern.rennecke@superh.com>
* coverage.c (get_coverage_counts): Give a different message
2004-01-24 James A. Morrison <ja2morri@uwaterloo.ca>
- * fixinc/fixinc.c (test_test): Initialize res.
+ * fixinc/fixinc.c (test_test): Initialize res.
(start_flexer): Initialize pz_cmd_save.
2004-01-27 Zack Weinberg <zack@codesourcery.com>
for (; offset < byte_size && int_regs < MAX_ARGUMENT_SLOTS; i++)
{
enum machine_mode gr_mode = DImode;
+ unsigned int gr_size;
/* If we have an odd 4 byte hunk because we ran out of FR regs,
then this goes in a GR reg left adjusted/little endian, right
adjusted/little endian. */
else if (byte_size - offset == 4)
gr_mode = SImode;
- /* Complex floats need to have float mode. */
- if (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT)
- gr_mode = hfa_mode;
loc[i] = gen_rtx_EXPR_LIST (VOIDmode,
gen_rtx_REG (gr_mode, (basereg
+ int_regs)),
GEN_INT (offset));
- offset += GET_MODE_SIZE (gr_mode);
- int_regs += GET_MODE_SIZE (gr_mode) <= UNITS_PER_WORD
- ? 1 : GET_MODE_SIZE (gr_mode) / UNITS_PER_WORD;
+
+ gr_size = GET_MODE_SIZE (gr_mode);
+ offset += gr_size;
+ if (gr_size == UNITS_PER_WORD
+ || (gr_size < UNITS_PER_WORD && offset % UNITS_PER_WORD == 0))
+ int_regs++;
+ else if (gr_size > UNITS_PER_WORD)
+ int_regs += gr_size / UNITS_PER_WORD;
}
/* If we ended up using just one location, just return that one loc, but