1 This branch has now been merged into the mainline; you should add any further
4 2000-03-15 Geoff Keating <geoffk@cygnus.com>
6 * rs6000.c (toc_hash_table): Update for new hash table functions.
7 (toc_hash_function): Likewise.
8 (toc_hash_eq): Likewise.
9 (toc_hash_mark_entry): Likewise.
10 (toc_hash_mark_table): Likewise.
11 (output_toc): Likewise.
12 (rs6000_add_gc_roots): Likewise.
14 2000-03-15 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
16 * t-aix43 (AR_FOR_TARGET): Deleted. Moved `-X32_64'...
17 (AR_FLAGS_FOR_TARGET): here. New macro.
19 2000-03-05 Clinton Popetz <cpopetz@cygnus.com>
21 * config/rs6000/rs6000.c (rs6000_fpmem_offset, rs6000_fpmem_size,
22 fpmem_operand) Delete.
24 (rs6000_reg_names, alt_reg_names): Change fpmem to xer.
25 (machine_function): Remove fpmem_size, fpmem_offset, save_toc_p.
26 (rs6000_save_machine_status, rs6000_restore_machine_status,
27 rs6000_init_expanders, rs6000_stack_info, debug_stack_info): Remove
28 references to above variables.
29 (gpc_reg_operand): Use XER_REGNO_P instead of FPMEM_REGNO_P.
30 * config/rs6000/rs6000.h (REG_ALLOC_ORDER, REGISTER_NAMES,
31 DEBUG_REGISTER_NAMES): Chagne fpmem to xer.
32 (FPMEM_REGNO_P, FPMEM_REGNUM): Delete.
33 (XER_REGNO_P, XER_REGNO): New.
34 (rs6000_stack): Remove fpmem_p, fpmem_offset, fpmem_size.
35 (PREDICATE_CODES): Change fpmem_operand to xer_operand.
36 (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK): Change FPMEM_REGNO_P to
38 (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS, REGNO_REG_CLASS,
39 REG_CLASS_FROM_LETTER, CLASS_MAX_NREGS): Change FPMEM_REGS to XER_REGS, and remove FLOAT_OR_FPMEM_REGS.
40 (CLASS_CANNOT_CHANGE_SIZE): Change to FLOAT_REGS.
42 2000-02-29 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
44 * aix.h (FP_SAVE_INLINE, ASM_OUTPUT_INTERNAL_LABEL_PREFIX,
45 TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP): Move here...
46 * rs6000.h: from here.
48 * rs6000-protos.h (rs6000_select_section): Provide prototype.
49 (rs6000_select_rtx_section): Likewise.
50 (rs6000_encode_section_info): Likewise.
51 (sdata_section): Likewise.
52 (sdata2_section): Likewise.
53 (sbss_section): Likewise.
54 * sysv4.h (rs6000_select_section): Delete prototype.
55 (rs6000_select_rtx_section): Likewise.
56 (rs6000_encode_section_info): Likewise.
57 (sdata_section): Likewise.
58 (sdata2_section): Likewise.
59 (sbss_section): Likewise.
60 (REG_SAVE_AREA): Delete definition duplicated in rs6000.h.
62 * sysv4.h: Delete various unnecessary #undef's and put a comment
63 on the remaining ones.
64 Change various comments according to coding standard.
66 2000-02-29 Clinton Popetz <cpopetz@cygnus.com>
68 * config/rs6000/rs6000.h (MQ_REGNO, CR0_REGNO, CR1_REGNO, CR2_REGNO,
69 CR3_REGNO, CR4_REGNO, MAX_CR_REGNO): Define.
71 * config/rs6000/rs6000.c (gpc_reg_operand, and64_operand, and_operand,
72 setup_incoming_varargs, mtcrf_operation, print_operand,
73 rs6000_stack_info, rs6000_emit_prologue, rs6000_emit_epilogue):
76 2000-02-24 Clinton Popetz <cpopetz@cygnus.com>
78 * config/rs6000/rs6000.md: Added a new alternative for each
79 pattern that had a 'x' alternative but no 'y' alternative.
80 Added a new split for each of the above patterns.
82 2000-02-18 Geoff Keating <geoffk@cygnus.com>
84 * aix41.h (ASM_CPU_SPEC): Delete.
85 (CPP_CPU_SPEC): Delete.
87 * aix.h (RS6000_OUTPUT_BASENAME): Define.
88 (ASM_OUTPUT_LABEL): Define.
89 (ASM_GLOBALIZE_LABEL): Define.
90 (STRIP_NAME_ENCODING): Define.
91 * rs6000.h (RS6000_OUTPUT_BASENAME): Don't define.
92 (STRIP_NAME_ENCODING): Don't define.
93 (ASM_OUTPUT_LABEL): Don't define.
94 (ASM_GLOBALIZE_LABEL): Don't define.
95 * sysv4.h (ASM_DECLARE_FUNCTION_NAME): Use assemble_name to output
96 names, and ASM_OUTPUT_LABEL to output labels, rather than
98 (ASM_OUTPUT_LABEL): Define.
99 (ASM_OUTPUT_INT): Use assemble_name.
100 (ASM_OUTPUT_DWARF_ADDR): Use assemble_name.
101 (STRIP_NAME_ENCODING): Don't undefine first.
102 (RS6000_OUTPUT_BASENAME): Make equivalent to assemble_name for
104 (ASM_OUTPUT_LABELREF): Don't prepend underscores to labels
105 specified with 'asm' even with -fleading-underscore.
106 * rs6000.c (print_operand): Use assemble_name when !TARGET_AIX.
107 (output_epilog): Likewise.
108 (output_toc): Likewise.
109 * tramp.asm: Handle -fleading-underscore correctly.
111 * rs6000.md (builtin_setjmp_receiver): Also run for -fPIC and
113 (nonlocal_goto_receiver): Delete.
114 * rs6000.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Delete.
116 * rs6000.h (ASM_OUTPUT_DEF): Don't define.
117 (SET_ASM_OP): Define.
118 * sysv4.h (ASM_OUTPUT_DEF): Don't undefine.
120 * rs6000.h (ASM_OUTPUT_ADDR_VEC_ELT): Don't define.
123 * rs6000.c (rs6000_dll_import_ref): Delete, not used.
124 * rs6000-protos.h (rs6000_dll_import_ref): Delete.
126 * rs6000.h: Add 'u' to more constants.
128 2000-02-18 David Edelsohn <edelsohn@gnu.org>
130 * rs6000.md (mfcr+shift): Delete PowerPC64 version.
132 2000-02-15 David Edelsohn <edelsohn@gnu.org>
134 * rs6000.c (reg_or_u_cint_operand): New function.
135 (logical_operand): Handle 64-bit hosts.
136 (logical_u_operand): New function.
137 (non_logical_cint_operand): Handle 64-bit hosts.
138 (non_logical_u_cint_operand): New function.
139 * rs6000.h (DATA_SECTION_ASM_OP): Add tab.
140 (PREDICATE_CODES): Define new functions.
141 * rs6000-protos.h: Declare new functions.
142 * rs6000.md (iordi3, xordi3): Constant int must be unsigned 32-bits.
143 (movdi_64): Bracket code intended for 64-bit hosts. Create
144 CONST_DOUBLE for 32-bit values.
145 (scc insns): Generate DImode compares.
146 (mfcr insns): Create DImode versions.
147 (sge matchers): New patterns.
149 2000-02-15 Gabriel Paubert <paubert@iram.es>
151 * rs6000.md: Correct instructions length attributes and
152 constraints on unsigned compare instructions.
153 (*ne0): Disable for PowerPC64.
155 2000-02-11 Geoff Keating <geoffk@cygnus.com>
157 * rs6000.c (output_function_profiler): Use .long for a 32-bit
158 quantity, fix profile1.C test failure under -fPIC.
160 * rs6000.c: Add 'u' to many constants to suppress warnings.
161 (constant_pool_expr_1): Make static.
162 (rs6000_emit_eh_toc_restore): Remove unused 'r2'.
163 * rs6000.h: Add 'u' to many constants to suppress warnings.
165 * rs6000.c (rs6000_emit_load_toc_table): Use LCTOC..1 under AIX
166 for the start of the TOC, instead of LCTOC..0.
167 * aix.h (toc_section): Use LCTOC..1 under AIX for the start
169 * rs6000.md (load_toc_aix_si): Use LCTOC..1.
170 (load_toc_aix_di): Use LCTOC..1.
172 * rs6000.h (LEGITIMIZE_ADDRESS): Turn into a function.
173 * rs6000.c (rs6000_legitimize_address): New function from
174 LEGITIMIZE_ADDRESS. Only use create_TOC_reference on
175 symbols in the constant pool that really are TOC references.
176 (print_operand_address): For ELF, write TOC offsets under
177 -fPIC as subtractions in the insn.
178 (output_toc): For ELF, define symbols in TOC as normal labels,
180 (create_TOC_reference): Use gen_rtx_PLUS rather than gen_rtx.
181 * rs6000-protos.h (rs6000_legitimize_address): Prototype.
182 (create_TOC_reference): Prototype only when RTX_CODE is defined.
183 * rs6000.md (movsi): Only use create_TOC_reference on
184 symbols in the constant pool that really are TOC references.
186 * rs6000.h (MACHINE_DEPENDENT_REORG): Don't define.
187 * rs6000.c (rs6000_reorg): Delete.
188 * rs6000-protos.h (rs6000_reorg): Delete.
190 2000-02-09 Geoff Keating <geoffk@cygnus.com>
192 * rs6000.h (INCOMING_RETURN_ADDR_RTX): New macro.
194 * aix.h (SETUP_FRAME_ADDRESSES): Define.
195 * rs6000.c [TARGET_AIX] (insn_after_throw): New static variable.
196 [TARGET_AIX] (rs6000_aix_emit_builtin_unwind_init): New function.
197 [TARGET_AIX] (rs6000_emit_eh_toc_restore): New function.
198 * rs6000-protos.h: Prototype rs6000_emit_eh_toc_restore,
199 rs6000_aix_emit_builtin_unwind_init.
200 * rs6000.md (eh_epilogue) [TARGET_AIX]: Call
201 rs6000_emit_eh_toc_restore on AIX.
202 (return_eh_si): Use r2.
203 (return_eh_di): Use r2.
205 * aix43.h: Turn on HAS_INIT_SECTION and LD_INIT_SWITCH,
206 since we're breaking binary compatibility anyway.
208 2000-02-09 Clinton Popetz <cpopetz@cygnus.com>
210 * config/rs6000/rs6000-protos.h: (get_TOC_alias_set, uses_TOC,
211 constant_pool_expr_p): Declare them.
212 (constant_pool_expr_p): Declare it.
213 * config/rs6000/rs6000.c (toc_label_name): Define.
214 (rs6000_override_options): Set toc_label_name.
215 (input_operand): Allow any TOC_RELATIVE_EXPR_P.
216 (get_TOC_alias_set, constant_pool_expr_p, constant_pool_expr_1,
217 uses_TOC): New functions.
218 (print_operand): Delete old '*' case.
219 (print_operand_address): Use LEGITIMATE_CONSTANT_POOL_ADDRESS_P,
220 and strip off rtl for TOC before calling output_addr_const.
221 (rs6000_emit_load_toc_table): Use toc_label_name.
222 * config/rs6000/rs6000.h (TARGET_SWITCHES): Make msched-prolog
224 (LEGITIMATE_CONSTANT_POOL_BASE_P): Delete.
225 (CONSTANT_POOL_EXPR_P, TOC_RELATIVE_EXPR_P): New macros.
226 (LEGITIMATE_CONSTANT_POOL_ADDRESS_P): Use CONSTANT_POOL_EXPR_P.
227 (LEGITIMIZE_ADDRESS, LEGITIMIZE_RELOAD_ADDRESS): Turn symbol_refs
228 into explicit TOC_REGISTER offsets.
229 (TOC_REGISTER): New macro.
230 * config/rs6000/rs6000.md (movsi, movdi): Emit rtl under
231 TARGET_TOC to reference TOC_REGISTER.
232 (load_toc_v4_PIC_1b): Add 4 to offset for toc reload.
233 * config/rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Call
234 uses_TOC before emitting label references.
236 2000-02-05 Geoff Keating <geoffk@cygnus.com>
238 * rs6000.md (stack_tie): Fix warning.
240 * eabi-ctors.c: Use 'asm' names for the start/end variables,
241 to handle -fleading-underscore.
242 * sysv4.h (ASM_DECLARE_FUNCTION_NAME): Use asm_fprintf and %U.
243 (USER_LABEL_PREFIX): New macro.
244 (ASM_OUTPUT_INTERNAL_LABEL_PREFIX): Use asm_fprintf and %L.
245 (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
246 * t-ppccomm (MULTILIB_MATCHES_SYSV): Note that call-sysv and
247 call-linux can use the same multilibs.
248 * t-ppcgas (MULTILIB_OPTIONS): Don't need to have separate call-sysv
249 and call-linux multilibs. Do multilib with -fleading-underscore.
250 (MULTILIB_DIRNAMES): Follow MULTILIB_OPTIONS change.
251 (MULTILIB_EXCEPTIONS): Remove call-linux exceptions. Add restrictions
254 * sysv4.h (CPP_SYSV_SPEC): Define _SOFT_FLOAT for all those CPUs that
255 have MASK_SOFT_FLOAT set.
256 (CPP_FLOAT_DEFAULT_SPEC): New macro.
257 (SUBTARGET_EXTRA_SPECS): Set `cpp_float_default' to the value of
258 CPP_FLOAT_DEFAULT_SPEC.
260 * rs6000.c (ccr_bit): Add some consistency checks and a variable 'reg'.
261 * rs6000.md: Whitespace change.
262 * sysv4.h (LINK_TARGET_SPEC): Whitespace change.
263 * sysv4le.h (LINK_TARGET_SPEC): Whitespace change.
265 2000-02-05 Geoff Keating <geoffk@cygnus.com>
267 * rs6000.md (eh_epilogue): New expander.
268 (eh_reg_restore): New expand/split/insn combination.
269 (return_eh_si): New insn.
270 (return_eh_di): New insn.
272 * eabi-ci.asm: Put a label at the start of the .eh_frame section.
273 * eabi-cn.asm: Put a zero at the end of the .eh_frame section.
274 * eabi-ctors.c (__do_global_ctors): Register this object's
275 frame. Clean up. Call atexit() after the constructors.
276 (__do_global_dtors): Deregister this object's frame. Clean up.
277 Allow for recursive calls to exit().
278 * rs6000.c (fixuplabelno): New variable.
279 * sysv4.h (ASM_OUTPUT_INT): Don't do .fixup if not
280 TARGET_RELOCATABLE, it slows down exec() under linux.
281 (ASM_OUTPUT_DWARF_ADDR): Do .fixup if TARGET_RELOCATABLE.
283 * aix.h (ASM_OUTPUT_DWARF_ADDR_VAR): New macro.
284 (ASM_OUTPUT_DWARF_DELTA_VAR): New macro.
285 (ASM_OUTPUT_DWARF_DELTA2): New macro.
286 (ASM_OUTPUT_DWARF_DELTA4): New macro.
287 (ASM_OUTPUT_DWARF_ADDR_DELTA): New macro.
288 (ASM_OUTPUT_DWARF_ADDR): New macro.
289 (ASM_OUTPUT_DWARF_DATA4): New macro.
290 (ASM_OUTPUT_DWARF_DATA2): New macro.
291 (ASM_OUTPUT_DWARF_OFFSET4): New macro.
292 (ASM_OUTPUT_DWARF_OFFSET): New macro.
293 (UNALIGNED_INT_ASM_OP): New macro, fake definition.
295 2000-02-03 Geoff Keating <geoffk@cygnus.com>
297 * rs6000.c (rs6000_sr_alias_set): New variable.
298 (rs6000_override_options): Initialise rs6000_sr_alias_set.
299 (rs6000_emit_stack_tie): New function.
300 (rs6000_emit_allocate_stack): Specify RTX_FRAME_RELATED_P
301 in a way that dwarf2out can understand.
302 (rs6000_frame_related): New function.
303 (rs6000_emit_prologue): Use rs6000_sr_alias_set. Specify
304 RTX_FRAME_RELATED_P in a way that dwarf2out can understand.
305 Use rs6000_emit_stack_tie when needed.
306 (rs6000_emit_epilogue): Use rs6000_sr_alias_set. Don't set
307 RTX_FRAME_RELATED_P. Use rs6000_emit_stack_tie when needed.
308 * rs6000.md (stack_tie): New insn.
309 (return_internal_si): Allow return value to be in the count
311 (return_internal_di): Likewise.
313 * rs6000.c (output_mi_thunk): Remove unused variable `sp'.
315 2000-02-03 Geoff Keating <geoffk@cygnus.com>
317 * sysv4.h (LOCAL_LABEL_PREFIX): Define, for the use of dbxelf.h.
319 2000-01-31 Geoff Keating <geoffk@cygnus.com>
321 * rs6000.h (ASM_OUTPUT_DEF_FROM_DECLS): New macro.
323 * rs6000.md (stmw): Use the right POWER opcode.
326 2000-01-31 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
328 * rs6000-protos.h: New file.
330 * rs6000.c: Include tm_p.h. Fix compile time warnings.
332 * rs6000.h: Move prototypes to rs6000-protos.h. Fix compile time
337 2000-01-28 Geoff Keating <geoffk@cygnus.com>
339 * ../../configure.in: Delete powerpcle-*-winnt*
340 and powerpcle-*-pe|powerpcle-*-cygwin*.
341 * ../../configure: Regenerated.
343 * rs6000.h (OBJECT_WINDOWS_NT): Delete.
344 (TARGET_WINDOWS_NT): Delete.
346 (CALL_NT_DLLIMPORT): Delete.
347 Delete NT-specific code.
348 * rs6000.md, rs6000.c, sysv4.h: Delete NT-specific code.
353 * ntstack.asm: Delete.
355 2000-01-27 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
357 * rs6000.h (SELECT_RTX_SECTION): Move to aix.h.
358 (ASM_FILE_START): Likewise.
359 (ASM_DECLARE_FUNCTION_NAME): Likewise.
360 (ASM_OUTPUT_LABELREF): Likewise.
361 (ASM_OUTPUT_SKIP): Likewise.
362 (ASM_OUTPUT_INTERNAL_LABEL): Likewise.
363 (ASM_GENERATE_INTERNAL_LABEL): Likewise.
364 (ASM_OUTPUT_CASE_LABEL): Likewise.
365 (ASM_OUTPUT_ALIGNED_COMMON): Likewise.
366 (ASM_OUTPUT_ASCII): Likewise.
368 2000-01-27 Clinton Popetz <cpopetz@cygnus.com>
370 * rs6000.c (rs6000_emit_load_toc_table): Use "LCG" and
371 reload_toc_labelno for non-prologue TOC reloads. Also, don't
372 increment rs6000_pic_labelno here.
373 (rs6000_emit_prologue): Pass TRUE to rs6000_emit_load_toc_table,
374 and increment rs6000_pic_labelno here.
376 2000-01-24 Geoffrey Keating <geoffk@cygnus.com>
378 * rs6000.md (fctiwz): Use (set (reg) (unspec:DI [(fix:SI ...)]))
379 rather than (set (subreg:SI (reg)) (fix:SI ...)) so that register
380 allocation knows (reg) is dead before the insn.
382 2000-01-21 Geoff Keating <geoffk@cygnus.com>
384 * rs6000.md (movsi_to_cr): Correct typo in output template.
386 2000-01-19 Geoffrey Keating <geoffk@cygnus.com>
388 * rs6000.c (rs6000_pic_labelno): Always define.
389 (rs6000_pic_func_labelno): Delete.
390 (lmw_operation): Check for a zero base register,
391 which doesn't mean what we want.
392 (stmw_operation): New function.
393 (print_operand): Define new 'l' modifier.
394 (rs6000_stack_info): We must save all 64 bits of the registers
396 (rs6000_output_load_toc_table): Delete.
397 (rs6000_emit_load_toc_table): New function.
398 (rs6000_allocate_stack_space): Delete.
399 (rs6000_emit_allocate_stack): New function.
400 (rs6000_emit_prologue): New function.
401 (output_prolog): Use rs6000_emit_prologue.
402 (rs6000_emit_epilogue): Change a few variable names to be
403 more accurate. Restore all 64 bits of the registers if
404 TARGET_POWERPC64. Only restore the FP registers which were used
405 if they are being saved/restored one-at-a-time.
406 (output_mi_thunk): Delete inefficient code generation.
407 (output_function_profiler): Don't use rs6000_output_load_toc_table.
408 * rs6000.h: Declare rs6000_emit_load_toc_table,
409 rs6000_allocate_stack_space, stmw_operation. Don't declare
410 rs6000_output_load_toc_table.
411 * rs6000.md (elf_high): Allow register 0, but discourage it
413 (elf_low): Support loading into register 0.
414 (load_toc_aix_si): New pattern.
415 (load_toc_aix_di): New pattern.
416 (load_toc_v4_pic_si): New pattern.
417 (load_toc_v4_pic_di): New pattern.
418 (load_toc_v4_PIC_1): New pattern.
419 (load_toc_v4_PIC_1b): New pattern.
420 (load_toc_v4_PIC_2): New pattern.
421 (builtin_setjmp_receiver): Use rs6000_emit_load_toc_table.
422 (nonlocal_goto_receiver): Use rs6000_emit_load_toc_table.
423 (prologue): New expander.
424 (movesi_from_cr): New pattern.
426 (save_fpregs_si): New pattern.
427 (save_fpregs_di): New pattern.
429 2000-01-19 Geoff Keating <geoffk@cygnus.com>
431 * rs6000.md (movsi): Don't use force_reg when no_new_pseudos.
436 2000-01-19 Geoff Keating <geoffk@cygnus.com>
438 * rs6000.md (movsi_got): 'unspec 8' returns a SImode result,
440 (movsi_got_internal): Likewise.
441 (movsi_got_internal+1): Likewise.
442 (set_sp): 'unspec 7' does a SImode clobber.
444 2000-01-19 Geoff Keating <geoffk@cygnus.com>
446 * rs6000.md (floatsidf2): Don't use the fpmem "register", just
447 allocate a stack temporary.
448 (floatsidf2_internal): Likewise.
449 (floatsidf2_internal+1): Likewise. Don't do bizzare hacks
451 (floatunssidf2): Don't use the fpmem "register", just
452 allocate a stack temporary.
453 (floatunssidf2_internal): Likewise.
454 (floatunssidf2_internal+1): Likewise. Don't do bizzare hacks
456 (floatsidf2_loadaddr): Delete.
457 (floatsidf2_store1): Delete.
458 (floatsidf2_store2): Delete.
459 (floatsidf2_load): Delete.
460 (fix_truncdfsi2): Don't use the fpmem "register", just
461 allocate a stack temporary.
462 (fix_truncdfsi2_internal_si): Delete.
463 (fix_truncdfsi2_internal_di): Delete.
464 (fix_truncdfsi2_internal): New insn.
465 (fix_truncdfsi2_internal+1): Don't use the fpmem "register".
466 (fix_truncdfsi2_store): Delete.
467 (fix_truncdfsi2_load): Delete.
468 (fctiwz): Produce gen_fctiwz.
470 2000-01-19 Geoffrey Keating <geoffk@cygnus.com>
472 * eabi.h (INVOKE__main): Define.
473 * rs6000.c (rs6000_stack_info): Don't handle call to NAME__MAIN
475 (rs6000_emit_prologue): Likewise.
476 * rs6000.h (struct rs6000_stack): Don't keep track of whether
477 this is the main program.
479 2000-01-19 Geoff Keating <geoffk@cygnus.com>
481 * rs6000.c (rs6000_va_arg): Delete some unused variables.
483 2000-01-19 Geoff Keating <geoffk@cygnus.com>
485 * rs6000.c (rs6000_va_arg): On AIX, padding for small arguments
486 goes after the argument.
488 2000-01-12 Geoff Keating <geoffk@cygnus.com>
490 * rs6000.md: Document 'unspec' values used.
491 (epilogue): New expander.
492 (movesi_to_cr_one): New expander.
493 (movesi_to_cr and following): New pattern.
495 (return_internal_si): New pattern.
496 (return_internal_di): New pattern.
497 (return_and_restore_fpregs_si): New pattern.
498 (return_and_restore_fpregs_di): New pattern.
499 * rs6000.h: Declare new functions.
500 * rs6000.c (rs6000_stack_info): Use current_function_is_leaf
501 rather than rs6000_calls_p.
502 (rs6000_makes_calls): Delete.
503 (lmw_operation): New function.
504 (mtcrf_operation): New function.
505 (rs6000_emit_epilogue): New function.
506 (output_epilog): Call rs6000_emit_epilogue and final if
507 !TARGET_SCHED_PROLOG, instead of writing text unconditionally.
509 2000-01-12 Geoff Keating <geoffk@cygnus.com>
511 * aix43.h (SUBSUBTARGET_SWITCHES): Document switches.
512 * aix41.h (SUBSUBTARGET_SWITCHES): Document switches.
513 * aix.h (SUBTARGET_SWITCHES): Document switches.
514 * rs6000.h: (TARGET_SWITCHES): Don't print options twice. Make
515 sched-prolog and sched-epilog the same. Document all the
517 (TARGET_OPTIONS): No longer allow -mdebug-.
519 2000-01-12 Geoff Keating <geoffk@cygnus.com>
521 * rs6000.h (ASM_FILE_END): Move to aix.h.
522 (EXTRA_SECTIONS): Move to aix.h.
523 (READONLY_DATA_SECTION): Move to aix.h.
524 (EXTRA_SECTION_FUNCTIONS): Move to aix.h.
525 (SELECT_SECTION): Move to aix.h.
526 (JUMP_TABLES_IN_TEXT_SECTION): Move to aix.h.
527 (INT_REGNO_P): Use symbolic name for ARG_POINTER_REGNUM.
528 (LINK_REGISTER_REGNUM): New definition.
529 (RETURN_ADDR_RTX): Use symbolic name for LINK_REGISTER_REGNUM.
530 (SLOW_UNALIGNED_ACCESS): Define in a way suitable for both
532 * sysv4.h: Delete the code between the inclusion of rs6000.h
534 (DWARF_DEBUGGING_INFO): Don't define, it's defined in elfos.h.
535 (FP_ARG_MAX_REG): Move generic definition to rs6000.h.
536 (RS6000_REG_SAVE): Move generic definition to rs6000.h.
537 (RS6000_SAVE_AREA): Move generic definition to rs6000.h.
538 * rs6000.md (floatsidf2_loadaddr): The first arg here is Pmode.
539 (fix_truncdfsi2_internal): Rename to fix_truncdfsi2_internal_si.
540 (fix_truncdfsi2_internal_di): New pattern.
541 (fix_truncdfsi2_store): The second arg here is Pmode too.
542 (fix_truncdfsi2_load): The second arg here is Pmode too.
543 (tablejumpdi): Now that switch tables hold only SImode values,
544 gcc needs to know how to add them to the pc which is DImode.
545 * rs6000.c (rs6000_stack_info): Use symbolic name for
546 LINK_REGISTER_REGNUM.
547 (output_mi_thunk) [!TARGET_ELF]: Don't define sp, it's not used.
548 (output_toc): Delete unused variables s1 and s2.
549 (output_ascii): Use fputs not fprintf on a variable string.
551 2000-01-07 David Edelsohn <edelsohn@gnu.org>
553 * rs6000.c (processor_target_table): Add power3 as alias for 630.
554 * aix43.h: Revert Aug 2 change.
555 (HAS_INIT_SECTION): Define, not visible yet.
556 (LD_INIT_SWITCH): Define, not visible yet.
557 * t-aix43 (MULTILIB_OPTIONS): Revert Aug 2 change.
559 2000-01-04 Joel Sherrill (joel@OARcorp.com>
561 * config/rs6000/rtems.h: Include config/rtems.h.
563 2000-01-04 David Edelsohn <edelsohn@gnu.org>
565 * rs6000.h (HANDLE_PRAGMA_PACK): Define.
566 (SLOW_UNALIGNED_ACCESS): Define.
567 (CASE_VECTOR_MODE): Always use 32-bit offsets.
568 (ASM_FILE_END): Generate 64-bit symbol in 64-bit mode.
569 (EXTRA_SECTOIN_FUNCTIONS): Indent .csect pseudo-op.
570 (toc_section): Likewise and .toc pseudo-op.
571 (ASM_DECLARE_FUNCTION): Likewise. Align text more strictly in
573 (TEXT_SECTION_ASM_OP): Likewise.
574 (ASM_OUTPUT_ADD_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Always use
577 1999-12-17 Jakub Jelinek <jakub@redhat.com>
579 * config/rs6000/rs6000.h (TARGET_POWERPC64): Make sure
580 UNITS_PER_WORD and BITS_PER_WORD are compile time constants when
583 2000-01-06 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
585 * rs6000.h: Move more stuff from here...
587 * sysv4.h: Cleanup accordingly.
588 * netware.h: Likewise
590 2000-01-05 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
592 * rs6000.h: Continue cleanup.
595 * netware.h: Likewise.
598 * win-nt.h: Likewise.
600 * rs6000.h (TARGET_SWITCHES): Add descriptions.
601 (TARGET_OPTIONS): Likewise.
603 * sysv4.h (SUBTARGET_SWITCHES): Add descriptions.
604 (SUBTARGET_OPTIONS): Likewise.
606 * rs6000.md: Fix compile time warnings.
608 2000-01-04 Geoff Keating <geoffk@cygnus.com>
610 vxworks patches from the Cygnus tree originally by
611 Michael Meissner <meissner@cygnus.com> and Vladimir Makarov
612 <vmakarov@cygnus.com>.
613 * sysv4.h (SUBTARGET_SWITCHES): Add vxworks.
614 (ENDFILE_SPEC): Likewise.
615 (LIB_VXWORKS_SPEC): New macro.
616 (STARTFILE_VXWORKS_SPEC): New macro.
617 (ENDFILE_VXWORKS_SPEC): New macro.
618 (LINK_START_VXWORKS_SPEC): New macro.
619 (LINK_OS_VXWORKS_SPEC): New macro.
620 (CPP_OS_VXWORKS_SPEC): New macro.
621 (SUBTARGET_EXTRA_SPECS): Add all the vxworks specs.
622 * vxppc.h: Rewrite to use proper configuration method.
623 * vxppcle.h: New file.
624 * ../../configure.in: Add powerpcle-wrs-vxworks*.
625 * ../../configure: Rebuilt.
627 2000-01-04 Geoff Keating <geoffk@cygnus.com>
629 Lots of changes to rs6000.h, sysv4.h, aix.h,
630 aix31.h, aix3newas.h, aix41.h, aix43.h, beos.h,
631 with the aim that rs6000.h is the first header
632 included and the others override it.
635 * x-aix41-gld: Remove.
637 * x-aix41: Remove target-specific switches, and don't specify
638 -Wl,-bbigtoc as we don't need it any more.
639 * ../../configure.in: Use x-aix41 for ppc AIX 4.1 and above.
640 Use t-aix43 for AIX 4.3 and above.
641 * ../../configure: Regenerated.
643 * rs6000.h (TARGET_SWITCHES): Add some initial prolog-scheduling
644 options, that don't do anything yet.
645 (MASK_SCHED_PROLOG): New macro.
646 (MASK_SCHED_EPILOG): New macro.
647 (TARGET_SCHED_PROLOG): New macro.
648 (TARGET_SCHED_EPILOG): New macro.
650 2000-01-04 Geoff Keating <geoffk@cygnus.com>
652 * rs6000.c: Correct comment, the `minimal' TOCs are actually
653 one per translation unit, not one per function.
654 (output_toc): Also do duplicate constant elimination
655 for per-translation-unit TOCs.
657 * rs6000.md (nonlocal_goto_receiver): Put it back as before. Add
658 a comment explaining _exactly_ when this pattern gets used.
659 (builtin_setjmp_receiver): New pattern for better clarity.
660 (init_v4_pic): Move it into a section dealing with TOC registers.
662 1999-12-30 Geoff Keating <geoffk@cygnus.com>
664 * rs6000.c (toc_hash_table): New variable.
665 (rs6000_hash_constant): New function.
666 (toc_hash_function): New function.
667 (toc_hash_eq): New function.
668 (toc_hash_mark_entry): New function.
669 (toc_hash_mark_table): New function.
670 (output_toc): Don't output duplicate TOC entries in
672 (rs6000_add_gc_roots): Add the hash table as a GC root.
673 * t-aix43: Move AR_FOR_TARGET and CLIB here from x-aix43,
674 where they clearly shouldn't be. This may need to be fixed
675 later when there is a GNU ar for AIX.
676 * x-aix43: Don't define CLIB or AR_FOR_TARGET.
677 Don't define BOOT_LDFLAGS as it is now not necessary.
679 1999-12-29 Geoff Keating <geoffk@cygnus.com>
681 * rs6000.c (rs6000_build_va_list): Use 'char *' rather than 'void *'
682 for va_list on AIX. Use unsigned_char_type_node rather than
683 constructing our own version on svr4.
685 1999-12-17 Geoff Keating <geoffk@cygnus.com>
687 * tramp.asm (__trampoline_size): Delete CYGNUS LOCAL comment,
688 since patently it's not.
690 1999-12-08 Geoff Keating <geoffk@cygnus.com>
692 * config/rs6000/rs6000.md (nonlocal_goto_receiver): Turn into
693 define_expand/define_insn pair, and handle restore of the
696 1999-12-17 Geoff Keating <geoffk@cygnus.com>
698 * New branch for PPC work.