OSDN Git Service

* config/ia64/hpux.h: Predefine __STDCPP__ when compiling C++.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2004-04-26  Zack Weinberg  <zack@codesourcery.com>
2
3         * config/ia64/hpux.h: Predefine __STDCPP__ when compiling C++.
4         * config/pa/pa-hpux10.h: Likewise.
5         * config/pa/pa-hpux11.h: Likewise.
6
7 2004-04-26  Geoffrey Keating  <geoffk@apple.com>
8
9         * doc/invoke.texi (Overall Options): Document default for -o
10         for PCH files.
11
12 2004-04-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
13
14         * builtins.c (expand_builtin_update_setjmp_buf): New function.
15         (expand_builtin, case BUILT_IN_UPDATE_SETJMP_BUF): New case.
16         * builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): New code.
17
18 2004-04-26  Paul Brook  <paul@codesourcery.com>
19
20         * config/arm/arm.c (arm_legitimate_index_p): Correct iwmmxt offsets.
21
22 2004-04-26  Paul Brook  <paul@codesourcery.com>
23
24         * config/arm/arm.c (arm_legitimate_index_p): Correct maverick offsets.
25
26 2004-04-25  Roger Sayle  <roger@eyesopen.com>
27
28         * fold-const.c (fold): Prefer fold_convert (negate_expr (...)) to
29         fold (build1 (NEGATE_EXPR, ...)).  Optimize X / -1 as -X and
30         X % -1 as 0.
31
32 2004-04-26  Hans-Peter Nilsson  <hp@bitrange.com>
33
34         PR bootstrap/15141
35         * except.c (connect_post_landing_pads): Delete insns after the
36         barrier when generating a unwind_resume_libfunc call.
37
38 2004-04-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
39
40         PR/c++ 15119
41         * tree.c (substitute_placeholder_in_expr, case 4): New case,
42         for TARGET_EXPR.
43
44 2004-04-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
45
46         * gcov-io.h (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
47         __gcov_execv, __gcov_execvp, __gcov_execve): Do not declare when
48         inhibit_libc is defined.
49
50 2004-04-25  Richard Sandiford  <rsandifo@redhat.com>
51
52         * config/mips/mips-protos.h (mips_linked_macc_p): Declare.
53         * config/mips/mips.h (TUNE_MACC_CHAINS): New macro.
54         * config/mips/mips.c (TARGET_SCHED_REORDER): Define.
55         (TARGET_SCHED_VARIABLE_ISSUE): Define.
56         (mips_adjust_cost): Move later in file, next to other sched hooks.
57         (mips_macc_chains_last_hilo): New variable.
58         (mips_linked_madd_p, mips_macc_chains_record, mips_macc_chains_reorder)
59         (mips_promote_ready, mips_sched_reorder, mips_variable_issue): New.
60         * config/mips/mips.md (may_clobber_hilo): New attribute.
61
62 2004-04-24  Roger Sayle  <roger@eyesopen.com>
63             Bruce Korb  <bkorb@gnu.org>
64
65         * fixinc/inclhack.def (aix_syswait_2): New fix.
66         * fixinc/fixincl.x: Regenerate.
67         * fixinc/tests/base/sys/wait.h: Update for new test.
68
69 2004-04-24  Alan Modra  <amodra@bigpond.net.au>
70
71         PR target/14960
72         * config/rs6000/rs6000.c (rs6000_stack_info): Rename total_raw_size
73         to non_fixed_size, and leave out fixed_size from the sum.
74         (generate_set_vrsave): Correct clobbers.
75         (rs6000_emit_epilogue): Test TARGET_ALTIVEC with TARGET_ALTIVEC_SAVE.
76         (rs6000_function_value): Test TARGET_ALTIVEC and TARGET_ALTIVEC_ABI.
77         (rs6000_libcall_value): Likewise.
78         * config/rs6000/rs6000.h (FUNCTION_VALUE_REGNO_P): Likewise.
79         (FUNCTION_ARG_REGNO_P): Likewise.
80
81 2004-04-24  Ulrich Weigand  <uweigand@de.ibm.com>
82
83         * expmed.c (expand_mult_highpart_adjust): Do not assume OP1
84         is a CONST_INT.
85         (expand_mult_highpart_optab): Call expand_mult_highpart_adjust
86         with NARROW_OP1 instead of OP1.
87
88 2004-04-24  Ulrich Weigand  <uweigand@de.ibm.com>
89
90         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __s390__
91         and __s390x__ hosts.
92
93 2004-03-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
94
95         * Makefile.in (LIBGCOV): Add _gcov_fork, _gcov_execl, _gcov_execlp,
96         _gcov_execle, _gcov_execv, _gcov_execvp, _gcov_execve.
97         * builtin-types.def (BT_PID, BT_PTR_CONST_STRING, BT_FN_PID,
98         BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
99         BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING): New.
100         * builtins.c (expand_builtin_fork_or_exec): New.
101         (expand_builtin): Call it.
102         * builtins.def (BUILT_IN_EXECL, BUILT_IN_EXECLP,BUILT_IN_EXECLE,
103         BUILT_IN_EXECV, BUILT_IN_EXECVP, BUILT_IN_EXECVE, BUILT_IN_FORK): New.
104         * c-common.c (PID_TYPE): New macro.
105         (c_common_nodes_and_builtins): Initialize pid_type_node.
106         * calls.c (special_function_p): Do not handle fork and exec.
107         (expand_call): Do not handle ECF_FORK_OR_EXEC.
108         * gcov-io.h (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
109         __gcov_execv, __gcov_execvp, __gcov_execve): Declare.
110         * libgcov.c (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
111         __gcov_execv, __gcov_execvp, __gcov_execve): New.
112         * tree.h (enum tree_index): Add TI_PID_TYPE.
113         (pid_type_node): New macro.
114         (ECF_FORK_OR_EXEC): Removed.
115
116 2004-04-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
117
118         PR optimization/13985
119         * cfgloopmanip.c (fix_loop_placements): New prototype.
120         Call fix_bb_placements on the preheader of loops that have
121         been reparented.
122         (remove_path): Adjust call to fix_loop_placements.
123
124 2004-04-23  Andrew Pinski  <pinskia@physics.uc.edu>
125
126         * config/darwin7.h: New file.
127         * config.gcc (*-*-darwin*): Add darwin7.h if the
128         version is greater than 6.
129         * config/darwin.h (TARGET_C99_FUNCTIONS): Define.
130         (MATH_LIBRARY): Wrap in ifdefs.
131
132 2004-04-23  Daniel Jacobowitz  <drow@mvista.com>
133
134         * config/arm/arm.c (arm_output_epilogue): Reverse the order of
135         loading iWMMXt registers with a frame pointer.  Use post-increment
136         without a frame pointer.
137         (arm_expand_prologue): Reverse the order of saving iWMMXt registers.
138
139 2004-04-23  Paolo Bonzini  <bonzini@gnu.org>
140
141         * doc/invoke.texi (Optimize Options): Refer to "unit-at-a-time
142         mode" rather than "-funit-at-a-time" since -O2 enables it
143         without requiring -f* options.  Refer to -fprofile-generate and
144         -fprofile-use correctly.  Move -funit-at-a-time among options
145         enabled by -O.  Add information about unit-at-a-time caveats.
146
147 2004-04-22  Per Bothner  <per@bothner.com>
148
149         * line-map.h (struct line_maps):  New field highest_line.
150         (linemap_position_for_column):  Make non-inline function.
151         (LINEMAP_POSITION_FOR_COLUMN):  New macro.
152         * line-map.c (linemap_init):  Clear highest_line field.
153         (linemap_add):  Set highest_line field.
154         (linemap_line_start):  Minor optimization - use highest_line field.
155         Reduce maximum column hint to 10000.  Update highest_line field.
156         (linemap_position_for_column):  Moved from line-map.h.  Optimize a bit.
157         * cpphash.h (struct cpp_reader):  Remove line field - instead use
158         line_table->highest_line.
159         (saved_line):  Remove unused field.
160         (CPP_INCREMENT_FILE):  Don't do linemap_lookup - just use newest map.
161         Use  line_table's highest_line field instead of cpp_reader's line.
162         * cpplib.c (start_directive):  Likewise use highest_line field.
163         (do_line, do_linemarker):  Likewise just use newest map.
164         (_cpp_do_file_change):  Don't need to set cpp_reader's line field.
165         * cpperror.c (cpp_error):  Likewise use highest_line field.
166         * cppfiles.c (open_file_failed:  Likewise.
167         (cpp_make_system_header):  Likewise use newest map and highest_line.
168         * cppinit.c (cpp_create_reader):  Don't initialize removed field.
169         * cpplex.c (_cpp_process_line_notes, _cpp_skip_block_comment,
170         skip_line_comment, skip_whitespace, _cpp_get_fresh_line,
171         _cpp_lex_direct):  Likewise use highest_line.
172         (_cpp_lex_direct):  Use new LINEMAP_POSITION_FOR_COLUMN macro.
173         * cppmacro.c (_cpp_builtin_macro_text):  Likewise use highest_line,
174         and use newest map.
175         * cpppch.c (cpp_read_state):  Don't save+restore cpp_reader's line.
176         * cpptrad.c (_cpp_overlay_buffer):  Don't save cpp_reader's line.
177         (copy_comment, _cpp_scan_out_logical_line):  Likewise use highest_line.
178
179 2004-04-23  Alan Modra  <amodra@bigpond.net.au>
180
181         PR bootstrap/14992
182         * gcc.c (init_gcc_specs): Test USE_LD_AS_NEEDED, not HAVE_LD_AS_NEEDED.
183         * config/linux.h (USE_LD_AS_NEEDED): Define.
184         * gcc/config/alpha/linux.h (USE_LD_AS_NEEDED): Define.
185         * gcc/config/arm/linux-elf.h (USE_LD_AS_NEEDED): Define.
186         * gcc/config/rs6000/linux.h (USE_LD_AS_NEEDED): Define.
187         * gcc/config/rs6000/linux64.h (USE_LD_AS_NEEDED): Define.
188         * gcc/config/sh/linux.h (USE_LD_AS_NEEDED): Define.
189         * gcc/config/sparc/linux.h (USE_LD_AS_NEEDED): Define.
190         * gcc/config/sparc/linux64.h (USE_LD_AS_NEEDED): Define.
191
192 2004-04-22  Per Bothner  <per@bothner.com>
193
194         * cppinit.c (cpp_read_main_file):  Return NULL rather than false.
195         Fixes PR preprocessor/15067.
196
197 2004-04-23  Andreas Schwab  <schwab@suse.de>
198
199         * config/ia64/ia64intrin.h: Add intermediate cast to void * to
200         avoid aliasing warning.
201
202 2004-04-22  Jan Hubicka  <jh@suse.cz>
203             Mostafa Hagog <mustafa@il.ibm.com>
204
205       * cfgloopmanip.c (scale_bbs_frequencies): Use RDIV macro
206       * cfgloopanal.c (expected_loop_iterations): Change the return value
207
208 2004-04-22  Jakub Jelinek  <jakub@redhat.com>
209
210         * cselib.h (struct elt_loc_list): Remove canon_loc field.
211         * cselib.c (new_elt_loc_list): Remove canon_loc initialization.
212         (cselib_invalidate_mem): Remove all canon_loc and canon_x
213         traces.
214
215 2004-04-22  Josef Zlomek  <zlomekj@suse.cz>
216
217         Revert
218         2004-04-20  Josef Zlomek  <zlomekj@suse.cz>
219
220                 * var-tracking.c (variable_part_different_p): Variable parts
221                 differ when the most recent locations differ.
222
223 2004-04-22  Richard Sandiford  <rsandifo@redhat.com>
224
225         * doc/invoke.texi: Remove the MIPS -membedded-pic option.
226         * config/mips/mips-protos.h (embedded_pic_fnaddr_reg): Delete.
227         (embedded_pic_offset): Delete.
228         * config/mips/mips.h (MASK_EMBEDDED_PIC): Delete.  Shuffle other
229         MASK_* constants.
230         (TARGET_EMBEDDED_PIC): Delete.
231         (TARGET_SWITCHES): Remove -m{no-,}embedded-pic.
232         (ASM_SPEC): Remove -membedded-pic.
233         (ASM_OUTPUT_ADDR_DIFF_ELT): Remove embedded-pic handling.
234         (ASM_OUTPUT_CASE_LABEL): Likewise.
235         * config/mips/vxworks.h (ASM_SPEC): Remove -membedded-pic.
236         * config/mips/windiss.h (ASM_SPEC): Likewise.
237         * config/mips/mips.c (struct machine_function): Remove
238         embedded_pic_fnaddr_rtx.
239         (TARGET_ENCODE_SECTION_INFO): Remove override.
240         (embedded_pic_fnaddr_reg, embedded_pic_offset): Delete.
241         (override_options): Remove -membedded-pic handling.
242         (print_operand): Remove handling of '%S'.
243         (mips_select_section: Remove -membedded-pic handling.
244         (mips_encode_section_info): Delete.
245         (mips_output_conditional_branch): Remove mention of -membedded-pic.
246         * config/mips/mips.md (define_attr length, movsi, movdi, jump): Remove
247         -membedded-pic handling.
248         (casesi, casesi_internal, casesi_internal_di, get_fnaddr): Delete.
249
250 2004-04-22  Alan Modra  <amodra@bigpond.net.au>
251
252         * var-tracking.c (frame_base_decl): Remove useless GTY.
253
254 2004-04-21  Aldy Hernandez  <aldyh@redhat.com>
255
256         * config/rs6000/rs6000.c (rs6000_override_options): Error when
257         user wants altivec and e500 instructions.
258
259 2004-04-21  H.J. Lu  <hongjiu.lu@intel.com>
260
261         PR target/14813
262         * config/ia64/crtend.asm: Move pointer to __do_global_ctors_aux
263         in .init_array section to ...
264         * config/ia64/crtbegin.asm: Here.
265
266         * config/ia64/crtend.asm: Mark __do_global_ctors_aux global
267         and hidden if HAVE_INITFINI_ARRAY is defined.
268
269 2004-04-21  James E Wilson  <wilson@specifixinc.com>
270
271         * config/mips/mips-protos.h (fp_register_operand, lo_operand): Declare.
272         * config/mips/mips.c (mips_multipass_dfa_lookahead): Declare.
273         (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): New.
274         (fp_register_operand, lo_operand): New.
275         (mips_rtx_costs): Add TUNE_SB1 support.
276         (mips_issue_rate): Add comment.  Add PROCESSOR_SB1 support.
277         (mips_use_dfa_pipeline_interface): Add PROCESSOR_SB1 support.
278         (mips_multipass_dfa_lookahead): New.
279         * config/mips/mips.h (MASK_FP_EXCEPTIONS, TARGET_FP_EXCEPTIONS,
280         TUNE_SB1): New.
281         (TARGET_SWITCHES): Add -mfp-exceptions support.
282         (TARGET_FP_EXCEPTIONS_DEFAULT): New.
283         (BRANCH_COST): Fix whitespace.
284         * config/mips/mips.md: Include sb1.md.
285         * config/mips/sb1.md: New file.
286         * doc/invoke.texi: Document -mfp-exceptions.
287
288         * Makefile.in (fixinc.sh): Don't set or export WARN_CFLAGS.  Fix
289         comment.
290         * fixinc/Makefile.in (FL_LIST): Don't mention WARN_CFLAGS.
291         (fixincl.o-warn): Delete.
292
293 2004-04-21  Andrew Pinski  <pinskia@physics.uc.edu>
294
295         * config/rs6000/rs6000 (print_operand) ['z']:
296         Change ifdef of TARGET_MACHO to if TARGET_MACHO.
297
298 2004-04-21 Daniel Jacobowitz  <drow@mvista.com>
299
300         * config.gcc: Support --with-arch=iwmmxt for ARM.
301
302 2004-04-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
303
304         * expmed.c (expand_mult_highpart_optab): Use narrower version of OP1
305         in two more places; remove unneeded force_reg
306
307 2004-04-21  Andrew Pinski  <pinskia@physics.uc.edu>
308
309         * config/rs6000/rs6000.c (symbol_ref_operand): Remove hack
310         for TARGET_MACHO.
311         (print_operand): For TARGET_MACHO check to see if we need a stub
312         and output one if we need it.
313
314         PR debug/15033
315         * dwarf2out.c (rtl_for_decl_location): Check for NULL
316         rtl.
317
318 2004-04-20  James E Wilson  <wilson@specifixinc.com>
319
320         * config/ia64/ia64.md (call_value_nogp): Add constraints for op0.
321         (vall_value_gp): Likewise.
322
323 2004-04-20  DJ Delorie  <dj@redhat.com>
324
325         * dwarf2out.c (rtl_for_decl_location): Adjust rtl for byte
326         variables stored in word registers, then in memory.
327
328 2004-04-20  Eric Christopher  <echristo@redhat.com>
329
330         * cp/parser.c (cp_parser_declaration): Move translate
331         up before tokens are lexed.
332
333 2004-04-20  Uros Bizjak  <uros@kss-loka.si>
334
335         * optabs.h (enum optab_index): Add new OTI_asin and OTI_acos.
336         (asin_optab, acos_optab): Define corresponding macros.
337         * optabs.c (init_optabs): Initialize asin_optab and acos_optab.
338         * genopinit.c (optabs): Implement asin_optab and acos_optab
339         using asin?f2 and acos?f2 patterns.
340         * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_ASIN{,F,L}
341         using asin_optab, and BUILT_IN_ACOS{,F,L} using acos_optab.
342         (expand_builtin): Expand BUILT_IN_ASIN{,F,L} and BUILT_IN_ACOS{,F,L}
343         using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
344
345         * config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2,
346         acossf2, acosxf2): New expanders to implement asin, asinf, asinl,
347         acos, acosf and acosl built-ins as inline x87 intrinsics.
348
349 2004-04-20  Paul Brook  <paul@codesourcery.com>
350
351         * config/arm/arm.c (arm_legitimate_address_p): Use rtx_equal_p.
352
353 2004-04-20  Paul Brook  <paul@codesourcery.com>
354
355         * config/arm/arm.c (arm_expand_prologue): Fix size calculation.
356
357 2004-04-20  Paolo Bonzini  <bonzini@gnu.org>
358
359         Revert part of 2004-04-17 change that moved -frename-registers
360         to -O1.  -frename-registers is buggy.
361
362         * toplev.c (flag_rename_registers): Initialize to 0.
363         * doc/invoke.texi (Optimize options): Move -frename-registers
364         to "Not triggered by any -O level" section.  Adjust commentary
365         accordingly.
366
367 2004-04-20  Anil Paranjpe <anilp1@kpitcummins.com>
368
369         * toplev.c (compile_file): Move targetm.asm_out.file_end call to end.
370
371 2004-04-20  Richard Sandiford  <rsandifo@redhat.com>
372
373         * config/mips/mips.c (mips_legitimize_move): Generate special patterns
374         for mflo and mfhi instructions.
375         (mips_output_move): Remove mflo and mfhi handling.
376         * config/mips/mips.md (UNSPEC_MFHILO): New unspec.
377         (*mulsidi3_64bit): Update for new mfhi/mflo representation.
378         Likewise various define_peephole2s.
379         (*movdi_32bit, *movdi_64bit, *movsi_internal): Merge x<-J and x<-d
380         alternatives.
381         (*movdi_64bit, *movdi_64bit_mips16, *mov[shq]i_internal)
382         (*mov[shq]i_mips16): Remove mflo and mfhi alternatives.
383         (mfhilo_di, mfhilo_si): New patterns.
384
385 2004-04-20  Josef Zlomek  <zlomekj@suse.cz>
386
387         * function.c (assign_parms): Force
388         MEM_EXPR (DECL_INCOMING_RTL (parm)) == parm.
389
390 2004-04-20  Josef Zlomek  <zlomekj@suse.cz>
391
392         * var-tracking.c (variable_part_different_p): Variable parts differ
393         when the most recent locations differ.
394
395 2004-04-19  James E Wilson  <wilson@specifixinc.com>
396
397         * rtl.h (reg_set_last): Delete declaration.
398         * rtlanal.c (reg_set_last): Delete.
399
400 2004-04-19  Roger Sayle  <roger@eyesopen.com>
401
402         * fold-const.c (fold_convert): Make function extern/public.
403         * tree.h (fold_convert): Prototype here.
404         * builtins.c (expand_builtin_strstr, expand_builtin_strchr,
405         expand_builtin_strrchr, expand_builtin_strpbrk,
406         expand_builtin_mempcpy, expand_builtin_bcopy,
407         expand_builtin_bzero, expand_builtin_memcmp,
408         expand_builtin_strcmp, expand_builtin_strncmp,
409         stabilize_va_list, expand_builtin_sprintf,
410         fold_trunc_transparent_mathfn, fold_builtin_logarithm,
411         fold_builtin_exponent, fold_builtin_mempcpy,
412         fold_builtin_strcpy, fold_builtin_strcmp, fold_builtin_strncmp,
413         fold_builtin_signbit, fold_builtin_isdigit, fold_builtin): Prefer
414         fold_convert to "convert" or "fold (build1 (NOP_EXPR, ...))".
415
416 2004-04-19  Aldy Hernandez  <aldyh@redhat.com>
417
418         * config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): New constant.
419         (move_from_CR_gt_bit): New.
420         (cceq_ior_compare): Name previously unnamed pattern.  Disable for
421         E500.
422         (cceq_rev_compare): Name previously unnamed pattern.  Allow for
423         E500.
424
425         * config/rs6000/spe.md (cmpsfeq_gpr): Rewrite as unspec.
426         (tstsfeq_gpr): Same.
427         (cmpsfgt_gpr): Same.
428         (tstsfgt_gpr): Same.
429         (cmpsflt_gpr): Same.
430         (tstsflt_gpr): Same.
431         (e500_cceq_ior_compare): New.
432         (e500_flip_gt_bit): New.
433
434         * config/rs6000/rs6000.c (ccr_bit): Remove E500 specific code.
435         (print_operand): Add 'c' and 'D'.
436         (rs6000_generate_compare): Rewrite to generate correct rtl.
437         (rs6000_emit_sCOND): Handle E500.
438         (output_cbranch): Adjust for changes in rs6000_generate_compare.
439         (output_e500_flip_gt_bit): New.
440
441         * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit):
442         Protoize.
443
444 2004-04-19  Eric Christopher  <echristo@redhat.com>
445
446         * config/mips/mips.h (DWARF2_ADDR_SIZE): New.
447
448 2004-04-19  David Edelsohn  <edelsohn@gnu.org>
449
450         * doc/install.texi (*-ibm-aix*): Add AIX 5.1 assembler and archiver
451         fix information.
452
453 2004-04-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
454
455         * doc/install.texi (Specific, mips-sgi-irix5): Fix IRIX 5.3 IDO
456         download URL.
457
458 2004-04-19  Daniel Jacobowitz  <drow@mvista.com>
459
460         * stor-layout.c (layout_decl): Check DECL_PACKED before calling
461         ADJUST_FIELD_ALIGN.  Check maximum_field_alignment after.
462
463 2004-04-19  Andrew PInski  <pinskia@physics.uc.edu>
464
465         * builtins.c (fold_builtin_cabs): Remove fndecl parameter.
466         (fold_builtin): Update caller to match.
467
468         PR bootstrap/15009
469         * bb-reorder.c (fix_up_fall_thru_edges): Init cond_jump.
470
471         PR bootstrap/14999
472         * builtins.c (fold_builtin_cabs): Mark fndecl as unused.
473
474 2004-04-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
475
476         * varasm.c (compare_constant, case VIEW_CONVERT_EXPR): Add case.
477
478         * expmed.c (expand_mult_highpart_adjust): Make OP1 valid for MODE.
479         (expand_mult_highpart_optab): Likewise.
480         (expand_mult_highpart): Make OP1 valid for WIDER_MODE, not MODE.
481
482 2004-04-19  Paul Brook  <paul@codesourcery.com>
483
484         * config/arm/arm.md (fixuns_truncsfsi2, fixuns_truncdfsi2,
485         floatunssisf2, floatunssidf2): New patterns.
486
487 2004-04-18  Mark Mitchell  <mark@codesourcery.com>
488
489         PR other/14918
490         * doc/invoke.texi (-fprofile-generate): Document requirement to
491         use -fprofile-generate when linking.
492
493         * doc/extend.texi (Strong Using): Warn users against using this
494         feature.
495
496 2004-04-18  Richard Sandiford  <rsandifo@redhat.com>
497
498         * config/mips/mips-protos.h (m16_usym8_4, m16_usym5_4): Delete.
499         * config/mips/mips.h (mips_entry, mips_string_length): Delete.
500         (CONSTANT_POOL_BEFORE_FUNCTION, ASM_OUTPUT_POOL_EPILOGUE): Undefine.
501         * config/mips/mips.c (struct mips16_constant): Renamed from struct
502         constant.  Propogate change throughout file.
503         (struct machine_function): Remove insns_len.
504         (mips_string_length, mips16_strings, string_constants): Delete.
505         (mips_classify_symbol): Return SYMBOL_CONSTANT_POOL for LABEL_REFs
506         when generating mips16 code.  Remove special mips16 treatment of
507         string constants.
508         (mips_symbolic_constant_p): Allow mips16 constant pool accesses
509         to have the form LABEL+CONSTANT.
510         (mips_symbolic_address_p): Fix comment.
511         (m16_usym8_4, m16_usym5_4): Delete.
512         (mips_output_function_epilogue): Remove mips16 string handling.
513         (mips_output_mi_thunk): Call mips16_lay_out_constants.
514         (mips_select_section, mips_encode_section_info): Remove mips16
515         string handling.
516         (struct mips16_constant_pool): New.
517         (add_constant): Take a mips16_constant_pool structure.  Keep pool
518         sorted into order of ascending mode size.  Keep track of the highest
519         possible start address, taking padding and the masking of the base PC
520         value into account.
521         (dump_constants_1): New function, split out from dump_constants.
522         Handle vector constants.  Use gen_consttable_{int,float} rather than
523         separate functions for each mode.
524         (dump_constants): Simplify.  Use GET_MODE_ALIGNMENT.  Use gen_align
525         rather than separate functions for each alignment.
526         (mips_find_symbol): Delete.
527         (mips16_insn_length): New function, split out from
528         mips16_lay_out_constants.
529         (mips16_rewrite_pool_refs): New function.
530         (mips16_lay_out_constants): Rework. Remove string handling.
531         Always create an inline constant pool.
532         * config/mips/mips.md (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT)
533         (UNSPEC_ALIGN): New constants.
534         (UNSPEC_CONSTTABLE_[QHSD]I, UNSPEC_CONSTTABLE_[SD]F): Delete.
535         (UNSPEC_ALIGN_[248]): Delete.
536         (consttable_int, consttable_float, align): New patterns.
537         (consttable_[qhsd]i, consttable_[sd]f, align_[248]): Delete.
538
539 2004-04-17  Aldy Hernandez  <aldyh@redhat.com>
540
541         * config/rs6000/altivec.h (vec_any_numeric): Correct typo in
542         __unn_args_eq.
543
544 2004-04-17  Alan Modra  <amodra@bigpond.net.au>
545
546         PR target/14715
547         * config/rs6000/rs6000.c (rs6000_stack_info): Make parm_size agree
548         with STARTING_FRAME_OFFSET.
549
550 2004-04-17  Richard Sandiford  <rsandifo@redhat.com>
551
552         * config/mips/mips.h (PREDICATE_CODES): Add macc_msac_operand.
553         * config/mips/mips.c (macc_msac_operand): New function.
554         * config/mips/mips.md (*msac): Move after *macc.
555         (*msac2): New.  Generalize macc-related peepholes so that they apply
556         to msac too.
557
558 2004-04-17  Paolo Bonzini  <bonzini@gnu.org>
559
560         * opts.c (decode_options): Do not enable flag_rename_registers
561         and flag_web at -O3.
562         * toplev.c (flag_rename_registers): Initialize
563         flag_rename_registers and flag_web to
564         AUTODETECT_FLAG_VAR_TRACKING.
565         (default_debug_hooks): New global.
566         (process_options): Initialize default_debug_hooks.  Warn if
567         -fvar-tracking specified but not supported by the current
568         debug format.  Do not run var tracking at -O0 or if not
569         supported by the current debug format, even if
570         -fvar-tracking was given.  If -fno-rename-registers
571         is not specified, always run register renaming if var
572         tracking is supported by the default debugging information
573         format for the target, and we are at -O1 or higher; similarly
574         for -fweb, but only at -O2 or higher.
575         * doc/invoke.texi (Optimize Options): Document this.
576
577 2004-04-17  Richard Sandiford  <rsandifo@redhat.com>
578
579         * configure.ac (gcc_cv_ld_as_needed): Use AC_CACHE_CHECK.
580         * configure: Regenerate.
581
582 2004-04-17  Richard Sandiford  <rsandifo@redhat.com>
583
584         * gcc.c (used_arg): Check whether an option has been removed.
585
586 2004-04-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
587
588         * config.gcc (i[34567]86-*-solaris2*): Default to DWARF-2
589         debugging on Solaris 7 and up.
590
591 2004-04-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
592
593         * doc/install.texi (Specific, mips-sgi-irix5): Reflect working
594         IRIX 5 port.
595         Remove -save-temps workaround, handled automatically.
596         Require GNU binutils 2.15 for debugging.
597         Remove SGI make warnings since GNU make is now required.
598         (Specific, mips-sgi-irix6): Some markup fixes.
599         Describe MIPSpro C problems and workarounds.
600         Mention working O32 ABI support.
601         Recommend GNU as 2.15 for O32 with debugging.
602         Remove description of fixed structure pass/return bug.
603
604 2004-04-16  DJ Delorie  <dj@redhat.com>
605
606         * sdbout.c (sdbout_one_type): Use TYPE_VALUES for enums, not
607         TYPE_FIELDS.
608         (sdbout_finish): Don't free deferred_global_decls; it's GC'd.
609
610 2004-04-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
611
612         * pa.md: Remove unnecessary declarations for asm_out_file.
613
614         * pa64-regs.h (DBX_REGISTER_NUMBER): Simplify and correct mapping of
615         SAR register.  Fix comment.
616         (ADDITIONAL_REGISTER_NAMES): Correct register number of SAR register
617         (%cr11).
618
619         * pa64-hpux.h (LIB_SPEC): Fix library specification used with GNU ld.
620
621 2004-04-16  Nick Clifton  <nickc@redhat.com>
622
623         * config/arm/arm.c (arm_override_options): Revert previous patch.
624         * config/arm/t-xscale-elf: Disable iwmmxt multilibs until they can
625         be safely built.
626
627 2004-04-16  Kazuhiro Inaoka <inaoka dot kazuhiro at renesas dot com>
628
629         * config/m32r/m32r.h (BIG_ENDIAN_BIT): Deleted to fix endian
630         bug.
631         (TARGET_LITTLE_ENDIAN, TARGET_BIG_ENDIAN,
632         TARGET_DEFAULT): Changed. Ditto.
633         (LITTLE_ENDIAN_BIT, TARGET_CPU_DEFAULT,
634         TARGET_ENDIAN_DEFAULT): Added. Ditto.
635         * config/m32r/little.h (TARGET_LITTLE_ENDIAN): Deleted.
636         (TARGET_ENDIAN_DEFAULT): Added.
637
638 2004-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
639
640         * builtins.def (BUILT_IN_ISDIGIT, BUILT_IN_ISXDIGIT): Mark with
641         ATTR_CONST_NOTHROW_LIST.
642
643 2004-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
644
645         PR/middle-end 14915
646         * builtins.c (expand_builtin_signbit): Test BYTES_BIG_ENDIAN, not
647         BITS_BIG_ENDIAN.
648
649 2004-04-15  Pat Haugen  <pthaugen@us.ibm.com>
650
651         * ra-debug.c (ra_print_rtx): Add break's to case legs.
652
653 2004-04-14  James E Wilson  <wilson@specifixinc.com>
654
655         * Makefile.in (fixinc.sh): Set WARN_CFLAGS to empty string.
656
657 2004-04-14  Nathanael Nerode  <neroden@gcc.gnu.org>
658
659         * libada-mk.in: New file.
660         * configure.ac: Create libada-mk from libada-mk.in.
661         * configure: Regenerate.
662
663 2004-04-14  Uros Bizjak  <uros@kss-loka.si>
664
665         * optabs.h (enum optab_index): Add new OTI_logb and OTI_ilogb.
666         (logb_optab, ilogb_optab): Define corresponding macros.
667         * optabs.c (init_optabs): Initialize logb_optab and ilogb_optab.
668         * genopinit.c (optabs): Implement logb_optab and ilogb_optab
669         using logb?f2 and ilogb?i2 patterns.
670         * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LOGB{,F,L}
671         using logb_optab, and BUILT_IN_ILOGB{,F,L} using ilogb_optab.
672         (expand_builtin): Expand BUILT_IN_LOGB{,F,L} and BUILT_IN_ILOGB{,F,L}
673         using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
674
675         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_XTRACT_FRACT
676         and UNSPEC_XTRACT_EXP.
677
678         * config/i386/i386.md (*fxtractdf3, *fxtractsf3, *fxtractxf3): New
679         patterns to implement fxtract x87 instruction.
680         (logbdf2, logbsf2, logbxf2, ilogbsi2): New expanders to implement
681         logb, logbf, logbl, ilogb, ilogbf and ilogbl built-ins as inline x87
682         intrinsics.
683         (UNSPEC_XTRACT_FRACT, UNSPEC_XTRACT_EXP): New unspecs to represent
684         x87's fxtract insn.
685
686 2004-04-14  Eric Christopher  <echristo@redhat.com>
687
688         * config/mips/t-elf: Enable multilibs by default.
689
690 2004-04-14  Andreas Tobler  <a.tobler@schweiz.ch>
691
692         * bb-reorder.c (fix_crossing_conditional_branches): Adjust the
693         previous fix to check HAVE_return at runtime too.
694
695 2004-04-14  Nick Clifton  <nickc@redhat.com>
696
697         * config/arm/arm.c (arm_override_options): If the user has not
698         specified an ABI, then default to AAPCS for the iWMMXt processor.
699         * config/arm/t-xscale-elf: Remove redundant multilib specifications.
700         * config/arm/t-xscale-coff: Likewise.
701
702 2004-04-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
703
704         * builtins.c (fold_builtin_isdigit): New.
705         (fold_builtin): Handle BUILT_IN_ISDIGIT.
706         * defaults.h: Add TARGET_DIGIT0 and sort.
707         * doc/tm.texi: Add TARGET_BS and TARGET_DIGIT0.
708
709 2004-04-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
710
711         * builtins.c (fold_builtin_cabs, fold_builtin): Use
712         `mathfn_built_in' to determine the new builtin.
713         * fold-const.c (fold): Likewise.
714
715 2004-04-14  Richard Sandiford  <rsandifo@redhat.com>
716
717         * doc/invoke.texi: Rename MIPS's -mfix-vr4122-bugs to -mfix-vr4120.
718         * config/mips/mips.h (MASK_FIX_VR4120): Renamed from MASK_FIX_VR4122.
719         (TARGET_FIX_VR4120): Likewise TARGET_FIX_VR4122.
720         (TARGET_SWITCHES): Replace -mfix-vr4122-bugs with -mfix-vr4120.
721         (ASM_SPEC): Update accordingly.
722         * config/mips/mips.c: Update after above renaming.
723         * config/mips/mips.md, config/mips/t-vr, config/mips/vr.h: Likewise.
724         * config/mips/vr4120-div.S: Renamed from vr4122-div.S.
725
726 2004-04-13  James E Wilson  <wilson@specifixinc.com>
727
728         * c-opt.c (c_common_post_options): If this_input_filename is NULL,
729         increment errorcount and return false instead of true.
730
731 2004-04-13  Uros Bizjak  <uros@kss-loka.si>:
732
733         * optabs.c (expand_twoval_unop): Reorder function arguments.
734         * builtins.c (expand_builtin_mathfn_3): Update calls to
735         expand_twoval_unop.
736
737         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_TAN_ONE
738         and UNSPEC_TAN_TAN. Add missing comment.
739
740         * config/i386/i386.md (*tandf3_1, *tansf3_1, *tanxf3_1): New
741         patterns to implement fptan x87 instruction.
742         (tandf2, tansf2, tanxf2): New expanders to implement tan, tanf
743         and tanl built-ins as inline x87 intrinsics. Define corresponding
744         peephole2 optimizers for 'fptan; fstp %st(0); fld1' sequence.
745         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): New unspecs to represent
746         x87's fptan insn.
747
748 2004-03-13  Richard Henderson  <rth@redhat.com>
749
750         * bb-reorder.c (fix_crossing_unconditional_branches): Use Pmode
751         for LABEL_REFs.
752
753         * defaults.h (HOT_TEXT_SECTION_NAME): Add leading dot.
754         (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Likewise.
755         * doc/invoke.texi: Update to match.
756
757         * varasm.c (unlikely_text_section): Use assemble_align instead of
758         ASM_OUTPUT_ALIGN.  Use it in the correct place with an approximately
759         correct alignment argument.
760
761 2004-04-13  Ulrich Weigand  <uweigand@de.ibm.com>
762
763         * reload1.c (emit_reload_insns): Set reg_has_output_reload to one
764         after setting reg_last_reload_reg for optional output reloads.
765
766 2004-04-12  Fariborz Jahanian <fjahanian@apple.com>
767
768         * config/rs6000/altivec.h (vec_mergeh, vec_mergel):
769         Definition of these two macros are corrected by adding
770         matchine right paren.
771
772 2004-04-12  Jonathan Larmour  <jifl@eCosCentric.com>
773
774         * fix-header.c: kill(), putenv() and tzset() are POSIX not ANSI.
775
776 2004-04-12  Roger Sayle  <roger@eyesopen.com>
777
778         * config/i386/i386.c (output_387_reg_move): New function.
779         * config/i386/i386-protos.h (output_387_reg_move): Prototype here.
780         * config/i386/i386.md (*movsf_1, *movsf1_nointerunit,
781         *movdf_nointeger, *movdf_integer, *movxf_nointeger, *movxf_integer,
782         *extendsfdf2_1,  *extendsfxf2_1, *extenddfxf2_1, truncdfsf2_noop,
783         truncxfsf2_noop, truncxfdf2_noop): Call output_387_reg_move.
784
785 2004-04-12  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
786
787         * c-decl.c (finish_decl): Make a decl_stmt for a variable-sized
788         TYPE_DECL.
789         * c-semantics.c (genrtl_decl_stmt): Handle TYPE_DECL.
790         * stmt.c (expand_decl): Remove redundant expansion of TYPE_DOMAIN.
791         * stor-layout.c (variable_size): Don't check for MINUS_EXPR.
792         Use skip_simple_arithmetic to find SAVE_EXPR.
793         (force_type_save_exprs, force_type_save_exprs_1): New functions.
794         * tree-inline.c (remap_type, case POINTER_TYPE, case REFERENCE_TYPE):
795         Properly chain multiple pointers.
796         (copy_tree_r): Copy a TYPE_DECL.
797         * tree.c (variably_modified_type_p): Add some missing tests and
798         make some other minor changes.
799         * tree.h (force_type_save_exprs): New declaration.
800
801 2004-04-12  Roger Sayle  <roger@eyesopen.com>
802
803         * simplify-rtx.c (simplify_binary_operation) <UDIV, DIV, UMOD, MOD>:
804         Remove fall throughs.  Convert 0/x and 0%x into x&0 when x has
805         side-effects.  Don't convert x/1.0 into x if we honor signaling NaNs.
806         Convert x/-1.0 into -x if we don't honor signaling NaNs.  Convert
807         x/-1 into -x.  Optimize x%1 into x&0 if x has side-effects.  Optimize
808         x%-1 into 0 (or x&0 if x has side-effects).
809
810 2004-04-11  Aldy Hernandez  <aldyh@redhat.com>
811
812         * config/rs6000/rs6000.md: Document why a pattern is not
813         available.
814
815         * config/rs6000/rs6000.c (rs6000_emit_cmove): Disable comparisons
816         of floats on the E500.
817         (branch_positive_comparison_operator): Do not allow NE even on the
818         E500.
819
820 2004-04-11  Aldy Hernandez  <aldyh@redhat.com>
821
822         * config/rs6000/rs6000.c (rs6000_assemble_integer): Change
823         in_text_unlikely_section to in_unlikely_text_section.
824
825 2004-04-11  Roger Sayle  <roger@eyesopen.com>
826
827         * fold-const.c (fold_binary_op_with_conditional_arg):  Tweak
828         calling convention to allow a NULL_TREE to be returned.  Factor
829         sanity checks from callers, return NULL_TREE when appropriate.
830         (fold): Handle COMPOUND_EXPR operands of binary expressions
831         before COND_EXPR operands.  Use reorder_operands_p(a,b) to check
832         whether a op (b,c) can be rewritten as (b, a op c).  Simplify
833         calls to fold_binary_op_with_conditional_arg.
834
835 2004-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
836
837         * config/mips/iris5.h (current_section_flags):  Add
838         in_unlikely_executed_text and default case.
839
840 2004-04-11  Andreas Tobler  <a.tobler@schweiz.ch>
841
842         * bb-reorder.c (fix_crossing_conditional_branches): Fix bootstrap
843         failure on solaris. Place ifdef HAVE_return around gen_ret call.
844         * cfgrtl.c (force_nonfallthru_and_redirect): Remove ifdef
845         HAVE_return and place it around the place where it is needed.
846
847 2004-04-11  Andrew Pinski  <pinskia@physics.uc.edu>
848
849         * varasm.c (text_section): Use TEXT_SECTION_ASM_OP and
850         ASM_OUTPUT_ALIGN instead of SECTION_FORMAT_STRING
851         and NORMAL_TEXT_SECTION_NAME.
852         (unlikely_text_section): Check targetm.have_named_sections
853         instead of TARGET_ASM_NAMED_SECTION and use TEXT_SECTION_ASM_OP
854         instead of SECTION_FORMAT_STRING.
855         * config/mips/iris5.h (current_section_name): Add
856         in_unlikely_executed_text case and move the abort into the switch.
857         * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME): Remove.
858         (NORMAL_TEXT_SECTION_NAME): Remove.
859         (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Remove.
860         (SECTION_FORMAT_STRING): Remove.
861         * defaults.h (SECTION_FORMAT_STRING): Remove.
862         * tm.texi (NORMAL_TEXT_SECTION_NAME): Remove.
863         (SECTION_FORMAT_STRING): Remove.
864
865 2004-04-10  Joseph S. Myers  <jsm@polyomino.org.uk>
866
867         * c-typeck.c (common_type): Prefer long long to long when same
868         precision.
869
870 2004-04-09  Zack Weinberg  <zack@codesourcery.com>
871
872         PR 14887
873         * config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Look only at
874         mode argument.
875         * config/ia64/ia64.c (ia64_hpux_file_end): Check
876         TREE_SYMBOL_REFERENCED on DECL_ASSEMBLER_NAME, not DECL_NAME.
877
878 2004-04-09  Roger Sayle  <roger@eyesopen.com>
879
880         * simplify-rtx.c (mode_signbit_p): New function to check whether
881         an RTX is an immediate constant that represents the most significant
882         bit of a given machine mode.
883         (simplify_unary_operation) <NOT>: Optimize ~(X+C) as X ^ ~C, where
884         C is the sign bit.
885         (simplify_binary_operation) <PLUS>: Optimize (X^C1) + C2 as X^(C1^C2)
886         when C2 is the sign bit.
887         (simplify_binary_operation) <XOR>: Canonicalize X^C as X+C when C
888         is the sign bit.  Optimize (X+C1) ^ C2 as X^(C1^C2) when C1 is the
889         sign bit.
890
891 2004-04-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
892
893         * builtins.c (mathfn_built_in): Check TYPE_MAIN_VARIANT, not
894         TYPE_MODE.
895
896 2004-04-09  Andrew Pinski  <pinskia@physics.uc.edu>
897
898         * c-common.c (handle_noreturn_attribute): Use TYPE_READONLY instead
899         of TREE_READONLY for types.
900
901 2004-04-09  Caroline Tice  <ctice@apple.com>
902
903         * basic-block.h (struct edge_def):  Add new field, crossing_edge.
904         (struct basic_block_def):  Add new field, partition.
905         (UNPARTITIONED, HOT_PARTITION, COLD_PARTITION):  New constant macro
906         definitions.
907         (partition_hot_cold_basic_blocks): Add extern function
908         declaration.
909         * bb-reorder.c (function.h, obstack.h, expr.h, regs.h):  Add four new
910         include statements.
911         (N_ROUNDS): Increase the maximum number of rounds by 1.
912         (branch_threshold): Add array value for new round.
913         (exec_threshold): Add array value for new round.
914         (push_to_next_round_p): New function.
915         (add_unlikely_executed_notes): New function.
916         (find_rarely_executed_basic_blocks_and_crossing_edges): New function.
917         (mark_bb_for_unlikely_executed_section): New function.
918         (add_labels_and_missing_jumps): New function.
919         (add_reg_crossing_jump_notes): New function.
920         (fix_up_fall_thru_edges): New function.
921         (find_jump_block): New function.
922         (fix_crossing_conditional_branches): New function.
923         (fix_crossing_unconditional_branches): New function.
924         (fix_edges_for_rarely_executed_code): New function.
925         (partition_hot_cold_basic_blocks): New function.
926         (find_traces):  Add an extra round for partitioning hot/cold
927         basic blocks.
928         (find_traces_1_round): Add a parameter.  Modify to push all cold blocks,
929         and only cold blocks, into the last (extra) round of collecting traces.
930         (better_edge_p): Add a parameter.  Modify to favor non-crossing edges
931         over crossing edges.
932         (bb_to_key):  Add code to correctly identify cold blocks when
933         doing partitioning.
934         (connect_traces): Modify to connect all the non-cold traces first, then
935         go back and connect up all the cold traces.
936         (reorder_basic_blocks):  Add call to add_unlikely_executed_notes.
937         * cfg.c (entry_exit_blocks): Add initialization for partition field in
938         entry and exit blocks.
939         * cfgbuild.c (make_edges): Update current_function_has_computed_jump
940         if we are doing hot/cold partitioning.
941         * cfgcleanup.c (cfglayout.h): Add new include statement.
942         (try_simplify_condjump): Modify to not attempt on blocks with jumps
943         that cross section boundaries.
944         (try_forward_edges): Likewise.
945         (merge_blocks_move_predecessor_nojumps): Likewise.
946         (merge_blocks_move_successor_nojumps): Likewise.
947         (merge_blocks_move): Likewise.
948         (try_crossjump_to_edge): Modify to not attempt after we have done
949         the block partitioning.
950         (try_crossjump_bb): Modify to not attempt on blocks with jumps that
951         cross section boundaries.
952         (try_optimize_cfg): Likewise.
953         * cfghooks.c (tidy_fallthru_edges): Modify to not remove indirect
954         jumps that cross section boundaries.
955         * cfglayout.c (flags.h): Add new include statement.
956         (update_unlikely_executed_notes):  New function.
957         (fixup_reorder_chain):  Add code so when a new jumping basic block is
958         added, it's UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes are
959         updated appropriately.
960         (duplicate_insn_chain):  Add code to duplicate the new NOTE insn
961         introduced by this optimization.
962         * cfglayout.h (scan_ahead_for_unlikely_executed_note):  Add new
963         extern function declaration.
964         * cfgrtl.c (can_delete_note_p):  Add NOTE_INSN_UNLIKELY_EXECUTED_CODE to
965         list of notes that can be deleted.
966         (create_basic_block_structure):  Add initialization for partition field.
967         (rtl_can_merge_blocks):  Modify to test blocks for jumps that cross
968         section boundaries.
969         (try_redirect_by_replacing_jump):  Modify to not attempt on jumps that
970         cross section boundaries.
971         (commit_one_edge_insertion): Add code so newly created basic block
972         ends up in correct (hot or cold) section.  Modify to disallow
973         insertions before NOTE_INSN_UNLIKELY_EXECUTED_CODE notes.
974         (rtl_verify_flow_info_1):  Add code to verify that no fall_thru edge
975         crosses section boundaries.
976         (cfg_layout_can_merge_blocks_p): Modify to test blocks for jumps that
977         cross section boundaries.
978         (force_nonfallthru_and_redirect): Modify to make sure new basic block
979         ends up in correct section, with correct notes attached.
980         * common.opt (freorder-blocks-and-partition):  Add new flag for this
981         optimization.
982         * dbxout.c (dbx_function_end):  Add code to make sure scope labels at
983         the end of functions are written into the correct (hot or cold)
984         section.
985         (dbx_source_file): Add code so writing debug file information
986         doesn't incorrectly change sections.
987         * defaults.h (NORMAL_TEXT_SECTION_NAME): New constant macro, for use
988         in partitioning hot/cold basic blocks into separate sections.
989         (SECTION_FORMAT_STRING): New constant macro, for linux/i386 hot/cold
990         section partitioning.
991         (HAS_LONG_COND_BRANCH): New constant macro, indicating whether or not
992         conditional branches can span all of memory.
993         (HAS_LONG_UNCOND_BRANCH): New constant macro, indicationg whether or not
994         unconditional branches can span all of memory.
995         * final.c (scan_ahead_for_unlikely_executed_note):  New function.
996         (final_scan_insn):  Add code to check for NOTE instruction indicating
997         whether basic block belongs in hot or cold section, and to make sure
998         the current basic block is being written to the appropriate section.
999         Also added code to ensure that jump table basic blocks end up in the
1000         correct section.
1001         * flags.h (flag_reorder_blocks_and_partition):  New flag.
1002         * ifcvt.c (find_if_case_1):  Modify to not attempt if conversion if
1003         one of the branches has a jump that crosses between sections.
1004         (find_if_case_2): Likewise.
1005         (ifcvt): Modify to not attempt to mark loop exit edges after
1006         hot/cold partitioning has occurred.
1007         * opts.c (decode_options): Code to handle new flag,
1008         flag_reorder_blocks_and_partition; also to turn it off if
1009         flag_exceptions is on.
1010         (common_handle_option): Code to handle new flag,
1011         flag_reorder_blocks_and_partition.
1012         * output.h (unlikely_text_section): New extern function declaration.
1013         (in_unlikely_text_section): New extern function declaration.
1014         * passes.c (rest_of_handle_stack_regs):  Add
1015         flag_reorder_blocks_and_partition as an 'or' condition for calling
1016         reorder_basic_blocks.
1017         (rest_of_handle_reorder_blocks):  Add flag_reorder_blocks_and_partition
1018         as an 'or' condition for calling reorder_basic_blocks.
1019         (rest_of_compilation):  Add call to partition_hot_cold_basic_blocks.
1020         * print-rtl.c (print_rtx): Add code for handling new note,
1021         NOTE_INSN_UNLIKELY_EXECUTED_CODE
1022         * rtl.c  (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note insn (see below).
1023         (REG_CROSSING_JUMP): New kind of reg_note, to mark jumps that
1024         cross between section boundaries.
1025         * rtl.h (NOTE_INSN_UNLIKELY_EXECUTED_CODE):  New note instruction,
1026         indicating the basic block containing it belongs in the cold section.
1027         (REG_CROSSING_JUMP): New type of reg_note, to mark jumps that cross
1028         between hot and cold sections.
1029         * toplev.c (flag_reorder_blocks_and_partition):  Add code to
1030         initialize this flag, and to tie it to the command-line option
1031         freorder-blocks-and-partition.
1032         * varasm.c (cfglayout.h):  Add new include statement.
1033         (unlikely_section_label_printed):  New global variable, used for
1034         determining when to output section name labels for cold sections.
1035         (in_section):  Add in_unlikely_executed_text to enum data structure.
1036         (text_section):  Modify code to use SECTION_FORMAT_STRING and
1037         NORMAL_TEXT_SECTION_NAME macros.
1038         (unlikely_text_section):  New function.
1039         (in_unlikely_text_section):  New function.
1040         (function_section):  Add code to make sure beginning of function is
1041         written into correct section (hot or cold).
1042         (assemble_start_function):  Add code to make sure stuff is written to
1043         the correct section.
1044         (assemble_zeros):  Add in_unlikely_text_section as an 'or' condition
1045         to an if statement that was checking 'in_text_section'.
1046         (assemble_variable):  Add 'in_unlikely_text_section' as an 'or'
1047         condition to an if statement that was checking 'in_text_section'.
1048         (default_section_type_flags_1):  Add check: if in cold section
1049         flags = SECTION_CODE.
1050         * config/darwin.c (darwin_asm_named_section):  Modify to use
1051         SECTION_FORMAT_STRING if we are partitioning hot/cold blocks.
1052         * config/i386/i386.h (HAS_LONG_COND_BRANCH): Defined this macro
1053         specifically for the i386.
1054         (HAS_LONG_UNCOND_BRANCH):  Defined this macro specifically for the i386.
1055         * config/rs6000/darwin.h (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Change
1056         text string to something more informative.
1057         (NORMAL_TEXT_SECTION_NAME): Add new definition.
1058         (SECTION_FORMAT_STRING):  Add new definition.
1059         * config/rs6000/rs6000.c (rs6000_assemble_integer):  Add
1060         '!in_unlikely_text_section' as an 'and' condition to an if statement
1061         that was already checking '!in_text_section'.
1062         * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME,NORMAL_TEXT_SECTION_NAME,
1063         UNLIKELY_EXECUTED_TEXT_SECTION_NAME,SECTION_FORMAT_STRING): Make
1064         sure these are properly defined for linux on ppc.
1065         * doc/invoke.texi  (freorder-blocks-and-partition): Add documentation
1066         for this new flag.
1067         * doc/rtl.texi (REG_CROSSING_JUMP):  Add documentation for new
1068         reg_note.
1069         * doc/tm.texi (NORMAL_TEXT_SECTION_NAME, SECTION_FORMAT_STRING,
1070         HAS_LONG_COND_BRANCH, HAS_LONG_UNCOND_BRANCH): Add documentation for
1071         these new macros.
1072
1073 2004-04-08  Roger Sayle  <roger@eyesopen.com>
1074
1075         * function.c (gen_mem_addressof): When changing the RTX from a REG
1076         to a MEM, clear MEM_VOLATILE_P which was formerly REG_USERVAR_P.
1077
1078 2004-04-08  Roger Sayle  <roger@eyesopen.com>
1079
1080         PR target/14888
1081         * config/i386/i386.md (truncdfsf2_noop, truncxfsf2_noop,
1082         truncxfdf2_noop): Provide dummy "fmov" implementations.
1083
1084 2004-04-08  Ian Lance Taylor  <ian@wasabisystems.com>
1085
1086         * gcc.c (default_compilers): Add missing initializers.
1087
1088         * config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
1089         Return 1 if file was successfully mapped.
1090
1091 2004-04-08  Geoffrey Keating  <geoffk@apple.com>
1092
1093         PR pch/13419
1094         PR pch/14137
1095         Radar #: 3315288
1096         * doc/invoke.texi (Precompiled Headers): Suggest -o
1097         to put an output file in a particular place.  Be more detailed
1098         about which options affect PCH validity and which options
1099         might not work.
1100         * c-pch.c (pch_matching): New.
1101         (MATCH_SIZE): New.
1102         (struct c_pch_validity): New field 'match'.
1103         (pch_init): Handle pch_matching.
1104         (c_common_valid_pch): Check pch_matching.
1105
1106         * explow.c: Fix typo defining default of PROMOTE_FUNCTION_MODE.
1107
1108 2004-04-08  Mark Mitchell  <mark@codesourcery.com>
1109
1110         * doc/invoke.texi (Precompiled Headers): Warn about known
1111         problems.
1112
1113 2004-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
1114
1115         PR c++/14808
1116         * defaults.h (TARGET_USE_LOCAL_THUNK_ALIAS_P): New macro. Default
1117         to 1 if ASM_OUTPUT_DEF is defined.
1118         * doc/tm.texi (TARGET_USE_LOCAL_THUNK_ALIAS_P): Document.
1119         * config/i386/cygming.h (TARGET_USE_LOCAL_THUNK_ALIAS_P): Define.
1120         Set to non-zero iff not a one_only decl.
1121
1122 2004-04-08  Paul Brook  <paul@codesourcery.com>
1123
1124         * arm.h (CLASS_LIKELY_SPILLED_P): Define.
1125
1126 2004-04-08  Paul Brook  <paul@codesourcery.com>
1127
1128         * explow.c (promote_mode): Use PROMOTE_FUNCTION_MODE instead of
1129         PROMOTE_FOR_CALL_ONLY.
1130         * config/arm/arm-protos.h (arm_function_value): Declare.
1131         * config/arm/arm.h (TARGET_PROMOTE_FUNCTION_ARGS): Define.
1132         (TARGET_PROMOTE_PROTOTYPES): Return false.
1133         (arm_function_value): New function.
1134         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Define.
1135         (FUNCTION_VALUE): Call arm_function_value.
1136         * config/cris/cris.h (PROMOTE_MODE): Rename ...
1137         (PROMOTE_FUNCTION_MODE): ... to this.
1138         (PROMOTE_FOR_CALL_ONLY): Remove.
1139         * config/mmix/mmix.h: Likewise.
1140         * config/s390/s390.h: Likewise.
1141         * config/sparc/sparc.h: Likewise.
1142         * config/sparc/sparc.c: Update comments about PROMOTE_MODE.
1143         * doc/tm.texi (PROMOTE_FUNCTION_MODE): Document.
1144         (TARGET_PROMOTE_FUNCTION_MODE, TARGET_PROMOTE_FUNCTION_RETURN): Update.
1145         (PROMOTE_FOR_CALL_ONLY): Remove.
1146
1147 2004-04-08  Joel Sherrill <joel@oarcorp.com>
1148
1149         PR ada/14538
1150         * ada/5rosinte.adb: Remove fake mprotect() body.
1151         * ada/5rosinte.ads: Add SA_SIGINFO.
1152         * ada/5rtpopsp.adb: Rewrite to use new interface.
1153         * ada/init.c: Reorder so the simple single OS conditional __rtems__
1154         is tested before more complex ones which mix UNIX and embedded
1155         systems in the conditional.
1156
1157 2004-04-08  Joel Sherrill  <joel@oarcorp.com>
1158
1159         PR ada/14665
1160         * ada/osint.adb (Find_Program_Name): Rework to properly handle
1161         filenames which end in .exe or have versioning suffixes like VMS.
1162
1163 2004-04-08  Andrew Pinski  <pinskia@physics.uc.edu>
1164
1165         PR target/10129
1166         * config/darwin.c (darwin_encode_section_info): When the decl has
1167         a DECL_INITIAL, it is only defined also when it is not a common.
1168
1169 2004-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1170
1171         * builtins.c (fold_builtin_isascii, fold_builtin_toascii): New.
1172         (fold_builtin): Handle BUILT_IN_ISASCII and BUILT_IN_TOASCII.
1173
1174 2004-04-07  H.J. Lu  <hongjiu.lu@intel.com>
1175
1176         * config/ia64/ia64.c (ia64_encode_section_info): Don't prod
1177         global register variables.
1178
1179 2004-04-07  Joseph S. Myers  <jsm@polyomino.org.uk>
1180
1181         * fixinc/inclhack.def (rpc_xdr_lvalue_cast_a,
1182         rpc_xdr_lvalue_cast_b): New fixes.
1183         * fixinc/fixincl.x: Regenerate.
1184         * fixinc/tests/base/rpc/xdr.h: Add new tests.
1185
1186 2004-04-07  David Edelsohn  <edelsohn@gnu.org>
1187
1188         * config/rs6000/rs6000.c (processor_target_table): Add MASK_MFCRF
1189         to power4 and power5 entries.
1190
1191 2004-04-06  Geoffrey Keating  <geoffk@apple.com>
1192
1193         * c-common.h (pending_lang_change): Mark for PCH.
1194
1195 2004-04-07  Caroline Tice  <ctice@apple.com>
1196
1197         * gcc.c (main): Move 'break' in main loops (on an error)
1198         to wait until error processing has occurred.
1199
1200 2004-04-06  Nathanael Nerode  <neroden@gcc.gnu.org>
1201
1202         * config.gcc: Stop changing enable_threads midstream.
1203         Replace uses of enable_threads_flag with enable_threads.
1204         * configure.ac: Replace uses of enable_threads_flag with
1205         enable_threads.  Improve autoconf quotation in one place.
1206         * configure: Regenerate.
1207
1208 2004-04-06  Uros Bizjak  <uros@kss-loka.si>
1209
1210         * builtins.c: Implement support for sincos function.
1211         (expand_builtin_mathfn): Remove BUILT_IN_SIN{,F,L} and
1212         BUILT_IN_COS{,F,L}.
1213         (expand_builtin_mathfn_3): New function.
1214         (expand_builtin): Expand BUILT_IN_SIN{,F,L} and
1215         BUILT_IN_COS{,F,L} using expand_builtin_mathfn_3 if
1216         flag_unsafe_math_optimization is set.
1217
1218         * optabs.h (enum optab_index): Add new OTI_sincos.
1219         (sincos_optab): Define corresponding macro.
1220
1221         * optabs.c (init_optabs): Initialize sincos_optab.
1222         (expand_twoval_unop): New function.
1223
1224         * genopinit.c (optabs): Implement sincos_optab using sincos?f3
1225         patterns.
1226
1227         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_SINCOS_COS
1228         and UNSPEC_SINCOS_SIN.
1229
1230         * config/i386/i386.md (sincosdf3, sincossf3, *sincosextendsfdf3,
1231         sincosxf3): New patterns to implement sincos, sincosf and sincosl
1232         built-ins as inline x87 intrinsics. Define splits for
1233         sindf2, sinsf2, *sinextendsfdf2, sinxf2, cosdf2,
1234         cossf2, *cosextendsfdf2 and cosxf2 patterns from corresponding
1235         sincos patterns.
1236         (sindf2, sinsf2, sinxf2): Rename to *sindf2, *sinsf2, *sinxf2.
1237         (cosdf2, cossf2, cosxf2): Rename to *cosdf2, *cossf2, *cosxf2.
1238
1239         (UNSPEC_SINCOS_SIN, UNSPEC_SINCOS_COS): New unspecs to represent
1240         x87's fsincos insn.
1241
1242 2004-04-06  Devang Patel  <dpatel@apple.com>
1243
1244         PR 14467
1245         * config/darwin.h (LINK_COMMAND_SPEC): Use c++filt instead of c++filt3.
1246
1247 2004-04-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1248
1249         * doc/install.texi: Update HP-UX 11 installation procedure.
1250
1251 2004-04-06  Paul Brook  <paul@codesourcery.com>
1252
1253         * doc/sourcebuild.texi: Remove obsolete contraint on testcases.
1254
1255 2004-04-05  Kaz Kojima  <kkojima@gcc.gnu.org>
1256
1257         * config/sh/sh.c (prepare_move_operands): Use emit_call_insn
1258         when the TLS address is generated by a function call.
1259         * config/sh/sh.md (tls_global_dynamic): Use a call expression.
1260         (tls_local_dynamic): Likewise.
1261
1262 2004-04-05  Andrew Pinski  <pinskia@physics.uc.edu>
1263
1264         * tree.c (reconstruct_complex_type): Use TYPE_READONLY
1265         and TYPE_VOLATILE.
1266
1267 2004-04-05  Caroline Tice  <ctice@apple.com>
1268
1269         * gcc.c (combine_flag): New global variable, for new driver option.
1270         (struct compiler): Add two new fields, to be used when
1271         combining multiple input files in a single pass (IMA).
1272         (default_compilers):  Add values for the new fields to all
1273         compiler entries. Modify the "@c" compiler entry for doing IMA
1274         properly with "-save-temps" and the "combine" flag.
1275         (option_map):  Add new driver option, "--combine", to tell driver
1276         to pass multiple input files to compiler at one time.
1277         (have_o_argbuf_index): New global variable.
1278         (store_arg): Modify to assign value to have_o_argbuf_index.
1279         (struct infile):  Add three new fields, to help with IMA.
1280         (display_help): Add help for new "combine" option.
1281         (process_command): Remove local variable have_o; add code to check
1282         for new "combine" option; remove assignment to combine_inputs.
1283         (do_spec_1):  Modify to deal with IMA better.
1284         (main): Make variable 'lang_n_infiles' local to entire function
1285         rather than to a single block.  Use flag combine_flag to
1286         determine whether to do IMA or not; Modify loop initializing
1287         infiles to deal properly with linker files.
1288         Add code for doing preprocessing in presence of
1289         IMA with "-save-temps" flag.  Modify "main" loop to handle
1290         multiple input files, in multiple languages, with or without
1291         preprocessing,  gracefully.
1292         * toplev.c (set_src_pwd): Modify to not complain if attempting to
1293         re-set it to same directory it's previously been set to (avoid
1294         irritating, meaningless warning messages when doing IMA with
1295         save-temps).
1296         * doc/invoke.texi: Add "-combine" to list of Overall Options;
1297         remove documentation about IMA that is no longer accurate; Add
1298         documentation explaining what "-combine" does.
1299         * ada/lang-specs.h: Add initialization values for new fields in
1300         "struct compiler".
1301         * cp/lang-specs.h: Likewise.
1302         * f/lang-specs.h: Likewise.
1303         * java/lang-specs.h: Likewise.
1304         * objc/lang-specs.h: Likewise.
1305         * treelang/lang-specs.h: Likewise.
1306
1307 2004-04-05  David Edelsohn
1308
1309         * config/rs6000/rs6000.c (VTABLE_NAME_P): Add _ZTI to special
1310         symbol handling.
1311
1312 2004-04-05  Jakub Jelinek  <jakub@redhat.com>
1313             John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1314
1315         PR optimization/13424 (hppa), bootstrap/14462, c/14828
1316         * pa.md: Use replace_equiv_address to retain the attributes of the
1317         memory operands used in the split and peephole2 patterns for optimizing
1318         the pre-reload movstrsi, movstrdi, clrstrsi and clrstrdi patterns.
1319
1320 2004-04-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1321
1322         * c-decl.c (build_compound_literal): Use TYPE_READONLY.
1323         * emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
1324         * objc/objc-act.c (adorn_decl, gen_declspecs): Likewise.
1325         * c-typeck.c (decl_constant_value): Don't access DECL_INITIAL of a
1326         PARM_DECL.
1327         * calls.c (flags_from_decl_or_type): Use TYPE_READONLY and do so only
1328         for a type.
1329         * print-tree.c (print_node): Properly handle side-effects, readonly,
1330         and constant flags.
1331         * tree.c (build1_stat, build_expr_wfl): Only look at TREE_SIDE_EFFECTS
1332         and TREE_CONSTANT if not a type.
1333         * tree.h (IS_NON_TYPE_CODE_CLASS): New macro.
1334         (IS_EXPR_CODE_CLASS): Write 'E', not 'e'.
1335         (NON_TYPE_CHECK): New macro.
1336         (TREE_SIDE_EFFECT, TREE_READONLY, TREE_CONSTANT: Add check.
1337
1338 2004-04-05  Eric Botcazou  <ebotcazou@libertysurf.fr>
1339
1340         * config/sparc/sol2-bi.h (PREFERRED_DEBUGGING_TYPE): Set
1341         to DWARF2_DEBUG unconditionally.
1342         (ASM_DEBUG_SPEC): Set the default to --gdwarf2 unconditionally.
1343
1344 2004-04-04  Ian Lance Taylor  <ian@wasabisystems.com>
1345             Nathanael Nerode  <neroden@gcc.gnu.org>
1346
1347         PR target/14548
1348         * config.host: Set the shell variable host_can_use_collect2.
1349         Set it to yes by default, and to no for alpha*-dec-*vms*,
1350         i[34567]86-*-mingw32*, and powerpc-*-beos*.
1351         * configure.ac: Set and substitute the shell variable collect2.
1352         Give an error if use_collect2 is yes and host_can_use_collect2 is
1353         no.
1354         * Makefile.in (COLLECT2): Rename from USE_COLLECT2.  Change all
1355         uses.  Initialize to @collect2@.
1356         (STAGESTUFF): Remove $(USE_COLLECT2).
1357         * config/alpha/x-vms (USE_COLLECT2): Don't set.
1358         * config/i386/t-mingw32 (USE_COLLECT2): Likewise.
1359         * config/rs6000/t-beos (USE_COLLECT2): Likewise.
1360         * config/pa/t-pa64: Remove commented out USE_COLLECT2.
1361         * configure: Regenerate.
1362
1363 2004-04-04  Roger Sayle  <roger@eyesopen.com>
1364
1365         * simplify-rtx.c (simplify_binary_operation): Constant fold
1366         DIV, MOD, UDIV and UMOD using div_and_round_double.
1367
1368 2004-04-04  Mark Mitchell  <mark@codesourcery.com>
1369
1370         PR c++/14804
1371         * varasm.c (initializer_constant_valid_p): Allow NOP_EXPRs to
1372         RECORD_TYPEs.
1373
1374 2004-04-04  Mark Mitchell  <mark@codesourcery.com>
1375
1376         * doc/invoke.texi (-mabi=o64): Create link to O64 ABI
1377         documentation.
1378
1379 2004-04-04  Roger Sayle  <roger@eyesopen.com>
1380
1381         * cse.c (cse_insn): Correct usage of simplify_replace_rtx when
1382         updating the REG_EQUAL note on an insn's libcall_insn.
1383
1384 2004-04-04  Roger Sayle  <roger@eyesopen.com>
1385
1386         * df.h: Tidy up whitespace in the definitions of the DF_ flags.
1387
1388 2004-04-03  Roger Sayle  <roger@eyesopen.com>
1389
1390         * fold-const.c (fold) <PLUS_EXPR>: Guard (-A)+B -> B-A transformation
1391         with reorder_operands_p.
1392
1393 2004-04-03  Jan Hubicka  <jh@suse.cz>
1394
1395         * md.texi (vec_set, vec_extract, vec_init): Document.
1396
1397 2004-04-02  Gabor Loki <loki@inf.u-szeged.hu>
1398
1399        * opts.c (decode_options): Do function inlining with very small
1400        max-inline-insns-* parameters when optimizing for size.
1401
1402 2004-04-02  Vladimir Makarov  <vmakarov@redhat.com>
1403
1404         * config/i386/i386.h (TARGET_NOCONA): New macro.
1405         (TARGET_CPU_CPP_BUILTINS): Add code for Nocona.
1406         (processor_type): Add PROCESSOR_NOCONA.
1407
1408         * config/i386/i386.md (cpu): Add nocona to the attribute values.
1409
1410         * config/i386/i386.c (nocona_cost): New variable.
1411         (m_NOCONA): New macro.
1412         (x86_push_memory, x86_movx, x86_cmove, x86_deep_branch,
1413         x86_branch_hints, x86_use_sahf, x86_single_stringop,
1414         x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8,
1415         x86_integer_DFmode_moves, x86_partial_reg_dependency,
1416         x86_memory_mismatch_stall, x86_accumulate_outgoing_args,
1417         x86_decompose_lea, x86_arch_always_fancy_math_387,
1418         x86_sse_partial_reg_dependency, x86_sse_load0_by_pxor,
1419         x86_ext_80387_constants, x86_four_jump_limit):
1420         (override_options): Add nocona_cost to processor_target_table.
1421         Set up PROCESSOR_NOCONA for Nocona entry in processor_alias_table.
1422         (incdec_operand): Prevent inc/dec generation for Nocona too.
1423         (ix86_issue_rate): Add PROCESSOR_NOCONA.
1424
1425 2004-04-01  Andrew Pinski  <pinskia@physics.uc.edu>
1426
1427         * rtlanal.c (find_reg_note): Manually
1428         unswitch the loop.
1429
1430 2004-04-01  Mark Mitchell  <mark@codesourcery.com>
1431
1432         * genemit.c (gen_split): Change prototype of generated code.
1433         * genrecog.c (write_action): Adjust prototype for and calls to
1434         gen_split_*.
1435         * gensupport.c (struct queue_elem): Add split field.
1436         (queue_pattern): Return a value.  Clear the split field.
1437         (process_rtx): Maintain an association between an insn and the
1438         split generated from it for a define_insn_and_split.
1439         (process_one_cond_exec): Generate a new split for a
1440         define_insn_and_split.
1441         * config/arm/arm-protos.h (arm_split_constant): Add insn
1442         parameter.
1443         (emit_constant_insn): New function.
1444         (arm_gen_constant): Use it.
1445         * config/arm/arm.md: Adjust calls to arm_split_constant.
1446
1447 2004-04-02  Jan Hubicka  <jh@suse.cz>
1448
1449         * cgraph.c: Add overall comment.
1450         (cgraph_inline_hash): New global variable.
1451         (cgraph_create_node): Break out from ...
1452         (cgraph_node): ... here.
1453         (cgraph_edge): New function.
1454         (cgraph_create_edge): New CALL_EXPR argument; some sanity checking.
1455         (cgraph_remove_edge): Accept edge, intead of source and destination.
1456         (cgraph_redirect_edge_callee): New.
1457         (cgraph_remove_node): Update all new datastructures.
1458         (cgraph_record_call, cgraph_remove_call): Kill.
1459         (dump_cgraph_node): Break out from ... ; dump new datastructures.
1460         (dump_cgraph): ... here.
1461         (cgraph_function_possibly_inlined_p): Use new hashtable.
1462         (cgraph_clone_edge, cgraph_clone_node): New.
1463         * cgraph.h: Include hashtab.h
1464         (struct cgraph_global_info): Kill cloned_times, inline_once, will_be_output
1465         fields, add inlined_to pointer.
1466         (cgraph_node): Add pointer to next_clone.
1467         (cgraph_remove_edge, cgraph_create_edge): Update prototype.
1468         (cgraph_remove_call, cgraph_record_call): Kill.
1469         (cgraph_inline_hash): Declare.
1470         (dump_cgraph_node, cgraph_edge, cg4raph_clone_edge, cgraph_clone_node,
1471         cgraph_redirect_edge_callee): Declare.
1472         (cgraph_create_edges, cgraph_inline_p): Update prorotype.
1473         (cgraph_preserve_function_body_p, verify_cgraph, verify_cgraph_node,
1474         cgraph_mark_inline_edge, cgraph_clone_inlined_nodes): Declare.
1475         * cgraphunit.c: Add overall comment.
1476         (cgraph_optimize_function): Kill.
1477         (cgraph_assemble_pending_functions): Do not assemble inline clones.
1478         (cgraph_finalize_function): Update call of cgraph_remove_node
1479         (record_call_1): Record call sites.
1480         (cgraph_create_edges): Accept node instead of decl argument.
1481         (error_found): New static variable.
1482         (verify_cgraph_node_1, verify_cgraph_node, verify_cgraph): New functions.
1483         (cgraph_analyze_function): Update for new datastructures.
1484         (cgraph_finalize_compilation_unit): Plug memory leak.
1485         (cgraph_optimize_function): Kill.
1486         (cgraph_expand_function): Do not use cgraph_optimize_function.
1487         (INLINED_TIMES, SET_INLINED_TIMES, cgraph_inlined_into,
1488         cgraph_inlined_callees): Kill.
1489         (cgraph_remove_unreachable_nodes): Verify cgraph; update handling of
1490         clones.
1491         (estimate_growth): Simplify.
1492         (cgraph_clone_inlined_nodes): New function.
1493         (cgraph_mark_inline_edge): Re-implement.
1494         (cgraph_mark_inline): Likewise.
1495         (cgraph_check_inline_limits): Simplify.
1496         (cgraph_recursive_inlining_p): New.
1497         (update_callee_keys): Break out from ...
1498         (cgraph_decide_inlining_of_small_functions): ... here; simplify.
1499         (cgraph_decide_inlining, cgraph_decide_inlining_incrementally):
1500         Likewise.
1501         (cgraph_expand_all_functions):  Remove inline clones from the ordered
1502         list.
1503         (cgraph_preserve_function_body_p): New predicate.
1504         (cgraph_optimize): Verify cgraph.
1505         * function.h (struct function): Add fields saved_tree/saved_args.
1506         * timevar.def (TV_CGRAPH_VERIFY): Use verifier.
1507         * toplev.c (rest_of_compilation): Do not free cfun.
1508         * tree-inline.c: Include function.h
1509         (struct inline_data): Add saving_p field; replace decl/current_decl by
1510         node/current_node.
1511         (insert_decl_map): New function.
1512         (copy_body_r): Handle saving; update cgraph datastructure.
1513         (copy_body): Handle recursive inlining.
1514         (initialize_inlined_parameters): Likewise.
1515         (expand_call_inline): Propagate node attributes; update cgraph.
1516         (optimize_inline_calls): Verify that datastructure still match.
1517         (save_body): New function.
1518         * tree-inline.h (save_body): New.
1519         * tree-optimize.c (tree_rest_of_compilation): preserve function body; do inlining.
1520         * langhooks-def.c (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): New.
1521         * langhooks.c (lang_hooks): Add update_decl_after_saving.
1522
1523 2004-04-01  Serge Belyshev  <1319@bot.ru>
1524
1525         PR target/14702
1526         * config/i386/i386.md: fix source operand constraints in
1527         mmx_pshufw, sse2_pshufd, sse2_pshuflw, sse2_pshufhw
1528
1529 2004-04-01  Waldek Hebisch  <hebisch@math.uni.wroc.pl>
1530
1531         * fold-const.c (folda): Preserve types of comparisons.
1532
1533 2004-04-01  Richard Henderson  <rth@redhat.com>
1534
1535         * toplev.c (backend_init): Move init_optimization_passes call ...
1536         (lang_dependent_init): ... here.
1537
1538 2004-04-01  Alan Modra  <amodra@bigpond.net.au>
1539             Jakub Jelinek  <jakub@redhat.com>
1540
1541         * gcc.c (init_gcc_specs): If HAVE_LD_AS_NEEDED, link with
1542         -lgcc --as-needed -lgcc_s --no-as-needed by default.
1543         * configure.ac (HAVE_LD_AS_NEEDED): Check for ld --as-needed.
1544         * configure: Rebuilt.
1545         * config.in: Rebuilt.
1546         * Makefile.in (stage1-start): Copy also libgcc_s*$(SHLIB_EXT).
1547         (stage2-start, stage3-start, stage4-start): Likewise.
1548         (stageprofile-start, stagefeedback-start): Likewise.
1549
1550 2004-04-01  Jakub Jelinek  <jakub@redhat.com>
1551
1552         * config/sparc/sparc.h (DITF_CONVERSION_LIBFUNCS): Define to 0.
1553         * config/sparc/linux.h (DITF_CONVERSION_LIBFUNCS): Redefine to 1.
1554         * config/sparc/linux64.h (DITF_CONVERSION_LIBFUNCS): Redefine to 1.
1555         * config/sparc/sol2.h (DITF_CONVERSION_LIBFUNCS): Redefine to 1.
1556         (SOLARIS_CONVERSION_LIBFUNCS): Rename to SUN_CONVERSION_LIBFUNCS.
1557         * config/sparc/sparc.c (sparc_init_libfuncs): Initialize optabs
1558         with _Q_qtoll, _Q_qtoull and _Q_lltoq if DITF_CONVERSION_LIBFUNCS.
1559         * config.gcc (sparc-*-linux*): Revert 2004-03-23 change.
1560         * config/sparc/t-linux64 (TARGET_LIBGCC2_CFLAGS): Likewise.
1561         * config/sparc/t-linux: Removed.
1562
1563 2004-04-01  Jakub Jelinek  <jakub@redhat.com>
1564
1565         PR c++/14755
1566         * fold-const.c (fold) <EQ_EXPR>: Properly compute newconst in
1567         "bitfld++ == const" to "++bitfld == const + incr" transformations.
1568
1569 2004-04-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1570
1571         * expr.c (get_inner_reference): Use DECL_UNSIGNED, not TREE_UNSIGNED.
1572         * stor-layout.c (layout_decl): Likewise.
1573         * tree.c (get_narrower): Likewise and also use BIT_FIELD_REF_UNSIGNED.
1574         * fold-const.c (make_bit_field_ref): Use BIT_FIELD_REF_UNSIGNED.
1575         * print-tree.c (print_node): Handle various used of unsigned_flag.
1576         * tree.def (BIT_FIELD_REF): Update comment.
1577         * tree.h (TREE_UNSIGNED): Deleted.
1578         (DECL_UNSIGNED, BIT_FIELD_REF_UNSIGNED): New macros.
1579
1580 2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1581
1582         * builtins.c, c-aux-info.c, c-common.c, c-cppbuiltin.c, c-decl.c:
1583         Change most occurrences of TREE_UNSIGNED to TYPE_UNSIGNED.
1584         * c-format.c, c-opts.c, c-pretty-print.c, c-typeck.c: Likewise.
1585         * calls.c, convert.c, dbxout.c, dojump.c, dwarf2out.c: Likewise.
1586         * expmed.c, expr.c, fold-const.c, function.c, integrate.c: Likewise.
1587         * optabs.c, sdbout.c, stmt.c, stor-layout.c, tree-dump.c: Likewise.
1588         * tree.c, config/iq2000/iq2000.c, config/m32r/m32r.c: Likewise.
1589         * config/mips/mips.c, config/rs6000/rs6000.c: Likewise.
1590         * config/s390/s390.c, config/sparc/sparc.c, objc/objc-act.c: Likewise.
1591         * stor-layout.c (layout_type, case COMPLEX_TYPE): Test for
1592         REAL_TYPE, not INTEGER_TYPE.
1593         (layout_type, case VECTOR_TYPE): Simplify code.
1594         * tree.c (build_vector_type_for_mode): Remove dup unsigned setting.
1595         * tree.h: Update comments.
1596         (STRIP_NOPS): Use TYPE_UNSIGNED.
1597         (TYPE_UNSIGNED): New macro.
1598         (TYPE_TRAP_SIGNED): Remove now redundant check.
1599         (SAVE_EXPR_NOPLACEHOLDER): Don't use TREE_UNSIGNED.
1600
1601 2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1602
1603         * function.c (put_var_into_stack): Properly set orig_reg for indirect.
1604
1605 2004-03-31  Andrew Pinski  <pinskia@physics.uc.edu>
1606
1607         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA):
1608         Add darwin-fpsave.asm, darwin-vecsave.asm,
1609         and darwin-world.asm.
1610         (TARGET_LIBGCC2_CFLAGS): Add -Wa,-force_cpusubtype_ALL
1611         as the asm files contain altivec instructions.
1612         * config/rs6000/darwin-fpsave.asm: New file.
1613         * config/rs6000/darwin-vecsave.asm: New file.
1614         * config/rs6000/darwin-world.asm: New file.
1615
1616 2004-03-31  Zack Weinberg  <zack@codesourcery.com>
1617
1618         * gengtype-yacc.y (option, stringseq): Add missing
1619         terminating semicolon.
1620
1621 2004-03-30  David Edelsohn  <edelsohn@gnu.org>
1622
1623         * config/rs6000/rs6000.md (tls_gd_32, tls_gd_64,
1624         tls_ld_32, tls_ld_64, tls_dtprel_32, tls_dtprel_64,
1625         tls_dtprel_ha_32, tls_dtprel_ha_64,
1626         tls_dtprel_lo_32, tls_dtprel_lo_64,
1627         tls_got_dtprel_64, tls_tprel_32, tls_tprel_64,
1628         tls_tprel_ha_32, tls_tprel_ha_64,
1629         tls_tprel_lo_32, tls_tprel_lo_64,
1630         tls_got_tprel_32, tls_got_tprel_64,
1631         tls_tls_32, tls_tls_64): Replace register_operand with
1632         gpc_reg_operand.
1633
1634 2004-03-30  Mostafa Hagog  <mustafa@il.ibm.com>
1635
1636         * config/rs6000/rs6000.md (*ctrsi_internal1, *ctrsi_internal2,
1637         *ctrdi_internal1, *ctrdi_internal2, *ctrsi_internal3,
1638         *ctrsi_internal4, *ctrdi_internal3, *ctrdi_internal4,
1639         *ctrsi_internal5, *ctrsi_internal6, *ctrdi_internal5,
1640         *ctrdi_internal6): Replace register_operand with
1641         nonimmediate_operand.
1642
1643 2004-03-29  Fariborz Jahanian <fjahanian@apple.com>
1644
1645         * fold-const.c (fold): Reassociate multiply expression
1646         with an adjacent non-multiply expression to use
1647         architecture's multiply-add instruction.
1648
1649 2004-03-30  Zack Weinberg  <zack@codesourcery.com>
1650
1651         * gengtype.c (create_option): New function.
1652         * gengtype.h: Prototype it.
1653         * gengtype-yacc.y (stringseq): New rule.
1654         (option): Use create_option.  Add new bare ID production.  Use
1655         stringseq, not STRING directly.
1656
1657         * alias.c, bitmap.c, c-decl.c, cgraph.h, cpplib.h, cselib.h
1658         * dwarf2out.c, emit-rtl.c, function.h, lists.c, tree.h
1659         * varray.h, config/alpha/alpha.c:
1660         Use new shorter form of GTY markers.
1661
1662         * doc/gty.texi: Rewrite.
1663
1664 2004-03-30  Andrew Pinski  <pinskia@physics.uc.edu>
1665
1666         * config/darwin.c (machopic_function_base_name):
1667         Remove current_name and getting the name of the
1668         current function.
1669
1670 2004-03-30  Nick Clifton  <nickc@redhat.com>
1671
1672         * config/arm/arm.md (thumb_jump): Reduce the backward branch
1673         range, and increase the forward branch range, to allow for
1674         the fact that the PC will be off by 4.
1675
1676 2004-03-30  Alan Modra  <amodra@bigpond.net.au>
1677
1678         * .cvsignore: Add GPATH, GRTAGS, GSYMS and GTAGS (GNU GLOBAL)
1679
1680 2004-03-30  Hartmut Penner  <hpenner@de.ibm.com>
1681
1682         * config/rs6000/rs6000.c (output_vec_const_move):
1683         Find all cases of EASY_VECTOR_15_ADD_SELF.
1684         (easy_vector_constant_add_self): Accept
1685         all vector constant loadable by vsplt* and vadd*.
1686         (easy_vector_same): Use easy_vector_splat_const.
1687         (easy_vector_const): Use easy_vector_splat_const.
1688         (easy_vector_splat_const): New function.
1689         (gen_easy_vector_constant_add_self): New function.
1690
1691         * config/rs6000/rs6000-protos.c (gen_easy_vector_constant_add_self):
1692         New prototype.
1693
1694         * config/rs6000/altivec.md (movv4si splitter): Change to
1695         emit move insn with halfed vector constant.
1696         (*movv8hi splitter): Likewise.
1697         (*movv16qi splitter): Likewise.
1698
1699 2004-03-30  Hartmut Penner  <hpenner@de.ibm.com>
1700
1701         PR 11591
1702         * config/rs6000/rs6000.c (rs6000_legitimate_address):
1703         Allow any offset to argument pointer in no-strict case.
1704
1705 2004-03-30  Jan Hubicka  <jh@suse.cz>
1706
1707         * toplev.c (backend_init): Add missing call to inint_optimization_passes.
1708         * passes.c (init_optimization_passes, finish_optimization_passes): Output cgraph
1709         dump file in non-unit-at-a-time mode.
1710
1711 2004-03-29  Hans-Peter Nilsson  <hp@axis.com>
1712
1713         * config/cris/cris.h: Correct #ifdef to test for
1714         HAVE_AS_NO_MUL_BUG_ABORT_OPTION, not
1715         HAVE_AS_MUL_BUG_ABORT_OPTION.
1716
1717 2004-03-29  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1718
1719         * function.c (put_var_into_stack): If old RTL was ADDRESSOF, update
1720         the address inside the old RTL.
1721
1722 2004-03-28  Zack Weinberg  <zack@codesourcery.com>
1723
1724         * c-decl.c: Verify that C_SIZEOF_STRUCT_LANG_IDENTIFIER is correct.
1725         (struct c_binding, struct c_scope): Add chain_next
1726         attributes to GTY markers.
1727         (struct lang_identifier, struct lang_tree_node): Define
1728         here...
1729         * c-tree.h: ... not here.  No longer need to declare struct
1730         c_binding either.  Do define C_SIZEOF_STRUCT_LANG_IDENTIFIER.
1731         * c-lang.c, objc/objc-lang.c: Set LANG_HOOKS_IDENTIFIER_SIZE
1732         to C_SIZEOF_STRUCT_LANG_IDENTIFIER.
1733
1734         PR 14734, 11944
1735         * c-decl.c (get_parm_info): If error_mark_node is encountered
1736         in the bindings chain, unbind and discard it; don't abort.
1737
1738 2004-03-28  Olga Golovonevsky <olga@il.ibm.com>
1739             Dorit Naishlos <dorit@il.ibm.com>
1740
1741         * config/rs6000/altivec.md: (andvv16qi3, andv8hi3, one_cmplv16qi2,
1742         one_cmplv8hi2, one_cmplv4si2, iorv16qi3, iorv8hi3,): New modelling.
1743
1744 2004-03-28  Stephane Carrez  <stcarrez@nerim.fr>
1745
1746         * config/m68hc11/m68hc11-protos.h (m68hc11_page0_symbol_p): Declare.
1747
1748         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute): New.
1749         (m68hc11_attribute_table): New attribute "page0" to mark a global
1750         variable as being allocated from within page0 section.
1751         (m68hc11_encode_label): New function.
1752         (m68hc11_strip_name_encoding): New function.
1753         (m68hc11_page0_symbol_p): New function.
1754         (m68hc11_indirect_p): Accept global variables marked in page0.
1755         (m68hc11_encode_section_info): Lookup "page0" attribute.
1756
1757         * config/m68hc11/m68hc11.h (EXTRA_CONSTRAINT): 'R' constraint also
1758         represents access to page0 variables.
1759
1760         * config/m68hc11/m68hc11.md ("*logicalsi3_zexthi"): Use gen_rtx_REG.
1761         ("*logicalsi3_silshl16_zext"): Likewise.
1762         ("*ashldi3_const32"): Likewise.
1763         (peephole2 ashift): Likewise.
1764
1765 2004-03-28  Joseph S. Myers  <jsm@polyomino.org.uk>
1766
1767         * c-tree.h (C_DECL_REGISTER): New.
1768         * c-aux-info.c (gen_decl), c-decl.c (objc_mark_locals_volatile,
1769         finish_decl, grokdeclarator, get_parm_info), c-typeck.c
1770         (build_array_ref, c_mark_addressable): Set and use it.
1771         * c-decl.c (grokdeclarator), c-typeck.c (c_mark_addressable):
1772         Allow structures with volatile fields to be declared register.
1773         Don't check TREE_ADDRESSABLE before warning about taking address
1774         of register.
1775         * c-decl.c (finish_decl): Don't allow structures with volatile
1776         fields to be placed in named register.
1777         * doc/trouble.texi: Remove reference to structures with volatile
1778         fields in registers.
1779
1780 2004-03-27  Ulrich Weigand  <uweigand@de.ibm.com>
1781
1782         * function.c (thread_prologue_and_epilogue): Move
1783         NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG notes
1784         before the epilogue.
1785
1786 2004-03-27  Ulrich Weigand  <uweigand@de.ibm.com>
1787
1788         * expr.c (store_constructor): Use gen_int_mode to correctly
1789         sign-extend CONST_INT value.
1790
1791 2004-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1792
1793         * builtin-types.def (BT_WINT, BT_FN_INT_WINT, BT_FN_WINT_WINT): New.
1794         * builtins.def (DEF_C94_BUILTIN): New.  Add wctype builtins.
1795         * doc/extend.texi: Likewise.
1796
1797 2004-03-26  Diego Novillo  <dnovillo@redhat.com>
1798
1799         * c-typeck.c (comptypes): Replace calls to TYPE_DOMAIN
1800           with TYPE_ORIG_SIZE_TYPE.
1801
1802 2004-03-25  Aldy Hernandez  <aldyh@redhat.com>
1803
1804         PR 14219
1805         * c-typeck.c (build_binary_op): Do not allow comparisons of
1806         vectors.
1807
1808 2004-03-26  James A. Morrison  <ja2morri@uwaterloo.ca>
1809
1810         * config.gcc: Remove sparc-tti-*.
1811         * config/sparc/pbd.h: Delete.
1812
1813         * config/sparc/sol2.h: Remove note about Sun OS 4.x.
1814         * config/sparc/aout.h: Likewise.
1815
1816         * config/sparc/sparc.h: Remove if 0'd code.
1817         * config/sparc/sparc.md (call): Remove if 0'd code.
1818         (call_value): Likewise.
1819         (nonlocal_goto): Likewise.
1820         (unimp_insn): Delete.
1821
1822 2004-03-25  Roger Sayle  <roger@eyesopen.com>
1823
1824         * fold-const.c (tree_expr_nonnegative_p): Handle BIT_XOR_EXPR like
1825         BIT_IOR_EXPR; A^B is nonnegative when A and B are nonnegative.
1826
1827 2004-03-25  Richard Henderson  <rth@redhat.com>
1828
1829         PR 11527
1830         * c-typeck.c (pop_init_level): Emit pending init elements earlier
1831         rather than later.
1832
1833 2004-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1834
1835         * builtins.c (fold_builtin): Fix error in last change.
1836
1837 2004-03-25  Richard Sandiford  <rsandifo@redhat.com>
1838
1839         * config/mips/mips.h: Formatting fix.
1840
1841 2004-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1842
1843         * builtins.def: Add ctype builtins.
1844         * doc/extend.texi: Likewise.
1845
1846 2004-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1847
1848         * builtins.c (fold_builtin): Add new builtin optimizations for
1849         sqrt and/or cbrt.
1850         * fold-const.c (fold): Likewise.
1851
1852 2004-03-25  David Edelsohn  <edelsohn@gnu.org>
1853
1854         * config/rs6000/rs6000.c (rs6000_always_hint): New variable.
1855         (rs6000_sched_groups): New variable.
1856         (processor_target_table): Add power5.
1857         (rs6000_override_options): Set rs6000_sched_insert_nops,
1858         rs6000_sched_costly_dep and rs6000_sched_restricted_insns_priority
1859         from rs6000_sched_groups.
1860         (output_cbranch): Use rs6000_always_hint.
1861         (rs6000_variable_issue): Use rs6000_sched_groups.
1862         (rs6000_adjust_cost): Add CPU_POWER5.
1863         (is_microcoded_insn): Use rs6000_sched_groups.
1864         (is_dispatch_slot_restricted): Use rs6000_sched_groups.
1865         Return 2 for POWER5 cracked instructions.
1866         (is_cracked_insn): Use rs6000_sched_groups.
1867         (is_branch_slot_insn): Use rs6000_sched_groups.
1868         (rs6000_issue_rate): Add CPU_POWER5.
1869         (rs6000_sched_finish): Use rs6000_sched_groups.
1870         (rs6000_rtx_costs): Add PROCESSOR_POWER5.
1871         * config/rs6000/rs6000.h (processor_type): Add PROCESSOR_POWER5.
1872         (DEFAULT_SCHED_COSTLY_DEP): Delete.
1873         (DEFAULT_RESTRICTED_INSNS_PRIORITY): Delete.
1874         (DEFAULT_SCHED_FINISH_NOP_INSERTION_SCHEME): Delete.
1875         * config/rs6000/rs6000.md (define_attr "cpu"): Add power5.
1876         * config/rs6000/power5.md: New file.
1877         * doc/invoke.texi: Add power5 option.
1878
1879 2004-03-25  Kazu Hirata  <kazu@cs.umass.edu>
1880
1881         * cfgrtl.c, dbxout.c, tree.def, config/darwin.h,
1882         config/arm/arm.c, objc/objc-act.c: Fix comment typos.
1883         * doc/invoke.texi: Fix a typo.
1884
1885 2004-03-25  Kazu Hirata  <kazu@cs.umass.edu>
1886
1887         PR optimization/9707.
1888         * stmt.c (emit_case_nodes): Emit equality comparisons instead
1889         of recursing if both children are single-valued cases with no
1890         children.
1891
1892 2004-03-25  Paul Brook  <paul@codesourcery.com>
1893
1894         * config/arm/arm.c (vfp_print_multi): Remove.
1895         (arm_output_fldmx): New function.
1896         (vfp_emit_fstmx): Return block size, not insn. Add ARM10 VFPr1 bugfix.
1897         (arm_expand_prologue): Update to match.
1898         (arm_get_vfp_saved_size): New Function.
1899         (arm_get_frame_offsets): Use it.
1900         (arm_output_epilogue): Use new functions.
1901
1902 2004-03-24  Richard Henderson  <rth@redhat.com>
1903
1904         * alias.c (alias_invariant, alias_invariant_size): Mark GTY.
1905         (reg_known_value, reg_known_value_size): Likewise; make static.
1906         (reg_known_equiv_p): Make static.
1907         (clear_reg_alias_info): Update for new indexing.
1908         (get_reg_known_value, set_reg_known_value): New.
1909         (get_reg_known_equiv_p, set_reg_known_equiv_p): New.
1910         (canon_rtx): Use them.
1911         (init_alias_analysis): Likewise.  Allocate reg_known_value with gc.
1912         Don't play queer offsetting games with reg_known_value and
1913         reg_known_equiv_p.
1914         (end_alias_analysis): Free reg_known_value with gc.
1915         * rtl.h (get_reg_known_value, get_reg_known_equiv_p): Declare.
1916         * sched-deps.c (reg_known_equiv_p, reg_known_value): Remove.
1917         (deps_may_trap_p, sched_analyze_1, sched_analyze_2): Use the new
1918         functions instead.
1919
1920 2004-03-24  Kazu Hirata  <kazu@cs.umass.edu>
1921
1922         * dwarf2asm.c, loop.h, pretty-print.c, pretty-print.h,
1923         config/i386/mmintrin.h: Update copyright.
1924
1925 2004-03-24  Nathanael Nerode  <neroden@gcc.gnu.org>
1926
1927         * configure.ac: Add --enable-werror-always (for top level bootstrap
1928         support).
1929         * configure: Regenerate.
1930
1931 2004-03-24  Ziemowit Laski  <zlaski@apple.com>
1932
1933         * objc/objc-act.c (objc_comptypes): Treat comparisons
1934         between 'Class' and '<class> *' as explicitly invalid.
1935
1936 2004-03-24  David Edelsohn  <edelsohn@gnu.org>
1937
1938         * doc/invoke.texi (-frename-registers: Add enabled at -O3.
1939         (-fprofile-values): Add enabled with profile-{generate,use}.
1940         (-fvpt): Same.
1941         (-ftracer): Add enabled with profile-use.
1942         (-funit-at-a-time): Add enabled at -O2,-O3.
1943         (-funroll-loops): Add enabled with profile-use.
1944         (-funswitch-loops): Add enabled with profile-use.  Remove duplicates.
1945         (max-gcse-passes): Mention default.
1946         (max-cse-path-length): Mention default.
1947
1948 2004-03-24  Nathanael Nerode  <neroden@gcc.gnu.org>
1949
1950         * Makefile.in (STRICT2_WARN): Reorder.
1951         * configure.ac: Check for -Wold-style-definition, and use it
1952         in strict1_warn if it's available.
1953         * configure: Regnerate.
1954
1955 2004-03-24  Paul Brook  <paul@nowt.org>
1956
1957         * config.gcc <arm>: Add --with-abi=
1958         * config/arm/arm-protos.h (arm_get_frame_size, thumb_get_frame_size,
1959         thumb_far_jump_used): Remove prototypes.
1960         (arm_needs_doubleword_align): Add prototype.
1961         (thumb_compute_initial_elimination_offset): Ditto.
1962         * config/arm/arm.c (arm_get_frame_offsets): New function.
1963         (use_return_insn, output_return_instruction, arm_output_epilogue,
1964         arm_output_function_epilogue, arm_compute_initial_elimination_offset,
1965         arm_expand_prologue, thumb_expand_epilogue): Use it.
1966         (arm_abi, target_abi_name, all_arm_abis): New variables.
1967         (arm_override_options): Set them.  Set structure padding for AAPCS.
1968         (arm_return_in_memory): Update ABI check.
1969         (arm_init_cumulative_args): Initialize can_split.
1970         (arm_needs_doubleword_align): New function.
1971         (arm_function_arg): Don't split args after pushing to stack. Handle
1972         doubleword/even reg alignment.
1973         (arm_va_arg): Handle all doubleword aligned args.
1974         (add_minpoolforward ref, dump_minpool, push_minpool_fix): Align based
1975         on ABI, not CPU.
1976         (arm_compute_save_reg0_reg12_mask): Fix comment.
1977         (thumb_get_frame_size, thumb_get_frame_size): Remove.
1978         (thumb_jump_far_used_p): Remove superfluous argument.  Return save
1979         value for alignment.
1980         (thumb_unexpanded_epilogue, thumb_output_function_prologue): Change
1981         to match.
1982         (thumb_compute_initial_elimination_offset): New function.
1983         (thumb_expand_prologue): Use arm_get_frame_offsets.  Remove
1984         unneccessary rounding.
1985         * config/arm/arm.h (target_abi_name): Declare.
1986         (ARM_DOUBLEWORD_ALIGN, DOUBLEWORD_ALIGNMENT, TARGET_IWMMXT_ABI,
1987         arm_abi_type, ARM_DEFAULT_ABI): Define.
1988         (ARM_FLAG_ATPCS): Remove.
1989         (TARGET_OPTIONS, OPTION_DEFAULT_SPECS): Add -mabi=.
1990         (BIGGEST_ALIGNMENT, PREFERRED_STACK_BOUNDARY, STACK_BOUNDARY): Use it.
1991         (ADJUST_FIELD_ALIGN, DATA_ALIGNMENT, LOCAL_ALIGNMENT,
1992         TYPE_NEEDS_IWMMXT_ALIGNMENT): Remove.
1993         (LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P, FUNCTION_ARG_REGNO_P):
1994         Contitionalize on ABI, not CPU.
1995         (struct arm_stack_offsets): Define.
1996         (struct machine_function): Add stack_offsets.  Remove frame_size.
1997         (FUNCTION_ARG_PARTIAL_NREGS): Don't split if previous args have been
1998         pushed.
1999         (FUNCTION_ARG_ADVANCE, FUNCTION_ARG_BOUNDARY): Handle general
2000         doubleword alignment.
2001         (THUMB_INITIAL_ELIMINATION_OFFSET,
2002         ARM_INITIAL_ELIMINATION_OFFSET): Remove.
2003         (INITIAL_ELIMINATION_OFFSET): Call functions directly.
2004         * config/arm/arm.md (align_8): Enable for all targets.
2005         * config/arm/netbsd-elf.h (TARGET_DEFAULT): Remove TARGET_ATPCS.
2006         (ARM_DEFAULT_ABI): Define.
2007         * doc/invoke.texi <ARM>: Document -mabi=. Update documentation for
2008         -mstructure-size-boundary.
2009
2010 2004-03-24  Nathanael Nerode  <neroden@gcc.gnu.org>
2011
2012         * configure.ac: Check for -Wno-variadic-macros; don't use
2013         -pedantic (in stage 1 or a simple 'make all') unless it's available,
2014         and if it's available, use it.  Also, clean up check for
2015         -Wno-long-long.
2016         * configure: Regenerate.
2017
2018 2004-03-24  Richard Sandiford  <rsandifo@redhat.com>
2019
2020         * config.gcc (mips64vr-*-elf*, mips64vrel-*-elf*): Remove tm_defines.
2021         * config/mips/vr.h (DEFAULT_VR_ARCH): New macro, defined to vr4130.
2022         (MULTILIB_DEFAULTS): Use it.
2023         (MIPS_CPU_STRING_DEFAULT): Remove.
2024         (MIPS_ABI_DEFAULT, MIPS_MARCH_CONTROLS_SOFT_FLOAT): Define.
2025         (DRIVER_SELF_SPECS): Make -mfix-vr4122-bugs imply -march=vr4120.  Make
2026         EABI64 -mlong32 the default ABI.  Enforce the default architecture.
2027         * config/mips/t-vr (MULTILIB_OPTIONS): Add mfix-vr4122-bugs,
2028         march=vr4130, march=vr4300, march=vr5000 and march=vr5500.
2029         (MULTILIB_MATCHES): Use -mfix-vr4122-bugs multilibs for -march=vr4120.
2030         (MULTILIB_EXCEPTIONS): Change choice of multilibs.  Update comments
2031         accordingly.
2032
2033 2004-03-24  DJ Delorie  <dj@redhat.com>
2034             Richard Sandiford  <rsandifo@redhat.com>
2035
2036         * config/mips/mips.h (MASK_FIX_VR4122, TARGET_FIX_VR4122): New macros.
2037         (TARGET_SWITCHES): Add -mfix-vr4122-bugs and -mno-fix-vr4122-bugs.
2038         (ASM_SPEC): Pass down -mfix-vr4122-bugs.
2039         * config/mips/mips.c (mips_avoid_hazards): Don't emit whole functions
2040         in .set noreorder and .set nomacro if TARGET_FIX_VR4122.
2041         (mips_init_libfuncs): Use special functions for divsi3 and modsi3
2042         if TARGET_FIX_VR4122.
2043         * config/mips/mips.md (define_attr length): Account for nops inserted
2044         after macc and dmult when using -mfix-vr4122-bugs.
2045         (umuldi3_highpart, divmodsi4, divmoddi4): Disable if TARGET_FIX_VR4122.
2046         * config/mips/t-vr (LIB2FUNCS_STATIC_EXTRA): Define instead of
2047         LIB2FUNCS_EXTRA.  Add config/mips/vr4122-div.S.
2048         * config/mips/vr4122-div.S: New file.
2049         * doc/invoke.texi: Document -mfix-vr4122-bugs.
2050
2051 2004-03-24  Richard Sandiford  <rsandifo@redhat.com>
2052
2053         * config/mips/mips.h (PROCESSOR_R4130): New processor_type.
2054         (TARGET_MIPS4130): New macro.
2055         (ISA_HAS_MACC): Return true if TARGET_MIPS4130 && !TARGET_MIPS16.
2056         * config/mips/mips.c (mips_cpu_info_table): Add a vr4130 entry.
2057         (override_options): Extend MIPS_MARCH_CONTROLS_SOFT_FLOAT to deal
2058         with PROCESSOR_R4130.
2059         * config/mips/mips.md (define_attr cpu): Add r4130.
2060         * doc/invoke.texi: Document vr4130 as a supported MIPS architecture.
2061
2062 2004-03-24  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
2063             Richard Sandiford  <rsandifo@redhat.com>
2064
2065         * doc/invoke.texi: Apply missed hunk from 2004-03-03 change.
2066
2067 2004-03-24  Alexandre Oliva  <aoliva@redhat.com>
2068
2069         PR preprocessor/14438
2070         * cpplib.c (do_pragma): Remove line_change call after pragma
2071         handler.
2072
2073 2004-03-23  Ian Lance Taylor  <ian@wasabisystems.com>
2074
2075         * doc/extend.texi (ARM Built-in Functions): Replace with correct
2076         declarations.
2077
2078 2004-03-23  Roger Sayle  <roger@eyesopen.com>
2079
2080         * reg-stack.c (get_true_reg): Handle FLOAT_TRUNCATE like FLOAT_EXTEND
2081         if flag_unsafe_math_optimizations.
2082         * config/i386/i386.md (truncdfsf2): If flag_unsafe_math_optimizations
2083         and TARGET_80387 expand using truncdfsf2_noop pattern.
2084         (truncxfsf2): Likewise using truncxfsf2_noop.
2085         (truncxfdf2): Likewise using truncxfdf2_noop.
2086         (truncdfsf2_noop, truncxfsf2_noop, truncxfdf2_noop): New patterns.
2087
2088 2004-03-23  Ziemowit Laski  <zlaski@apple.com>
2089
2090         * hooks.c (hook_constcharptr_tree_null): New hook.
2091         * hooks.h (hook_constcharptr_tree_null): New prototype.
2092         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): New target hook.
2093         * target.h (mangle_fundamental_type): New target hook.
2094         * config/rs6000/rs6000.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Point
2095         target hook at rs6000_mangle_fundamental_type.
2096         (rs6000_mangle_fundamental_type): New function.
2097         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Document.
2098
2099 2004-03-23  Zack Weinberg  <zack@codesourcery.com>
2100
2101         PR 12267, 12391, 12560, 13129, 14114, 14133
2102         * c-tree.h: Forward declare struct c_binding.  Declare
2103         c_override_bindings_to_false.  Update prototypes.
2104         (struct lang_identifier): Update comments.  Change fields to be
2105         struct c_binding *.
2106         (IDENTIFIER_SYMBOL_VALUE, IDENTIFIER_TAG_VALUE)
2107         (IDENTIFIER_LABEL_VALUE, C_DECL_INVISIBLE)
2108         (KEEP_NO, KEEP_YES, KEEP_MAYBE): Delete.
2109         (C_DECL_IN_EXTERNAL_SCOPE, C_DECL_DECLARED_BUILTIN): New.
2110         * c-common.h: Update prototypes.
2111         * c-decl.c (struct c_scope): Update commentary.  Remove names,
2112         names_last, parms, parms_last, tags, and shadowed fields.  Add
2113         bindings and depth fields.
2114         (scope_freelist): Move to more appropriate location.
2115         (c_print_identifier): Update for changes to struct lang_identifier.
2116         (objc_mark_locals_volatile): Update for new bindings structures.
2117         (global_bindings_p): Honor c_override_global_bindings_to_false.
2118         (pushlevel): Rename to push_scope; take no arguments; use the
2119         scope_freelist; initialize scope->depth and check for overflow.
2120         (poplevel): Rename to pop_scope; totally rewritten for new bindings
2121         structures.
2122         (diagnose_mismatched_decls): Use C_DECL_DECLARED_BUILTIN, not
2123         C_DECL_INVISIBLE, for certain decisions.  Adjust some diagnostics.
2124         Improve some commentary.  Adjust handling of forward parm decls.
2125         (merge_decls): Set C_DECL_DECLARED_BUILTIN when appropriate.
2126         Preserve C_DECL_IN_EXTERNAL_SCOPE.
2127         (warn_if_shadowing): Correct indentation.  Improve diagnostics.
2128         (pushdecl): Remove unnecessary assertion.  Short-circuit anonymous
2129         decls.  Rewrite for new bindings structures.  Improve commentary.
2130         Eliminate the copy_node call.
2131         (implicit_decl_warning): Use the "diag" idiom (as seen in
2132         locate_old_decl) to reduce code duplication; call locate_old_decl
2133         if appropriate.  Relocate to remove need for forward declaration.
2134         (implicitly_declare): Adjust for new bindings structures.  Kludge
2135         around Objective-C not-really-builtin functions.
2136         (undeclared_variable): Improve diagnostics.  If current_function_decl
2137         is nonnull but current_function_scope is null, use current_scope.
2138         Use bind.
2139         (lookup_tag): Adjust for new bindings structures.  Kludge around
2140         Objective-C's tag declarations that wind up in the external scope.
2141         (lookup_name): Adjust for new bindings structures.  Kludge around
2142         c-common.c's pseudo-typedefs that wind up in the external scope.
2143         (lookup_name_current_level): Rename lookup_name_in_scope; take a
2144         second argument indicating the scope to examine; rewrite for
2145         new bindings structures.
2146         (c_init_decl_processing): Adjust for renamed functions.  Do not
2147         initialize current_file_decl, first_builtin_decl, last_builtin_decl.
2148         First scope pushed is the external scope, not the global scope.
2149         (builtin_function): Use bind, not pushdecl.  Adjust other bits
2150         for new data structures.  Keep track of builtins that should be
2151         made visible automatically.
2152         (start_decl): Adjust diagnostics.  Remove unnecessary call to
2153         expand_decl.
2154         (grokparms): Return 0 if arg_types is error_mark_node.
2155         (get_parm_info): Rename "void_at_end" argument to "ellipsis", with
2156         reversed sense.  Rewrite for new bindings structures.  Do not
2157         leave any decls in the scope, to prevent pop_scope from doing
2158         contradictory things with them.
2159         (finish_struct, finish_enum): Remove redundant diagnostics.
2160         (build_enumerator): Don't cascade diagnostics for error_mark_node.
2161         Mark location where -pedantic changes the meaning of the program.
2162         (store_parm_decls_newstyle, store_parm_decls_oldstyle): Load the
2163         parameter decls into the function's scope structure using bind.
2164         Warn here about function definitions in the wrong style.
2165         Adjust diagnostics.
2166         (store_parm_decls): Correct the determination of whether a
2167         function was defined with a prototype.
2168         (c_write_global_declarations): Operate on all file decls and on
2169         the external scope.  Split body of the loop to...
2170         (c_write_global_declarations_1): ... this new function, to avoid
2171         code duplication.
2172         (truly_local_externals, first_builtin_decl, last_builtin_decl)
2173         (make_scope, pop_scope, in_parm_level_p, set_block)
2174         (any_external_decl, record_external_decl, bind_label, getdecls)
2175         (link_hash_hash, link_hash_eq, merge_translation_unit_decls)
2176         (c_reset_state): Delete.
2177         (visible_builtins, c_override_global_bindings_to_false)
2178         (c_binding, I_SYMBOL_BINDING, I_SYMBOL_DECL, I_TAG_BINDING)
2179         (I_TAG_DECL, I_LABEL_BINDING, I_LABEL_DECL, file_scope)
2180         (external_scope, binding_freelist, bind, free_binding_and_advance)
2181         (push_file_scope, pop_file_scope): New.
2182         (pushtag, pushdecl_top_level, lookup_label, declare_label)
2183         (define_label, c_make_fname_decl, finish_decl)
2184         (mark_forward_parm_decls, build_compound_literal)
2185         (grokdeclarator, start_function, check_for_loop_decls)
2186         (identifier_global_value, record_builtin_type): Minor adjustments
2187         for new bindings structures.  Improve diagnostics and commentary.
2188         * c-objc-common.c (start_cdtor, finish_cdtor): Adjust calls to
2189         pushlevel/poplevel respectively.
2190         (c_objc_common_finish_file): Don't call merge_translation_unit_decls.
2191         * c-opts.c (c_common_parse_file): Remove spurious ATTRIBUTE_UNUSED.
2192         Warn about YYDEBUG not being defined only if -dy.  Remove no-longer-
2193         correct loop over multiple translation units; call fatal_error if
2194         requested to compile more than one file at once.  (This disables
2195         IMA temporarily - an up-front error being preferable to a crash.)
2196         * c-parse.in (pushlevel, poplevel rules): Rename push_scope, pop_scope.
2197         (all actions): Adjust calls to pushlevel/poplevel.
2198         (parsing_iso_function_signature): Delete.
2199         (extdef_1): Fold into extdef.
2200         (old_style_parm_decls_1): Fold into old_style_parm_decls.  Don't
2201         warn here about function definitions in the wrong style.
2202         (after_tyle_declarator, parm_declarator_starttypename)
2203         (parm_declarator_nostarttypename, notype_declarator): Remove
2204         commented-out productions.
2205         (parmlist_1, parmlist_2): Use make_node, not tree_cons, to create
2206         an empty TREE_LIST node.  Adjust calls to get_parm_info.
2207         (parmlist_2 : ELLIPSIS): Tag the arg-info block with error_mark_node
2208         to suppress -Wold-style-definition after this error.
2209         (c_parse_file): Don't clear the binding stack or call
2210         finish_fname_decls here.  Correct comment.
2211         * c-typeck.c (same_translation_unit_p): Export.
2212         (common_type): Use c_override_global_bindings_to_false, not
2213         pushlevel/poplevel/declare_parm_level.
2214         * c-lang.c: Override LANG_HOOKS_CLEAR_BINDING_STACK,
2215         LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK,
2216         and LANG_HOOKS_GETDECLS with do-nothing stubs.
2217         * objc/objc-lang.c: Likewise.
2218         * objc/objc-act.c: Adjust all calls to pushlevel, poplevel,
2219         get_parm_info.
2220         (OBJC_VOID_AT_END): Delete; replace all uses
2221         with void_list_node.
2222         (generate_forward_declaration_to_string_table): Delete.
2223         * objc/objc-act.h (OCTI_STRG_DECL, UOBJC_STRINGS_decl): Delete.
2224
2225         * coverage.c (create_coverage): Don't pushdecl anything.
2226         * langhooks.c (lhd_clear_binding_stack): Call
2227         lang_hooks.decls.poplevel, not poplevel.
2228         * tree.c (list_length): If ENABLE_TREE_CHECKING, abort on a
2229         circular list rather than going into an infinite loop.
2230
2231 2004-03-23  Olivier Hainque  <hainque@act-europe.fr>
2232
2233         * optabs.c (expand_binop): When synthesizing double word rotates
2234         from single word shifts, use a new register target if the provided
2235         target is not a REG already.
2236
2237 2004-03-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2238
2239         * alias.c (get_alias_set): Add support for TYPE_REF_CAN_ALIAS_ALL.
2240         * c-common.c (handle_mode_attribute): Add extra arg to
2241         build_pointer_type_for_mode and build_reference_type_for_mode.
2242         * c-typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
2243         for INTEGER_CST.
2244         * tree.c (build_pointer_type_for_mode): Add arg CAN_ALIAS_ALL.
2245         Chain pointers via TYPE_NEXT_PTR_TO.
2246         (build_reference_type_for_mode): Similarly.
2247         (build_type_no_quals): Add extra arg to build_pointer_type_for_mode
2248         and build_reference_type_for_mode.
2249         (tree_check4_failed): New function.
2250         * tree.h (TREE_CHECK4, PTR_OR_REF_CHECK): New macros.
2251         (TYPE_REF_CAN_ALIAS_ALL, TYPE_NEXT_PTR_TO, TYPE_NEXT_REF_TO): Likewise.
2252         (TREE_NO_UNSUED_WARNING, TREE_VIA_VIRTUAL, TREE_CONSTANT_OVERFLOW):
2253         Add check.
2254
2255 2004-03-23  Roger Sayle  <roger@eyesopen.com>
2256
2257         * fold-const.c (tree_expr_nonnegative_p): A&B is nonnegative when
2258         A is nonnegative or B is nonnegative.  Similarly A|B is nonnegative
2259         when both A and B are nonnegative.
2260         (tree_expr_nonzero_p): A|B is nonzero when A is nonzero or B is
2261         nonzero.
2262
2263 2004-03-23  Kazu Hirata  <kazu@cs.umass.edu>
2264
2265         * fold-const.c (fold): Remove cases for INTEGER_CST, REAL_CST,
2266         VECTOR_CST, STRING_CST, COMPLEX_CST, and CONSTRUCTOR.
2267
2268 2004-03-23  Kazu Hirata  <kazu@cs.umass.edu>
2269
2270         PR optimization/14669
2271         * fold-const.c (fold): Only unwiden integer comparisons for equality
2272         and inequality operators, or when the signedness doesn't change.
2273
2274 2004-03-23  Jakub Jelinek  <jakub@redhat.com>
2275
2276         * config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.
2277         * config/sparc/t-linux64 (TARGET_LIBGCC2_CFLAGS): Set.
2278         * config/sparc/t-linux: New file.
2279
2280 2004-03-23  Richard Sandiford  <rsandifo@redhat.com>
2281
2282         * gcse.c (can_assign_to_reg_p): New function, split out from...
2283         (want_to_gcse_p): ...here.
2284         (compute_ld_motion_mems): Use can_assign_to_reg_p to validate
2285         the rhs of a store.
2286
2287 2004-03-22  Diego Novillo  <dnovillo@redhat.com>
2288
2289         * c-typeck.c (same_translation_unit_p): Fix pasto.
2290
2291 2004-03-22  David Edelsohn  <edelsohn@gnu.org>
2292
2293         * params.def (PARAM_MAX_SCHED_REGION_BLOCKS): New.
2294         (PARAM_MAX_SCHED_REGION_INSNS): New.
2295         * sched-rgn.c: Include params.h
2296         (MAX_RGN_BLOCKS): Delete.
2297         (MAX_RGN_INSNS): Delete.
2298         (too_large): Return bool.  Convert to PARAM_VALUE.
2299         * Makefile.in (sched-rgn.o): Depend on $(PARAMS_H).
2300         * doc/invoke.texi (param): Document max-sched-region-blocks and
2301         max-sched-region-insns.
2302
2303 2004-03-22  Joel Brobecker  <brobecker@gnat.com>
2304
2305         * dwarf2out.c (is_subrange_type): Do not emit a subrange_type DIE
2306         for base types.
2307
2308 2004-03-22  Joel Brobecker  <brobecker@gnat.com>
2309
2310         * dwarf2out.c (is_subrange_type): Minor code rework. No behavior
2311         change.
2312
2313 2004-03-22  Jakub Jelinek  <jakub@redhat.com>
2314
2315         PR c/14069
2316         * c-decl.c (finish_struct): Change type of incorrect flexible array
2317         field into error_mark_node.
2318
2319 2004-03-22  Andrew Pinski  <pinskia@physics.uc.edu>
2320
2321         PR target/14580
2322         * config/rs6000/rs6000.c (symbol_ref_operand): Reject symbols
2323         who are not local for Darwin PIC.
2324
2325 2004-03-22  Ulrich Weigand  <uweigand@de.ibm.com>
2326
2327         * regrename.c (regrename_optimize): Set regs_ever_live for all
2328         registers introduced as replacement.
2329
2330 2004-03-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
2331
2332         PR middle-end/14470
2333         * expr.c (mark_queue): New function.
2334         (emit_insns_enqueued_after_mark): New function replacing
2335         emit_queue.  Clear the body of emitted queued insns.
2336         (emit_queue): Call emit_insns_enqueued_after_mark.
2337         (store_expr): Mark the increment queue on entry.  Emit
2338         only the incrementations queued when expanding the source.
2339
2340 2004-03-22  Nathanael Nerode  <neroden@gcc.gnu.org>
2341
2342         * configure.ac: Allow --disable-coverage-flags (for the future benefit
2343         of top level bootstrap, and consistency).  Reindent.
2344         * configure: Regenerate.
2345
2346 2004-03-21  Kazu Hirata  <kazu@cs.umass.edu>
2347
2348         * bt-load.c, builtins.c, cfghooks.c, cfgrtl.c, gcse.c,
2349         ggc-page.c, integrate.c, var-tracking.c, web.c: Remove
2350         unnecessary casts.
2351
2352 2004-03-22  Danny Smith  <dannysmith@users.sourceforge.net>
2353
2354         PR target/14291
2355         * gcov-io.h (gcov_truncate): Define ftruncate as _chsize for
2356         __MINGW32__.
2357
2358 2004-03-21  Ulrich Weigand  <uweigand@de.ibm.com>
2359
2360         * config/s390/s390.md ("*doloop_si"): Change predicate for operand 2
2361         to nonimmediate_operand.
2362         ("*doloop_di"): Likewise.
2363
2364 2004-03-21  Alexandre Oliva  <aoliva@redhat.com>
2365
2366         * real.h (struct real_value): Use the same type for all
2367         bitfields.  Rename exp to uexp.
2368         (REAL_EXP, SET_REAL_EXP): New accessor macros for uexp.
2369         Adjust all uses of exp...
2370         * builtins.c: ... here, ...
2371         * emit-rtl.c: ... here, and ...
2372         * real.c: ... and here.
2373
2374 2004-03-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2375
2376         * pretty-print.c (pp_base_maybe_space): New function.
2377         * pretty-print.h (pp_base_maybe_space): Declare.
2378         (pp_maybe_space): New macro.
2379
2380 2004-03-21  Ulrich Weigand  <uweigand@de.ibm.com>
2381
2382         * config/s390/s390.md ("addti3", "subti3"): New insns and splitters.
2383
2384 2004-03-21  Ulrich Weigand  <uweigand@de.ibm.com>
2385
2386         * expmed.c (choose_mult_variant): Pass MULT_COST as argument instead
2387         of using register multiplication cost.
2388         (expand_mult): Adapt choose_mult_variant call.
2389         (expand_mult_highpart): Call choose_mult_variant with WIDER_MODE
2390         of MODE; pass appropriate cost bound.  Adjust result when
2391         performing signed multiplication by a negative constant.
2392         Don't use intermediate modes larger than word_mode.
2393
2394 2004-03-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2395
2396         * alias.c (get_alias_set): Remove handling of PLACEHOLDER_EXPR.
2397         * emit-rtl.c (component_ref_for_mem_expr): Likewise.
2398         (set_mem_attributes_minus_bitpos): Call SUBSTITUTE_PLACEHOLDER_IN_EXPR.
2399         * explow.c (expr_size): Likewise.
2400         * expr.h (placeholder_list, find_placeholder): Deleted.
2401         * expr.c (store_constructor): Likewise.
2402         (get_inner_reference): Likewise.  Also don't call find_placeholder.
2403         (placeholder_list, find_placeholder): Deleted.
2404         (is_aligning_offset): Don't handle WITH_RECORD_EXPR, PLACEHOLDER_EXPR.
2405         (expand_expr_real, cases PLACEHOLDER_EXPR, WITH_RECORD_EXPR): Likewise.
2406         (highest_pow2_factor, case WITH_RECORD_EXPR): Remove.
2407         * dojump.c (do_jump, case WITH_RECORD_EXPR): Likewise.
2408         * dwarf2out.c (loc_descriptor_from_tree, case WITH_RECORD_EXPR):
2409         Likewise.
2410         * fold-const.c (invert_truthvalue, case WITH_RECORD_EXPR): Likewise.
2411         (extract_muldiv, case WITH_RECORD_EXPR): Likewise.
2412         * tree.c (expr_align, case WITH_RECORD_EXPR): Likewise.
2413         (contains_placeholder_p): Don't handle WITH_RECORD_EXPR.
2414         Clean up by using first_rtl_op.
2415         (substitute_in_expr): Use SUBSTITUTE_IN_EXPR for recursive call.
2416         (substitute_placeholder_in_expr): New function.
2417         * tree.def (WITH_RECORD_EXPR): Deleted.
2418         * tree.h (SUBSTITUTE_IN_EXPR, SUBSTITUTE_PLACEHOLDER_IN_EXPR): New.
2419         (substitute_placeholder_in_expr): New.
2420
2421 2004-03-21  Andrew Pinski  <pinskia@gcc.gnu.org>
2422
2423         * dojump.c (prefer_and_bit_test): Fix which part of
2424         the and_test is replaced.
2425
2426 2004-03-21  Joseph S. Myers  <jsm@polyomino.org.uk>
2427
2428         * frontends.texi: Add missing line.
2429
2430 2004-03-21  Zack Weinberg  <zack@codesourcery.com>
2431             Chris Devers  <cdevers@pobox.com>
2432             Joseph S. Myers  <jsm@polyomino.org.uk>
2433
2434         * doc/frontends.texi: Rewrite.
2435         * doc/gcc.texi: Update last modification date.
2436
2437 2004-03-21  Josef Zlomek  <zlomekj@suse.cz>
2438
2439         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Print the debug
2440         message before redirecting the edge.
2441
2442 2004-03-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
2443
2444         * emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_POINTER
2445         flag.
2446         * explow.c (force_not_mem): Set REG_POINTER flag according to
2447         MEM_POINTER one.
2448         * rtl.h (MEM_POINTER): New macro.
2449         (struct rtx_def): Use integrated for MEM_SCALAR_P and frame_related
2450         for MEM_POINTER.
2451
2452 2004-03-20  Roger Sayle  <roger@eyesopen.com>
2453
2454         PR target/13889
2455         * cse.c (fold_rtx): Avoid substituting constants into unary
2456         conversion operations.
2457
2458 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
2459
2460         * fold-const.c (fold): Replace "expr" with "t".
2461
2462 2004-03-20  Ian Lance Taylor  <ian@wasabisystems.com>
2463
2464         PR c/12373
2465         * c-typeck.c (tagged_types_tu_compatible_p): Don't use
2466         DECL_ORIGINAL_TYPE if there isn't one.
2467
2468 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
2469
2470         * fold-const.c (fold): Replace "final_type" with "type".
2471         Remove variable "final_type".
2472
2473 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
2474
2475         * fold-const.c (fold): Constify "type".
2476         Replace "TREE_TYPE (t)" with "type".
2477
2478 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
2479
2480         * bb-reorder.c, bt-load.c, c-decl.c, cfgcleanup.c, coverage.c,
2481         dwarf2asm.c, ifcvt.c, stor-layout.c, varasm.c: Replace calls
2482         via (*targetm.foo) () with targetm.foo ().
2483
2484 2004-03-20  Joseph S. Myers  <jsm@polyomino.org.uk>
2485
2486         PR other/14630
2487         * doc/install.texi: Add info directory category and entry.
2488
2489 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
2490
2491         * fold-const.c (fold): Replace "t" with "tem" where it is used
2492         as a temporary variable.  Remove "orig_t" and all of its uses.
2493
2494 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
2495
2496         * fold-const.c (fold): Remove variable "invert".
2497         Move the handling of relational expressions that can be folded
2498         to a constant ...
2499         (fold_relational_const): ... here.
2500         (tree_expr_nonzero_p): New.
2501
2502 2004-03-20  Joseph S. Myers  <jsm@polyomino.org.uk>
2503
2504         PR c/14635
2505         * builtins.def (nan, nanf, nanl, nans, nansf, nansl): Change to
2506         DEF_GCC_BUILTIN.
2507
2508 2004-03-20  Richard Sandiford  <rsandifo@redhat.com>
2509
2510         * Makefile.in (dojump.o): Depend on $(GGC_H) and dojump.h.
2511         (GTFILES): Add $(srcdir)/dojump.h.
2512         (gt-dojump.h): New dependency.
2513         * dojump.c (and_reg, and_test, shift_test): New static variables.
2514         (prefer_and_bit_test): New function.
2515         (do_jump): Use it to choose between (X & (1 << C)) and (X >> C) & 1.
2516
2517 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
2518
2519         * c-common.c, cfgcleanup.c, cgraphunit.c, c-pretty-print.c,
2520         expmed.c, ggc-common.c, jump.c, passes.c, recog.c, regmove.c,
2521         reorg.c, tree.h: Fix comment typos.
2522
2523 2004-03-19  Kazu Hirata  <kazu@cs.umass.edu>
2524
2525         * alias.c, attribs.c, bt-load.c, builtins.c, c-common.c,
2526         c-decl.c, c-objc-common.c, c-typeck.c, calls.c, cfglayout.c,
2527         cse.c, dbxout.c, dwarf2out.c, except.c, final.c,
2528         haifa-sched.c, integrate.c, passes.c, rtlanal.c, sched-rgn.c,
2529         sched-vis.c, simplify-rtx.c, stor-layout.c, tree.c, varasm.c,
2530         vmsdbgout.c: Replace calls via (*targetm.foo) () with
2531         targetm.foo ().
2532
2533 2004-03-19  Ziemowit Laski  <zlaski@apple.com>
2534
2535         * config/rs6000/altivec.h (vec_dst, vec_dstst, vec_dststt,
2536         vec_dstt, vec_sld, vec_splat): Add prototypes, marked with
2537         always_inline attribute.
2538         * config/rs6000/rs6000.c (altivec_expand_dst_builtin):
2539         Treat expansion as completed even if literal argument is
2540         invalid (so that other expansions are not tried in vain).
2541
2542 2004-03-19  Kazu Hirata  <kazu@cs.umass.edu>
2543
2544         * loop-doloop.c (add_test): Replace GEN_INT (0) with
2545         const0_rtx.
2546
2547 2004-03-19  Kazu Hirata  <kazu@cs.umass.edu>
2548
2549         * fold-const.c (fold) <ABS_EXPR>: Move the handling of constants
2550         ...
2551         (fold_abs_const): ... here.
2552
2553 2004-03-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2554
2555         * tree.h (TYPE_ARRAY_MAX_SIZE): Use type.maxval directly.
2556
2557 2004-03-19  Denis Chertykov  <denisc@overta.ru>
2558
2559         PR target/11520
2560         * config/avr/avr.md ("call_insn"): Handle explicit integer
2561         specially.
2562         (call_value_insn): Likewise.
2563
2564 2004-03-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2565
2566         * tree.c (substitute_in_expr): Rewrite to simplify and be more generic.
2567
2568 2004-03-19  Kazu Hirata  <kazu@cs.umass.edu>
2569
2570         * fold-const.c (negate_expr): Move the handling of constants
2571         ...
2572         (fold_negate_const): ... here.
2573
2574 2004-03-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2575
2576         * langhooks-def.h (LANG_HOOKS_HASH_TYPES): New macro and hook.
2577         * langhooks.h (struct lang_hooks_for_types): New field hash_types.
2578         * tree.c (debug_no_type_hash): Deleted.
2579         (type_hash_canon): Abort if passed a variant.
2580         Check lang_hooks.types.hash_types.
2581         (build_type_no_quals): Copy mode of POINTER_TYPE and REFERENCE_TYPE.
2582         (build_array_type): Remove unnecessary allocation of pointer type.
2583         (build_complex_type): Properly qualify resulting type.
2584
2585 2004-03-19  Paolo Bonzini  <bonzini@gnu.org>
2586
2587         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo.
2588
2589 2004-03-19  Richard Sandiford  <rsandifo@redhat.com>
2590
2591         * expmed.c (choose_mult_variant, expand_mult_const): New, split from...
2592         (expand_mult): ...here.
2593         (extract_high_half): New, split out from expand_mult_highpart.
2594         (expand_highpart_optab): Likewise.  Don't clobber target prematurely.
2595         (expand_highpart): Evaluate the cost of a shift/add sequence,
2596         then see if any of the specialized optabs are cheaper.
2597
2598 2004-03-18  Ian Lance Taylor  <ian@wasabisystems.com>
2599
2600         * mklibgcc.in: Remove obsolete MAYBE_USE_COLLECT2.
2601
2602 2004-03-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2603
2604         * convert.c (convert_to_real): Add more math builtins.
2605
2606 2004-03-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2607
2608         * convert.c (convert_to_real): Reformat using switch stmt.
2609
2610 2004-03-18  Mark Mitchell  <mark@codesourcery.com>
2611
2612         * c-common.c (pointer_int_sum): Do not complain about using
2613         pointers to pointers-to-members.
2614
2615 2004-03-18  Kazu Hirata  <kazu@cs.umass.edu>
2616
2617         * system.h (MD_ASM_CLOBBERS): Move to "Old target macros that
2618         have moved to the target hooks structure".
2619
2620 2004-03-18  James E Wilson  <wilson@specifixinc.com>
2621
2622         * config/mips/mips.md (type): Split move into arith and fmove.  Split
2623         hilo into mthilo and mfhilo.  Add trap.  Delete icmp.  Fix all uses.
2624         * config/mips/5400.md (ir_vr54_hilo, ir_vr54_arith, ir_vr54_fabs):
2625         Likewise.
2626         * config/mips/5500.md (ir_vr55_hilo, ir_vr55_arith, ir_vr55_fabs):
2627         Likewise.
2628         * config/mips/7000.md (rm7_int_other, rm7_mthilo, rm7_mfhilo,
2629         rm7_fp_quick): Likewise.
2630         * config/mips/9000.md (rm9k_int, rm9k_mfhilo, rm9k_mthilo,
2631         rm9k_fquick): Likewise.
2632         * config/mips/sr71k.md (ir_sr70_hilo, ir_sr70_arith, ir_sr70_fabs):
2633         Likewise.
2634         (ir_sr70_icmp): Delete.
2635
2636 2004-03-18  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2637
2638         * tree.h (TREE_CHECK2, TREE_CHECK3, TREE_CHECK5): New macros.
2639         (tree_check2_failed, tree_check3_failed, tree_check5_failed): New decl.
2640         (FUNC_OR_METHOD_CHECK, SET_ARRAY_OR_VECTOR_CHECK): New macros.
2641         (REC_OR_UNION_CHECK, NUMERICAL_TYPE_CHECK): Likewise.
2642         (TYPE_VALUES, TYPE_DOMAIN, TYPE_FIELDS, TYPE_METHODS, TYPE_VFIELD):
2643         Protect with proper check.
2644         (TYPE_ARG_TYPES, TYPE_METHOD_BASETYPE, TYPE_OFFSET_BASETYPE): Likewise.
2645         (TYPE_MIN_VALUE, TYPE_MAX_VALUE): Likewise.
2646         * tree.c (type_hash_eq): Rewrite to access proper fields for each type.
2647         (tree_check2_failed, tree_check3_failed, tree_check5_failed): New.
2648         * c-typeck.c (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.
2649         * dwarf2out.c (gen_enumeration_type_die): Use TYPE_VALUES,
2650         not TYPE_FIELDS.
2651         * stor-layout.c (set_sizetype): Use TYPE_ORIG_SIZE_TYPE.
2652
2653 2004-03-18  Mostafa Hagog  <mustafa@il.ibm.com>
2654
2655         * gcse.c (eliminate_partially_redundant_loads): Reject change if
2656         dest is set between beginning and current insn.
2657
2658 2004-03-18  Mark Mitchell  <mark@codesourcery.com>
2659
2660         * c-decl.c (grokdeclarator): Do not complain about redeclaring
2661         visible "static" identifiers "extern" in a local scope.
2662         * dwarf2out.c (loc_descriptor_from_tree): Handle pre- and
2663         post-increments/decrements.
2664
2665 2004-03-18  Bob Wilson  <bob.wilson@acm.org>
2666
2667         * config/xtensa/xtensa.c (current_function_arg_words): Delete.
2668         (xtensa_builtin_saveregs): Use current_function_args_info.arg_words.
2669         (xtensa_va_start): Remove assignment to current_function_arg_words.
2670
2671 2004-03-18  Richard Sandiford  <rsandifo@redhat.com>
2672
2673         * alias.c (record_set): Detect the case where a register is assigned
2674         a new value that has the same base term as the old one.
2675
2676 2004-03-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
2677
2678         * doloop.c: Removed.
2679         * loop-doloop.c: New file.
2680         * Makefile.in (doloop.o): Remove.
2681         (loop-doloop.o): New.
2682         * cfgloop.h (get_loop_level, doloop_optimize_loops): Declare.
2683         * cfgloopanal.c (get_loop_level): New function.
2684         * loop-iv.c (iv_number_of_iterations): Handle case when loop
2685         is leaved immediatelly.
2686         * loop.c (strength_reduce): Do not call doloop optimization.
2687         * loop.h (LOOP_BCT): Removed.
2688         * passes.c (rest_of_handle_loop_optimize): Do not use LOOP_BCT.
2689         (rest_of_handle_loop2): Call doloop_optimize_loops.
2690         (rest_of_compilation): Test for optimizations moved to
2691         rest_of_handle_loop2.
2692
2693 2004-03-17  Fariborz Jahanian <fjahanian@apple.com>
2694
2695         * config/rs6000/rs6000.c (rs6000_stack_info): correct reg_size
2696         for mixed mode.
2697         (rs6000_emit_prologue): Ditto.
2698         (rs6000_emit_epilogue): Ditto.
2699         * config/rs6000/rs6000.h: Definition of DWARF_CIE_DATA_ALIGNMENT
2700         macro for mixed mode.
2701
2702 2004-03-18  Jan Hubicka  <jh@suse.cz>
2703
2704         * predict.c (propagate_freq): Compute correctly frequency of
2705         EXIT_BLOCK.
2706
2707 2004-03-17  Eric Christopher  <echristo@redhat.com>
2708
2709         * builtins.c (apply_args_size): Use reg_raw_mode.
2710         (apply_result_size): Ditto.
2711
2712 2004-03-17  Ralf Corsepius <corsepiu@faw.uni-ulm.de>
2713
2714         PR target/14620
2715         * config/rtems.h: Add STD_LIB_SPEC and LIB_SPEC.
2716
2717 2004-03-17  Jakub Jelinek  <jakub@redhat.com>
2718
2719         * config/rs6000/t-linux64 (bispecs): Don't add -mlong-double-128 for
2720         32-bit builds when defaulting to 32-bit.
2721
2722 2004-03-17  Jan Hubicka  <jh@suse.cz>
2723
2724         * cfgrtl.c (rtl_create_basic_block): Pre-allocate basic_block_info
2725         array.
2726
2727 2004-03-17  James E Wilson  <wilson@specifixinc.com>
2728
2729         * config/mips/mips.md (zero_extendsidi2): Add length attribute.
2730         (hazard_nop): Change type to nop.
2731         (type): Split arith into arith, shift, slt, clz.  Delete darith.
2732         Fix all uses.  Change arith to multi if more than one insn emitted.
2733         * config/mips/5400.md (ir_vr54_arith): Likewise.
2734         * config/mips/5500.md (ir_vr55_arith): Likewise.
2735         * config/mips/7000.md (rm7_int_other): Likewise.
2736         * config/mips/9000.md (rm9k_int): Likewise.
2737         * config/mips/sr71k.md (ir_sr70_arith): Likewise.
2738
2739 2004-03-17  Joel Brobecker  <brobecker@gnat.com>
2740
2741         * dwarf2out.c (subrange_type_die): Define new variable "subtype"
2742         to hold the subtype tree instead of recomputing it several times.
2743
2744 2004-03-17  Kazu Hirata  <kazu@cs.umass.edu>
2745
2746         * config/mn10300/mn10300.c (notice_update_cc): Don't handle
2747         CC_INVERT.
2748         * config/mn10300/mn10300.md (cc): Remove "invert".
2749
2750 2004-03-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2751
2752         * builtins.c (integer_valued_real_p): Add builtin rint.
2753         (fold_builtin): Likewise.
2754         * convert.c (convert_to_real): Likewise.
2755
2756         * convert.c (convert_to_real): Fix typos in `long double'
2757         builtins.
2758
2759 2004-03-16  Mark Mitchell  <mark@codesourcery.com>
2760
2761         PR c++/14481
2762         * fold-const.c (fold): Set TREE_NO_UNUSED_WARNING on implicitly
2763         generated COMPOUND_EXPRs.
2764
2765 2004-03-16  Ralf Corsepius <corsepiu@faw.uni-ulm.de>
2766
2767         * config/h8300/t-rtems (h8300-*-rtems*): New.
2768
2769 2004-03-16  Eric Christopher  <echristo@redhat.com>
2770
2771         * doc/cppopts.texi(fwide-exec-charset): Fix typo.
2772
2773 2004-03-16  Kazu Hirata  <kazu@cs.umass.edu>
2774
2775         * config/i386/i386-protos.h: Add a prototype for
2776         ix86_reverse_condition.
2777         * config/i386/i386.c (ix86_reverse_condition): New.
2778         * config/i386/i386.h (REVERSE_CONDITION): Use
2779         ix86_reverse_condition.
2780         * config/i386/i386.md: Use ix86_reverse_condition instead of
2781         REVERSE_CONDITION.
2782
2783 2004-03-16  J. Brobecker  <brobecker@gnat.com>
2784
2785         * dwarf2out.c (loc_descriptor_from_tree): Add handling for MIN_EXPR.
2786
2787 2004-03-16  Nathanael Nerode  <neroden@gcc.gnu.org>
2788
2789         PR bootstrap/12974
2790         * Makefile.in: Pass $(INCLUDES) down to libgcc.mk explicitly.
2791
2792 2004-03-16  Paolo Bonzini  <bonzini@gnu.org>
2793
2794         * c-common.c (c_common_type_for_mode): Build vector types on
2795         demand.
2796         (handle_mode_attribute): Deprecate using the mode attribute
2797         to create vector types.  Fix indentation.
2798         (vector_type_node_list): Remove.
2799         (handle_vector_size_attribute): Create vector types on demand.
2800         Strip a NON_LVALUE_EXPR from the attribute if there is one.
2801         * c-typeck.c (comptypes): Make vector types compatible if they
2802         have the same underlying mode.
2803         (convert_for_assignment): Use comptypes to convert between
2804         vector types.
2805         * tree.c (build_common_tree_nodes_2): Do not create vector types.
2806         * config/arm/arm.c (arm_init_iwmmxt_builtins): Create necessary
2807         vector types.
2808         * tree.h: Remove vector types.
2809         * config/i386/i386.c (i386_init_mmx_sse_builtins): Likewise.
2810         * config/rs6000/rs6000.c (rs6000_init_builtins): Likewise.
2811         (V16QI_type_node, V2SI_type_node, V2SF_type_node, V4HI_type_node,
2812         V4SI_type_node, V4SF_type_node, V8HI_type_node): New globals.
2813         * doc/extend.texi (Vector Types): Document how to use the
2814         vector_size attribute to create vectors, rather than mode.
2815
2816         * config/arm/mmintrin.h: Use vector_size attribute, not mode.
2817         * config/i386/emmintrin.h: Likewise.
2818         * config/i386/mmintrin.h: Likewise.
2819         * config/i386/xmmintrin.h: Likewise.
2820         * config/sh/ushmedia.h: Likewise.
2821
2822 2004-03-16  Kazu Hirata  <kazu@cs.umass.edu>
2823
2824         * config/freebsd-spec.h, config/arc/arc-protos.h,
2825         config/arm/aout.h, config/arm/elf.h, config/arm/freebsd.h,
2826         config/arm/linux-gas.h, config/arm/semi.h,
2827         config/cris/cris-protos.h, config/i386/xm-djgpp.h,
2828         config/ia64/freebsd.h, config/mips/7000.md,
2829         config/mips/9000.md, config/ns32k/ns32k-protos.h,
2830         config/sparc/pbd.h: Update copyright.
2831
2832 2004-03-16  Ralf Corsepius <corsepiu@faw.uni-ulm.de>
2833
2834         PR target/14577
2835         * config.gcc: Switch sh-*-rtems* to ELF.  Add sh-*-rtemscoff.
2836
2837 2004-03-16  Paolo Bonzini  <bonzini@gnu.org>
2838
2839         * combine.c (combine_simplify_rtx): Remove the "last"
2840         parameter and its documentation.  Adjust recursive calls.
2841         (simplify_logical): Always perform the only simplification
2842         controlled by "last", if the simplified expression is
2843         actually different.
2844         (try_combine): Do not pass the "last" parameter to
2845         combine_simplify_rtx.
2846
2847 2004-03-16  Richard Sandiford  <rsandifo@redhat.com>
2848
2849         PR target/14599
2850         * config/mips/mips.md (UNSPEC_GP): New constant.
2851         * config/mips/mips.c (CONST_GP_P): Expect the CONST to contain
2852         an UNSPEC instead of (reg $gp).
2853         (mips16_gp_pseudo_reg): Change accordingly.
2854         (print_operand): Print $gp directly when handling CONST_GP_P.
2855
2856 2004-03-16  Richard Zidlicky  <rz@linux-m68k.org>
2857
2858         * config.gcc, config/m68k/linux.h: Implement with-cpu for m68k-linux.
2859         * longlong.h: Make code 68060 clean when compiling for m68060.
2860
2861 2004-03-16  Richard Zidlicky  <rz@linux-m68k.org>
2862
2863         * config/m68k/m68k.md: Fix constraints for bitfield instructions.
2864         * doc/md.texi: Clarify description of "i" constraint.
2865
2866 2004-03-15  James E Wilson  <wilson@specifixinc.com>
2867
2868         * config/mips/mips.md (type): Split load into load, fpload, fpidxload.
2869         Split store into store, fpstore, fpidxstore.  Fix all uses.
2870         * config/mips/5400.md (ir_vr54_load, ir_vr54_store, ir_vr54_fstore):
2871         Likewise.
2872         * config/mips/5500.md (ir_vr55_load, i5_vr55_store): Likewise.
2873         * config/mips/7000.md (rm7_ld, rm7_st): Likewise.
2874         * config/mips/9000.md (rm9k_load, rm9k_store): Likewise.
2875         * config/mips/sr71k.md (ir_sr70_load, ir_sr70_store, ir_sr70_fload,
2876         ir_sr70_fstore): Likewise.
2877
2878 2004-03-15  Richard Henderson  <rth@redhat.com>
2879
2880         PR middle-end/14535
2881         * except.c (collect_one_action_chain): Record action for cleanup
2882         outer of exception spec.
2883
2884 2004-03-15  Ian Lance Taylor  <ian@wasabisystems.com>
2885
2886         * config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
2887         Fix the check for abort and only do the mmap if we can.
2888
2889 2004-03-15  Eric Botcazou  <ebotcazou@act-europe.fr>
2890
2891         * config/sparc/sparc.h: Rework comments about the code model
2892         in 64-bit environment and the mode 'Pmode'.
2893         * doc/invoke.texi (SPARC options): Rework description of the
2894         different code models supported in 64-bit environment.
2895
2896 2004-03-15  Kazu Hirata  <kazu@cs.umass.edu>
2897
2898         * defaults.h (REVERSIBLE_CC_MODE): Define.
2899         * jump.c (reversed_comparison_code_parts): Don't check if
2900         REVERSIBLE_CC_MODE is defined.
2901
2902 2004-03-15  Kazu Hirata  <kazu@cs.umass.edu>
2903
2904         * c-incpath.c, c-incpath.h, c-pch.c, c.opt, cppexp.c,
2905         et-forest.h, genattr.c, ggc-none.c, hosthooks-def.h,
2906         hosthooks.h, params.h, ra-colorize.c, web.c,
2907         config/darwin-c.c, config/alpha/freebsd.h, config/arm/pe.c,
2908         config/avr/avr-protos.h, config/avr/avr.md,
2909         config/fr30/fr30-protos.h, config/fr30/fr30.md,
2910         config/h8300/fixunssfsi.c, config/i386/darwin.h,
2911         config/i386/freebsd.h, config/i386/freebsd64.h,
2912         config/ia64/hpux.h, config/ia64/unwind-ia64.c,
2913         config/ip2k/libgcc.S, config/m32r/xm-m32r.h,
2914         config/mmix/mmix-modes.def, config/ns32k/netbsd.h,
2915         config/ns32k/ns32k.md, config/pa/pa64-hpux.h,
2916         config/pa/pa64-regs.h, config/rs6000/aix41.h,
2917         config/rs6000/aix43.h, config/rs6000/host-darwin.c,
2918         config/sparc/aout.h, config/sparc/freebsd.h,
2919         config/sparc/litecoff.h, config/vax/vax-protos.h,
2920         doc/hostconfig.texi, doc/include/gcc-common.texi: Update
2921         copyright.
2922
2923 2004-03-15  Paul Brook  <paul@codesourcery.com>
2924
2925         * config/arm/arm.c (thumb_expand_prologue): Tie prologue insns to fp.
2926
2927 2004-03-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2928
2929         * c-pretty-print.c (pp_c_semicolon): Fix formatting.
2930         (pp_c_cv_qualifier): Document.
2931         (pp_c_space_for_pointer_operator): Likewise.
2932         (pp_c_integer_constant): Likewise.
2933         (pp_c_identifier): Likewise.
2934         (pp_c_init_declarator): Don't print function body.
2935
2936 2004-03-14  Joseph S. Myers  <jsm@polyomino.org.uk>
2937
2938         * doc/contrib.texi, doc/extend.texi, doc/gcov.texi,
2939         doc/install.texi, doc/invoke.texi, doc/makefile.texi,
2940         doc/sourcebuild.texi, doc/tm.texi, doc/trouble.texi: Capitalize
2941         "gcc", "g++" and "g77" or mark up with appropriate markup.  Adjust
2942         wording and grammar.
2943
2944 2004-03-14  Roger Sayle  <roger@eyesopen.com>
2945
2946         * alias.c (get_alias_set): Replace calls via (*lang_hooks.foo) ()
2947         with lang_hooks.foo ().
2948         * builtins.c (expand_builtin_va_arg): Likewise.
2949         * c-common.c (fname_as_string, c_common_truthvalue_conversion,
2950         c_common_type_for_mode, c_common_nodes_and_builtins,
2951         handle_mode_attribute, handle_vector_size_attribute): Likewise.
2952         * c-convert.c (convert): Likewise.
2953         * c-format.c (check_format_types): Likewise.
2954         * c-objc-common.c (c_tree_printer): Likewise.
2955         * c-typeck.c (build_unary_op, build_conditional_expr,
2956         build_binary_op): Likewise.
2957         * calls.c (try_to_integrate, expand_call,
2958         emit_library_call_value_1): Likewise.
2959         * cgraph.c (cgraph_node_name, cgraph_function_possibly_inlined_p):
2960         Likewise.
2961         * cgraphunit.c (record_call_1, cgraph_analyze_function,
2962         cgraph_expand_function): Likewise.
2963         * convert.c (convert_to_pointer, convert_to_integer): Likewise.
2964         * coverage.c (build_fn_info_type, build_ctr_info_type,
2965         build_gcov_info, create_coverage): Likewise.
2966         * dbxout.c (dbxout_init): Likewise.
2967         * diagnostic.c (diagnostic_report_current_function): Likewise.
2968         * dojump.c (do_jump): Likewise.
2969         * dwarf2out.c (dwarf2_name): Likewise.
2970         * except.c (init_eh): Likewise.
2971         * explow.c (expr_size, int_expr_size): Likewise.
2972         * expmed.c (make_tree, const_mult_add_overflow_p, expand_mult_add):
2973         Likewise.
2974         * expr.c (store_expr, store_constructor, safe_from_p,
2975         expand_expr_real, do_store_flag, try_casesi): Likewise.
2976         * function.c (push_function_context_to, pop_function_context_from,
2977         free_after_parsing, assign_stack_local_1, assign_stack_temp_for_type,
2978         put_var_into_stack, allocate_struct_function, current_function_name):
2979         Likewise.
2980         * integrate.c (copy_decl_for_inlining, expand_inline_function):
2981         Likewise.
2982         * langhooks.c (lhd_clear_binding_stack, write_global_declarations,
2983         lhd_print_error_function): Likewise.
2984         * opts.c (handle_option, decode_options): Likewise.
2985         * passes.c (open_dump_file): Likewise.
2986         * print-tree.c (print_node): Likewise.
2987         * stmt.c (expand_fixup, fixup_gotos, expand_asm_operands,
2988         expand_decl_cleanup, emit_case_nodes): Likewise.
2989         * stor-layout.c (variable_size): Likewise.
2990         * toplev.c (announce_function, wrapup_global_declarations,
2991         check_global_declarations, compile_file, default_tree_printer,
2992         process_options, lang_dependent_init, finalize): Likewise.
2993         * tree-dump.c (dequeue_and_dump): Likewise.
2994         * tree-inline.c (remap_decl, remap_block, copy_body_r,
2995         initialize_inlined_parameters, declare_return_variable,
2996         inlinable_function_p, expand_call_inline, optimize_inline_calls,
2997         walk_tree, copy_tree_r): Likewise.
2998         * tree-optimize.c (tree_rest_of_compilation): Likewise.
2999         * tree.c (decl_assembler_name, tree_size, size_in_bytes, staticp,
3000         unsafe_for_reeval, get_unwidened, get_narrower, get_callee_fndecl,
3001         variably_modified_type_p, dump_tree_statistics): Likewise.
3002         * varasm.c (assemble_variable, compare_constant, copy_constant,
3003         force_const_mem, compute_reloc_for_constant, output_constant,
3004         output_addressed_constants, initializer_constant_valid_p): Likewise.
3005
3006 2004-03-14  Kelley Cook  <kcook@gcc.gnu.org>
3007
3008         * doc/install.texi: Make autoconf 2.13 the exception, not the rule.
3009
3010 2004-03-14  Andreas Tobler  <a.tobler@schweiz.ch>
3011
3012         * doc/install.texi: Reflect autoconf and automake version for
3013         libffi. Update autoconf version to 2.59.
3014
3015 2004-03-13  Roger Sayle  <roger@eyesopen.com>
3016
3017         * fold-const.c (negate_expr, operand_equal_for_comparison_p,
3018         optimize_bit_field_compare, decode_field_reference, all_ones_mask_p,
3019         make_range, build_range_check, fold_range_test, unextend,
3020         constant_boolean_node, fold_binary_op_with_conditional_arg,
3021         fold_truthop, fold_mathfn_compare, fold_inf_compare,
3022         fold_single_bit_test, fold): Replace calls via (*lang_hooks.foo) ()
3023         with lang_hooks.foo ().
3024
3025 2004-03-14  Richard Earnshaw  <rearnsha@arm.com>
3026
3027         * arm.h (EXTRA_CONSTRAINT_STR_ARM): Update comment.
3028
3029 2004-03-13  Dara Hazeghi  <dhazeghi@yahoo.com>
3030
3031         * doc/install.texi: Note status of -fnew-ra.
3032
3033 2004-03-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
3034
3035         PR middle-end/14470
3036         * expr.c (store_expr): Call emit_queue before generating the move
3037         from the temporary to the original target.  Protect the temporary
3038         from emit_queue.
3039
3040 2004-03-13  Jakub Jelinek  <jakub@redhat.com>
3041
3042         PR target/14533
3043         * config/s390/s390.c (legitimize_pic_address): Don't abort on UNSPEC
3044         other than UNSPEC_GOTOFF.
3045
3046 2004-03-13  Richard Earnshaw  <rearnsha@arm.com>
3047
3048         * arm.c (arm_legitimate_address_p): New argument, OUTER.  Pass through
3049         to arm_legitimate_index_p.  Update all callers with SET as default
3050         value.
3051         (arm_legitimate_index_p): New argument, OUTER.  Restrict the index
3052         range if OUTER is a sign-extend operation on QImode.  Correctly
3053         reject shift operations on sign-extended QImode addresses.
3054         (bad_signed_byte_operand): Delete.
3055         (arm_extendqisi_mem_op): New function.
3056         * arm.h (EXTRA_CONSTRAINT_ARM): Delete.  Replace with...
3057         (EXTRA_CONSTRAINT_STR_ARM): ... this.  Handle extended address
3058         constraints.
3059         (CONSTRAINT_LEN): New.
3060         (EXTRA_CONSTRAINT): Delete.  Replace with...
3061         (EXTRA_CONSTRAINT_STR): ... this.
3062         (PREDICATE_CODES): Remove bad_signed_byte_operand.
3063         * arm.md (extendqihi_insn): Use new constraint Uq.  Rework.  Length
3064         is now always default.
3065         (define_splits for bad sign-extend loads): Delete.
3066         (arm_extendqisi, arm_extendqisi_v5): Likewise.
3067         * arm/vfp.md (arm_movsi_vfp, arm_movdi_vfp, movsf_vfp, movdf_vfp):
3068         Rework 'U' constraint to 'Uv'.
3069         * arm-protos.h: Remove bad_signed_byte_operand.  Add
3070         arm_extendqisi_mem_op.
3071         * doc/md.texi (ARM constraints): Rename VFP constraint (now Uv).
3072         Add Uq constraint.
3073
3074 2004-03-13  Alan Modra  <amodra@bigpond.net.au>
3075
3076         * config/rs6000/rs6000.c (rs6000_va_arg): Replace SPLIT_COMPLEX_ARGS
3077         with targetm version.
3078
3079         PR target/14567
3080         * config/rs6000/rs6000.h (UNITS_PER_ARG, RS6000_ARG_SIZE): Delete.
3081         (HARD_REGNO_MODE_OK): Disallow TFmode for fp31.
3082         * config/rs6000/rs6000.c (rs6000_arg_size): New function.
3083         Update all users of RS6000_ARG_SIZE.
3084         (function_arg_advance): Count fregno using mode size.
3085         (function_arg): Handle long double split over regs and memory.
3086         (function_arg_partial_nregs): Likewise.
3087         (rs6000_va_arg): Repackage complex args.
3088
3089 2004-03-13  Dean Ferreyra <dferreyra@igc.org>
3090
3091         PR target/14047
3092         * config/avr/avr.c (avr_progmem_p): Add "attributes" parameter.
3093         (avr_insert_attributes): Pass "attributes" to avr_progmem_p.
3094         * config/avr/avr-protos.h (avr_progmem_p): Change prototype.
3095
3096 2004-03-12  Jakub Jelinek  <jakub@redhat.com>
3097
3098         * config/rs6000/rs6000-protos.h (rs6000_output_dwarf_dtprel): Add
3099         prototype.
3100         * config/rs6000/rs6000.c (rs6000_output_dwarf_dtprel): New.
3101         * config/rs6000/rs6000.h (ASM_OUTPUT_DWARF_DTPREL): Define.
3102
3103 2003-03-12  Andrew Pinski  <apinski@apple.com>
3104
3105         * config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
3106         Use ret instead of result. Use addr instead of base.
3107
3108 2004-03-12  David Edelsohn  <edelsohn@gnu.org>
3109
3110         * doc/install.texi (*-ibm-aix*): Document assembler and achiver
3111         fixes required by libstdc++ and update installation instructions
3112         for libstdc++.a.
3113
3114 2004-03-12  Danny Smith  <dannysmith@users.sourceforge.net>
3115
3116         * config/i386/winnt.c (i386_pe_strip_name_encoding_full): Strip
3117         leading '@' on fastcall symbols before stripping suffix.
3118
3119 2004-03-12  Roger Sayle  <roger@eyesopen.com>
3120
3121         * combine.c (unmentioned_reg_p): New function to check whether an
3122         expression is a "specialization" of another, i.e. that there are
3123         no registers or memory references mentioned in the first that don't
3124         appear in the second.
3125         (unmentioned_reg_p_1): New helper subroutine of unmentioned_reg_p.
3126         (combine_instructions): Also try combining instructions using the
3127         REG_EQUAL note from a preceding log-linked instruction.
3128
3129 2004-03-12  Roger Sayle  <roger@eyesopen.com>
3130
3131         * config/i386/i386.c (ix86_split_ashrdi): Optimize shift by 63.
3132
3133 2004-03-12  Matt Austern  <austern@apple.com>
3134
3135         * target.h (struct gcc_target): New target hook, unwind_label.
3136         * target-def.h (TARGET_ASM_EMIT_UNWIND_LABEL): New hook.
3137         * output.h (default_emit_unwind_label): New function.
3138         * default.h (TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY): New macro.
3139         (TARGET_USES_WEAK_UNWIND_INFO): New target macro.
3140         (TARGET_SUPPORTS_HIDDEN): New target macro.
3141         * dwarf2out.c (struct dw_fde_struct): Add field for function decl
3142         that corresponds to this FDE.
3143         (FRAME_BEGIN_LABEL): Allow target to override default label.
3144         (output_call_frame_info): If FDEs are linknonce, then use extra
3145         indirection for FDE encoding, output a label for each FDE, and
3146         output an empty label for each function without an FDE.
3147         (dwarf2out_begin_prologue): Set up decl field when creating an FDE.
3148         * varasm.c (globalize_decl): Call ASM_MAKE_LABEL_LINKONCE for
3149         decls with DECL_ONE_ONLY set, if that macro is defined.
3150         (make_decl_one_only): Don't use DECL_COMMON if we're compiling
3151         for a SUPPORTS_ONE_ONLY target.
3152         * config/darwin-protos.h (darwin_unique_section): Declare.
3153         (darwin_asm_named_section): Likewise.
3154         (darwin_section_type_flags): Likewise.
3155         (darwin_non_lazy_pcrel): Likewise.
3156         (darwin_emit_unwind_label): Likewise.
3157         (darwin_make_decl_one_only): Likewise.
3158         * config/darwin.c (machopic_finish): Get rid of tweak that
3159         eliminate stubs for symbols that are defined.
3160         (darwin_encode_section_info): Don't treat weak functions as defined.
3161         (darwin_make_decl_one_only): Define.
3162         (darwin_asm_named_section): Likewise.
3163         (darwin_section_type_flags): Likewise.
3164         (darwin_unique_section): Likewise.
3165         (darwin_emit_unwind_label): Likewise.
3166         (darwin_non_lazy_pcrel): Likewise.
3167         (darwin_asm_output_dwarf_delta): Difference between two labels is
3168         local only if both labels are local.
3169         * config/darwin.h (MAKE_DECL_ONE_ONLY): Define.
3170         (ASM_MAKE_LABEL_LINKONCE): Likewise.
3171         (TARGET_SUPPORTS_HIDDEN): Likewise.
3172         (TARGET_USES_WEAK_UNWIND_INFO): Likewise.
3173         (TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY): Likewise.
3174         (FRAME_BEGIN_LABEL): Likewise.
3175         (ASM_DECLARE_OBJECT_NAME): Make references to weak symbols indirect.
3176         (ASM_DECLARE_FUNCTION_NAME): Likewise.
3177         (darwin_eh_frame_section): Give __eh_frame section the coalesced flag.
3178         (TARGET_ASM_UNIQUE_SECTION): Define.
3179         (EH_FRAME_SECTION_NAME): Define.
3180         (EH_FRAME_SECTION_ATTR): Likewise.
3181         (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise.
3182         (TARGET_ASM_NAMED_SECTION): Likewise.
3183         (TARGET_SECTION_TYPE_FLAGS): Likewise.
3184         * doc/tm.texi: Document TARGET_USES_WEAK_UNWIND_INFO,
3185         TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY, TARGET_SUPPORTS_HIDDEN,
3186         TARGET_ASM_EMIT_UNWIND_LABEL.
3187
3188 2004-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3189
3190         * builtins.c (expand_builtin_mathfn): Add pow10* to the
3191         existing exp10* case.
3192         (expand_builtin): Likewise.
3193
3194 2004-03-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
3195
3196         * doc/tm.texi (registers) <Values in Registers>: Add
3197         entry for REGMODE_NATURAL_SIZE.
3198
3199 2004-03-12  Richard Henderson  <rth@redhat.com>
3200
3201         PR target/14547
3202         * target.h (struct gcc_target): Move calls substructure before
3203         booleans.  Add split_complex_arg.
3204         * function.c (assign_parms, split_complex_args): Use it.
3205         * calls.c (expand_call): Likewise.
3206         (split_complex_values): Likewise.  Check for splittable types
3207         before allocating memory.
3208         (split_complex_types): Likewise.
3209         * system.h (SPLIT_COMPLEX_ARGS): Poison.
3210         * expr.h (SPLIT_COMPLEX_ARGS): Remove.
3211         * target-def.h (TARGET_SPLIT_COMPLEX_ARG): New.
3212         * config/alpha/alpha.c (alpha_split_complex_arg): New.
3213         (TARGET_SPLIT_COMPLEX_ARG): New.
3214         * config/alpha/alpha.h (SPLIT_COMPLEX_ARGS): Remove.
3215         * config/rs6000/rs6000.c (TARGET_SPLIT_COMPLEX_ARG): New.
3216         (rs6000_override_options): Zap it for non-AIX.
3217         (rs6000_function_value): Use targetm.calls.split_complex_arg.
3218         * config/rs6000/rs6000.h (SPLIT_COMPLEX_ARGS): Remove.
3219         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): New.
3220         * config/xtensa/xtensa.h (SPLIT_COMPLEX_ARGS): Remove.
3221         * doc/tm.texi (TARGET_SPLIT_COMPLEX_ARG): Modify from old
3222         SPLIT_COMPLEX_ARGS entry.
3223
3224 2004-03-11  Richard Henderson  <rth@redhat.com>
3225
3226         * config/alpha/alpha.c (xfloating_ops, vax_cvt_ops): New.
3227         (alpha_lookup_xfloating_lib_func): Use them, return rtx.
3228         (alpha_emit_xfloating_arith): Update to match.
3229         (alpha_emit_xfloating_compare): Likewise.
3230         (alpha_emit_xfloating_cvt): Likewise.
3231         (alpha_emit_xfloating_libcall): Take already built symbol,
3232         mark call const.
3233         * config/alpha/alpha.md (extendsftf2, extenddftf2): Take
3234         op1 in a register.
3235
3236 2004-03-11  Richard Henderson  <rth@redhat.com>
3237
3238         PR target/14539
3239         * config/alpha/alpha.h (STACK_BOUNDARY): Set to 128.
3240
3241         * simplify-rtx.c (simplify_relational_operation): Fix typo.
3242
3243 2004-03-11  Richard Henderson  <rth@redhat.com>
3244
3245         PR middle-end/14477
3246         * except.c (remove_unreachable_regions): Look thru CALL_PLACEHOLDER.
3247
3248 2004-03-11  Ulrich Weigand  <uweigand@de.ibm.com>
3249
3250         PR target/14262
3251         * calls.c (load_register_parameters): If BLOCK_REG_PADDING is not
3252         defined, pass small BLKmode values in registers in the low-order part.
3253
3254 2004-03-11  Ulrich Weigand  <uweigand@de.ibm.com>
3255
3256         * combine.c (if_then_else_cond): Check for NULL return value of
3257         simplify_gen_subreg.
3258
3259 2004-03-11  Richard Sandiford  <rsandifo@redhat.com>
3260
3261         PR target/14496
3262         * config/mips/mips.h (UNITS_PER_FPVALUE): Fix value for
3263         TARGET_SINGLE_FLOAT.
3264
3265 2004-03-11  Steve Ellcey  <sje@cup.hp.com>
3266
3267         * config/ia64/hpux.h (TARGET_INIT_LIBFUNCS): Add undef.
3268         * config/ia64/ia64.h (TARGET_INIT_LIBFUNCS): Add define.
3269         * config/ia64/ia64.c (ia64_init_libfuncs): New.
3270         (ia64_hpux_init_libfuncs): Add call to ia64_init_libfuncs.
3271
3272 2004-03-11  Roger Sayle  <roger@eyesopen.com>
3273
3274         * fold-const.c (negate_expr_p) <RSHIFT_EXPR>: We can optimize
3275         -((int)X>>C) where C is an integer constant one bit less than the
3276         size of X into (unsigned)X>>C.  Similarly for unsigned->signed.
3277         (negate_expr) <RSHIFT_EXPR>: Implement the above transformations.
3278
3279         * simplify-rtx.c (simplify_unary_operation): Also implement the
3280         above transformations at the RTL level.
3281
3282 2004-03-11  Alan Modra  <amodra@bigpond.net.au>
3283
3284         * real.c (encode_ibm_extended): Do round low word.
3285
3286 2004-03-11  Ben Elliston  <bje@wasabisystems.com>
3287
3288         * config/arm/arm.md (is_xscale): Comment this attribute and move
3289         it a bit further up in the file, closer to related attributes.
3290
3291 2004-03-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
3292
3293         * config/host-solaris.c (sol_gt_pch_use_address): Add
3294         missing terminating marker to comment.
3295
3296 2004-03-11  Richard Sandiford  <rsandifo@redhat.com>
3297
3298         * config/mips/mips.md: Use move_operand in splitters for 64-bit moves.
3299         (movdi, movsi, movhi, movqi, movsf, movdf): Remove predicates.
3300         (*movdi_32bit_mips16, *movsi_mips16, *movhi_mips16, *movqi_mips16)
3301         (*movsf_mips16, *movdf_mips16):  Name unnamed patterns.  Use
3302         move_operand as source predicate in all cases.
3303         (*movdi_32bit): Renamed from movdi_internal.  Remove 'F' constraint.
3304         Test reg_or_0_operand.  Use move_operand as source predicate.
3305         (*movdi_64bit): Renamed from movdi_internal2.  Test reg_or_0_operand.
3306         (*movdi_64bit_mips16): Renamed from movdi_internal2_mips16.
3307         (*movsi_internal): Renamed from movsi_internal.  Test reg_or_0_operand.
3308         (movhi, movqi, movsf, movdf): Use mips_legitimize_move.
3309         (*movhi_internal): Renamed from movhi_internal.  Test reg_or_0_operand.
3310         Use move_operand as source predicate.  Remove 'K' constraint.
3311         (*movqi_internal): Likewise movqi_internal.
3312         (*movsf_hardfloat): Renamed from movsf_internal1.  Test
3313         reg_or_0_operand.  Use move_operand as source predicate.
3314         (*movsf_softfloat): Likewise movsf_internal2.
3315         (*movdf_hardfloat_64bit): Likewise movsf_internal1a.
3316         (*movdf_hardfloat_32bit): Likewise movsf_internal1b.
3317         (*movdf_softfloat): Likewise movdf_internal2.
3318         * config/mips/mips.c (move_operand): Match arbitrary CONST_INTs
3319         for DImode if !TARGET_64BIT.
3320         (mips_legitimize_move): Simplify accordingly.
3321
3322 2004-03-11  Josef Zlomek  <zlomekj@suse.cz>
3323
3324         PR/14362
3325         * var-tracking.c (struct variable_def): Added field refcount.
3326         (variable_htab_free): Decrease the refcount and delete variable
3327         only if there are no more references.
3328         (unshare_variable): New function.
3329         (vars_copy_1): Increase refcount instead of copying the variable.
3330         (variable_union): Share the variables where possible, unshare
3331         the variables if needed.
3332         (variable_different_p): Return false if var1 and var2 are
3333         the same structure.
3334         (variable_was_changed): Init the refcount of new variable.
3335         (set_frame_base_location): Unshare variable if needed.
3336         (set_variable_part): Init the refcount of new variable.
3337         Unshare the variables if needed.
3338         (delete_variable_part): Unshare the variables if needed.
3339         (emit_notes_for_differences_1): Init the refcount of new variable.
3340         (vt_add_function_parameters): Do not add function parameters to
3341         IN set of ENTRY_BLOCK_PTR because it is unused anyway.
3342         (vt_initialize): Do not add frame_base_decl to IN set of
3343         ENTRY_BLOCK_PTR because it is unused anyway.
3344
3345 2004-03-11  Josef Zlomek  <zlomekj@suse.cz>
3346
3347         * var-tracking.c (vars_copy_1): Cleanup and speedup chain operations.
3348         (vars_copy): Likewise.
3349         (variable_union): Likewise.
3350         (set_variable_part): Likewise.
3351         (delete_variable_part): Likewise.
3352
3353 2004-03-11  Kazu Hirata  <kazu@cs.umass.edu>
3354
3355         * c-typeck.c, combine.c, cse.c, dominance.c, et-forest.h,
3356         ggc-page.c, var-tracking.c, config/fp-bit.c, config/c4x/c4x.c,
3357         config/cris/cris.c, config/i386/ppro.md, config/i860/i860.c,
3358         config/i860/i860.h, config/m32r/m32r.h, config/m32r/xm-m32r.h,
3359         config/m68hc11/m68hc11.h, config/m68hc11/m68hc11.md,
3360         config/mips/mips.c, config/mmix/mmix.c, config/ns32k/ns32k.h,
3361         config/pa/pa.c, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
3362         config/pdp11/pdp11.h, config/rs6000/rs6000.c,
3363         config/stormy16/stormy16.c: Fix comment typos and formatting.
3364
3365 2004-03-11  Nathanael Nerode  <neroden@gcc.gnu.org>
3366
3367         * configure: Regenerate, since I forgot to while committing Paolo's
3368         changes.
3369
3370 2004-03-08  Paolo Bonzini  <bonzini@gnu.org>
3371
3372         PR ada/14131
3373         Move language detection to the top level.
3374         * configure.ac: Remove code to detect languages,
3375         it now lives exclusively in the top level.
3376         * aclocal.m4 (gcc_AC_PROG_GNAT): Moved to the
3377         top level, renamed to ACX_PROG_GNAT.
3378
3379 2004-03-10  Richard Henderson  <rth@redhat.com>
3380
3381         * c-pch.c (c_common_no_more_pch): Update for gt_pch_use_address
3382         extra arguments.
3383         * config.host (*-*-solaris2*, *-*-linux*): Add out_host_hook_obj
3384         and host_xmake_file fragments.
3385         * ggc-common.c (gt_pch_save): Update for gt_pch_get_address change.
3386         (gt_pch_restore): Similarly for gt_pch_use_address.
3387         (default_gt_pch_get_address): New.
3388         (mmap_gt_pch_get_address): Split out of gt_pch_save.
3389         (default_gt_pch_use_address): Split out of gt_pch_restore.
3390         (mmap_gt_pch_use_address): Likewise.
3391         * hooks.c (hook_voidp_size_t_null): Remove.
3392         (hook_bool_voidp_size_t_false): Remove.
3393         * hooks.h: Likewise.
3394         * hosthooks-def.h (HOST_HOOKS_GT_PCH_GET_ADDRESS): Use one of the
3395         default_ or mmap_ definitions.
3396         (HOST_HOOKS_GT_PCH_USE_ADDRESS): Likewise.
3397         * hosthooks.h (struct host_hooks): Update gt_pch_get_address
3398         and gt_pch_use_address.
3399         * config/host-linux.c, config/host-solaris.c: New files.
3400         * config/x-linux, config/x-solaris: New files.
3401         * config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_get_address):
3402         Update for changed definition.
3403         (darwin_rs6000_gt_pch_use_address): Likewise.