OSDN Git Service

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