Add note about the merge to the mainline.
[official-gcc.git] / gcc / config / rs6000 / ChangeLog
blob90101321076199c83c9d851545eec88a5caba59a
1 This branch has now been merged into the mainline; you should add any further 
2 changes there.
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.
23         (xer_operand) New.
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 
37         XER_REGNO_P.
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.
41         
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.
70         (CR0_REGNO_P) Remove.
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): 
74         Use the above macros.
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
97         asm_fprintf.
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
103         ELF.
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
112         -mminimal-toc.
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.
121         (ASM_LONG): 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.
148         
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
168         of the TOC.
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,
179         to match RTL.
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
223         the default.
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
252         to call-aix.
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
310         register.
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.
324         (lmw): Likewise.
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.
331         
332         * rs6000.h: Move prototypes to rs6000-protos.h.  Fix compile time
333         warnings.
334         
335         * sysv4.h: Likewise.
337 2000-01-28  Geoff Keating  <geoffk@cygnus.com>
339         * ../../configure.in: Delete powerpcle-*-winnt*
340         and powerpcle-*-pe|powerpcle-*-cygwin*.
341         * ../../configure: Regenerated.
342         * cygwin.h: Delete.
343         * rs6000.h (OBJECT_WINDOWS_NT): Delete.
344         (TARGET_WINDOWS_NT): Delete.
345         (ABI_NT): Delete.
346         (CALL_NT_DLLIMPORT): Delete.
347         Delete NT-specific code.
348         * rs6000.md, rs6000.c, sysv4.h: Delete NT-specific code.
349         * win-nt.h: Delete.
350         * t-winnt: Delete.
351         * nt-ci.asm: Delete.
352         * nt-cn.asm: Delete.
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
395         if TARGET_POWERPC64.
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
412         heavily.
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.
425         (stmw): 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.
432         (movdi): Likewise.
433         (movhi): Likewise.
434         (movqi): Likewise.
436 2000-01-19  Geoff Keating  <geoffk@cygnus.com>
438         * rs6000.md (movsi_got): 'unspec 8' returns a SImode result,
439         at present.
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
450         with unspec.
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
455         with unspec.
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
474         specially.
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.
494         (lmw): 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
516         switches.
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
531         AIX and SVR4.
532         * sysv4.h: Delete the code between the inclusion of rs6000.h
533         and svr4.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
572         64-bit mode.
573         (TEXT_SECTION_ASM_OP): Likewise.
574         (ASM_OUTPUT_ADD_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Always use
575         32-bit offsets.
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
581         compiling libgcc2.
582         
583 2000-01-06  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
585         * rs6000.h: Move more stuff from here...
586         * aix.h: to 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.
593         * aix.h: Likewise.
594         * lynx.h: Likewise.
595         * netware.h: Likewise.
596         * sol2.h: Likewise.
597         * sysv4.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.
633         * aix.h: New file.
635         * x-aix41-gld: Remove.  
636         * x-aix43: 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
671         a single file.
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
694         SVR4 -fpic register.
696 1999-12-17  Geoff Keating  <geoffk@cygnus.com>
698         * New branch for PPC work.