OSDN Git Service

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