OSDN Git Service

* Revert patch from 2005-04-13.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2005-04-14  Julian Brown  <julian@codesourcery.com>
2
3         * Revert elfos.h part of my patch from 2005-04-13 for causing libstdc++
4         link failures on ppc64 Linux.
5
6 2005-04-14  Andreas Krebbel  <krebbel1@de.ibm.com>
7
8         * config.gcc: Set cpu_type for s390.
9
10 2005-04-14  Daniel Berlin  <dberlin@dberlin.org>
11
12         Fix PR tree-optimization/20963
13         * tree-ssa-pre.c (compute_avail): Remove special case for
14         TREE_INVARIANT. 
15         (create_expression_by_pieces): Add value numbers for forced out
16         statements.
17
18 2005-04-14  Hans-Peter Nilsson  <hp@axis.com>
19
20         * config/cris/cris.md: Replace references to (reg:SI 16) with
21         (reg:SI CRIS_SRP_REGNUM).
22
23 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
24
25         PR tree-optimization/20657
26         * tree-vrp.c (extract_range_from_expr): Notice INTEGER_CST to
27         create an appropriate range from it.
28
29 2005-04-14  Uros Bizjak  <uros@kss-loka.si>
30
31         * reg-stack.c (subst_stack_regs_pat): Handle <UNSPEC_FIST_FLOOR> and
32         <UNSPEC_FIST_CEIL> case.
33
34         * config/i386/i386.md (UNSPEC_FIST_FLOOR, UNSPEC_FIST_CEIL): New.
35         (*fist<mode>2_floor_1, fistdi2_floor, fistdi2_floor_with_temp)
36         (fist<mode>2_floor, fist<mode>2_floor_with_temp): New isns patterns
37         to implement lfloor and llfloor built-ins as x87 intrinsic function.
38         (fistdi2_floor, fist<mode>2_floor splitters): New splitters.
39         (lfloor<mode>2): New expanders.
40         (*fist<mode>2_ceil_1, fistdi2_ceil, fistdi2_ceil_with_temp)
41         (fist<mode>2_ceil, fist<mode>2_ceil_with_temp): New isns patterns
42         to implement lceil and llceil built-ins as x87 intrinsic function.
43         (fistdi2_ceil, fist<mode>2_ceil splitters): New splitters.
44         (lceil<mode>2): New expanders.
45
46 2005-04-14  Uros Bizjak  <uros@kss-loka.si>
47
48         * convert.c (convert_to_integer): Convert (long int)trunc{,f,l},
49         and (long long int)ceil{,f,l} into FIX_TRUNC_EXPR.
50
51 2005-04-14  Ulrich Weigand  <uweigand@de.ibm.com>
52
53         PR target/20927
54         * config/s390/s390-modes.def: Define TFmode.
55
56 2005-04-13  Richard Sandiford  <rsandifo@redhat.com>
57
58         * config/mips/mips.h (ASM_OUTPUT_CASE_LABEL): Delete.
59         (JUMP_TABLES_IN_TEXT_SECTION): Define.
60         * config/mips/mips.c (mips16_insn_length): Remove reference to
61         JUMP_TABLES_IN_TEXT_SECTION.
62
63 2005-04-13 Fariborz Jahanian <fjahanian@apple.com>
64
65         * simplify-rtx.c (simplify_binary_operation_1): Return
66         scalar or vector of constant 0, depending on the xor's 
67         mode.
68
69 2005-04-13  Dale Johannesen  <dalej@apple.com>
70
71         * objc/Make-lang.in (objc-lang.o):  Depend on tree-gimple.h.
72         (objc-act.o):  Ditto.
73         * objc/objc-act.c (objc_gimplify_expr):  New.
74         (objc_get_callee_fndecl):  New.
75         * objc/objc-act.h:  Include tree-gimple.h.  Declare new functions.
76         * objc/objc-lang.c (LANG_HOOKS_GIMPLIFY_EXPR):  Define.
77         (LANG_HOOKS_GET_CALLEE_FNDECL):  Define.
78
79 2005-04-13  Devang Patel  <dpatel@apple.com>
80
81         * tree-if-conv.c (tree_if_convert_cond_expr): Do not create extra
82         temp variables.
83         
84 2005-04-13  Hans-Peter Nilsson  <hp@axis.com>
85
86         CRIS prologue as RTL.
87         * config/cris/cris-protos.h (cris_emit_movem_store)
88         (cris_expand_prologue): Prototype.
89         * config/cris/cris.c (struct machine_function): New member
90         stdarg_regs.
91         (cfa_label_num, cris_target_asm_function_prologue): Remove.
92         (TARGET_ASM_FUNCTION_PROLOGUE): Don't override.
93         (cris_general_operand_or_gotless_symbol): Accept CRIS_UNSPEC_GOT.
94         (cris_load_multiple_op, cris_return_address_on_stack)
95         (cris_return_address_on_stack_for_return): ISO-Cify.
96         (cris_store_multiple_op): New predicate function.
97         (cris_expand_prologue, cris_emit_movem_store): New functions.
98         (cris_print_operand) <case 'O'>: Handle modifications other than
99         post-increment.
100         (cris_symbol, cris_got_symbol): Return 0 for CRIS_UNSPEC_GOT.
101         (cris_gotless_symbol): Return 1 for CRIS_UNSPEC_GOT.
102         (cris_gen_movem_load): Rearrange slightly to make local variable
103         src a parameter, removing osrc.
104         (cris_setup_incoming_varargs): Set machine_function member
105         stdarg_regs to correspond to the number of registers that need to
106         be saved.
107         * config/cris/cris.h (EXTRA_CONSTRAINT_S): Accept
108         CRIS_UNSPEC_GOT.
109         (PREDICATE_CODES): Add cris_store_multiple_op.  Make
110         cris_general_operand_or_gotless_symbol accept UNSPEC.
111         * config/cris/cris.md (CRIS_UNSPEC_GOT): New constant.
112         ("*movsi_internal") <alternative 8>: Handle CRIS_UNSPEC_GOT.
113         ("*cris_store_multiple"): New pattern.  Tweak common comment above
114         this and "*cris_load_multiple".
115         ("prologue"): New define_expand.
116
117         * config/cris/cris.md ("epilogue"): Conditionalize on
118         TARGET_PROLOGUE_EPILOGUE.
119
120 2005-04-13  Steve Ellcey  <sje@cup.hp.com>
121
122         PR target/20924
123         * config/ia64/ia64.md (divsf3_internal_lat): Generate frcpa with
124         fpsr 0 instead of fpsr 1.
125         (divsf3_internal_thr): Ditto.
126         (divdf3_internal_lat): Ditto.
127         (divdf3_internal_thr): Ditto.
128         (divxf3_internal_lat): Ditto.
129         (divxf3_internal_thr): Ditto.
130
131 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
132
133         PR tree-optimization/20913
134         * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Fold COND_EXPR.
135
136         PR tree-optimization/20702
137         * tree-vrp.c (maybe_add_assert_expr): Recurse into
138         dominator children that haven't been walked into.
139
140 2005-04-13  Julian Brown  <julian@codesourcery.com>
141
142         * config/elfos.h (MAKE_DECL_ONE_ONLY): Redefined to stop DECL_WEAK from
143         being used for symbols with vague linkage when HAVE_GAS_COMDAT_GROUP
144         is true. 
145
146 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
147
148         * basic-block.h, tree-ssa-uncprop.c, varasm.c,
149         config/i386/sse.md: Fix comment typos.
150
151         * genattrtab.c (NULL_ATTR): Remove.
152         * ifcvt.c (NULL_EDGE): Likewise.
153
154         * rtl.h (RTX_EXPR_FIRST, RTX_EXPR_LAST): Remove.
155
156         * rtl.h (NOTE_PREDICTION_ALG, NOTE_PREDICTION_FLAGS,
157         NOTE_PREDICT): Remove.
158
159 2005-04-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
160
161         * configure.ac (gcc_AC_CHECK_DECLS): Add vsnprintf.
162         * configure: Regenerate.
163         * config.in: Likewise.
164         * system.h: Declare vsnprintf if not already declared.
165
166 2005-04-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
167
168         * optc-gen.awk: Handle stand-alone Mask records.
169         * opth-gen.awk: Likewise.
170         * doc/options.texi (Option file format): Document them.
171         * config.gcc (sparc-*-netbsdelf*, sparc-*-linux*, sparc64-*-freebsd*,
172         sparc64-*-linux*, sparc64-*-netbsd*): Add long-double-switch.opt.
173         (sparc64-*-openbsd*, sparc64-*-elf*): Add little-endian.opt.
174         * config/sparc/sparc.h (MASK_FPU, MASK_UNALIGNED_DOUBLES,
175         MASK_V8, MASK_SPARCLITE, MASK_SPARCLET, MASK_V9,
176         MASK_DEPRECATED_V8_INSNS, MASK_IMPURE_TEXT, MASK_APP_REGS,
177         MASK_HARD_QUAD, MASK_LITTLE_ENDIAN, MASK_PTR64, MASK_64BIT,
178         MASK_STACK_BIAS, MASK_FPU_SET, MASK_VIS, MASK_V8PLUS,
179         MASK_FASTER_STRUCTS, MASK_LONG_DOUBLE_128): Delete.
180         (TARGET_FPU, TARGET_UNALIGNED_DOUBLES, TARGET_V8, TARGET_SPARCLITE,
181         TARGET_SPARCLET, TARGET_V9, TARGET_DEPRECATED_V8_INSNS,
182         TARGET_IMPURE_TEXT, TARGET_APP_REGS, MASK_HARD_QUAD,
183         TARGET_LITTLE_ENDIAN, TARGET_PTR64, TARGET_64BIT, MASK_STACK_BIAS,
184         TARGET_FPU_SET, TARGET_VIS, TARGET_V8PLUS, TARGET_FASTER_STRUCTS,
185         TARGET_LONG_DOUBLE_128): Likewise.
186         (TARGET_SWITCHES, SUBTARGET_SWITCHES): Likewise.
187         (TARGET_OPTIONS, SUBTARGET_OPTIONS): Likewise.
188         * config/sparc/freebsd.h (SUBTARGET_SWITCHES): Likewise.
189         * config/sparc/linux.h (SUBTARGET_SWITCHES): Likewise.
190         * config/sparc/linux64.h (SUBTARGET_SWITCHES): Likewise.
191         * config/sparc/netbsd-elf.h (SUBTARGET_SWITCHES): Likewise.
192         * config/sparc/sp64-elf.h (SUBTARGET_SWITCHES): Likewise.
193         * config/sparc/sparc.c (fpu_option_set): New global.
194         (sparc_handle_option): New function.
195         (sparc_override_options): Test fpu_option_set.
196         (TARGET_DEFAULT_TARGET_FLAGS): Set to TARGET_DEFAULT.
197         (TARGET_HANDLE_OPTION): Set to sparc_handle_option.
198         * config/sparc/sparc.opt: New file.
199         * config/sparc/little-endian.opt: Likewise.
200         * config/sparc/long-double-switch.opt: Likewise.
201
202 2005-04-13  Bernd Schmidt  <bernd.schmidt@analog.com>
203
204         * config/bfin/bfin.c (bfin_lib_id_given): New static variable.
205         (bfin_handle_options): Set it if -mshared-library-id= is seen.
206         * config/bfin/bfin.opt (mshared-library-id=): Lose
207         Var(bfin_lib_id_given).
208
209 2005-04-13  Matt Thomas  <matt@3am-software.com>
210  
211         * config/rs6000/sysv4.h (NO_IMPLICIT_EXTERN_C): undefine before
212         defining.
213
214 2005-04-13  Kazu Hirata  <kazu@cs.umass.edu>
215
216         * rtl.h (CLEAR_RTX_FLAGS): Remove.
217
218         * cgraphunit.c (INSNS_PER_CALL): Remove.
219
220         * tree-ssa-forwprop.c (vars,
221         record_single_argument_cond_exprs,
222         substitute_single_use_vars): Remove.
223         (forward_propagate_into_cond_1, forward_propagate_into_cond):
224         New.
225         (tree_ssa_forward_propagate_single_use_vars): Call
226         forward_propagate_into_cond for each COND_EXPR.
227
228         * tree-inline.c (INSNS_PER_STMT): Remove.
229
230 2005-04-12  Richard Henderson  <rth@redhat.com>
231
232         * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Split ...
233         (ix86_expand_sse_fp_minmax): ... from ... 
234         (ix86_expand_fp_movcc): ... here.
235         (ix86_expand_sse_movcc): Rewrite from ix86_split_sse_movcc.
236         * config/i386/i386-protos.h: Update.
237         * config/i386/i386.md (UNSPEC_IEEE_MIN, UNSPEC_IEEE_MAX): New.
238         (sse_setccsf, sse_setccdf): Allow before reload.
239         (movsfcc_1_sse_min, movsfcc_1_sse_max, movsfcc_1_sse): Remove.
240         (movdfcc_1_sse_min, movdfcc_1_sse_max, movdfcc_1_sse): Remove.
241         (ieee_sminsf3, ieee_smaxsf3, ieee_smindf3, ieee_smaxdf3): New.
242         * config/i386/sse.md (andsf3, nandsf3, iorsf3, xorsf3): New.
243         (anddf3, nanddf3, iordf3, xordf3): New.
244
245 2005-04-12  Jeff Law  <law@redhat.com>
246
247         * Makefile.in (OBJS-common): Add tree-ssa-uncprop.o.
248         (tree-ssa-uncprop.o): Add dependencies.
249         * tree-cfg.c (remove_useless_stmts_bb, remove_useless_stmts): Remove.
250         * tree-flow.h (remove_useless_stmts): Remove prototype.
251         * tree-outof-ssa.c (rewrite_out_of_ssa): Remove call to
252         remove_useless_stmts.
253         * timevar.def (TV_TREE_SSA_UNCPROP): New timevar.
254         * tree-optimize.c (init_tree_optimization_passes): Add uncprop pass.
255         * tree-pass.h (pass_uncprop): Declare.
256         * tree-ssa-uncprop.c: New file.
257
258 2005-04-12  James E. Wilson  <wilson@specifixinc.com>
259
260         PR target/20670
261         * unwind-ia64.c (uw_intall_context): Add missing load of r27.
262
263 2005-04-12  Caroline Tice  <ctice@apple.com>
264
265         Temporary fix for partitioning problems.
266         * passes.c (rest_of_handle_final): Remove code that 
267         frees unlikely_text_section_name,
268         * varasm.c (assemble_start_function): Test for partitioning
269         flag before writing out section labels.
270         (assemble_end_function): Test for partitioning flag before
271         writing out section labels.
272         
273 2005-04-12  Steven Bosscher  <stevenb@suse.de>
274             Stuart Hastings <stuart@apple.com>
275             Jan Hubicka  <jh@suse.cz>
276
277         * Makefile.in: Add function.h to BASIC_BLOCK_H.  Remove all
278         references to gt-tree-cfg.h.
279         * basic-block.h (struct basic_block_def): Don't skip rbi
280         for garbage collection.
281         (struct reorder_block_def): Make GTY-able.
282         (struct control_flow_graph): New structure.
283         (n_edges, n_basic_blocks, last_basic_block, basic_block_info,
284         BASIC_BLOCK, EXIT_BLOCK_PTR, ENTRY_BLOCK_PTR): No longer vars,
285         but instead defines to the control_flow_graph for cfun.
286         (label_to_block_map): New define, points to the label map of
287         the control_flow_graph for cfun.
288         (n_edges_for_function, n_basic_blocks_for_function,
289         last_basic_block_for_function, basic_block_info_for_function,
290         EXIT_BLOCK_PTR_FOR_FUNCTION, ENTRY_BLOCK_PTR_FOR_FUNCTION,
291         basic_block_info_for_function, label_to_block_map_for_function):
292         Counterparts for the above, taking a struct function as an extra
293         argument.
294         (alloc_rbi_pool, free_rbi_pool): Remove prototypes.
295         * cfg.c: (n_edges, n_basic_blocks, last_basic_block,
296         basic_block_info, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Remove.
297         (alloc_rbi_pool, free_rbi_pool): Remove.
298         (initialize_bb_rbi): Use ggc_alloc_cleared instead of pool_alloc.
299         * cfglayout.c: (cfg_layout_initialize): Don't allocate the rbi pool
300         here...
301         (cfg_layout_finalize) ... and don't free it here.
302         * cfgrtl.c (cfg_layout_delete_block): Zero out rbi so it gets
303         garbage collected.
304         * flow.c (free_basic_block_vars): Set label_to_block_map and
305         n_edges to zero too.
306         * function.h (struct function): Add cfg field.
307         * function.c (allocate_struct_function): Allocate the cfg.
308         * tree-cfg.c (label_to_block_map): Remove.
309         (build_tree_cfg): Don't allocate the rbi pool here...
310         (delete_tree_cfg_annotations): ...and don't free it here.
311         Also don't nullify label_to_block_map for cfun.
312
313 2005-04-12  Caroline Tice  <ctice@apple.com>
314
315         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
316         Revert my patch from April 9.
317         (fix_edges_for_rarely_executed_code): Revert my patch from April 9.
318         (reorder_basic_blocks): Revert my patch from April 9.
319         (insert_section_boundary_note): Revert my patch from April 9.
320         * dbxout.c (dbxout_function_end): Revert my patch from April 9.
321         * dwarf2out.c (COLD_TEXT_SECTION_LABEL): Revert my patch from April 9.
322         (COLD_END_LABEL):  Revert my patch from April 9.
323         (cold_text_section_label):  Revert my patch from April 9.
324         (cold_end_label): Revert my patch from April 9.
325         (dwarf2out_switch_text_section): Revert my patch from April 9.
326         (output_aranges): Revert my patch from April 9.
327         (output_ranges):  Revert my patch from April 9.
328         (output_line_info): Revert my patch from April 9.
329         (add_location_or_const_value_attribute):  Revert my patch from April 9.
330         (dwarf2out_var_location): Revert my patch from April 9.
331         (dwarf2out_init):  Revert my patch from April 9.
332         (dwarf2out_finish): Revert my patch from April 9.
333         * function.h (struct function): Revert my patch from April 9.
334         * opts.c (decode_options): Revert my patch from April 9.
335         * output.h (unlikely_section_label, hot_section_label,
336         hot_section_end_label, cold_section_end_label, 
337         unlikely_text_section_name): Revert my patch from April 9.
338         * passes.c (rest_of_handle_final): Revert my patch from April 9.
339         * varasm.c (unlikely_section_label, hot_section_label,
340         hot_section_end_label, cold_section_end_label,
341         unlikely_text_section_name): Revert my patch from April 9.
342         (initialize_cold_section_name): Revert my patch from April 9.
343         (unlikely_text_section): Revert my patch from April 9.
344         (in_unlikely_text_section): Revert my patch from April 9.
345         (named_section): Revert my patch from April 9.
346         (function_section): Revert my patch from April 9.
347         (current_function_section): Revert my patch from April 9.
348         (assemble_start_function): Revert my patch from April 9.
349         (assemble_end_function): Revert my patch from April 9.
350         (default_section_type_flags_1): Revert my patch from April 9.
351         
352 2005-04-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
353
354         * config/sparc/sparc.h (APPLY_RESULT_SIZE): Set to 24 in 64-bit mode.
355         * config/sparc/sparc.md (untyped_call): Save the registers manually.
356
357         * config/sparc/sparc.c (legitimate_address_p): Use TARGET_ARCH32.
358
359 2005-04-12  Ulrich Weigand  <uweigand@de.ibm.com>
360
361         PR middle-end/20917
362         * config/s390/s390.md ("*set_tp"): Use SET in pattern.
363         ("set_tp_64", "set_tp_31"): Adapt expanded pattern.
364
365 2004-04-12  Richard Henderson  <rth@redhat.com>
366
367         * config/i386/i386.md (UNSPEC_FIX, UNSPEC_MOVA, UNSPEC_SHUFFLE,
368         UNSPEC_PSHUFLW, UNSPEC_PSHUFHW, UNSPEC_ADDSUB, UNSPEC_HADD,
369         UNSPEC_HSUB, UNSPEC_MOVSHDUP, UNSPEC_MOVSLDUP, UNSPEC_MOVDDUP): Remove.
370         (UNSPEC_*, UNSPECV_*): Renumber.
371
372 2005-04-12  Frank Ch. Eigler  <fche@redhat.com>
373
374         PR mudflap/19266
375         From Richard Henderson <rth@redhat.com>:
376         * tree-mudflap.c (mf_build_check_statement_for): Correct block
377         splitting logic.
378
379 2005-04-12  Dorit Naishlos  <dorit@il.ibm.com>
380
381         * tree-cfg.c (tree_verify_flow_info): Use LABEL_EXPR_LABEL.
382
383 2005-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
384
385         * config/bfin/bfin.c (bfin_library_id_string): Remove.
386         (bfin_library_id): New variable.
387         (bfin_expand_prologue): Use bfin_library_id and bfin_lib_id_given
388         instead of bfin_library_id_string.
389         (bfin_handle_option): New function.
390         (override_options): Remove most code to deal with shared library IDs,
391         just check they aren't used without -mid-shared-library.
392         (TARGET_HANDLE_OPTION): Define.
393         * config/bfin/bfin.h (TARGET_OPTIONS): Delete macro.
394         * config/bfin/bfin.opt (mshared-library-id=): New.
395
396 2005-04-12  Kazu Hirata  <kazu@cs.umass.edu>
397
398         * tree-vect-transform.c: Fix comment typos.
399
400 2005-04-12 Mostafa Hagog <mustafa@il.ibm.com>
401
402         * postreload-gcse.c (eliminate_partially_redundant_load): Don't
403         split critical edges when not possible/profitable.
404
405 2005-04-12  Richard Sandiford  <rsandifo@redhat.com>
406
407         * config/ns32k/ns32k.h (target_flags, MASK_32081, MASK_RTD)
408         (MASK_REGPARM, MASK_32532, MASK_32332, MASK_NO_SB, MASK_NO_BITFIELD)
409         (MASK_HIMEM, MASK_32381, MASK_MULT_ADD, MASK_SRC, MASK_IEEE_COMPARE)
410         (TARGET_32081, TARGET_32381, TARGET_MULT_ADD, TARGET_RTD)
411         (TARGET_REGPARM, TARGET_32532, TARGET_32332, TARGET_SB, TARGET_HIMEM)
412         (TARGET_BITFIELD, TARGET_IEEE_COMPARE, TARGET_SWITCHES): Delete.
413         (OVERRIDE_OPTIONS): Clear MASK_SB instead of setting MASK_NO_SB.
414         * config/ns32k/netbsd.h (TARGET_DEFAULT): Remove MASK_NO_SB and
415         MASK_NO_BITFIELD.
416         * config/ns32k/ns32k.c (ns32k_handle_option): New function.
417         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
418         * config/ns32k/ns32k.opt: New file.
419
420 2005-04-12  Richard Sandiford  <rsandifo@redhat.com>
421
422         * config.gcc (m68k-*-linux*): Add m68k/ieee.opt to $extra_options.
423         * config/m68k/m68k.h (target_flags, MASK_68020, TARGET_68020)
424         (MASK_68030, TARGET_68030, MASK_68040, TARGET_68040, MASK_68040_ONLY)
425         (TARGET_68040_ONLY, MASK_68060, TARGET_68060, MASK_5200, TARGET_5200)
426         (MASK_CFV3, TARGET_CFV3, MASK_CFV4, TARGET_CFV4, MASK_528x)
427         (TARGET_528x, MASK_CF_HWDIV, TARGET_CF_HWDIV, MASK_68881, TARGET_68881)
428         (MASK_BITFIELD, TARGET_BITFIELD, MASK_SHORT, TARGET_SHORT)
429         (MASK_ALIGN_INT, TARGET_ALIGN_INT, MASK_PCREL, TARGET_PCREL)
430         (MASK_NO_STRICT_ALIGNMENT, TARGET_STRICT_ALIGNMENT, MASK_RTD)
431         (TARGET_RTD, MASK_SEP_DATA, TARGET_SEP_DATA, MASK_ID_SHARED_LIBRARY)
432         (TARGET_ID_SHARED_LIBRARY, MASK_ALL_CF_BITS, TARGET_SWITCHES)
433         (TARGET_OPTIONS, SUBTARGET_SWITCHES, SUBTARGET_OPTIONS): Delete.
434         (MASK_COLDFIRE): Formatting fixes.
435         (TARGET_COLDFIRE): Turn into a boolean value for consistency.
436         * config/m68k/linux.h (SUBTARGET_SWITCHES): Delete.
437         * config/m68k/m68k.c (m68k_library_id_string): Initialize to
438         "_current_shared_library_a5_offset_".
439         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
440         (MASK_ALL_CPU_BITS): New macro.
441         (m68k_handle_option): New function.
442         (override_options): Remove handling of m68k_library_id_string.
443         * config/m68k/m68k.opt: New file.
444         * config/m68k/ieee.opt: New file.
445
446 2005-04-11  Mark Mitchell  <mark@codesourcery.com>
447
448         * target-def.h (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
449         (TARGET_CXX_DETERMINE_CLASS_VISIBILITY): New macro.
450         (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
451         (TARGET_CXX): Adjust accordingly.
452         * target.h (struct gcc_target): Remove epxort_class_data.  Add
453         determine_class_data_visibility and class_data_always_comdat.
454         * doc/tm.texi (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
455         (TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Document.
456         (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
457         * config/arm/arm.c (arm_cxx_export_class_data): Remove.
458         (arm_cxx_determine_class_data_visibility): New.
459         (arm_cxx_class_data_always_comdat): Likewise.
460         (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
461         (TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY): Define.
462         (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Likewise.
463         * config/arm/arm.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P): Define.
464         * config/arm/symbian.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P):
465         Define.
466
467 2005-04-11  Devang Patel  <dpatel@apple.com>
468
469         * tree-data-ref.c (build_classic_dist_vector,
470         compute_subscript_distance): Make externally visible.
471         * tree-data-ref.h (build_classic_dist_vector,
472         compute_subscript_distance): Same.
473         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
474         Check distance vector against vectorization factor.
475         (vect_analyze_loop): Determine vectorizaion factor before
476         analyzing data dependences.
477         * tree-vectorizer.c (loops_num): Make it externally visible and
478         rename ...
479         * tree-vectorizer.c (vect_loops_num): ... new name.
480         * tree-vectorizer.h  (vect_loops_num): New.
481
482 2005-04-11  Devang Patel  <dpatel@apple.com>
483
484         * tree-vect-analyze.c (vect_analyze_operations): Check
485         vectorizable codition.
486         * tree-vect-transform.c (vect_is_simple_cond): New function.
487         (vectorizable_condition): New function.
488         (vect_transform_stmt): Handle condition_vec_info_type.
489         * tree-vectorizer.h (enum stmt_vec_info_type): Add
490         condition_vec_info_type.
491         (vectorizable_condition): New.
492         
493 2005-04-11  Geoffrey Keating  <geoffk@apple.com>
494
495         * config/i386/i386.h (TARGET_FPMATH_DEFAULT): New.
496         * config/i386/darwin.h (TARGET_FPMATH_DEFAULT): New.
497         * config/i386/i386.c (override_options): Use TARGET_FPMATH_DEFAULT.
498
499         * config/i386/darwin.h (ASM_SPEC): Use -arch i386 not -arch i686.
500         (SUBTARGET_EXTRA_SPECS): Always 'i386'.
501
502         * dwarf2out.c (output_line_info): Don't try to dereference
503         a NULL current_function_decl.
504
505         * config/t-slibgcc-darwin: Don't put shared libraries in
506         directories other than $(slibdir).
507         * config/rs6000/darwin.h: Find -m64 libgcc under the name the
508         OS uses for it.
509
510 2005-04-11  Diego Novillo  <dnovillo@redhat.com>
511
512         PR tree-optimization/20933
513         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Move
514         logic to reject aliases between read-only and writable
515         variables ...
516         (may_alias_p): ... here.
517         (get_tmt_for): Do not associate read-only tags to pointers
518         whose pointed-to type is not read-only.
519         * tree-ssa.c (verify_ssa): Check that memory stores have at
520         least one V_MAY_DEF or V_MUST_DEF.
521
522 2005-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
523
524         PR/17092
525         * configure.ac (gcc_UNLOCKED_FUNCS): New.
526         (AC_CHECK_FUNCS, AC_CHECK_DECLS): Check for gcc_UNLOCKED_FUNCS.
527         * system.h (putchar, getc, getchar, clearerr, feof, fileno,
528         fflush, fgetc, fgets, ferror, fread): Redefine to the associated
529         _unlocked function.
530         (fwrite_unlocked): Fix prototype.
531         
532         * configure, config.in: Regenerate.
533
534 2005-04-11  David Edelsohn  <edelsohn@gnu.org>
535
536         * tree-ssa-loop-im.c: Include real.h.
537         (determine_invariantness_stmt): If real division divisor is
538         invariant and flag_unsafe_math_optimizations enabled, generate
539         invariant reciprocal for hoisting.
540         * Makefile.in (tree-ssa-loop-im.o): Add real.h dependency.
541
542 2005-04-11  Daniel Berlin  <dberlin@dberlin.org>
543
544         Fix PR tree-optimization/20926
545         
546         * tree-ssa-alias.c (add_type_alias): Handle subvars.
547         
548 2005-04-11  Devang Patel  <dpatel@apple.com>
549
550         * config/rs6000.c (rs6000_emit_vector_select): Fix vector select
551         operand ordering.
552         
553 2005-04-11  Andrew Pinski  <pinskia@physics.uc.edu>
554
555         * fold-const.c (fold_binary_op_with_conditional_arg):
556         use fold_buildN instead of "fold (buildN" in some
557         non obvious places.
558         (fold_unary): Likewise.
559         (fold_binary): Likewise.
560
561 2005-04-11  Daniel Berlin  <dberlin@dberlin.org>
562         
563         Fix PR tree-optimization/20612
564         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Fix increment
565         handling
566         (perfect_nestify): preheaderbb is *not* part of loop of the
567         old destination.
568
569 2005-04-11  Andrew Pinski  <pinskia@physics.uc.edu>
570
571         * tree-ssa-alias.c (may_alias_p): If the variable
572         is a global variable and the pointer is parameter
573         and -fargument-noalias-global is used, then
574         the pointer cannot alias the variable.
575
576 2005-04-11  James A. Morrison  <phython@gcc.gnu.org>
577
578         * config/sparc/sparc.c: Use gcc_assert and gcc_unreachable.
579         * config/sparc/sparc.h: Likewise.
580         * config/sparc/sparc.md: Likewise.
581
582 2005-04-11  Kazu Hirata  <kazu@cs.umass.edu>
583
584         * tree-vrp.c (maybe_add_assert_expr): Move a comment.
585
586         * tree-vrp.c: Fix a comment typo.
587
588 2005-04-11  Diego Novillo  <dnovillo@redhat.com>
589
590         PR tree-optimization/20920
591         * tree-pretty-print.c (dump_generic_node): Show '(ab)' if an
592         SSA_NAME flows through an abnormal edge.
593         * tree-vrp.c (infer_value_range): Ignore SSA names that flow
594         through abnormal edges.
595         (maybe_add_assert_expr): Likewise.
596
597 2005-04-11  Richard Sandiford  <rsandifo@redhat.com>
598
599         * config/s390/s390.h (s390_tune_string, s390_arch_string)
600         (s390_warn_framesize_string, s390_warn_dynamicstack_string)
601         (s390_stack_size_string, s390_stack_guard_string, target_flags)
602         (MASK_HARD_FLOAT, MASK_SMALL_EXEC, MASK_DEBUG_ARG, MASK_64BIT)
603         (MASK_ZARCH, MASK_MVCLE, MASK_TPF_PROFILING, MASK_NO_FUSED_MADD)
604         (MASK_BACKCHAIN, MASK_PACKED_STACK, TARGET_HARD_FLOAT)
605         (TARGET_SOFT_FLOAT, TARGET_SMALL_EXEC, TARGET_DEBUG_ARG)
606         (TARGET_64BIT, TARGET_ZARCH, TARGET_MVCLE, TARGET_TPF_PROFILING)
607         (TARGET_NO_FUSED_MADD, TARGET_FUSED_MADD, TARGET_BACKCHAIN)
608         (TARGET_PACKED_STACK, TARGET_SWITCHES, TARGET_OPTIONS): Delete.
609         * config/s390/s390.c (TARGET_DEFAULT_TARGET_FLAGS): Override default.
610         (TARGET_HANDLE_OPTION): Likewise.
611         (s390_tune): Initialize to PROCESSOR_max.
612         (s390_arch_string): Make static.
613         (s390_tune_string, s390_warn_framesize_string): Delete.
614         (s390_warn_dynamicstack_string, s390_stack_size_string): Delete.
615         (s390_stack_guard_string, s390_warn_dynamicstack_p): Delete.
616         (s390_handle_arch_option, s390_handle_option): New functions.
617         (override_options): Remove parsing of option strings.
618         * config/s390/s390.opt: New file.
619
620 2005-04-11  Paolo Bonzini  <bonzini@gnu.org>
621
622         * tree-complex.c (expand_vector_operations): Call
623         update_stmt_if_modified.
624
625 2005-04-11  Paolo Bonzini  <bonzini@gnu.org>
626
627         * tree-vect-analyze (vect_determine_vectorization_factor):
628         Do not use GET_MODE_NUNITS.
629         * tree-vect-transform.c (vect_get_vec_def_for_operand,
630         (vectorizable_load, vect_transform_loop): Likewise.
631
632 2005-04-11  Uros Bizjak  <uros@kss-loka.si>
633
634         * builtins.def (BUILT_IN_LCEIL, BUILT_IN_LCEILF, BUILT_IN_LCEILL)
635         (BUILT_IN_LLCEIL, BUILT_IN_LLCEILF, BUILT_IN_LLCEILL): New.
636         * optabs.h (enum optab_index): Add new OTI_lceil.
637         (lceil_optab): Define corresponding macro.
638         * optabs.c (init_optabs): Initialize lceil_optab.
639         * genopinit.c (optabs): Implement lceil_optab using lceilsi2
640         and lceildi2 patterns.
641         * builtins.c (expand_builtin_int_roundingfn): Handle
642         BUILT_IN_LCEIL{,F,L} and BUILT_IN_LLCEIL{,F,L}.
643         (fold_builtin_int_roundingfn): Handle BUILT_IN_LCEIL{,F,L} and
644         BUILT_IN_LLCEIL{,F,L}.
645         (fold_builtin_1): Fold BUILT_IN_LCEIL{,F,L} and
646         BUILT_IN_LLCEIL{,F,L} using fold_builtin_int_roundingfn.
647         (mathfn_built_in): Handle BUILT_IN LCEIL and BUILT_IN_LLCEIL.
648         (expand_builtin): Expand BUILT_IN_LCEIL{,F,L} and
649         BUILT_IN_LLCEIL{,F,L} using expand_builtin_int_roundingfn.
650         * convert.c (convert_to_integer): Convert (long int)ceil{,f,l},
651         into lceil built-in function and (long long int)ceil{,f,l} into
652         llceil built-in function.
653         * fold-const.c (tree_expr_nonnegative_p): Add BUILT_IN_LCEIL and
654         BUILT_IN_LLCEIL.
655
656 2005-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
657
658         * pa/quadlib.c (_U_Qfneg): Toggle sign bit instead of subtracting from
659         zero.
660
661 2005-04-10  Kazu Hirata  <kazu@cs.umass.edu>
662
663         * config/arm/arm.c: Fix a comment typo.
664         * doc/tree-ssa.texi: Fix a typo.
665
666 2005-04-10  Steven Bosscher  <stevenb@suse.de>
667
668         * cselib.c (clear_table): Rename to cselib_clear_table.
669         * cselib.h (cselib_clear_table): Add prototype.
670         * gcse.c (gcse_main): Make 'f' argument unused.
671         (alloc_gcse_mem): Do not walk the insn chain, walk the contents
672         of each basic block instead.
673         (compute_sets, compute_hash_table_work): Likewise.
674         (constprop_register): Change int 'alter_jumps' argument to bool.
675         (do_local_cprop): Likewise.
676         (local_cprop_pass): Likewise.  Also walk basic blocks instead of
677         the insn chain.  Explicitly clear the cselib tables after finishing
678         one basic block.  Make sure there are no unterminated libcall blocks.
679         Update compute_sets call.
680         (cprop): Walk basic blocks instead of the insn chain.
681         (one_cprop_pass, compute_ld_motion_mems, compute_store_table):
682         Likewise.
683         (bypass_jumps): Update alloc_gcse_mem, compute_sets, and
684         one_cprop_pass calls.
685
686 2005-04-10  Richard Sandiford  <rsandifo@redhat.com>
687
688         * combine.c (combine_simplify_rtx): Remove a transformation that
689         relies on an invalid assumption about rtl sign-extension semantics.
690
691 2005-04-10  Richard Sandiford  <rsandifo@redhat.com>
692
693         * value-prof.c (tree_divmod_fixed_value_transform): Fix arguments
694         to build_int_cst_wide.
695
696 2005-04-09  Alexandre Oliva  <aoliva@redhat.com>
697
698         PR target/20126
699         * loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
700         set the original address pseudo to the correct value before the
701         original insn, if possible, and leave the insn alone, otherwise
702         create a new pseudo, set it and replace it in the insn.
703         * recog.c (validate_change_maybe_volatile): New.
704         * recog.h (validate_change_maybe_volatile): Declare.
705
706 2005-04-09  Caroline Tice  <ctice@apple.com>
707
708         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
709         Remove targetm.have_named_sections test.
710         (fix_edges_for_rarely_executed_code): Likewise.
711         (insert_section_boundary_note): Likewise.
712         (reorder_basic_blocks): Check partitioning flag before calling
713         verify_hot_cold_block_grouping.
714         * dbxout.c (dbxout_function_end): Get hot/cold section labels from
715         the function struct rather than global variables.
716         * dwarf2out.c (COLD_TEXT_SECTION_LABEL): New macro.
717         (COLD_END_LABEL): Likewise
718         (cold_text_section_label): New static global variable.
719         (cold_end_label): Likewise.
720         (dwarf2out_switch_text_section): Get hot/cold section labels from
721         the function struct rather than global variables.
722         (output_aranges): Use cold_text_section_label and cold_end_label;
723         check partitioning flag before putting out delta.
724         (output_ranges): Remove incorrect code attempting to use
725         hot/cold labels.
726         (output_line_info): Get cold section label from function struct.
727         (add_location_or_const_value_attribute): Likewise.
728         (get_subprogram_die): Get hot/cold section labels from function struct.
729         (dwarf2out_var_location): Likewise.
730         (dwarf2out_init): Generate cold_text_section_label and cold_end_label;
731         write out cold_text_section_label if partition flag is set.
732         (dwarf2out_finish): Write out cold_end_label if partition flag is set;
733         * function.h (struct function): Add new fields to point to hot/cold
734         section labels: hot_section_label, cold_section_label,
735         hot_section_end_label and cold_section_end_label; also add new field
736         for cold text section name, unlikely_text_section_name.
737         * opts.c (decode_options): Turn off partitioning flag if
738         !targetm.have_named_sections.
739         * output.h (hot_section_label): Remove.
740         (hot_section_end_label): Remove.
741         (cold_section_end_label): Remove.
742         (unlikely_section_label): Remove.
743         (unlikely_text_section_name): Remove.
744         * passes.c (rest_of_handle_final):  Remove code that frees
745         unlikely_text_section_name.
746         * varasm.c (unlikely_section_label): Remove.
747         (hot_section_label): Remove.
748         (hot_section_end_label): Remove.
749         (cold_section_end_label): Remove.
750         (unlikely_text_section_name):  Remove.
751         (initialize_cold_section_name): Modify to call
752         targetm.strip_name_encoding; to store cold section name in current
753         function struct, if it exists; and to only use the decl_section_name
754         if flag_named_sections is true.
755         (unlikely_text_section): Modify to get section name out of current
756         function struct, if there is one; otherwise build it from
757         UNLIKELY_EXECUTED_TEXT_SECTION_NAME.
758         (in_unlikely_text_section): Likewise.
759         (named_section): Modify to get/put cold section name in current function
760         struct, if there is one.
761         (function_section):  Change 'bool unlikely' to 'int reloc'; check
762         targetm.have_named_sections before calling named_section.
763         (current_function_section): Likewise.
764         (assemble_start_function): Modify to get/put unlikely_text_section_name
765         in current function struct; modify to get hot/cold section labels
766         from function struct; initialize labels using 
767         ASM_GENERATE_INTERNAL_LABEL;
768         test partitioning flag before writing out hot section label.
769         (assemble_end_function): Test partitioning flag before writing out
770         hot/cold section labels.
771         (default_section_type_flags_1):  Modify to use array instead of
772          char* for unlikely_text_section_name; set flags correctly for
773          cold text section if there is not a current function decl.
774
775 2005-04-09  Jakub Jelinek  <jakub@redhat.com>
776
777         * tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD
778         and TI_VA_LIST_FPR_COUNTER_FIELD.
779         (va_list_gpr_counter_field, va_list_fpr_counter_field): Define.
780         * tree-pass.h (pass_stdarg): Add.
781         * tree-optimize.c (init_tree_optimization_passes): Add pass_stdarg.
782         * tree-stdarg.c: New file.
783         * tree-stdarg.h: New file.
784         * Makefile.in (OBJS-common): Add tree-stdarg.o.
785         (tree-stdarg.o): Add dependencies.
786         * function.h (struct function): Add va_list_gpr_size and
787         va_list_fpr_size fields.
788         * function.c (allocate_struct_function): Initialize them.
789         * target.h (struct gcc_target): Add stdarg_optimize_hook.
790         * target-def.h (TARGET_STDARG_OPTIMIZE_HOOK): Define.
791         (TARGET_INITIALIZER): Add it.
792
793         * config/i386/i386.c (ix86_build_builtin_va_list): Initialize
794         va_list_{g,f}pr_counter_field.
795         (ix86_setup_incoming_varargs): Don't do anything if reg_save
796         area will not be used.  Only save registers that tree-stdarg.c
797         detected they need saving.
798         (ix86_va_start): Don't set up fields that won't be used.
799
800         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize
801         va_list_{g,f}pr_counter_field.
802         (setup_incoming_varargs): Don't do anything if reg_save
803         area will not be used.  Only save registers that tree-stdarg.c
804         detected they need saving.
805         (rs6000_va_start): Don't set up fields that won't be used.
806
807         * config/alpha/alpha.c: Include tree-flow.h and tree-stdarg.h.
808         (alpha_build_builtin_va_list): Initialize va_list_gpr_counter_field.
809         (va_list_skip_additions, alpha_stdarg_optimize_hook): New functions.
810         (TARGET_STDARG_OPTIMIZE_HOOK): Define.
811
812 2005-04-09  Jakub Jelinek  <jakub@redhat.com>
813
814         PR target/20795
815         * config/i386/i386.c (construct_container): Pass empty aligned
816         struct, union or class in memory.
817
818 2005-04-09  Kazu Hirata  <kazu@cs.umass.edu>
819
820         * dominance.c, gthr-win32.h, reg-stack.c, tree-ssa-copy.c,
821         tree-ssa-operands.c, tree-ssa.c, tree-vrp.c, varasm.c,
822         config/alpha/alpha.c, config/arm/arm.c, config/m32r/m32r.h,
823         config/rs6000/predicates.md: Fix comment typos.
824
825         * sched-int.h (haifa_insn_data): Remove blockage and units.
826         (INSN_UNIT, INSN_BLOCKAGE, UNIT_BITS, BLOCKAGE_MASK,
827         ENCODE_BLOCKAGE, UNIT_BLOCKED, BLOCKAGE_RANGE,
828         MIN_BLOCKAGE_COST, MAX_BLOCKAGE_COST): Remove.
829
830 2005-04-09  Jan Hubicka  <jh@suse.cz>
831             Steven Bosscher  <stevenb@suse.de>
832
833         * cfglayout.c (copy_bbs): Rename n_edges to num_edges.
834         * cfgloop.c (get_loop_exit_edges): Likewise.
835         * cfgloopmanip.c (fix_irreducible_loops): Likewise.
836         (unloop): Likewise.
837         * loop-unroll.c (analyze_insns_in_loop): Likewise.
838         * tree-cfg.c (dump_cfg_status): Likewise.
839
840 2005-04-09  David Edelsohn  <edelsohn@gnu.org>
841
842         * config/rs6000/predicates.md (altivec_register_operand): Remove
843         redundant match_code test.
844         (gpc_reg_operand): Same.
845         (cc_reg_operand): Same.
846         (cc_reg_not_cr0_operand): Same.
847
848 2005-04-09  Jan Hubicka  <jh@suse.cz>
849
850         Forgotten hunk from my last merge patch:
851         * final.c (output_addr_const): Do not call mark_referenced.
852
853 2005-04-09  Andrew MacLeod  <amacleod@redhat.com>
854
855         * doc/tree-ssa.texi: Add immediate use documentation.
856
857 2005-04-09  Richard Earnshaw <richard.earnshaw@arm.com>
858
859         * arm.c (FL_WBUF): Define.
860         (arm_tune_strongarm): Renamed from arm_is_strong.  All uses changed.
861         (arm_is_6_or_7): Delete.
862         (arm_tune_wbuf): New.
863         (arm_override_options): Set arm_tune_wbuf.
864         * arm.h (arm_tune_strongarm): Renamed from arm_is_strong.
865         (arm_is_6_or_7): Delete declaration.
866         (arm_tune_wbuf): New declartion.
867         * arm.md (is_strongarm): Derive from arm_tune_strongarm.
868         (model_wbuf): Derive from arm_tune_wbuf.
869         * arm-cores.def (arm600, arm610, arm620, arm700, arm700i, arm710)
870         (arm720, arm710c, arm7100, arm7500, arm7500fe, arm710t, arm720t)
871         (arm740t): Mark CPUs as having a write buffer.
872
873 2005-04-09  Uros Bizjak  <uros@kss-loka.si>
874
875         * config/i386/i386.md (*fp_jcc_7_387): Use 'const0_operand' instead
876         of 'const_double_operand' in operand 2 constraints.  Update enable
877         condition.
878
879 2005-04-09  Uros Bizjak  <uros@kss-loka.si>
880
881         * builtins.def (BUILT_IN_LFLOOR, BUILT_IN_LFLOORF, BUILT_IN_LFLOORL)
882         (BUILT_IN_LLFLOOR, BUILT_IN_LLFLOORF, BUILT_IN_LLFLOORL): New.
883         * optabs.h (enum optab_index): Add new OTI_lfloor.
884         (lfloor_optab): Define corresponding macro.
885         * optabs.c (init_optabs): Initialize lfloor_optab.
886         * genopinit.c (optabs): Implement lfloor_optab using lfloorsi2
887         and lfloordi2 patterns.
888         * builtins.c (expand_builtin_int_roundingfn): New prototype.
889         (expand_builtin_int_roundingfn): New function.
890         (fold_builtin_int_roundingfn): New prototype.
891         (fold_builtin_int_roundingfn): New function, renamed from
892         fold_builtin_lround.
893         Handle BUILT_IN_LROUND{,F,L}, BUILT_IN_LLROUND{,F,L} and
894         BUILT_IN_LFLOOR{,F,L}, BUILT_IN_LLFLOOR{,F,L}.
895         (fold_builtin_1): Fold BUILT_IN_LFLOOR{,F,L} and
896         BUILT_IN_LLFLOOR{,F,L} using fold_builtin_int_roundingfn.
897         (mathfn_built_in): Handle BUILT_IN LFLOOR and BUILT_IN_LLFLOOR.
898         (expand_builtin): Expand BUILT_IN_LFLOOR{,F,L} and
899         BUILT_IN_LLFLOOR{,F,L} using expand_builtin_int_roundingfn.
900         * convert.c (convert_to_integer): Convert (long int)floor{,f,l},
901         into lfloor built-in function and (long long int)floor{,f,l} into
902         llfloor built-in function.
903         * fold-const.c (tree_expr_nonnegative_p): Add BUILT_IN_LFLOOR and
904         BUILT_IN_LLFLOOR.
905
906 2005-04-08  Ian Lance Taylor  <ian@airs.com>
907
908         * c-common.def: Move FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
909         CONTINUE_STMT, and SWITCH_STMT to cp/cp-tree.def.
910         * c-common.h (WHILE_COND, WHILE_BODY): Move to cp/cp-tree.h.
911         (DO_COND, DO_BODY): Likewise.
912         (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Likewise.
913         (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Likewise.
914         (c_common_stmt_codes): Remove FOR_STMT, WHILE_STMT, DO_STMT,
915         BREAK_STMT, CONTINUE_STMT, and SWITCH_STMT.
916         (build_continue_stmt, build_break_stmt): Don't declare.
917         (c_do_switch_warnings): Update declaration.
918         * c-gimplify.c (enum bc_t): Remove.
919         (struct c_gimplify_ctx, ctxp): Remove.
920         (push_context, pop_context): Remove static functions.
921         (c_genericize): Don't call push_context or pop_context.
922         (begin_bc_block, finish_bc_block): Remove static functions.
923         (build_bc_goto): Likewise.
924         (gimplify_c_loop): Likewise.
925         (gimplify_for_stmt, gimplify_while_stmt): Likewise.
926         (gimplify_do_stmt, gimplify_switch_stmt): Likewise.
927         (c_gimplify_expr): Remove handling of FOR_STMT, WHILE_STMT,
928         DO_STMT, SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
929         * c-common.c (c_do_switch_warnings): Rename from
930         c_do_switch_warnings_1.
931         (c_do_switch_warnings) [old version]: Remove.
932         (c_do_switch_expr_warnings): Remove.
933         * c-typeck.c (c_finish_case): Call new c_do_switch_warnings
934         function instead of c_do_switch_expr_warnings.
935         * c-dump.c (c_dump_tree): Remove handling of BREAK_STMT,
936         CONTINUE_STMT, DO_STMT, FOR_STMT, SWITCH_STMT, and WHILE_STMT.
937         * c-pretty-print.c (pp_c_statement): Likewise.
938         * c-semantics.c (build_break_stmt, build_continue_stmt): Remove.
939
940 2005-04-08  Devang Patel  <dpatel@apple.com>
941
942         * tree-if-conv.c (find_phi_replacement_condition): New parameter, loop.
943         While selecting replacement condition pay attention to loop header.
944
945 2005-04-08  Diego Novillo  <dnovillo@redhat.com>
946
947         Merge from tree-cleanup-branch: VRP, store CCP, store
948             copy-prop, incremental SSA updating of FUD chains and
949             newly exposed symbols.
950
951         * Makefile.in (tree-ssa-copy.o): Depend on tree-ssa-propagate.h.
952         (OBJS-common): Add tree-vrp.o.
953         (tree-vrp.o): New rule.
954         * basic-block.h (nearest_common_dominator_for_set): Declare.
955         * common.opt (ftree-store-ccp): New flag.
956         (ftree-copy-prop): New flag.
957         (ftree-vrp): New flag.
958         (ftree-store-copy-prop): New flag.
959         * dominance.c (nearest_common_dominator_for_set): New.
960         * domwalk.c (walk_dominator_tree): Only traverse
961         statements in blocks marked in walk_data->interesting_blocks.
962         * domwalk.h (struct dom_walk_data): Add field interesting_blocks.
963         * fold-const.c (fold): Handle ASSERT_EXPR.
964         * opts.c (decode_options): Set flag_tree_copy_prop at -O1.
965         Set flag_tree_store_ccp, flag_tree_store_copy_prop and
966         flag_tree_vrp at -O2.
967         * timevar.def (TV_TREE_VRP): Define.
968         (TV_TREE_COPY_PROP): Define.
969         (TV_TREE_STORE_COPY_PROP): Define.
970         (TV_TREE_SSA_INCREMENTAL): Define.
971         (TV_TREE_STORE_CCP): Define.
972         * tree-cfg.c (tree_can_merge_blocks_p): Remove reference
973         to kill_redundant_phi_nodes from comment.
974         (verify_expr): Handle ASSERT_EXPR.
975         * tree-dfa.c (mark_new_vars_to_rename): Remove second
976         argument.  Update all users.
977         (mark_call_clobbered_vars_to_rename): Remove.  Update all
978         users.
979         * tree-flow-inline.h (unmodifiable_var_p): New.
980         * tree-flow.h (enum value_range_type): Declare.
981         (struct value_range_def): Declare.
982         (value_range): Declare.
983         (remove_all_phi_nodes_for): Remove.  Update all users.
984         (find_phi_node_for): Declare.
985         (add_type_alias): Declare.
986         (count_uses_and_derefs): Declare.
987         (kill_redundant_phi_nodes): Remove.
988         (rewrite_into_ssa): Remove.
989         (rewrite_def_def_chains): Remove.
990         (update_ssa, register_new_name_mapping, create_new_def_for,
991         need_ssa_update_p, name_registered_for_update_p,
992         release_ssa_name_after_update_ssa, dump_repl_tbl,
993         debug_repl_tbl, dump_names_replaced_by,
994         debug_names_replaced_by, mark_sym_for_renaming,
995         mark_set_for_renaming, get_current_def, set_current_def,
996         get_value_range, dump_value_range, debug_value_range,
997         dump_all_value_ranges, debug_all_value_ranges,
998         expr_computes_nonzero, loop_depth_of_name,
999         unmodifiable_var_p): Declare.
1000         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle
1001         ASSERT_EXPR.
1002         * tree-into-ssa.c (block_defs_stack): Update comment.
1003         (old_ssa_names, new_ssa_names, old_virtual_ssa_names,
1004         syms_to_rename, names_to_release, repl_tbl,
1005         need_to_initialize_update_ssa_p, need_to_update_vops_p,
1006         need_to_replace_names_p): New locals.
1007         (NAME_SETS_GROWTH_FACTOR): Define.
1008         (struct repl_map_d): Declare.
1009         (struct mark_def_sites_global_data): Add field
1010         interesting_blocks.
1011         (enum rewrite_mode): Declare.
1012         (REGISTER_DEFS_IN_THIS_STMT): Define.
1013         (compute_global_livein): Use last_basic_block instead of
1014         n_basic_blocks.
1015         (set_def_block): Remove last argument.  Update all callers.
1016         (prepare_use_operand_for_rename): Remove.  Update all callers.
1017         (prepare_def_operand_for_rename): Remove.  Update all callers.
1018         (symbol_marked_for_renaming): New.
1019         (is_old_name): New.
1020         (is_new_name): New.
1021         (repl_map_hash): New.
1022         (repl_map_eq): New.
1023         (repl_map_free): New.
1024         (names_replaced_by): New.
1025         (add_to_repl_tbl): New.
1026         (add_new_name_mapping): New.
1027         (mark_def_sites): Assume that all the operands in the
1028         statement are in normal form.
1029         (find_idf): Assert that the block in the stack is valid.
1030         (get_default_def_for): New.
1031         (insert_phi_nodes_for): Add new argument 'update_p'.
1032         Add documentation.
1033         If update_p is true, add a new mapping between the LHS of
1034         each new PHI and the name that it replaces.
1035         (insert_phi_nodes_1): Only call find_idf if needed.
1036         (get_reaching_def): Call get_default_def_for.
1037         (rewrite_operand): Remove.
1038         (rewrite_stmt): Do nothing if REGISTER_DEFS_IN_THIS_STMT
1039         and REWRITE_THIS_STMT are false.
1040         Assume that all the operands in the statement are in
1041         normal form.
1042         (rewrite_add_phi_arguments): Don't use PHI_REWRITTEN.
1043         (rewrite_virtual_phi_arguments): Remove.
1044         (invalidate_name_tags): Remove.
1045         (register_new_update_single, register_new_update_set,
1046         rewrite_update_init_block, replace_use,
1047         rewrite_update_fini_block, rewrite_update_stmt,
1048         rewrite_update_phi_arguments): New.
1049         rewrite_blocks): Remove argument 'fix_virtual_phis'.
1050         Add arguments 'entry', 'what' and 'blocks'.
1051         Initialize the dominator walker according to 'what' and
1052         'blocks'.
1053         Start the dominator walk at 'entry'.
1054         (mark_def_site_blocks): Add argument 'interesting_blocks'.
1055         Use it to configure the dominator walker.
1056         (rewrite_into_ssa): Remove argument 'all'.
1057         Make internal.
1058         (rewrite_all_into_ssa): Remove.
1059         (rewrite_def_def_chains): Remove.
1060         (mark_def_interesting, mark_use_interesting,
1061         prepare_phi_args_for_update, prepare_block_for_update,
1062         prepare_def_site_for, prepare_def_sites,
1063         dump_names_replaced_by, debug_names_replaced_by,
1064         dump_repl_tbl, debug_repl_tbl, init_update_ssa,
1065         delete_update_ssa, create_new_def_for,
1066         register_new_name_mapping, mark_sym_for_renaming,
1067         mark_set_for_renaming, need_ssa_update_p,
1068         name_registered_for_update_p, ssa_names_to_replace,
1069         release_ssa_name_after_update_ssa,
1070         insert_updated_phi_nodes_for, update_ssa): New.
1071         * tree-loop-linear.c (linear_transform_loops): Call
1072         update_ssa instead of rewrite_into_ssa.
1073         * tree-optimize.c (vars_to_rename): Remove.
1074         Update all users.
1075         (init_tree_optimization_passes): Replace
1076         pass_redundant_phi with pass_copy_prop.
1077         Add pass_vrp.
1078         Replace pass_ccp with pass_store_ccp.
1079         Add pass_store_copy_prop after pass_store_ccp.
1080         (execute_todo): If the TODO_ flags don't include updating
1081         the SSA form, assert that it does not need to be updated.
1082         Call update_ssa instead of rewrite_into_ssa and
1083         rewrite_def_def_chains.
1084         If TODO_verify_loops is set, call verify_loop_closed_ssa.
1085         (tree_rest_of_compilation):
1086         * tree-pass.h (TODO_dump_func, TODO_ggc_collect,
1087         TODO_verify_ssa, TODO_verify_flow, TODO_verify_stmts,
1088         TODO_cleanup_cfg): Renumber.
1089         (TODO_verify_loops, TODO_update_ssa,
1090         TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
1091         TODO_update_ssa_only_virtuals): Define.
1092         (pass_copy_prop, pass_store_ccp, pass_store_copy_prop, pass_vrp):
1093         Declare.
1094         * tree-phinodes.c (make_phi_node): Update documentation.
1095         (remove_all_phi_nodes_for): Remove.
1096         (find_phi_node_for): New.
1097         * tree-pretty-print.c (dump_generic_node): Handle ASSERT_EXPR.
1098         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Likewise.
1099         (interpret_rhs_modify_expr): Likewise.
1100         * tree-sra.c (decide_instantiations): Mark all symbols in
1101         SRA_CANDIDATES for renaming.
1102         (mark_all_v_defs_1): Rename from mark_all_v_defs.
1103         (mark_all_v_defs): New function.  Update all users to call it 
1104         with the whole list of scalarized statements, not just the
1105         first one.
1106         * tree-ssa-alias.c (count_ptr_derefs): Make extern.
1107         (compute_flow_insensitive_aliasing): If the tag is
1108         unmodifiable and the variable isn't or vice-versa, don't
1109         make them alias of each other.
1110         (setup_pointers_and_addressables): If the type tag for
1111         VAR is about to change, mark the old one for renaming.
1112         (add_type_alias): New.
1113         * tree-ssa-ccp.c: Document SSA-CCP and STORE-CCP.
1114         (ccp_lattice_t): Rename from latticevalue.
1115         (value): Remove.  Update all users.
1116         (const_val): New local variable.
1117         (do_store_ccp): New local variable.
1118         (dump_lattice_value): Handle UNINITIALIZED.
1119         (debug_lattice_value): New.
1120         (get_default_value): Re-write.
1121         (set_lattice_value): Re-write.
1122         (def_to_varying): Remove.  Update all users.
1123         (likely_value): Return VARYING for statements that make
1124         stores when STORE_CCP is false.
1125         Return VARYING for any statement other than MODIFY_EXPR,
1126         COND_EXPR and SWITCH_EXPR.
1127         (ccp_initialize): Re-write.
1128         (replace_uses_in, replace_vuse_in, substitute_and_fold):
1129         Move to tree-ssa-propagate.c.
1130         (ccp_lattice_meet): Handle memory stores when
1131         DO_STORE_CCP is true.
1132         (ccp_visit_phi_node): Likewise.
1133         (ccp_fold): Likewise.
1134         (evaluate_stmt): Likewise.
1135         (visit_assignment): Likewise.
1136         (ccp_visit_stmt): Likewise.
1137         (execute_ssa_ccp): Add argument 'store_ccp'.  Copy it
1138         into DO_STORE_CCP.
1139         (do_ssa_ccp): New.
1140         (pass_ccp): Use it.
1141         (do_ssa_store_ccp): New.
1142         (gate_store_ccp): New.
1143         (pass_store_ccp): Declare.
1144         * tree-ssa-copy.c: Include tree-ssa-propagate.h.
1145         (may_propagate_copy): Reformat.
1146         Don't abort if ORIG is a virtual and DEST isn't.
1147         If NEW does not have alias information but DEST does,
1148         copy it.
1149         (copy_of, cached_last_copy_of, do_store_copy_prop, enum
1150         copy_prop_kind, which_copy_prop): Declare.
1151         (stmt_may_generate_copy, get_copy_of_val,
1152         get_last_copy_of, set_copy_of_val, dump_copy_of,
1153         copy_prop_visit_assignment, copy_prop_visit_cond_stmt,
1154         copy_prop_visit_stmt, copy_prop_visit_phi_node,
1155         init_copy_prop, fini_copy_prop, execute_copy_prop,
1156         gate_copy_prop, do_copy_prop, gate_store_copy_prop,
1157         store_copy_prop): New.
1158         (pass_copy_prop, pass_store_copy_prop): Declare.
1159         * tree-ssa-dom.c (struct opt_stats_d): Add fields
1160         'num_const_prop' and 'num_copy_prop'.
1161         (cprop_operand): Update them.
1162         (dump_dominator_optimization_stats): Dump them.
1163         (tree_ssa_dominator_optimize): Call update_ssa instead of
1164         rewrite_into_ssa.
1165         (loop_depth_of_name): Declare extern.
1166         (simplify_cond_and_lookup_avail_expr): Guard against NULL
1167         values for LOW or HIGH.
1168         (cprop_into_successor_phis): Only propagate if NEW != ORIG.
1169         (record_equivalences_from_stmt): Call expr_computes_nonzero.
1170         (cprop_operand): Only propagate if VAL != OP.
1171         * tree-ssa-dse.c (dse_optimize_stmt): Mark symbols in removed
1172         statement for renaming.
1173         * tree-ssa-loop-im.c (move_computations): Call update_ssa.
1174         * tree-ssa-loop-ivopts.c (rewrite_address_base): Call
1175         add_type_alias if necessary.
1176         Call mark_new_vars_to_rename.
1177         (tree_ssa_iv_optimize): If new symbols need to be renamed,
1178         mark every statement updated, call update_ssa and
1179         rewrite_into_loop_closed_ssa.
1180         * tree-ssa-loop-manip.c (add_exit_phis): Do not remove DEF_BB
1181         from LIVEIN if VAR is a virtual.
1182         * tree-ssa-loop.c (tree_loop_optimizer_init): Call update_ssa.
1183         * tree-ssa-operands.c (get_expr_operands): Handle ASSERT_EXPR.
1184         (get_call_expr_operands): Reformat statement.
1185         (add_stmt_operand): Don't create V_MAY_DEFs for read-only
1186         symbols.
1187         * tree-ssa-propagate.c (ssa_prop_init): Initialize
1188         SSA_NAME_VALUE for every name.
1189         (first_vdef, stmt_makes_single_load, stmt_makes_single_store,
1190         get_value_loaded_by): New.
1191         (replace_uses_in, replace_vuses_in, replace_phi_args_in,
1192         substitute_and_fold): Move from tree-ssa-ccp.c.
1193         * tree-ssa-propagate.h (struct prop_value_d, prop_value_t,
1194         first_vdef, stmt_makes_single_load, stmt_makes_single_store,
1195         get_value_loaded_by, replace_uses_in, substitute_and_fold):
1196         Declare.
1197         * tree-ssa.c (verify_use): Fix error message.
1198         (propagate_into_addr, replace_immediate_uses, get_eq_name,
1199         check_phi_redundancy, kill_redundant_phi_nodes,
1200         pass_redundant_phi): Remove.  Update all users.
1201         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
1202         add_type_alias, if necessary.
1203         * tree-vectorizer.h (struct _stmt_vect_info): Update
1204         documentation for field 'memtag'.
1205         * tree-vrp.c: New file.
1206         * tree.def (ASSERT_EXPR): Define.
1207         * tree.h (ASSERT_EXPR_VAR): Define.
1208         (ASSERT_EXPR_COND): Define.
1209         (SSA_NAME_VALUE_RANGE): Define.
1210         (struct tree_ssa_name): Add field 'value_range'.
1211         (PHI_REWRITTEN): Remove.
1212         (struct tree_phi_node): Remove field 'rewritten'.
1213         * doc/invoke.texi (-fdump-tree-storeccp, -ftree-copy-prop,
1214         -ftree-store-copy-prop): Document.
1215         * doc/tree-ssa.texi: Remove broken link to McCAT's compiler.
1216         Document usage of update_ssa.
1217
1218 2005-04-08  David Edelsohn  <edelsohn@gnu.org>
1219
1220         PR target/20814
1221         * config/rs6000/predicates.md (altivec_register_operand): Accept
1222         SUBREG. 
1223         (and64_operand): Do not limit CONST_INT to mask64_operand.
1224         (and64_2_operand): Do not limit CONST_INT to mask64_1or2_operand.
1225         (and_operand): Do not limit CONST_INT to mask_operand.
1226
1227 2005-04-09  Hans-Peter Nilsson  <hp@axis.com>
1228
1229         PR rtl-optimization/20466
1230         * flow.c (invalidate_mems_from_set): Handle a MEM by checking it
1231         for overlap of the address of each list member.
1232         (mark_set_1): Call invalidate_mems_from_set for MEMs too.
1233
1234 2005-04-08  Mike Stump  <mrs@apple.com>
1235
1236         * config/darwin.c (indirect_data): Fix typo in strncmp logic.
1237         
1238         * config/rs6000/rs6000.c (rs6000_emit_prologue): Use 5 nops,
1239         instead of 4.
1240
1241 2005-04-08  Kazu Hirata  <kazu@cs.umass.edu>
1242
1243         * c-tree.h (C_LANG_TREE_NODE_CHAIN_NEXT): Remove.
1244
1245         * function.c (push_function_context_to): Don't set
1246         contains_functions.
1247         * function.h (function): Remove contains_functions.
1248         (current_function_contains_functions): Remove.
1249
1250         * function.h (function): Remove instrument_entry_exit.
1251         (current_function_instrument_entry_exit): Remove.
1252
1253         * function.h (nonlocal_labels): Remove.
1254
1255         * tree.h (STRIP_MAIN_TYPE_NOPS): Remove.
1256
1257         * genattrtab.c (attr_desc): Remove negative_ok and unsigned_p.
1258         (check_attr_value, write_attr_get, write_expr_attr_cache,
1259         find_attr, make_internal_attr): Don't reference negative_ok or
1260         unsigned_p.
1261         * genattrtab.h (ATTR_NEGATIVE_OK, ATTR_UNSIGNED,
1262         ATTR_FUNC_UNITS, ATTR_BLOCKAGE): Remove.
1263         (ATTR_STATIC): Adjust the value.
1264
1265         * c-common.h (C_ARTIFICIAL_STRING_P): Remove.
1266
1267 2005-04-08  Ulrich Weigand  <uweigand@de.ibm.com>
1268
1269         * config/s390/tpf.h (ASM_SPEC): Define.
1270
1271 2005-04-08  Kazu Hirata  <kazu@cs.umass.edu>
1272
1273         * tree-flow.h: Remove the prototype for
1274         redirect_immediate_uses.
1275         (TDFA_USE_OPS, TDFA_USE_VOPS): Remove.
1276
1277 2005-04-08  Richard Earnshaw  <richard.earnshaw@arm.com>
1278
1279         * arm.c (arm_const_double_by_parts): New function.
1280         * arm-protos.h (arm_const_double_by_parts): Add prototype.
1281         * arm.md (define_split for 64-bit constants): Add another one.
1282
1283 2005-04-08  Andrew MacLeod  <amacleod@redhat.com>
1284
1285         * tree-ssa-operands.c (correct_use_link): Remove linear scan.
1286
1287 2005-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1288
1289         * system.h: Revert last change.
1290
1291 2005-04-08  Richard Sandiford  <rsandifo@redhat.com>
1292
1293         * config/xtensa/xtensa.h (target_flags, MASK_NO_FUSED_MADD)
1294         (MASK_CONST16, TARGET_NO_FUSED_MADD, TARGET_CONST16)
1295         (TARGET_SWITCHES): Delete.
1296         * config/xtensa/xtensa.c (TARGET_DEFAULT_TARGET_FLAGS): Define.
1297         * config/xtensa/xtensa.md (muladdsf3, mulsubsf3): Check
1298         TARGET_FUSED_MADD instead of !TARGET_NO_FUSED_MADD.
1299         * config/xtensa/xtensa.opt: New file.
1300
1301 2005-04-08  Ben Elliston  <bje@au.ibm.com>
1302
1303         * config/fp-bit.c: Include L_mul_tf in #endif comment.
1304         * config/fp-bit.h: Tidy comments.
1305
1306 2005-04-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1307
1308         * system.h: Poison PARAMS.
1309
1310 2005-04-07  Richard Sandiford  <rsandifo@redhat.com>
1311
1312         * config/vax/vax.h (target_flags, MASK_UNIX_ASM, MASK_VAXC_ALIGNMENT)
1313         (MASK_G_FLOAT, TARGET_UNIX_ASM, TARGET_VAXC_ALIGNMENT, TARGET_G_FLOAT)
1314         (TARGET_SWITCHES): Delete.
1315         * config/vax/vax.c (TARGET_DEFAULT_TARGET_FLAGS): Override default.
1316         * config/vax/vax.opt: New file.
1317
1318 2005-04-07  Daniel Berlin  <dberlin@dberlin.org>
1319
1320         * tree-ssa-dse.c (dse_optimize_stmt): Fix incorrect comment.
1321
1322 2005-04-07  Ian Lance Taylor  <ian@airs.com>
1323
1324         * config/iq2000/iq2000.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Don't
1325         define.
1326         * config/mips/mips.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise.
1327         * config/sparc/sparc.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE):
1328         Likewise.
1329
1330 2005-04-07  Kazu Hirata  <kazu@cs.umass.edu>
1331
1332         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Consider
1333         all immediate uses in PHI nodes.
1334
1335 2005-04-07  Richard Earnshaw  <richard.earnshaw@arm.com>
1336
1337         * arm.c (arm_const_double_inline_cost): Handle any constant by
1338         using gen_lowpart and gen_highpart_mode.
1339         (note_invalid_constants): All constants in an RTX with a constraint
1340         that permits memory are now pushed to the constant pool.
1341         (output_move_double): Delete code to handle reg to reg and 
1342         constant to reg moves.
1343         (const_double_needs_minipool, output_mov_immediate): Delete.
1344         * arm.h (EXTRA_CONSTRAINT_STR_ARM): All 'D' variants now handle
1345         CONST_INT and CONST_VECTOR.
1346         * arm.md (ANY64): New mode macro.
1347         (arm_movdi): Split reg-reg and const-reg moves.  Simplify constraints.
1348         (movdf_soft_insn): Split reg-reg and const-reg moves.
1349         (split patterns for 64-bit constant and register moves): New.
1350         * cirrus.md (cirrus_arm_movdi): Split reg-reg and const-reg moves.
1351         (cirrus_movdf_hard_insn): Likewise.
1352         * fpa.md (movdf_fpa): Likewise.
1353         * iwmmxt.md (iwmmxt_arm_movdi): Likewise.
1354         (movv8qi_internal, movv4hi_internal, movv2si_internal): Fix
1355         constraints.
1356         (movv2si_internal_2): Likewise.
1357         * vfp.md (arm_movdi_vfp): Split reg-reg and const-reg moves.
1358         (movdf_vfp): Likewise.
1359         * arm-protos.h (output_mov_immediate): Delete prototype.
1360
1361 2005-04-07  Joseph S. Myers  <joseph@codesourcery.com>
1362
1363         PR target/20093
1364         * simplify-rtx.c (simplify_unary_operation_1): Check
1365         SUBREG_PROMOTED_UNSIGNED_P (op) > 0 for zero-extension.
1366
1367 2005-04-06  James E Wilson  <wilson@specifixinc.com>
1368
1369         PR target/20717
1370         * cgraphunit.c (record_call_1, case FDESC_EXPR): Handle same as
1371         ADDR_EXPR.
1372
1373 2004-04-06  Richard Sandiford  <rsandifo@redhat.com>
1374
1375         * coverage.h (GCOV_TYPE_NODE): Delete.
1376         * coverage.c (coverage_counter_alloc, tree_coverage_counter_ref)
1377         (build_ctr_info_type): Use get_gcov_type () instead of GCOV_TYPE_NODE.
1378         * tree-profile.c (tree_gen_edge_profiler, tree_gen_interval_profiler)
1379         (tree_gen_pow2_profiler, tree_gen_one_value_profiler): Likewise.
1380         * value-prof.c (tree_divmod_fixed_value_transform): Delete.
1381
1382 2004-04-06  Richard Sandiford  <rsandifo@redhat.com>
1383
1384         PR other/20792
1385         * Makefile.in (gcc.pot): Remove options.c dependency.
1386         * optc-gen.awk: Don't quote help strings with N_().
1387
1388 2005-04-06  James A. Morrison  <phython@gcc.gnu.org>
1389
1390         * c-common.c (handle_malloc_atttribute): Only set DECL_IS_MALLOC if
1391         the function returns a pointer type.
1392
1393 2005-04-06  Daniel Berlin  <dberlin@dberlin.org>
1394
1395         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): New
1396         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): New
1397         * doc/invoke.texi: Documnet salias-max-implicit-fields.
1398         * tree-ssa-alias.c (struct used_part): Add implicit_uses and
1399         explicit_uses members.
1400         (get_or_create_used_part_for): Initialize new fields.
1401         (fieldoff_compare): New function.
1402         (create_overlap_variables_for): Count number of fields, use
1403         heuristic to determine whether to create subvars for vars with
1404         only implicit uses.
1405         Sort the field list by offset and avoid creating duplicate SFT's.
1406
1407 2005-04-06  Richard Sandiford  <rsandifo@redhat.com>
1408
1409         * c.opt (-F): Remove trailing whitespace from help string.
1410         (-finput-charset): Use a tab to separate the switch name and help
1411         string.
1412         * common.opt (-fsched-stalled-insns, -fsched-stalled-insns-dep)
1413         (-ftree-vectorizer-verbose): Likewise.
1414
1415 2005-04-06  Kazu Hirata  <kazu@cs.umass.edu>
1416
1417         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Look at
1418         a PHI argument where a use occurs instead of all PHI arguments.
1419
1420 2005-04-06  Joseph S. Myers  <joseph@codesourcery.com>
1421
1422         * c-decl.c (finish_decl): Apply pending #pragma weak regardless of
1423         scope.
1424
1425 2005-04-06  Kazu Hirata  <kazu@cs.umass.edu>
1426
1427         * cse.c, tree-flow-inline.h, tree-flow.h, tree-ssa-operands.c,
1428         tree-ssa-sink.c, tree.h, config/bfin/bfin.c,
1429         config/bfin/bfin.h: Fix comment typos.
1430
1431 2005-04-06  Ranjit Mathew  <rmathew@hotmail.com>
1432
1433         * doc/install.texi: Update the URL for Jacks.
1434         * doc/sourcebuild.texi: Likewise.
1435
1436 2005-04-06  Eric Botcazou  <ebotcazou@libertysurf.fr>
1437
1438         PR target/17245
1439         * config/sparc/sparc.c (legitimate_address_p): Remove 'imm2'.
1440         Revert 2004-10-08 patch.  Reject TFmode LO_SUM in 32-bit mode.
1441
1442 2005-04-06  Kelley Cook  <kcook@gcc.gnu.org>
1443
1444         * Makefile.in (LIBGCC2_CFLAGS): Revert -pipe change.
1445
1446 2005-04-06  Richard Sandiford  <rsandifo@redhat.com>
1447
1448         * config/v850/v850-protos.h (override_options): Delete.
1449         * config/v850/v850.h (target_flags, MASK_GHS, MASK_LONG_CALLS, MASK_EP)
1450         (MASK_PROLOG_FUNCTION, MASK_DEBUG, MASK_V850, MASK_V850E)
1451         (MASK_SMALL_SLD, MASK_BIG_SWITCH, MASK_NO_APP_REGS, MASK_DISABLE_CALLT)
1452         (MASK_STRICT_ALIGN, MASK_US_BIT_SET, MASK_US_MASK_SET, TARGET_GHS)
1453         (TARGET_LONG_CALLS, TARGET_EP, TARGET_PROLOG_FUNCTION, TARGET_V850)
1454         (TARGET_BIG_SWITCH, TARGET_DEBUG, TARGET_V850E, TARGET_US_BIT_SET)
1455         (TARGET_SMALL_SLD, TARGET_DISABLE_CALLT, TARGET_NO_APP_REGS)
1456         (TARGET_STRICT_ALIGN, TARGET_SWITCHES, TARGET_OPTIONS)
1457         (OVERRIDE_OPTIONS): Delete.
1458         (MASK_CPU): Redefine as MASK_V850 | MASK_V850E.
1459         (small_memory_info): Remove the value field.
1460         (CONDITIONAL_REGISTER_USAGE): Check !TARGET_APP_REGS rather than
1461         TARGET_NO_APP_REGS.
1462         * config/v850/v850.c (small_memory): Remove the value field.
1463         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
1464         (override_options): Delete.
1465         (v850_handle_memory_option, v850_handle_option): New functions.
1466         * config/v850/v850.opt: New file.
1467
1468 2005-04-06  Geoffrey Keating  <geoffk@apple.com>
1469
1470         * config.host: Add a section for generic hosts, and a subsection
1471         for Darwin.  Add a case for x86-darwin.  Update ppc-darwin case.
1472         * config/host-darwin.c: New, split out of config/rs6000/host-darwin.c.
1473         * config/host-darwin.h: New.
1474         * config/x-darwin: New.
1475         * config/i386/host-i386-darwin.c: New.
1476         * config/i386/x-darwin: New.
1477         * config/rs6000/host-darwin.c: Include host-darwin.h.
1478         (darwin_rs6000_gt_pch_get_address): Move to config/host-darwin.c.
1479         (darwin_rs6000_gt_pch_use_address): Likewise.
1480         * config/rs6000/x-darwin: Change name of .o built, update
1481         dependencies for changes to rs6000/host-darwin.c.
1482
1483 2005-04-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
1484
1485         PR target/17824
1486         * config/c4x/c4x.h (ASM_PROG, LD_PROG): Remove.
1487
1488 2005-04-06  Dorit Naishlos  <dorit@il.ibm.com>
1489
1490         * tree-vect-analyze.c (vect_analyze_loop_form): Call
1491         split_loop_exit_edge instead of loop_split_edge_with. 
1492
1493 2005-04-06  Paolo Bonzini  <bonzini@gnu.org>
1494
1495         * config/rs6000/altivec.md (UNSPEC_VSLW, UNSPEC_SUBS,
1496         UNSPEC_SET_VSCR): New constants, used throughout.
1497         (*andc3_v4sf): New.
1498         (altivec_vspltisb, altivec_vsplitish, altivec_vsplitisw):
1499         Replace with...
1500         (altivec_vspltis<VI_char>): ... this pattern, using
1501         a QImode const_int_operand for the immediate.
1502         (abs<mode>2, absv4sf2, altivec_abss_<mode>): Rewrite as
1503         define_expands.
1504
1505 2005-04-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
1506
1507         PR target/17822
1508         * config/avr/t-avr (AR_FOR_TARGET,RANLIB_FOR_TARGET): Remove.
1509
1510 2005-04-06  Kelley Cook  <kcook@gcc.gnu.org>
1511
1512         * Makefile.in (LIBGCC2_CFLAGS): Compile with -pipe.
1513
1514 2005-04-06  Ben Elliston  <bje@au.ibm.com>
1515
1516         * gcc.c: Correct comment about DEFAULT_SWITCH_TAKES_ARG and
1517         DEFAULT_WORD_SWITCH_TAKES_ARG which incorrectly reported these
1518         macros as living in "this file" and not gcc.h.
1519
1520 2005-04-06  Ben Elliston  <bje@au.ibm.com>
1521
1522         * doc/invoke.texi (Optimize Options): Mention -ftree-lrs, not
1523         -ftree-live_range_split.  Perhaps renamed at some point?
1524
1525 2005-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
1526
1527         PR target/20625
1528         * tree-ssa-loop-ivopts.c (generic_type_for): New function.
1529         (add_candidate_1): Use generic_type_for instead of unsigned_type_for.
1530
1531 2005-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
1532
1533         * tree-flow.h (number_of_iterations_cond): Declaration removed.
1534         * tree-ssa-loop-niter.c (number_of_iterations_cond): Made static.
1535         (number_of_iterations_special): New function.
1536         (number_of_iterations_exit): Use number_of_iterations_special.
1537         Use simplify_using_outer_evolutions only at -O3.
1538         (number_of_iterations_cond, tree_simplify_using_condition,
1539         simplify_using_initial_conditions, loop_niter_by_eval,
1540         compare_trees, can_count_iv_in_wider_type_bound,
1541         simplify_using_outer_evolutions): Use fold_build.
1542
1543 2005-04-05  Thomas Fitzsimmons  <fitzsim@redhat.com>
1544
1545         * doc/install.texi (Configuration): Document --with-java-home.
1546
1547 2005-04-05  Richard Henderson  <rth@redhat.com>
1548
1549         PR target/20342
1550         PR target/20447
1551         * config/i386/i386.c (print_operand): Handle vector zeros.
1552         (ix86_split_to_parts): Handle CONST_VECTOR.
1553         (ix86_hard_regno_mode_ok): Allow MMX modes in general regs.
1554         (ix86_modes_tieable_p): Use ix86_hard_regno_mode_ok to decide
1555         what modes to tie for MMX and SSE registers.
1556         * config/i386/i386.h (MMX_REG_MODE_P): Remove.
1557         * config/i386/i386.md: Extend move 0 -> xor peephole to apply
1558         to vector modes as well.
1559         * config/i386/predicates.md (const0_operand): Handle VOIDmode
1560         properly as an input mode.
1561
1562 2005-04-05  Andrew MacLeod  <amacleod@redhat.com>
1563
1564         * tree-ssa-operands.c (verify_abort): Use %p for pointers.
1565
1566 2005-04-05  Andrew MacLeod  <amacleod@redhat.com>
1567
1568         * tree-pretty-print.c (dump_generic_node): Use %p for pointer.
1569
1570 2005-04-05  Jakub Jelinek  <jakub@redhat.com>
1571
1572         * config/i386/i386.c (init_cumulative_args): For -m32 -mfpmath=sse
1573         and local functions, set sse_nregs to 8 and float_in_sse.
1574         (function_arg_advance, function_arg): If float_in_sse, pass
1575         SFmode and DFmode arguments in SSE registers.
1576         * config/i386/i386.h (CUMULATIVE_ARGS): Add float_in_sse field.
1577
1578         * config/i386/i386.c (ix86_value_regno): Only optimize local functions
1579         of -funit-at-a-time.
1580
1581 2005-04-05  Paolo Bonzini  <bonzini@gnu.org>
1582
1583         * config/i386/i386-protos.h (ix86_function_value): Accept two
1584         arguments, like the target macro.
1585         * config/i386/i386.h (FUNCTION_VALUE): Pass both arguments.
1586         * config/i386/i386.c (ix86_function_value): Accept the second
1587         argument of the target macro.
1588         (ix86_function_ok_for_sibcall): Pass a function pointer to
1589         ix86_function_value.
1590         (ix86_function_value, ix86_libcall_value) [!TARGET_64BIT]: Adjust
1591         call to ix86_value_regno).
1592         (ix86_value_regno): Add support for returning floating point values
1593         in SSE registers.
1594
1595 2005-04-05  Jakub Jelinek  <jakub@redhat.com>
1596
1597         PR tree-optimization/20076
1598         * tree-inline.c (inline_forbidden_p_1): Prevent inlining functions
1599         that call __builtin_return or __builtin_apply_args.
1600
1601 2005-04-05  Andrew MacLeod  <amacleod@redhat.com>
1602
1603         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use update_stmt.
1604         Use immediate use iterator.
1605         (stmt_is_bumper_for_loop): Use immediate use iterator.
1606         * predict.c (strip_builtin_expect): Use update_stmt.
1607         * tree-cfg.c (update_modified_stmts): New. Call update_stmt_if_modified
1608         on all elements of a STATEMENT_LIST.
1609         (bsi_insert_before, bsi_insert_after): Call update_modified_stmts.
1610         (bsi_remove): Remove imm_use links and mark the stmt as modified.
1611         (bsi_replace): Mark stmt as modified and the update it.
1612         * tree-complex.c (update_complex_assignment): Call mark_stmt_modified.
1613         (expand_complex_libcal): Call update_stmt.
1614         (expand_complex_comparison): Call mark_stmt_modified.
1615         (expand_complex_operations_1): Call update_stmt_if_modified.
1616         (expand_vector_operations_1): Call mark_stmt_modified.
1617         * tree-dfa.c (compute_immediate_uses, free_df_for_stmt, free_df,
1618         compute_immediate_uses_for_phi, compute_immediate_uses_for_stmt,
1619         add_immediate_use, redirect_immediate_use,
1620         redirect_immediate_uses, dump_immediate_uses, debug_immediate_uses,
1621         dump_immediate_uses_for, debug_immediate_uses_for): Delete.
1622         (mark_new_vars_to_rename): Call update_stmt.
1623         * tree-dump.c (dump_option_value_in): Add "stmtaddr".
1624         * tree-flow-inline.h (modify_stmt): Rename to mark_stmt_modified.  
1625         Ignore PHI nodes.
1626         (unmodify_stmt): Delete.
1627         (update_stmt): New.  Force an update of a stmt.
1628         (update_stmt_if_modified): update a stmt if it is out of date.
1629         (get_stmt_operands): Verify stmt is NOT modified. 
1630         (stmt_modified_p): Update comment.
1631         (delink_imm_use): Remove a use node from its immuse list.
1632         (link_imm_use_to_list): Link a use node to a specific list.
1633         (link_imm_use): Link a node to the correct list.
1634         (set_ssa_use_from_ptr): Set a use node to a specific value, and insert
1635         it in the correct list, if appropriate.
1636         (link_imm_use_stmt): Link a use node, and set the stmt pointer.
1637         (relink_imm_use): Link a use node in place of another node in a list.
1638         (relink_imm_use_stmt): LInk a node in place of another node, and set
1639         the stmt pointer.
1640         (end_safe_imm_use_traverse): New.  Terminate a safe immuse iterator.
1641         (end_safe_imm_use_p): New.  Check for the end of a safe immuse iterator.
1642         (first_safe_imm_use): New.  Initialize a safe immuse iterator.
1643         (next_safe_imm_use): New.  Proceed to next safe immuse iterator value.
1644         (end_readonly_imm_use_p): New.  Check for end of a fast immuse iterator.
1645         (first_readonly_imm_use): New.  Initialize a fast immuse iterator.
1646         (next_readonly_imm_use): New.  Get the next fast immuse iterator value.
1647         (has_zero_uses): New.  Return true if there are no uses of a var.
1648         (has_single_use): New.  Return true if there is only a single use of a
1649         variable.
1650         (single_imm_use): New.  Return the simgle immediate use.
1651         (num_imm_uses): New.  Return the number of immediate uses.
1652         (get_v_must_def_ops): Use is now a pointer.
1653         (use_operand_p, get_v_may_def_op_ptr, get_vuse_op_ptr,
1654         get_v_must_def_kill_ptr, get_phi_arg_def_ptr): Return the address of 
1655         the use node.
1656         (get_immediate_uses, num_immediate_uses, immediate_use): Delete.
1657         (delink_stmt_imm_use): Delink all immuses from a stmt.
1658         (phi_arg_index_from_use): New.  Return a phi arg index for a use.
1659         * tree-flow.h (struct dataflow_d): Delete.
1660         (immediate_use_iterator_d): New.  Immediate use iterator struct.
1661         (FOR_EACH_IMM_USE_FAST): New.  Macro for read only immuse iteration.
1662         (FOR_EACH_IMM_USE_SAFE): New.  Macro for write-safe immuse iteration.
1663         (BREAK_FROM_SAFE_IMM_USE): New.  Macro for earlyu exit from write-safe 
1664         iteration.
1665         (struct stmt_ann_d): Remove dataflow_t from struct.
1666         * tree-if-conv.c (tree_if_conversion).  Don't call free_df.
1667         (if_convertible_phi_p): Use FAST immuse iterator.
1668         (if_convertible_loop_p): Don't call compute_immediate_uses.
1669         (replace_phi_with_cond_modify_expr): Call update_stmt.
1670         * tree-into-ssa.c (mark_def_sites, ssa_mark_def_sites): Call 
1671         update_stmt_if_modified.
1672         (rewrite_all_into_ssa): Initialize ssa operands.
1673         * tree-loop-linear.c (linear_transform_loops): Don't call free_df or
1674         compute_immediate_uses.
1675         * tree-optimize.c (execute_todo): Call verify_ssa whenever the 
1676         ssa_property is available.
1677         (execute_one_pass):  Change parameters passed to execute_todo.
1678         * tree-outof-ssa.c (rewrite_trees): Don't call modify_stmt.
1679         (remove_ssa_form): Call fini_ssa_operands.
1680         (insert_backedge_copies): Delete call to modify_stmt.
1681         * tree-phinodes.c (make_phi_node): Initialize use nodes.
1682         (release_phi_node): Delink any use nodes before releasing.
1683         (resize_phi_node): Relink any use nodes.
1684         (remove_phi_arg_num): Delink the use node.
1685         (remove_phi_node): Release the ssa_name AFTER releasing the phi node.
1686         (remove_all_phi_nodes_for): Release phi node first.
1687         * tree-pretty-print.c (dump_generic_node): Print stmt address.
1688         * tree-sra.c (mark_all_v_defs): Call update_stmt_if_modified.
1689         (scalarize_use, scalarize_copy): Call update_stmt.
1690         * tree-ssa-alias.c (compute_may_aliases): Update all modified stmts.
1691         (compute_points_to_and_addr_escape): Call mark_stmt_modified.
1692         * tree-ssa-cpp.c (need_imm_uses_for): Delete.
1693         (ccp_initialize): Remove call to compute_immediate_uses.
1694         (substitute_and_fold, execute_fold_all_builtins): Call update_stmt.
1695         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Update all modified 
1696         stmts.
1697         (simplify_cond_and_lookup_avail_expr): Call mark_stmt_modified.
1698         (simplify_switch_and_lookup_avail_expr): Call mark_stmt_modified.
1699         (eliminate_redundant_computations): Call mark_stmt_modified.
1700         (cprop_operand): Call mark_stmt_modified.
1701         (optimize_stmt): Call update_stmt_if_modified and mark_stmt_modified.
1702         * tree-ssa-dse.c (fix_phi_uses, fix_stmt_v_may_defs): Delete.
1703         (dse_optimize_stmt): Use new immuse interface.
1704         (tree_ssa_dse): Remove calls to compute_immediate_uses and free_df.
1705         * tree-ssa-forwprop.c (need_imm_uses_for): Delete.
1706         (substitute_single_use_vars): Use new immuse interface.
1707         (tree_ssa_forward_propagate_single_use_vars): Remove calls to free_df
1708         and compute_immediate_uses.
1709         * tree-ssa-loop-im.c (single_reachable_address): Use new immuse 
1710         interface.
1711         (rewrite_mem_refs): Call update_stmt.
1712         (determine_lsm): Remove call to compute_imm_uses and free_df.
1713         * tree-ssa-loop-ivcanon.c (create_canonical_iv): Call update_stmt.
1714         (try_unroll_loop_completely): Call update_stmt.
1715         * tree-ssa-loop-ivopts.c (rewrite_address_base): Call update_stmt.
1716         (rewrite_use_compare): Call update_stmt.
1717         (compute_phi_arg_on_exit): Insert each stmt before trying to process.
1718         (rewrite_use) : Call update_stmt.
1719         * tree-ssa-loop-manip.c (verify_loop_closed_ssa): Add arg to call.
1720         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Call 
1721         update_stmt.
1722         * tree-ssa-operands.c (NULL_USE_OPERAND_P): Remove declaration.
1723         (allocate_use_optype, allocate_vuse_optype): Adjust allocation size.
1724         (free_uses, free_vuses, free_v_may_defs, free_v_must_defs): Delink
1725         use nodes.
1726         (initialize_vuse_operand): New.  Initialize a vuse operand.
1727         (initialize_v_may_def_operand): New.  Initialize a maydef operand.
1728         (initialize_v_must_def_operand): New.  Initialize a mustdef operand.
1729         (finalize_ssa_defs): Use stmt parameter.
1730         (correct_use_link): Ensure a use node is in the correct list, and has
1731         the correct stmt pointer.
1732         (finalize_ssa_uses, finalize_ssa_v_may_defs, finalize_ssa_vuses,
1733         finalize_ssa_v_must_defs): Also initialize use nodes.
1734         (finalize_ssa_stmt_operands): Pass extra stmt operands.
1735         (build_ssa_operands): Seperate parsing from final operand construction.
1736         (parse_ssa_operands): New.  Parse entry point for operand building.
1737         (swap_tree_operands): New.  Swap 2 tree operands.
1738         (update_stmt_operands): Ranamed from get_stmt_operands.  Always builds
1739         operands.
1740         (get_expr_operands): Call swap_tree_operands when needed.
1741         (copy_virtual_operands): Use initialize routines for virtual use ops.
1742         (create_ssa_artficial_load_stmt): Add extra stmt parameter.
1743         (verify_abort): New.  Issue imm_use error.
1744         (verify_imm_links): New Verify imm_use links for a var.
1745         (dump_immediate_uses_for): New.  Dump imm_uses for a var to file.
1746         (dump_immediate_uses): New.  Dump imm_uses for all vars to file.
1747         (debug_immediate_uses): New.  Dump imm_uses for all vars to stderr.
1748         (debug_immediate_uses_for): New.  Dump imm_uses for a var to stderr.
1749         * tree-ssa-operands.h (struct use_operand_ptr): Delete.
1750         (NULL_USE_OPERAND_P) Define.
1751         (use_optype_d, v_def_use_operand_type, vuse_optype_d): Add immediate
1752         use node.
1753         (struct vuse_operand_type): New struct.
1754         (SET_USE): Call set_ssa_use_from_ptr.
1755         (USE_STMT): Define.
1756         (PHI_ARG_INDEX_FROM_USE): Define.
1757         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Set the phi 
1758         argument via SET_USE, not PHI_ARG_DEF_TREE.
1759         * tree-ssa-pre.c (eliminate): Call update_stmt.
1760         * tree-ssa-propagate.c (cfg_blocks_get): Use imm_use iterators.  Don't
1761         call free_df.
1762         * tree-ssa-sink.c (all_immediate_uses_same_place): Use imm_use iterator.
1763         (nearest_common_dominator_of_uses): Use imm_use iterator.
1764         (statement_sink_location): Use imm_use iterator and interface.
1765         (execute_sink_code): Don't call compute_immediate_uses or free-df.
1766         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis): Use
1767         PHI_ARG_DEF, not PHI_ARG_DEF_TREE.
1768         * tree-ssa.c (verify_use, verify_phi_args): Verify some imm_use info.
1769         (verify_ssa): Ensure no stmt is marked modify after optimization pass
1770         if new parameter is true.
1771         (init_tree_ssa): Don't initialize operand cache here.
1772         (delete_tree_ssa): Don't destroy operand cache here.
1773         (propagate_into_addr): Pass in a use pointer, return true if anything
1774         was changed.
1775         (replace_immediate_uses): Use imm_use iterator, call update_stmt.
1776         (check_phi_redundancy): Use imm_use iterator.
1777         (kill_redundant_phi_nodes): Don't call compute_immediate_uses or 
1778         free_df.
1779         * tree-ssanames.c (make_ssa_name): Initialize imm_use node.
1780         (release_ssa_name): Delink node and all elements in its imm_use list.
1781         * tree-tailcall.c (adjust_return_value): Call update_stmt.
1782         * tree-vect-analyze.c (vect_stmt_relevant_p): Use imm_use iterator.
1783         * tree-vectorizer.c (need_imm_uses_for): Delete.
1784         (vectorize_loops): Dont call compute_immediate_uses or free_df.
1785         * tree.h (struct ssa_imm_use_d): Define.
1786         (SSA_NAME_IMM_USE_NODE): Define.
1787         (struct tree_ssa_name): Add imm_use node.
1788         (PHI_DF): Delete.
1789         (PHI_ARG_IMM_USE_NODE): Define.
1790         (struct phi_arg_d): Add imm_use node.
1791         (struct tree_phi_node): Remove struct dataflow_d element.
1792         (TDF_STMTADDR): Define.
1793
1794 2005-04-05  Dale Johannesen  <dalej@apple.com>
1795
1796         * doc/invoke.texi (Optimization Options):  Remove
1797         duplicate -fcse-follow-jumps.  Add -fweb.
1798         (-ftree-lim):  Fix spelling (-ftree-loop-im, invariants).
1799         (-fivcanon):  Fix spelling (-ftree-loop-ivcanon).
1800
1801 2005-04-05  Per Bothner  <per@bothner.com>
1802
1803         * tree-ssa.c (execute_early_warn_uninitialized): Pass context node
1804         to talk_tree as 'data' parameter, rather than EXPR_LOCUS.
1805         (warn_uninit): Get EXPR_LOCUS from context now instead.
1806         This fixes a USE_MAPPED_LOCATION testsuite failure.
1807
1808         * tree-ssa.c (warn_uninitialized_var): Remove useless local.
1809
1810 2005-04-05  Per Bothner  <per@bothner.com>
1811
1812         * c-decl.c (finish_function): If USE_MAPPED_LOCATION set the location
1813         of the artification 'return 0' in main() to BUILTINS_LOCATION.
1814         * tree-cfg.c (remove_bb): Check that location isn't BUILTINS_LOCATION
1815         before warning. 
1816
1817 2004-04-05  Devang Patel  <dpatel@apple.com>
1818
1819         * config/rs600/altivec.md (altivec_vsr<VI_char>): Rename to ..
1820         (lhsr<mode>3): ... new name.
1821         (altivec_vsra<VI_char>): Rename to ..
1822         (ashr<mode>3): ... new name.
1823         * config/rs6000/rs6000.c (builtin_description): Rename shift
1824         operations.
1825         
1826 2004-04-05  Paolo Bonzini  <bonzini@gnu.org>
1827
1828         * combine.c (RTL_HOOKS_GEN_LOWPART_NO_EMIT): Use
1829         gen_lowpart_for_combine.
1830         * cse.c (gen_lowpart_if_possible): Move...
1831         * rtlhooks.c (gen_lowpart_if_possible): ... here.  Also try
1832         gen_lowpart_SUBREG.
1833         (gen_lowpart_no_emit_general): Use it.
1834
1835 2005-04-05  Eric Botcazou  <ebotcazou@libertysurf.fr>
1836
1837         * config/sparc/sparc.c (TARGET_ASM_FILE_END): Undefine before
1838         overriding.
1839
1840 2005-04-05  Paolo Bonzini  <bonzini@gnu.org>
1841
1842         * system.h: Fix typo.
1843
1844 2005-04-05  Bernd Schmidt  <bernd.schmidt@analog.com>
1845
1846         * config/bfin/bfin-modes.def: New file.
1847         * config/bfin/bfin-protos.h: New file.
1848         * config/bfin/bfin.c: New file.
1849         * config/bfin/bfin.h: New file.
1850         * config/bfin/bfin.md: New file.
1851         * config/bfin/bfin.opt: New file.
1852         * config/bfin/crti.s: New file.
1853         * config/bfin/crtn.s: New file.
1854         * config/bfin/elf.h: New file.
1855         * config/bfin/lib1funcs.asm: New file.
1856         * config/bfin/predicates.md: New file.
1857         * config/bfin/t-bfin: New file.
1858         * config/bfin/t-bfin-elf: New file.
1859         * doc/extend.texi (exception_handler, kspisusp, nesting, nmi_handler):
1860         Document new attributes.
1861         (interrupt, interrupt_handler, saveall): Update documentation for
1862         these attributes.
1863         * doc/install.texi (Specific): Add entry for the Blackfin.
1864         * doc/invoke.texi (Blackfin Options): New section.
1865         * doc/md.texi (Blackfin family): New section to document constraints.
1866         * config.gcc: Add bfin*-* and bfin*-elf configurations.
1867
1868 2005-04-05  Olivier Hainque  <hainque@adacore.com>
1869         
1870         * config/mips/iris6.h (DWARF_FRAME_RETURN_COLUMN): Redefine to
1871         match what the system unwinder expects.
1872         * config/mips/mips.c (mips_frame_set): If we're saving the return
1873         address register and the dwarf return address column number differs
1874         from the hard register number, adjust the note reg to refer to the
1875         former.
1876
1877 2004-04-05  Richard Sandiford  <rsandifo@redhat.com>
1878
1879         * config/mn10300/mn10300-protos.h (mn10300_override_options): Declare.
1880         * config/mn10300/mn10300.h (target_flags, TARGET_MULT_BUG)
1881         (TARGET_SWITCHES, TARGET_DEFAULT): Delete.
1882         (processor_type): New enum.
1883         (mn10300_processor): New variable.
1884         (TARGET_AM33, TARGET_AM33_2): Redefine in terms of mn10300_processor.
1885         (PROCESSOR_DEFAULT, OVERRIDE_OPTIONS): New macros.
1886         * config/mn10300/linux.h (TARGET_SWITCHES, TARGET_DEFAULT): Delete.
1887         (PROCESSOR_DEFAULT): New macro.
1888         * config/mn10300/mn10300.c (mn10300_processor): New variable.
1889         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
1890         (mn10300_handle_option, mn10300_override_options): New functions.
1891         * config/mn10300/mn10300.opt: New file.
1892
1893 2005-04-05  Eric Botcazou  <ebotcazou@libertysurf.fr>
1894             Sebastian Pop <sebastian.pop@cri.ensmp.fr>
1895
1896         PR tree-optimization/19903
1897         * tree-chrec.c (chrec_convert): Return chrec_dont_know for constants
1898         that don't fit in their type after conversion.
1899
1900 2005-04-05  Uros Bizjak <uros@kss-loka.si>
1901
1902         PR target/20421
1903         * config/i386/i386.md (frndintxf2_floor, frndintxf2_ceil)
1904         (frndintxf2_trunc, frndintxf2_mask_pm): Add FLAGS_REG clobber.
1905         Allocate local stack slots here.  Set ix86_optimize_mode_switching.
1906         flag here. Implement using define_insn_and_split.  
1907         (frndintxf2_floor_i387, frndintxf2_ceil_i387, frndintxf2_trunc_i387)
1908         (frndintxf2_mask_pm_i387): New insn patterns.
1909         (floorsf2, floordf2, floorxf2): Remove local stack slot allocations.
1910         Do not set ix86_optimize_mode_switching flag.
1911         (ceilsf2, ceildf2, ceilxf2): Same.
1912         (btruncsf2, btruncdf2, btruncxf2): Same.
1913         (nearbyintsf2, nearbyintdf2, nearbyintxf2): Same.
1914
1915 2005-04-05  Ian Lance Taylor  <ian@airs.com>
1916
1917         PR debug/9963
1918         * config/i386/cygming.h (ASM_OUTPUT_EXTERNAL): Pass DECL to
1919         i386_pe_record_external_function.
1920         (i386_pe_record_external_function): Update declaration.
1921         * config/i386/winnt.c (struct extern_list): Add decl field.
1922         (i386_pe_record_external_function): Add decl parameter.
1923         (i386_pe_file_end): Check TREE_ASM_WRITTEN on decl, not
1924         identifier.
1925         * config/i386/i386-protos.h (i386_pe_record_external_function):
1926         Update declaration.
1927
1928 2005-04-05  Kazu Hirata  <kazu@cs.umass.edu>
1929
1930         * config/m68k/m68k-protos.h: Add a prototype for
1931         valid_dbcc_comparison_p_2.
1932         * config/m68k/m68k.c (not_sp_operand, symbolic_operand,
1933         extend_operator, const_uint32_operand, const_sint32_operand,
1934         general_src_operand, nonimmediate_src_operand,
1935         memory_src_operand, post_inc_operand, pre_dec_operand,
1936         pcrel_address): Move to predicates to predicates.md.
1937         * config/m68k/m68k.h (PREDICATE_CODES): Remove.
1938         * config/m68k/m68k.md: Include predicates.md.
1939         * config/m68k/predicates.md: New.
1940
1941 2005-04-04  Roger Sayle  <roger@eyesopen.com>
1942
1943         * config/i386/i386.md (*truncdfsf2_i387_1): New pattern.
1944
1945         * fold-const.c (maybe_lvalue_p): Delete orphaned comment.
1946
1947 2005-04-04  Ian Lance Taylor  <ian@airs.com>
1948
1949         * c-typeck.c (struct c_switch): Rename switch_stmt field to
1950         switch_expr.
1951         (c_start_case): Build SWITCH_EXPR, not SWITCH_STMT.
1952         (do_case): Use SWITCH_COND rather than SWITCH_STMT_COND.
1953         (c_finish_case): Use SWITCH_BODY rather than SWITCH_STMT_BODY.
1954         Call c_do_switch_expr_warnings rather than c_do_switch_warnings.
1955         * c-common.c (c_do_switch_warnings_1): New static function broken
1956         out of c_do_switch_warnings.
1957         (c_do_switch_warnings): Call c_do_switch_warnings_1.
1958         (c_do_switch_expr_warnings): New function.
1959         * c-common.h (c_do_switch_expr_warnings): Declare.
1960
1961 2005-04-04  David Edelsohn  <edelsohn@gnu.org>
1962             Daniel Jacobowitz  <dan@codesourcery.com>
1963
1964         * tree-eh.c (tree_could_trap_p): Allow non-constant floating point
1965         trapping divide.
1966         * rtlanal.c (may_trap_p): Same.
1967
1968 2005-04-04  Dale Johannesen  <dalej@apple.com>
1969
1970         * ChangeLog:  remove reference to ChangeLog.12.
1971
1972 2005-04-05  Hans-Peter Nilsson  <hp@axis.com>
1973
1974         CRIS epilogue as RTL.
1975         * config/cris/cris.md: Change all 0 in unspec 0 to
1976         CRIS_UNSPEC_PLT.
1977         (CRIS_UNSPEC_PLT, CRIS_UNSPEC_FRAME_DEALLOC): New constants.
1978         ("*cris_load_multiple", "cris_frame_deallocated_barrier"): New
1979         patterns.
1980         ("return"): Change to define_expand.  Call cris_expand_return for
1981         actual expansion.
1982         ("*return_expanded"): New pattern.
1983         ("epilogue"): New define_expand.
1984         * config/cris/cris.h (PREDICATE_CODES): Add
1985         cris_load_multiple_op.
1986         * config/cris/cris.c (ASSERT_PLT_UNSPEC): Correct test for unspec
1987         type.
1988         (enum cris_retinsn_type): New.
1989         (struct machine_function): New member return_type.
1990         (TARGET_ASM_FUNCTION_EPILOGUE): Don't override.
1991         (cris_target_asm_function_epilogue): Remove, moving RTLified
1992         contents to...
1993         (cris_expand_epilogue): New function.
1994         (cris_reg_saved_in_regsave_area, cris_movem_load_rest_p,
1995         (cris_gen_movem_load, cris_load_multiple_op)
1996         (cris_return_address_on_stack_for_return, cris_expand_return): New
1997         functions.
1998         (cris_target_asm_function_prologue)
1999         (cris_initial_frame_pointer_offset): Call
2000         cris_reg_saved_in_regsave_area instead of complicated expression.
2001         Call cris_return_address_on_stack instead of an expression.
2002         (cris_print_operand) <case 'o', case 'O'>: New cases.
2003         (cris_return_address_on_stack): Change return-type to bool.
2004         (cris_simple_epilogue): Ditto.  Return false if registers are
2005         saved.
2006         * config/cris/cris-protos.h (cris_simple_epilogue)
2007         (cris_return_address_on_stack): Adjust prototype return type.
2008         (cris_gen_movem_load, cris_expand_epilogue, cris_expand_return)
2009         (cris_return_address_on_stack_for_return): New prototypes.
2010
2011 2005-04-04  Kazu Hirata  <kazu@cs.umass.edu>
2012
2013         * config/frv/frv.h (PREDICATE_CODES): Add CONST to
2014         gpr_or_int12_operand.
2015
2016         * config/frv/frv-protos.h: Add a prototype to
2017         frv_legitimate_memory_operand and frv_const_unspec_p.
2018         (frv_unspec): Move from frv.c.
2019         * config/frv/frv.c (frv_unspec): Move to frv-protos.h.
2020         (frv_const_unspec_p, frv_legitimate_memory_operand_): Export.
2021         (ldd_address_operand, fdpic_fptr_operand, frv_load_operand,
2022         gpr_or_fpr_operand, gpr_or_int12_operand,
2023         gpr_fpr_or_int12_operand, fpr_or_int6_operand,
2024         gpr_or_int10_operand, gpr_or_int_operand, int12_operand,
2025         int6_operand, int5_operand, uint5_operand, uint4_operand,
2026         uint1_operand, int_2word_operand, uint16_operand,
2027         upper_int16_operand, integer_register_operand,
2028         gpr_no_subreg_operand, fpr_operand, even_reg_operand,
2029         odd_reg_operand, even_gpr_operand, odd_gpr_operand,
2030         quad_fpr_operand, even_fpr_operand, odd_fpr_operand,
2031         dbl_memory_one_insn_operand, dbl_memory_two_insn_operand,
2032         move_destination_operand, movcc_fp_destination_operand,
2033         frv_function_symbol_referenced_p, move_source_operand,
2034         condexec_dest_operand, condexec_source_operand,
2035         reg_or_0_operand, lr_operand, fdpic_operand, got12_operand,
2036         const_unspec_operand, gpr_or_memory_operand,
2037         gpr_or_memory_operand_with_scratch, fpr_or_memory_operand,
2038         icc_operand, fcc_operand, cc_operand, icr_operand,
2039         fcr_operand, cr_operand, call_operand, sibcall_operand,
2040         symbolic_operand, relational_operator,
2041         integer_relational_operator, float_relational_operator,
2042         ccr_eqne_operator, minmax_operator,
2043         condexec_si_binary_operator, condexec_si_media_operator,
2044         condexec_si_divide_operator, condexec_si_unary_operator,
2045         condexec_sf_conv_operator, condexec_sf_add_operator,
2046         condexec_memory_operand, intop_compare_operator, acc_operand,
2047         even_acc_operand, quad_acc_operand, accg_operand: Move to
2048         predicates.md.
2049         * config/frv/frv.h (PREDICATE_CODES): Remove.
2050         * config/frv/frv.md: Include predicates.md.
2051         * config/frv/predicates.md: New.
2052
2053 2004-04-04  Richard Sandiford  <rsandifo@redhat.com>
2054
2055         PR target/19537
2056         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on langhooks.h.
2057         * tree-ssa-loop-ivopts.c: Include langhooks.h.
2058         (add_standard_iv_candidates_for_size): New function, extracting code
2059         from add_standard_iv_candidates and parameterizing it by type size.
2060         (add_standard_iv_candidates): Use add_standard_iv_candidates_for_size.
2061
2062 2004-04-04  Richard Sandiford  <rsandifo@redhat.com>
2063
2064         * system.h (GCOV_SIZE_TYPE): Unposion.
2065         * gcov-io.h (GCOV_TYPE_NODE): Delete, replacing with...
2066         (GCOV_TYPE_SIZE): ...this new macro.
2067         * coverage.h (get_gcov_type, GCOV_TYPE_NODE): Declare.
2068         * coverage.c (get_gcov_type, get_gcov_unsigned_t): New functions.
2069         (rtl_coverage_counter_ref): Use GCOV_TYPE_SIZE.
2070         (build_fn_info_type, build_fn_info_value, build_ctr_info_type)
2071         (build_ctr_info_value, build_gcov_info): Use get_gcov_unsigned_t
2072         instead of unsigned_intSI_type_node.
2073         * rtl-profile.c (rtl_gen_interval_profiler, rtl_gen_pow2_profiler)
2074         (rtl_gen_one_value_profiler_no_edge_manipulation)
2075         (rtl_gen_const_delta_profiler): Use GCOV_TYPE_SIZE.
2076         * value-prof.c: Include coverage.h.
2077
2078 2005-04-02  Daniel Berlin  <dberlin@dberlin.org>
2079             Diego Novillo <dnovillo@redhat.com>
2080             
2081         Fix PR tree-optimization/20703
2082         Fix PR tree-optimization/20725
2083         
2084         * tree-ssa-pre.c (phi_translate): Handle tcc_comparison.
2085         (create_expression_by_pieces): Ditto.
2086         (valid_in_set): Ditto. Also handle tcc_declaration.
2087         (find_or_generate_expression): Handle comparison class.
2088         (insert_into_preds_of_block): Ditto.
2089         (insert_aux): Ditto.
2090         (create_value_expr_from): Handle comparison class, recursively
2091         handle reference nodes.
2092         (compute_avail): Handle comparison classes, rewrite a little cleaner.
2093         (execute_pre): Fix spacing.
2094         (do_fre): Renamed to execute_fre.
2095
2096 2005-04-04  Eric Botcazou  <ebotcazou@libertysurf.fr>
2097
2098         * doc/invoke.texi (SPARC options): Document that
2099         -mlittle-endian is not supported on Linux either.
2100
2101 2005-04-04  Eric Botcazou  <ebotcazou@libertysurf.fr>
2102
2103         PR target/4198
2104         PR target/12027
2105         * config.gcc (Obsolete configurations): Remove
2106         sparclite-*-coff*, sparclite-*-elf* and sparc86x-*-elf*.
2107         (sparclite-*-coff*): Delete.
2108         (sparclite-*-elf*): Likewise.
2109         (sparc86x-*-elf*): Likewise.
2110         (target_cpu_default) <sparc*-*-*>: Remove sparc86x.
2111         * config/sparc/lite.h: Delete.
2112         * config/sparc/litecoff.h: Likewise.
2113         * config/sparc/liteelf.h: Likewise.
2114         * config/sparc/sp86x-elf.h: Likewise.
2115         * config/sparc/t-sparclite: Likewise.
2116         * config/sparc/t-sp86x: Likewise.
2117
2118 2005-04-04  Adrian Straetling  <straetling@de.ibm.com>
2119
2120         * config/s390/s390-protos.h: (s390_comparison,
2121         s390_alc_comparison, s390_slb_comparison, const0_operand,
2122         consttable_operand, larl_operand, s_operand,
2123         shift_count_operand, bras_sym_operand, load_multiple_operation,
2124         store_multiple_operation, s390_plus_operand): Remove prototypes.
2125         (s390_legitimate_address_without_index_p): New prototype.
2126         * config/s390/s390.c: (SYMBOL_FLAG_ALIGN1, DISP_IN_RANGE): Move
2127         to s390.h.
2128         (s390_comparison, s390_alc_comparison, s390_slb_comparison,
2129         const0_operand, consttable_operand, larl_operand, s_operand,
2130         shift_count_operand, bras_sym_operand, load_multiple_operation,
2131         store_multiple_operation, s390_plus_operand): Move to
2132         predicates.md.
2133         (check_mode): Remove.
2134         (s390_branch_condition_mask): Remove 'static'. Move prototype to
2135         s390-protos.h.
2136         (s390_legitimate_address_without_index_p): New.
2137         * config/s390/s390.h (PREDICATE_CODES): Remove.
2138         * config/s390/s390.md: Include predicates.md.
2139         * config/s390/predicates.md: New.
2140
2141 2005-04-04  Eric Botcazou  <ebotcazou@libertysurf.fr>
2142
2143         PR target/20446
2144         * config/sparc/sparc.h (NEED_INDICATE_EXEC_STACK): Define to 0.
2145         * config/sparc/linux.h (TARGET_ASM_FILE_END): Delete.
2146         (NEED_INDICATE_EXEC_STACK): Define to 1.
2147         * config/sparc/linux64.h (TARGET_ASM_FILE_END): Delete.
2148         (NEED_INDICATE_EXEC_STACK): Define to 1.
2149         * config/sparc/sparc.c (TARGET_ASM_FILE_END): Set to sparc_file_end.
2150         (add_pc_to_pic_symbol): Rename into pic_helper_symbol.
2151         (add_pc_to_pic_symbol_name): Rename into pic_helper_symbol_name.
2152         (pic_helper_emitted_p): New global.
2153         (emit_pic_helper): New function extracted from...
2154         (load_pic_register): ...here.  Add 'delay_pic_helper' parameter.
2155         Do not call emit_pic_helper if delay_pic_helper is true.
2156         (sparc_expand_prologue): Pass 'false' to load_pic_register.
2157         (sparc_output_mi_thunk): Pass 'true' to load_pic_register.
2158         (sparc_file_end): New function.
2159
2160 2005-04-04  Kazu Hirata  <kazu@cs.umass.edu>
2161
2162         * config/mcore/mcore-protos.h: Remove the prototypes for
2163         mcore_arith_reg_operand, mcore_general_movsrc_operand,
2164         mcore_general_movdst_operand, mcore_reload_operand,
2165         mcore_arith_J_operand, mcore_arith_K_operand,
2166         mcore_arith_K_operand_not_0, mcore_arith_M_operand,
2167         mcore_arith_K_S_operand, mcore_arith_imm_operand,
2168         mcore_arith_any_imm_operand, mcore_arith_O_operand,
2169         mcore_literal_K_operand, mcore_addsub_operand,
2170         mcore_compare_operand, mcore_load_multiple_operation,
2171         mcore_store_multiple_operation, mcore_call_address_operand.
2172         Add a prototype for const_ok_for_mcore.
2173         * config/mcore/mcore.c (mcore_call_address_operand,
2174         mcore_general_movsrc_operand, mcore_general_movdst_operand,
2175         mcore_arith_reg_operand, mcore_reload_operand,
2176         mcore_arith_J_operand, mcore_arith_K_operand,
2177         mcore_arith_K_operand_not_0, mcore_arith_K_S_operand,
2178         mcore_arith_M_operand, mcore_arith_imm_operand,
2179         mcore_arith_any_imm_operand, mcore_arith_O_operand,
2180         mcore_literal_K_operand, mcore_addsub_operand,
2181         mcore_compare_operand, mcore_load_multiple_operation,
2182         mcore_store_multiple_operation): Move to predicates.md.
2183         (const_ok_for_mcore): Export.
2184         * config/mcore/mcore.h (PREDICATE_CODES): Remove.
2185         * config/mcore/mcore.md: Include predicates.md.
2186         * config/mcore/predicates.md: New.
2187
2188         * config/mcore/predicates.md: Fix a comment typo.
2189
2190 2005-04-04  Andreas Krebbel  <krebbel1@de.ibm.com>
2191             Adrian Straetling  <straetling@de.ibm.com>
2192
2193         * config/s390/2064.md ("z_mul", "z_inf"): New insn reservations.
2194         * config/s390/2084.md ("x_mul_hi", "x_mul_sidi", "x_div"): Likewise.
2195         * config/s390/s390.md ("imulhi", "imulsi", "imuldi"): Added to "type"
2196         attribute.
2197         ("imul"): Removed from "type" attribute.
2198         ("*muldi3_sign", "muldi3"): Changed type to imuldi.
2199         ("mulsi3/1", "mulsi3/3", "mulsi/4", "mulsidi3", "umulsidi3"): 
2200         Changed type to imulsi.
2201         ("*mulsi3_sign", "mulsi3/2"): Changed type to imulhi.
2202
2203 2005-04-04  Richard Sandiford  <rsandifo@redhat.com>
2204
2205         * config/mcore/mcore.h (target_flags, HARDLIT_BIT, ALIGN8_BIT, DIV_BIT)
2206         (RELAX_IMM_BIT, W_FIELD_BIT, OVERALIGN_FUNC_BIT, CGDATA_BIT)
2207         (SLOW_BYTES_BIT, LITTLE_END_BIT, M340_BIT, TARGET_HARDLIT)
2208         (TARGET_DIV, TARGET_RELAX_IMM, TARGET_W_FIELD, TARGET_OVERALIGN_FUNC)
2209         (TARGET_CG_DATA, TARGET_SLOW_BYTES, TARGET_LITTLE_END, TARGET_M340)
2210         (TARGET_SWITCHES, mcore_stack_increment_string)
2211         (TARGET_OPTIONS): Delete.
2212         (TARGET_DEFAULT, OPTIMIZATION_OPTIONS): Use MASK_* constants rather
2213         than *_BIT constants.
2214         (TARGET_8ALIGN): #undef old definition before redefining to 1.
2215         * config/mcore/mcore.c (mcore_stack_increment_string): Delete.
2216         (TARGET_DEFAULT_TARGET_FLAGS): Override default to TARGET_DEFAULT.
2217         (mcore_override_options): Delete mcore_stack_increment code.
2218         Change use of M340_BIT to MASK_M340.
2219         * config/mcore/mcore.opt: New file.
2220
2221 2005-04-04  Ian Lance Taylor  <ian@airs.com>
2222
2223         * config/arm/arm.c (replace_symbols_in_block): Remove static
2224         function.
2225
2226 2005-04-04  Kazu Hirata  <kazu@cs.umass.edu>
2227
2228         * config/fr30/fr30-protos.h: Remove the prototypes for
2229         stack_add_operand, add_immediate_operand,
2230         high_register_operand, low_register_operand, call_operand,
2231         di_operand, and nonimmediate_di_operand.
2232         * config/fr30/fr30.c (stack_add_operand,
2233         add_immediate_operand, high_register_operand,
2234         low_register_operand, call_operand, di_operand,
2235         nonimmediate_di_operand): Move to predicates.md.
2236         * config/fr30/fr30.h (PREDICATE_CODES): Remove.
2237         * config/fr30/fr30.md: Include predicates.md.
2238         * config/fr30/predicates.md: New.
2239
2240         * config/mcore/mcore.h (PREDICATE_CODES): Add SYMBOL_REF and
2241         LABEL_REF to mcore_general_movsrc_operand.  Add SYMBOL_REF to
2242         mcore_call_address_operand.
2243
2244         * config/sh/sh.h (PREDICATE_CODES): Add CONST to
2245         general_movsrc_operand.
2246
2247 2005-04-04  Alan Modra  <amodra@bigpond.net.au>
2248
2249         * passes.c (rest_of_handle_final): NULL unlikely_text_section_name
2250         after freeing.
2251
2252 2005-04-04  Richard Earnshaw  <richard.earnshaw@arm.com>
2253
2254         PR target/14812
2255         * arm.c (arm_select_cc_mode): Return CC_Zmode when comparing against
2256         a negated value.
2257
2258 2005-04-04  Richard Henderson  <rth@redhat.com>
2259             Jakub Jelinek  <jakub@redhat.com>
2260
2261         PR rtl-optimization/16104
2262         * fold-const.c (fold_unary): Fix folding of vector conversions.
2263
2264 2005-04-04  Richard Sandiford  <rsandifo@redhat.com>
2265
2266         * config.gcc (xstormy16-*-elf): Set extra_options.
2267         * config/stormy16/stormy16.h (target_flags, TARGET_SWITCHES): Delete.
2268         * config/stormy16/stormy16.opt: New file.
2269
2270 2005-04-04  Richard Sandiford  <rsandifo@redhat.com>
2271
2272         * config/pdp11/pdp11.h (target_flags, TARGET_SWITCHES, TARGET_DEFAULT)
2273         (TARGET_FPU, TARGET_SOFT_FLOAT, TARGET_AC0, TARGET_NO_AC0, TARGET_45)
2274         (TARGET_BCOPY_BUILTIN, TARGET_INT16, TARGET_INT32, TARGET_FLOAT32)
2275         (TARGET_FLOAT64, TARGET_ABSHI_BUILTIN, TARGET_BRANCH_EXPENSIVE)
2276         (TARGET_BRANCH_CHEAP, TARGET_SPLIT, TARGET_NOSPLIT)
2277         (TARGET_UNIX_ASM): Delete.
2278         (TARGET_40_PLUS): Redefine in terms of TARGET_40 and TARGET_45.
2279         * config/pdp11/2bsd.h (TARGET_UNIX_ASM_DEFAULT): Use MASK_UNIX_ASM.
2280         * config/pdp11/pdp11.c (pdp11_handle_option): New function.
2281         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
2282         * config/pdp11/pdp11.opt: New file.
2283
2284 2005-04-03  Roger Sayle  <roger@eyesopen.com>
2285             Alexandre Oliva  <aoliva@redhat.com>
2286
2287         PR c++/19199
2288         * fold-const.c (non_lvalue): Split tests into...
2289         (maybe_lvalue_p): New function.
2290         (fold_cond_expr_with_comparison): Preserve lvalue-ness for the
2291         C++ front-end prior to lowering into gimple form.
2292
2293 2005-04-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2294
2295         * builtins.def (BUILT_IN_STPNCPY, BUILT_IN_STRCASECMP,
2296         BUILT_IN_STRNCASECMP): New.
2297         * doc/extend.texi: Document stpncpy, strcasecmp, strncasecmp
2298         and strndup.
2299
2300 2005-04-03  Richard Earnshaw  <richard.earnshaw@arm.com>
2301
2302         PR target/14812
2303         * arm.md (addsi3_compare0_for_combiner): Delete.
2304         (addsi3_compare0_scratch_for_combiner): Delete.
2305         (cmpsi_neg_shiftsi): Delete.
2306         (compare_negsi_si): New pattern.
2307         (cmpsi_negshiftsi_si): New pattern.
2308         (negated_cbranchsi4): Restrict to equality_operator.
2309         
2310         * arm.md (movhi_insn_arch4): delete trailing white space from assembler
2311         template.
2312
2313 2005-04-03  Kazu Hirata  <kazu@cs.umass.edu>
2314
2315         * cfghooks.c, cfgrtl.c, modulo-sched.c, config/i386/winnt.c:
2316         Fix comment typos.
2317
2318         * doc/install.texi: Fix a typo.
2319
2320 2005-04-03  Steven Bosscher  <stevenb@suse.de>
2321
2322         PR middle-end/20648
2323         * bb-reorder.c (duplicate_computed_gotos): Do not unfactor
2324         a computed goto if the edge to the computed goto block has
2325         incoming abnormal edges.  Clarify how the function works.
2326
2327 2005-04-03  Nathan Sidwell  <nathan@codesourcery.com>
2328
2329         * params.c (set_param_value): Use gcc_assert & gcc_unreachable.
2330         * passes.c (open_dump_file, rest_of_handle_final): Likewise.
2331         * postreload-gcse.c (expr_equiv_p, oprs_unchanged_p,
2332         hash_scan_set, reg_set_between_after_reload_p,
2333         reg_used_between_after_reload_p, get_avail_load_store_reg,
2334         eliminate_partially_redundant_load): Likewise.
2335         * postreload.c (reload_cse_simplify_set,
2336         reload_combine_note_use): Likewise.
2337         * predict.c (predict_insn, expected_value_to_br_prob,
2338         propagate_freq, expensive_function_p): Likewise.
2339         * print-rtl.c (print_rtx): Likewise.
2340         * profile.c (instrument_edges, instrument_values,
2341         compute_branch_probabilities, branch_prob, union_groups,
2342         tree_register_profile_hooks, rtl_register_profile_hooks): Likewise.
2343         * protoize.c (in_system_include_dir, file_could_be_converted,
2344         file_normally_convertible, gen_aux_info_file, seek_to_line,
2345         do_cleaning): Likewise.
2346         * tree-ssa-alias.c (collect_points_to_info_r): Likewise.
2347         * tree-ssa-ccp.c (execute_fold_all_builtins): Likewise.
2348         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
2349
2350 2005-04-03 Mostafa Hagog <mustafa@il.ibm.com>
2351
2352         * cfg.c (clear_bb_flags): Don't clear BB_DISABLE_SCHEDULE.
2353         * modulo-sched.c (undo_replace_buff_elem): New structure.
2354         (kernel_number_of_cycles, ps_unschedule_node,
2355         undo_generate_reg_moves,free_undo_replace_buff,
2356         undo_permute_partial_schedule,  loop_single_full_bb_p,
2357         SIMPLE_SMS_LOOP_P, loop_canon_p, canon_loop,
2358         build_loops_structure, get_sched_window): New.
2359         (generate_reg_moves): Return undo_replace_buff_elem and other
2360         fixes.
2361         (generate_prolog_epilog): Remove old loop versioning.
2362         (sms_schedule): Use loop information and loop_version.
2363         (sms_schedule_by_order): Split part of it to get_sched_window.
2364         * passes.c (rest_of_handle_sms): call cfg_layout_initialize
2365         cfg_layout_finalize and free_dominance_info before/after SMS.
2366
2367 2005-04-03 Mostafa Hagog <mustafa@il.ibm.com>
2368
2369         * cfghooks.c (lv_flush_pending_stmts,
2370         cfg_hook_duplicate_loop_to_header_edge, extract_cond_bb_edges,
2371         lv_adjust_loop_header_phi, lv_add_condition_to_bb): New.
2372         * cfghooks.h (cfg_hook_duplicate_loop_to_header_edge,
2373         lv_add_condition_to_bb,
2374         lv_adjust_loop_header_phi, extract_cond_bb_edges,
2375         flush_pending_stmts): New in cfg_hooks structure.
2376         (cfg_hook_duplicate_loop_to_header_edge, lv_flush_pending_stmts,
2377         extract_cond_bb_edges, lv_adjust_loop_header_phi,
2378         lv_add_condition_to_bb): New declarations.
2379         * cfgloop.h (duplicate_loop_to_header_edge): Change return type to
2380         bool.
2381         (loop_version): Declare.
2382         * cfgloopmanip.c (cfghooks.h): Include.
2383         (duplicate_loop_to_header_edge): Change return type to bool.
2384         (loop_version, lv_adjust_loop_entry_edge): Move here.
2385         * cfgrtl.c (cfgloop.h): Include.
2386         (rtl_verify_flow_info_1): Fix.
2387         (rtl_lv_add_condition_to_bb, rtl_extract_cond_bb_edges): New.
2388         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add hooks to
2389         initialization.
2390         * tree-cfg.c (tree_lv_adjust_loop_header_phi,
2391         tree_lv_add_condition_to_bb): New.
2392         (tree_cfg_hooks): Add new hooks to initialization.
2393         * tree-ssa-loop-manip.c (lv_adjust_loop_header_phi,
2394         lv_adjust_loop_entry_edge, tree_ssa_loop_version): Remove.
2395
2396 2005-04-03  Kazu Hirata  <kazu@cs.umass.edu>
2397
2398         * config/stormy16/stormy16.h (PREDICATE_CODES): Add SUBREG to
2399         xstormy16_below100_or_register,
2400         xstormy16_splittable_below100_or_register, and
2401         nonimmediate_nonstack_operand.
2402
2403         * config/stormy16/stormy16-protos.h: Remove the prototypes for
2404         xstormy16_ineqsi_operator, equality_operator,
2405         inequality_operator, shift_operator,
2406         xstormy16_below100_operand, xstormy16_below100_or_register,
2407         xstormy16_splittable_below100_or_register,
2408         xstormy16_onebit_set_operand, xstormy16_onebit_clr_operand.
2409         * config/stormy16/stormy16.c (xstormy16_ineqsi_operator,
2410         equality_operator, inequality_operator,
2411         xstormy16_below100_operand, xstormy16_below100_or_register,
2412         xstormy16_splittable_below100_or_register,
2413         xstormy16_onebit_set_operand, xstormy16_onebit_clr_operand,
2414         nonimmediate_nonstack_operand, shift_operator): Move to
2415         predicates.md.
2416         * config/stormy16/stormy16.h (PREDICATE_CODES): Remove.
2417         * config/stormy16/stormy16.md: Include predicates.md.
2418         * config/stormy16/predicates.md: New.
2419
2420 2005-04-02  Kazu Hirata  <kazu@cs.umass.edu>
2421
2422         * config/iq2000/iq2000.c (uns_arith_operand, arith_operand,
2423         small_int, large_int, reg_or_0_operand, simple_memory_operand,
2424         equality_op, cmp_op, pc_or_label_operand, call_insn_operand,
2425         move_operand, power_of_2_operand): Move to predicates.md.
2426         * config/iq2000/iq2000.h (SPECIAL_MODE_PREDICATES,
2427         PREDICATE_CODE): Remove.
2428         * config/iq2000/iq2000.md: Include predicates.md.
2429         * config/iq2000/predicates.md: New.
2430
2431 2005-04-02  Richard Sandiford  <rsandifo@redhat.com>
2432
2433         * config/m68hc11/m68hc11.h (target_flags, MASK_SHORT)
2434         (MASK_AUTO_INC_DEC, MASK_M6811, MASK_M6812, MASK_M68S12)
2435         (MASK_NO_DIRECT_MODE, MASK_MIN_MAX, MASK_LONG_CALLS)
2436         (TARGET_SHORT, TARGET_M6811, TARGET_M6812, TARGET_M68S12)
2437         (TARGET_AUTO_INC_DEC, TARGET_MIN_MAX, TARGET_NO_DIRECT_MODE)
2438         (TARGET_LONG_CALLS, TARGET_SWITCHES, TARGET_OPTIONS)
2439         (SUBTARGET_SWITCHES, SUBTARGET_OPTIONS, m68hc11_regparm_string)
2440         (m68hc11_reg_alloc_order, m68hc11_soft_reg_count)
2441         (TARGET_M68HC11): Delete.
2442         (TARGET_DEFAULT): Change the default setting from MASK_M6811 to 0.
2443         * config/m68hc11/m68hc12.h (TARGET_M68HC12): Delete.
2444         * config/m68hc11/m68hc11.c (m68hc11_regparm_string)
2445         (m68hc11_reg_alloc_order, m68hc11_soft_reg_count)
2446         (nb_soft_regs): Delete.
2447         (TARGET_DEFAULT_TARGET_FLAGS): Override default with TARGET_DEFAULT.
2448         (m68hc11_override_options): Remove the code that caters for MASK_M6811
2449         and MASK_M6812 being set simultaneously.  Change the code that sets
2450         the default m68hc11_soft_reg_count to use integers instead of strings.
2451         (m68hc11_conditional_register_usage, hard_regno_mode_ok): Use
2452         m68hc11_soft_reg_count (which now has an int type) as the number
2453         of soft registers.
2454         * config/m68hc11/m68hc11.opt: New file.
2455
2456 2005-04-02  Kazu Hirata  <kazu@cs.umass.edu>
2457
2458         * config/fr30/fr30.h (PREDICATE_CODES): Remove
2459         fp_displacement_operand, sp_displacement_operand.
2460
2461         * config/m68hc11/m68hc11-protos.h: Add a prototype for
2462         m68hcc_auto_inc_p.
2463         Remove the prototypes for tst_operand, cmp_operand,
2464         stack_register_operand, d_register_operand,
2465         hard_addr_reg_operand, splitable_operand,
2466         m68hc11_logical_operator, m68hc11_arith_operator,
2467         m68hc11_non_shift_operator, m68hc11_shift_operator,
2468         m68hc11_unary_operator, m68hc11_eq_compare_operator,
2469         non_push_operand, hard_reg_operand, and
2470         reg_or_some_mem_operand.
2471         * config/m68hc11/m68hc11.c (m68hcc_auto_inc_p): Make it
2472         extern.
2473         (tst_operand, cmp_operand, non_push_operand,
2474         splitable_operand, reg_or_some_mem_operand,
2475         stack_register_operand, d_register_operand,
2476         hard_addr_reg_operand, hard_reg_operand,
2477         m68hc11_eq_compare_operator, m68hc11_logical_operator,
2478         m68hc11_arith_operator, m68hc11_non_shift_operator,
2479         m68hc11_shift_operator, m68hc11_unary_operator): Move to
2480         predicates.md.
2481         * config/m68hc11/m68hc11.h (PREDICATE_CODES): Remove.
2482         * config/m68hc11/m68hc11.md: Include predicates.md.
2483         * config/m68hc11/predicates.md: New.
2484
2485 2005-04-02  Alexandre Oliva  <aoliva@redhat.com>
2486
2487         PR debug/19345
2488         * dwarf2out.c (add_abstract_origin_attribute): Revert accidental
2489         change checked in along with 2005-03-03's patch for debug/20253.
2490         * tree-inline.c (remap_type): Remap TYPE_STUB_DECL.
2491         (remap_decl): Insert type decl in map earlier.
2492
2493 2005-04-02  Alexandre Oliva  <aoliva@redhat.com>
2494
2495         PR tree-optimization/20640
2496         * tree-ssa-dce.c (remove_dead_stmt): Don't redirect edge to
2497         post-dominator if it has phi nodes.
2498         (eliminate_unnecessary_stmts): Remove dead phis in all blocks
2499         before dead statements.
2500
2501 2005-04-02  Alexandre Oliva  <aoliva@redhat.com>
2502
2503         PR middle-end/20491
2504         * final.c (alter_subreg): Don't call subreg_regno for a non-REG.
2505
2506 2005-04-02  Alexandre Oliva  <aoliva@redhat.com>
2507
2508         PR rtl-optimization/20290
2509         * loop.c (for_each_insn_in_loop): Don't assume the loop body runs
2510         in every iteration if the entry point is the exit test.
2511
2512 2005-04-02  Hans-Peter Nilsson  <hp@axis.com>
2513
2514         * config/cris/cris.md (attribute "length"): Define.
2515
2516 2005-04-02  Geoffrey Keating  <geoffk@apple.com>
2517
2518         * config/rs6000/predicates.md (indexed_or_indirect_operand): New.
2519         (word_offset_memref_operand): New.
2520         * config/rs6000/rs6000-protos.h (word_offset_memref_operand): Delete.
2521         (indexed_or_indirect_operand): Delete.
2522         * config/rs6000/rs6000.c (word_offset_memref_operand): Delete.
2523         (indexed_or_indirect_operand): Delete.
2524
2525         * config/rs6000/t-darwin8: Comment out ppc64 multilib.
2526
2527         PR 20650
2528         * config/rs6000/rs6000.md (fix_truncdfsi2): Make destination
2529         a register.
2530
2531         * config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Add -pipe.
2532         * config/t-darwin (TARGET_LIBGCC2_CFLAGS): Likewise.
2533
2534 2005-04-01  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
2535
2536         * gcc/config/vax/vax.md: Spellcheck, fix whitespace.
2537
2538 2005-04-01  Ian Lance Taylor  <ian@airs.com>
2539
2540         * gcc.c: Don't include <sys/resource.h> or declare getrusage.
2541         (rus, prus): Remove static variables.
2542         (execute): Use pex_run/pex_get_status rather than pexecute/pwait.
2543         (process_command): Permit report_times and use_pipes together.
2544
2545 2005-04-01  Joseph S. Myers  <joseph@codesourcery.com>
2546
2547         * c-decl.c (validate_proto_after_old_defn): Look at
2548         TYPE_MAIN_VARIANT of argument types.
2549
2550 2005-04-01  Paul Brook  <paul@codesourcery.com>
2551
2552         * config/arm/arm.c (thumb_call_via_label): Include space for SP.
2553         (arm_output_function_epilogue): Allow call_via_SP.
2554         (thumb_call_via_reg, arm_file_end): Ditto.
2555         * config/arm/arm.h (struct machine_function): Include space for SP.
2556         (thumb_call_via_label): Update declaration.
2557
2558 2005-04-01  Ian Lance Taylor  <ian@airs.com>
2559
2560         * final.c (final_scan_insn): Revert part of 2005-03-30 patch: when
2561         doing a peephole optimization, once again put any notes in the
2562         proper position.
2563
2564 2005-04-01  Kazu Hirata  <kazu@cs.umass.edu>
2565
2566         * bb-reorder.c, fold-const.c, varasm.c: Fix comment typos.
2567
2568 2005-04-01  Nathan Sidwell  <nathan@codesourcery.com>
2569
2570         * local-alloc.c (update_equiv_regs): Use gcc_assert, gcc_unreachable.
2571         (block_alloc, find_free_reg): Likewise.
2572         * loop-doloop.c (doloop_modify): Likewise.
2573         * loop-invariant.c (record_use): Likewise.
2574         * loop-iv.c (get_biv_step_1, get_biv_step, iv_analyze,
2575         get_iv_value, canon_condition, eliminate_implied_condition,
2576         eliminate_implied_condition, simplify_using_initial_values,
2577         shorten_into_mode, canonicalize_iv_subregs,
2578         iv_number_of_iterations): Likewise.
2579         * loop-unroll.c (expand_var_during_unrolling): Likewise.
2580         * loop-unswitch.c (compare_and_jump_seq, unswitch_single_loop,
2581         unswitch_loop): Likewise.
2582         * loop.c (INSN_LUID, loop_optimize, rtx_equal_for_loop_p,
2583         move_movables, replace_call_address, find_and_verify_loops,
2584         rtx_equal_for_prefetch_p, fold_rtx_mult_add, loop_iterations,
2585         record_giv, final_giv_value, general_induction_var,
2586         simplify_giv_expr, extension_within_bounds_p, try_copy_prop,
2587         loop_giv_dump): Likewise.
2588
2589         * gcov-io.h (GCOV_CHECK, GCOV_CHECK_READING,
2590         GCOV_CHECK_WRITING): Remove.
2591         (gcov_position, gcov_rewrite): Use gcc_assert.
2592         * gcov-io.c (gcov_open, gcov_write_words, gcov_write_length,
2593         gcov_read_words, gcov_sync, gcov_seek): Use gcc_assert.
2594         * libgcov.c (__gcov_merge_single, __gcov_merge_delta): Use
2595         gcc_assert.
2596
2597 2005-04-01  Kazu Hirata  <kazu@cs.umass.edu>
2598
2599         * tree-inline.c: Fix a typo.
2600
2601 2005-04-01  Nathan Sidwell  <nathan@codesourcery.com>
2602
2603         * configure.ac (enable-checking): Explicitly set all variables for
2604         collective switch values.  Alphabetize variables. Rename
2605         ac_checking_valgrind to ac_valgrind_checking.  Allow 'none' as
2606         synonym for 'no'.
2607         * doc/install.texi (enable-checking): Update documentation.
2608         * configure: Rebuilt.
2609
2610 2005-04-01  Kazu Hirata  <kazu@cs.umass.edu>
2611
2612         * tree-inline.c (copy_body_r): Use CONSTANT_CLASS_P where
2613         possible.
2614
2615 2005-04-01  Richard Earnshaw  <richard.earnshaw@arm.com>
2616
2617         * arm.c (adjacent_mem_locations): Reject volatile memory refs.
2618         Also reject cases where this pattern will cause load delay stalls
2619         unless optimizing for size and it will produce a shorter sequence.
2620         * arm.md (arith_adjacent_mem): Make better use of ldm addressing
2621         variants to avoid pre-adjusting the base when possible.
2622
2623 2005-04-01  Richard Earnshaw  <richard.earnshaw@arm.com>
2624
2625         * arm.md (minmax_arithsi): Reject all eliminable registers, not just
2626         the frame and argument pointers.
2627         (strqi_preinc, strqi_predec, loadqi_preinc, loadqi_predec): Likewise.
2628         (loadqisi_preinc, loadqisi_predec, strsi_preinc): Likewise.
2629         (strsi_predec, loadsi_preinc, loadsi_predec): Likewise.
2630         (strqi_shiftpreinc, strqi_shiftpredec, loadqi_shiftpreinc): Likewise.
2631         (loadqi_shiftpredec, strsi_shiftpreinc, strsi_shiftpredec): Likewise.
2632         (loadsi_shiftpreinc, loadsi_shiftpredec): Likewise.
2633
2634 2005-04-01  Danny Smith  <dannysmith@users.sourceforge.net>
2635
2636         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Define,
2637         with entry for selectany attribute.
2638         * config/i386/i386-protos.h (ix86_handle_selectany_attribute):
2639         Declare.
2640         * config/i386/winnt.c (ix86_handle_selectany_attribute): Define.
2641         (i386_pe_asm_named_section): Handle sections generated by
2642         selectany attribute.
2643         * doc/extend.texi (selectany): Document attribute.
2644
2645 2005-04-01  Paolo Bonzini  <bonzini@gnu.org>
2646             Jan Hubicka  <jh@suse.cz>
2647
2648         * config/i386/i386.c (ix86_decompose_address): Look inside SUBREGs
2649         to fix addresses involving EBP and ESP.
2650         (aligned_operand, legitimate_address_p, ix86_address_cost): Be prepared
2651         for SUBREGed registers.
2652         (legitimate_address_p): Accept SUBREGed registers.
2653
2654 2005-04-01  Jakub Jelinek  <jakub@redhat.com>
2655
2656         PR c++/19406
2657         * dwarf2out.c (gen_type_die_for_member): Handle FIELD_DECL.
2658         (dwarf2out_imported_module_or_decl): Use gen_type_die_for_member
2659         for FIELD_DECLs.
2660
2661 2005-04-01  Kazu Hirata  <kazu@cs.umass.edu>
2662
2663         * doc/contrib.texi, doc/invoke.texi, doc/tm.texi: Fix typos.
2664
2665 2005-04-01  James E Wilson  <wilson@specifixinc.com>
2666
2667         PR c++/20505
2668         * dwarf2out.c (rtl_for_decl_init): New function.
2669         (rtl_for_decl_location): Extracted from here.
2670         (tree_add_const_value_attribute): Call rtl_for_decl_init and
2671         add_const_value_attribute.  Delete initializer_constant_valid_p call.
2672
2673 2005-04-01  Kazu Hirata  <kazu@cs.umass.edu>
2674
2675         * cgraphunit.c, dbxout.c, flow.c, gcse.c, gimplify.c,
2676         lambda-code.c, loop.c, machmode.def, mips-tfile.c,
2677         modulo-sched.c, passes.c, postreload-gcse.c, tree-eh.c,
2678         tree-ssa-ccp.c, varasm.c, config/frv/frv.c, config/frv/frv.h,
2679         config/frv/frv.md, config/i386/i386.c, config/i386/i386.h,
2680         config/i386/i386.md, config/rs6000/predicates.md,
2681         config/rs6000/rs6000.c, config/s390/fixdfdi.h,
2682         config/s390/s390.c, config/stormy16/stormy16.c,
2683         config/stormy16/stormy16.md, config/vax/vax.md: Fix comment
2684         typos.
2685
2686 2005-04-01  Joseph S. Myers  <joseph@codesourcery.com>
2687
2688         PR c/17855
2689         * gimplify.c (gimplify_expr): Create a temporary for lvalue
2690         COND_EXPR and CALL_EXPR.
2691
2692 2005-03-31  Vladimir Makarov  <vmakarov@redhat.com>
2693
2694         PR target/20632
2695         * genautomata.c (first_cycle_unit_presence): Check all alternative
2696         states for unit presence.
2697
2698         * doc/md.texi: Remove remark about impossibility to query unit
2699         presence in non nondeterministic automaton state.
2700         
2701         * config/ia64/ia64.c (get_template): Change order of unit querying.
2702
2703 2005-03-31  Kazu Hirata  <kazu@cs.umass.edu>
2704
2705         * tree-ssa-dom.c (cprop_into_successor_phis): Remove an
2706         obsolete comment.
2707
2708 2005-03-31  Zdenek Dvorak  <dvorakz@suse.cz>
2709
2710         * cfgloopanal.c (mark_loop_exit_edges): Clean EDGE_LOOP_EXIT
2711         flag for edges outside any loops.
2712
2713 2005-03-31  Janis Johnson  <janis187@us.ibm.com>
2714
2715         * doc/sourcebuild.texi (Test Directives): Describe cleanup-* procs.
2716
2717 2005-03-31  Kazu Hirata  <kazu@cs.umass.edu>
2718
2719         * tree-ssa-alias.c: Follow spelling conventions.
2720         * doc/tree-ssa.texi: Fix a typo.
2721
2722 2005-03-31  J"orn Rennecke <joern.rennecke@st.com>
2723
2724         * postreload-gcse.c: Include target.h.
2725         (gcse_after_reload_main): Return early if we cannot modify jumps.
2726         * Makefile.in (postreload-gcse.o): Depend on $(TARGET_H).
2727
2728 2005-03-31  David Edelsohn  <edelsohn@gnu.org>
2729
2730         * tree-ssa-loop-im.c (stmt_cost): Add RDIV_EXPR to list of
2731         expensive operations.
2732
2733 2005-03-31  Ian Lance Taylor  <ian@airs.com>
2734
2735         * collect2.c (lderrout): New variable.
2736         (collect_exit): Dump ldout to stdout.  Dump and unlink lderrout,
2737         if it is set, to stderr.
2738         (handler): Unlink lderrout if it is set.
2739         (dump_file): Add "to" parameter.  Change all callers.
2740         (main): Initialize lderrout.
2741         (collect_execute): Add errname parameter.  Change all callers.
2742         Rename redir parameter to outname.  Never pass
2743         PEX_STDERR_TO_STDOUT to pex_run.
2744         * collect2.h (collect_execute, dump_file): Update declarations.
2745         * tlink.c (tlink_execute): Add errname parameter.  Change all
2746         callers.
2747         (do_tlink): Check lderrout as well as ldout.
2748
2749 2005-03-31  Caroline Tice  <ctice@apple.com>
2750
2751         * Makefile.in (varasm.o): Add basic-block.h to list of requirements.
2752         (bb-reorder.o): Add errors.h to list of requirements.
2753         (STAGEFEEDBACK_FLAGS_TO_PASS): Add -freorder-blocks-and-partition to
2754         profiledbootstrap flags.
2755         * bb-reorder.c (errors.h): Add new include.
2756         (struct bbro_basic_block_data_def): Add new field, in_trace.
2757         (add_unlikely_executed_notes):  Remove function.
2758         (mark_bb_for_unlikely_executed_section): Remove function.
2759         (insert_section_boundary_note): New function.
2760         (verify_hot_cold_block_grouping): New function.
2761         (push_to_next_round_p): Remove variables and tests that push all
2762         cold blocks to last round.
2763         (find_traces): Remove code that added extra round of trace finding
2764         when doing partitioning.
2765         (find_traces_1_round) :  Remove variable last_round;  add code to 
2766         update new struct field, in_trace; correct trace_length where it was 
2767         incorrect before (after call to copy_bb); change code that pushed all 
2768         cold blocks to last round. Instead verify that all blocks going into 
2769         a trace belong in the same partition.
2770         (connect_traces): Modify to connect the traces in two passes, if the
2771         function contains both hot and cold blocks.  The first pass connects 
2772         all the traces for blocks in the partition that the first block in 
2773         the function belongs to; the second pass connnects all the traces 
2774         containing blocks that belong in the other partition.
2775         (find_rarely_executed_basic_blocks_and_crossing_edges):  Remove
2776         code that automatically put the first block in a function into the
2777         hot partition if the function had any hot blocks.
2778         (fix_crossing_unconditional_branches): Check number of succ edges 
2779         before attempting to get one.
2780         (fix_edges_for_rarely_executed_code):  Update comment describing
2781         function.
2782         (reorder_basic_blocks):  Add code to initialize new field (in_trace);
2783         remove call to add_unlikely_executed_notes; add call to 
2784         verify_hot_cold_block_grouping.
2785         (duplicate_computed_gotos): Don't change computed goto if it's a 
2786         crossing edge.
2787         (partition_hot_cold_basic_blocks):  Update function comment.
2788         * cfgcleanup.c (try_simplify_condjump): Remove redundacy from 
2789         condition.
2790         (try_forward_edges): Likewise.
2791         (merge_blocks_move_predecessor_nojumps): Likewise.
2792         (merge_blocks_move_successor_nojumps): Likewise.
2793         (merge_blocks_move): Likewise.
2794         (try_crossjump_bb): Likewise.
2795         * cfglayout.c (update_unlikely_executed_notes): Remove function.
2796         (fixup_reorder_chain): Remove code for adding UNLIKELY_EXECUTED_CODE
2797         notes to cold bb's; remove call to update_unlikely_executed_notes.
2798         (duplicate_insn_chain):  change NOTE_INSN_UNLIKELY_EXECUTED_CODE to
2799         NOTE_INSN_SWITCH_TEXT_SECTIONS.
2800         * cfglayout.h (scan_ahead_for_unlikely_executed_note): Remove
2801         function declaration.
2802         * cfgrtl.c (can_delete_note_p): Remove UNLIKELY_EXECUTED_CODE note
2803         from consideration.
2804         (rtl_can_merge_blocks): Remove redundancy from condition.
2805         (try_redirect_by_replacing_jump): Likewise.
2806         (force_nonfallthru_and_redirect): Remove code for adding
2807         UNLIKELY_EXECUTED_CODE notes to cold bb's.
2808         (commit_one_edge_insertion): Likewise.
2809         (cfg_layout_can_merge_blocks_p): Remove redundancy from condition.
2810         * dbxout.c (FORCE_TEXT): Replace function_section with 
2811         current_function_section.
2812         (struct dbx_debug_h): Add do_nothing function for new debug_hooks
2813         function, switch_text_section.
2814         (struct xcoff_debug): Likewise.
2815         (dbxout_function_end): Add code to put out label diffs for both
2816         hot and cold sections.
2817         * debug.c (struct do_nothing_debug_hooks): Add do_nothing function
2818         for new debug_hooks funciton, switch_text_section..
2819         * debug.h (struct gcc_debug_hooks):  Add new function to debug_hooks,
2820         switch_text_section.
2821         * dwarf2out.c (struct dw_fde_struct):  Add five new fields: 
2822         dw_fde_hot_section_label, dw_fde_hot_section_end_label, 
2823         dw_fde_unlikely_section_label, dw_fde_unlikely_section_end_label and 
2824         dw_fde_switched_sections.
2825         (output_call_frame_info):  Add test to see if function switches text
2826         sections in the middle; if so, use appropriate extra hot and cold 
2827         section labels to compute size deltas for the hot and cold sections.
2828         (dwarf2out_begin_prologue): Add code to initialize new fields in 
2829         dw_fde_struct.
2830         (dwarf2out_switch_text_section): New function (invoked through 
2831         debug_hook); updates new fields in dw_fde_struct appropriately and
2832         increments separate_line_info_table_in_use.
2833         (dwarf2_debug_hooks): Initialize switch_text_section function to be
2834         dwarf2out_switch_text_section.
2835         (struct var_loc_node): Add new field, section_label.
2836         (output_aranges): Add code to check whether in hot or cold section and
2837         use the appropriate label in calculating deltas.
2838         (output_ranges): Likewise.
2839         (output_line_info): Add code to check which section we're in and
2840         use appropriate hot/cold label.
2841         (add_location_or_constant_value_attribute): Likewise.
2842         (gen_subprogam_die): Modify arange attributes to use correct labels.
2843         (dwarf2out_begin_block): Change call to function_section into call to
2844         current_function_section.
2845         (dwarf2out_end_block): Likewise.
2846         (dwarf2out_source_line): Likewise.
2847         (dwarf2out_var_location): Add code to check whether in hot or cold 
2848         section and use the appropriate label.
2849         * except.c (output_function_exception_table): Change call to 
2850         function_section into call to current_function_section.
2851         * final.c (profile_function): Likewise.
2852         (scan_ahead_for_unlikely_executed_note): Remove function.
2853         (final_scan_insn):  Remove calls to 
2854         scan_ahead_for_unlikely_executed_note, and related code for switching 
2855         to cold section, except for the single time 
2856         NOTE_INSN_SWITCH_TEXT_SECTIONS may be encountered;  add calls to 
2857         debug_hooks->switch_text_sections; replace appropriate calls to 
2858         function_section with calls to current_function_section.
2859         * ifcvt.c (find_if_case_1): Remove redundancy from condition, add 
2860         test_bb to condition.
2861         (find_if_case_2): Likewise.
2862         * insn-notes.def: Change NOTE_INSN_UNLIKELY_EXECUTED_CODE to
2863         NOTE_INSN_SWITCH_TEXT_SECTIONS.  Update comment appropriately.
2864         * opts.c (decode_options): Change warning about hot/cold partitioning
2865         with exceptionss to inform (so as not to cause bootstrap failures);
2866         remove warning about partitioning with DWARF debug info.
2867         * output.h (current_function_section): Add new function decl.
2868         (insert_section_boundary_note): Likewise.
2869         (enum in_section): Move this declaration here from varasm.c.
2870         (unlikely_section_label): Likewise.
2871         (unlikely_text_section_name): Likewise.
2872         (last_text_section_name): New global variable.
2873         (last_text_section): Likewise.
2874         (hot_section_label): Likewise.
2875         (hot_section_end_label): Likewise.
2876         (cold_section_end_label): Likewise.
2877         * passes.c (rest_of_handle_final): Free unlikely_text_section_name.
2878         * print-rtl.c (print_rtx): Change NOTE_INSN_UNLIKELY_EXECUTED_CODE
2879         to NOTE_INSN_SWITCH_TEXT_SECTIONS.
2880         * reg-stack.c (emit_swap_insn): Remove UNLIKELY_EXECUTED_CODE note 
2881         insn from consideration.
2882         * sdbout.c (sdb_debug_hooks): Add do_nothing for new function, 
2883         switch_text_section.
2884         * varasm.c (basic-block.h): Add new include.
2885         (unlikely_section_label_printed): Remove global variable.
2886         (unlikely_section_label): Make global variable not be static any more.
2887         (unlikely_text_section_name): Likewise.
2888         (hot_section_end_label): New global variable (not static)
2889         (first_function_block_is_cold): Likewise.
2890         (hot_section_label): Likewise.
2891         (cold_section_end_label): Likewise..
2892         (last_text_section): New global variable, not static.
2893         (last_text_section_name): New global variable, not static.
2894         (initialize_cold_section_name): New function.
2895         (enum in_section): Move declaration to output.h.
2896         (text_section): Update last_text_section.
2897         (unlikely_text_section): Replace code to determine cold section name 
2898         with call to initialize_cold_section_name; Add code to update 
2899         last_text_section; remove code for printing out label.
2900         (named_section_real): Add code to update last_text_section and 
2901         last_text_section_name as appropriate.
2902         (function_section): Change test for 'unlikely' to depend on
2903         first_function_block_is_cold (moved old test to 
2904         current_function_section).
2905         (current_function_section): New function.
2906         (assemble_start_function): Move code that frees 
2907         unlikely_text_section_name; initialize hot_section_end_label; 
2908         print hot and cold section labels at the start of the function; 
2909         set first_function_block_is_cold, if appropriate; initialize l
2910         ast_text_section; add call to insert_section_boundary_note.
2911         (assemble_end_function):  Add code to write out hot and cold section
2912         end labels.
2913         *vmsdbgout.c (vmsdbg_debug_hooks): Add do_nothing for new function,
2914         switch_text_section.
2915         * config/darwin.c (machopic_select_section): Replace incorrect 
2916         function in base_funs; update reloc for cold sections if necessary.
2917         * config/darwin.h (SECTION_FUNCTION):  Add code to update 
2918         last_text_section if appropriate.
2919         (text_unlikely_section): Remove.
2920         * config/sparc/sparc.c (sparc_output_deferred_case_vectors): Likewise.
2921         * config/stormy16/stormy16.c (stormy_16_output_addr_vec): Likewise.
2922         * config/xtensa/xtensa.c (override_options): Turn off hot/cold
2923         partitioning for this architecture.
2924
2925 2005-03-31  Olivier Hainque  <hainque@adacore.com>
2926
2927         * dwarf2out.c (dwarf2out_frame_finish): Honor DWARF2_FRAME_INFO
2928         defined and non-zero.
2929
2930 2005-03-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2931
2932         PR c++/18644
2933         * doc/invoke.texi (-Wsynth): Don't document, as it now is void of
2934         semantics. 
2935
2936 2005-03-31  Alan Modra  <amodra@bigpond.net.au>
2937
2938         PR target/20611
2939         * config/rs6000/rs6000.md (load_toc_v4_PIC_1b): Remove inline
2940         label operand.  Remove (use (unspec..)).  Don't emit a label on
2941         the offset word.
2942         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Don't
2943         generate inline label for load_toc_v4_PIC_1b.
2944         (rs6000_emit_load_toc_table): Likewise.
2945
2946 2005-03-31  Kazu Hirata  <kazu@cs.umass.edu>
2947
2948         * config.gcc: Obsolete i860-*-sysv4*, ip2k-*-elf,
2949         ns32k-*-netbsdelf*, and ns32k-*-netbsd*.
2950
2951 2005-03-29  Devang Patel  <dpatel@apple.com>
2952
2953         * tree-sra.c (decide_block_copy): Disable scalarization of
2954         sub-elements.
2955         
2956 2005-03-30  Stuart Hastings  <stuart@apple.com>
2957             Dale Johannesen  <dalej@apple.com>
2958
2959         * Makefile.in (print-tree.o):  Depend on tree-iterator.h.
2960         * print-tree.c (print_node):  Add case STATEMENT_LIST.
2961
2962 2005-03-31  Alan Modra  <amodra@bigpond.net.au>
2963
2964         * config.gcc (cpu_is_64bit): Set for 64-bit powerpc cpus.
2965         (powerpc64-*-linux*): Use it.  Rearrange tm_file assignment.
2966         (powerpc-*-linux*): Build a biarch compiler when --enable-targets
2967         is given with "powerpc64*" or "all", or when --with-cpu chooses
2968         a 64-bit cpu.
2969
2970 2005-03-30  James E. Wilson  <wilson@specifixinc.com>
2971
2972         PR debug/20268
2973         * dwarf2out.c (add_high_low_attributes): New function, extracted from
2974         gen_lexical_block_die.
2975         (gen_lexical_block_die, gen_inlined_subroutine_die): Call it.
2976
2977 2005-03-31  Jan Hubicka  <jh@suse.cz>
2978
2979         2004-11-02  Jan Hubicka  <jh@suse.cz>
2980
2981         * cgraph.c (cgraph_varpool_node_name): New function.
2982         (dump_cgraph_varpool_node): New function.
2983         (dump_varpool): New function.
2984         * cgraphunit.c (cgraph_optimize): Dump varpool.
2985
2986         2004-10-16  Jan Hubicka  <jh@suse.cz>
2987
2988         * cgraph.c (decide_is_variable_needed): New function.
2989         (cgraph_varpool_finalize_decl): Use it.
2990         * cgraphunit.c (cgraph_optimize): Assemble_pending_decls when not doing
2991         unit-at-a-time.
2992         * final.c (output_addr_const): Do not call mark_referenced.
2993         * passes.c (rest_of_decl_compilation): ifdef out DECL_RTL_SET_P hack;
2994         always go via cgraph.
2995         * toplev.c (wrapup_global_declarations): Kill non-unit-at-a-time code.
2996         (check_global_declarations): Ifdef out code clearing DECL_RTL.
2997         * tree-optimize.c (execute_inline): Mark functions called.
2998         * i386.c (output_pic_addr_const): Do not call mark_decl_referenced.
2999
3000         2004-10-11  Jan Hubicka  <jh@suse.cz>
3001
3002         * cgraph.c (cgraph_varpool_first_unanalyzed_node): New global voriable
3003         (cgraph_varpool_last_needed_node): New static variable.
3004         (enqueue_needed_varpool_node): Break out from ...; add items to the
3005         end of queue; update first pointers.
3006         (cgraph_varpool_mark_needed_node): ... here.
3007         (cgraph_varpool_finalize_decl): Use enqueue_needed_varpool_node.
3008         (cgraph_varpool_assemble_pending_decls): Move to cgraphunit.c
3009         * cgraph.h (cgraph_varpool_node): Add analyzed field.
3010         (cgraph_varpool_first_unanalyzed_node): Declare.
3011         * cgraphunit.c: Include output.h.
3012         (cgraph_varpool_analyze_pending_decls): New function.
3013         (cgraph_varpool_assemble_pending_decls): Move from cgraph.c; bail out
3014         for errors, analyze pending decls.
3015         (cgraph_finalize_compilation_unit): Only analyze decls.
3016         (cgraph_optimize): Assemble the decls after expanding.
3017
3018 2005-03-30  Daniel Berlin  <dberlin@dberlin.org>
3019
3020         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Make sure
3021         subvars get marked properly in tags for grouping.
3022         (add_pointed_to_var): Mark only actual pointed to
3023         variables/subvars in addresses needed.
3024         (create_overlap_variables_for): Clear call clobbered on original
3025         variable.
3026         * tree-ssa-operands.c (get_asm_expr_operands): Don't let regular
3027         addresable vars with subvars into list.
3028         * tree-ssa.c (verify_ssa_name): Verify original is not used where
3029         subvar should be.
3030
3031 2005-03-30  Richard Henderson  <rth@redhat.com>
3032
3033         * cgraph.h (struct cgraph_node): Add alias.
3034         * varasm.c (assemble_alias): Set it.
3035         * cgraphunit.c (cgraph_assemble_pending_functions): Check it and
3036         avoid calling cgraph_expand_function.
3037
3038 2005-03-30  Tom Tromey  <tromey@redhat.com>
3039
3040         * tree.def (FILE_TYPE): Removed.
3041         * typeclass.h (enum type_class): Removed file_type_class.
3042         * dwarf2out.c (is_base_type): Updated.
3043         (gen_type_die): Likewise.
3044         * dbxout.c (dbxout_type): Updated.
3045         * builtins.c (type_to_class): Updated.
3046         * tree.c (type_contains_placeholder_1): Updated.
3047         * config/sparc/sparc.c (sparc_type_code): Updated.
3048         * config/ia64/ia64.c (hfa_element_mode): Updated.
3049         * expr.c (count_type_elements): Updated.
3050         * stor-layout.c (layout_type): Updated.
3051         * tree-inline.c (remap_type): Updated.
3052         * tree-pretty-print.c (dump_generic_node): Updated.
3053
3054 2005-03-30 Fariborz Jahanian <fjahanian@apple.com>
3055
3056         * builtins.c (expand_builtin_powi): Fix mode of
3057         2nd argument to match int.
3058         * libgcc2.h (__powisf2, __powidf2, __powixf2, __powitf2): Change
3059         2nd argument type to int.
3060         * libgcc2.c: Change prototype of __powi* functions to use
3061         int.
3062
3063 2005-03-30  Dale Johannesen  <dalej@apple.com>
3064
3065         PR middle-end/19225
3066         * calls.c (expand_call):  Flush pending deferrals before
3067         throwing call.
3068
3069 2005-03-30  Joseph S. Myers  <joseph@codesourcery.com>
3070
3071         PR c/772
3072         PR c/17913
3073         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR,
3074         C_DECL_UNDEFINABLE_STMT_EXPR, struct c_label_list, struct
3075         c_label_context, label_context_stack): New.
3076         * c-decl.c (define_label): Check for jumps into statement
3077         expressions.  Add label to list of defined labels.
3078         (start_function): Push context on label_context_stack.
3079         (finish_function): Pop context from label_context_stack.
3080         * c-typeck.c (label_context_stack): New.
3081         (c_finish_goto_label): Check for jumps into statement
3082         expressions.  Add label to list of jumped to labels.
3083         (struct c_switch): Add blocked_stmt_expr.
3084         (c_start_case): Initialize it.
3085         (do_case): Check it.
3086         (c_finish_case): Verify !blocked_stmt_expr.
3087         (c_begin_stmt_expr):  Push context on label_context_stack.
3088         Increment blocked_stmt_expr.  Mark labels jumped to from outside
3089         as undefinable.
3090         (c_finish_stmt_expr): December blocked_stmt_expr.  Mark labels
3091         defined in the statement expression and no longer jumpable to.
3092         Mark labels jumped to from just outside the statement expression
3093         as again definable.  Pop context from label_context_stack.
3094         * doc/extend.texi (Statement Exprs): Update.
3095
3096 2005-03-30  Joseph S. Myers  <joseph@codesourcery.com>
3097
3098         PR c/20368
3099         * c-decl.c (start_function): Check for old_decl being
3100         error_mark_node.
3101
3102 2005-03-30  Ian Lance Taylor  <ian@airs.com>
3103
3104         * final.c (final): Remove prescan parameter.  Change all callers.
3105         (final_scan_insn): Remove prescan parameter.  Change all callers.
3106
3107 2005-03-30  Kazu Hirata  <kazu@cs.umass.edu>
3108
3109         * tree-vectorizer.c: Fix comment typos.
3110
3111 2005-03-30  Sebastian Pop  <pop@cri.ensmp.fr>
3112
3113         * tree-scalar-evolution.c (instantiate_parameters_1): Return
3114         as soon as a chrec_dont_know is detected.
3115
3116 2005-03-31  Danny Smith  <dannysmith@users.sourceforge.net>
3117
3118         Merge from csl-arm-branch.
3119         2004-02-12  Mark Mitchell  <mark@codesourcery.com>
3120
3121         * tlink.c (recompile_files): Do not assume that "rename" can
3122         overwrite an existing file.
3123
3124 2005-03-31  Paolo Bonzini  <bonzini@gnu.org>
3125
3126         * gcc/configure.ac (TL_AC_GNU_MAKE_GCC_LIB_PATH): Remove.
3127         * gcc/configure: Regenerate.
3128
3129 2005-03-30  Alan Modra  <amodra@bigpond.net.au>
3130
3131         * doc/install.texi: Update binutils requirement for powerpc*-linux.
3132
3133         * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Update comments.
3134
3135         * calls.c (struct arg_data): Update "partial" comment.
3136         (load_register_parameters): Update "nregs" comment.
3137
3138 2005-03-30  Richard Sandiford  <rsandifo@redhat.com>
3139
3140         * config/iq2000/iq2000.h (target_flags, MASK_GPOPT, MASK_EMBEDDED_DATA)
3141         (MASK_UNINIT_CONST_IN_RODATA, TARGET_EMBEDDED_DATA, TARGET_SWITCHES)
3142         (TARGET_DEFAULT, TARGET_CPU_DEFAULT, SUBTARGET_TARGET_OPTIONS)
3143         (TARGET_OPTIONS, iq2000_cpu_string, iq2000_arch_string): Delete.
3144         (TARGET_DEBUG_MODE, TARGET_DEBUG_A_MODE, TARGET_DEBUG_B_MODE)
3145         (TARGET_DEBUG_C_MODE, TARGET_DEBUG_D_MODE): Define to 0 rather
3146         than target_flags & 0.
3147         * config/iq2000/iq2000.c (iq2000_cpu_string, iq2000_arch_string)
3148         (iq2000_arch, iq2000_parse_cpu): Delete.
3149         (TARGET_HANDLE_OPTION): Override default.
3150         (iq2000_handle_option): New function.
3151         (override_options): Remove -march= and -mcpu= handling.
3152         * config/iq2000/iq2000.opt: New file.
3153
3154 2005-03-30  Richard Sandiford  <rsandifo@redhat.com>
3155
3156         * config/c4x/c4x-protos.h (c4x_rpts_cycles, c4x_cpu_version): Delete.
3157         * config/c4x/c4x.h (SMALL_MEMORY_FLAG, MPYI_FLAG, FAST_FIX_FLAG)
3158         (RPTS_FLAG, C3X_FLAG, TI_FLAG, PARANOID_FLAG, MEMPARM_FLAG, DEVEL_FLAG)
3159         (RPTB_FLAG, BK_FLAG, DB_FLAG, DEBUG_FLAG, HOIST_FLAG)
3160         (LOOP_UNSIGNED_FLAG, FORCE_FLAG, PRESERVE_FLOAT_FLAG)
3161         (PARALLEL_INSN_FLAG, PARALLEL_MPY_FLAG, ALIASES_FLAG, C30_FLAG)
3162         (C31_FLAG, C32_FLAG, C33_FLAG, C40_FLAG, C44_FLAG, TARGET_SWITCHES)
3163         (TARGET_DEFAULT, TARGET_SMALL, TARGET_MPYI, TARGET_FAST_FIX)
3164         (TARGET_RPTS, TARGET_TI, TARGET_PARANOID, TARGET_MEMPARM, TARGET_DEVEL)
3165         (TARGET_RPTB, TARGET_BK, TARGET_DB, TARGET_DEBUG, TARGET_HOIST)
3166         (TARGET_LOOP_UNSIGNED, TARGET_FORCE, TARGET_PRESERVE_FLOAT)
3167         (TARGET_PARALLEL, TARGET_PARALLEL_MPY, TARGET_ALIASES)
3168         (c4x_rpts_cycles_string, c4x_cpu_version_string)
3169         (TARGET_OPTIONS): Delete.
3170         (c4x_rpts_cycles, c4x_cpu_version): Declare.
3171         (TARGET_C3X, TARGET_C30, TARGET_C31, TARGET_C32, TARGET_C33)
3172         (TARGET_C40, TARGET_C44): Redefine in terms of c4x_cpu_version.
3173         * config/c4x/c4x.c (c4x_rpts_cycles_string): Delete.
3174         (c4x_cpu_version_string): Delete.
3175         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
3176         (c4x_handle_option): New function.  Map -m3x and -m4x options to the
3177         equivalent -mcpu= option.
3178         (c4x_override_options): Remove -mrpts= and -mcpu= handling from here.
3179         Deal with the extra conditions in the old TARGET_MPYI, TARGET_RPTB,
3180         TARGET_DB, TARGET_PARALLEL and TARGET_PARALLEL_MPY macros by setting
3181         or clearing the appropriate MASK_* bit.
3182         (c4x_file_start): Use c4x_cpu_version.
3183         * config/c4x/c4x.opt: New file.
3184
3185 2005-03-30  Richard Sandiford  <rsandifo@redhat.com>
3186
3187         * doc/options.texi: Document the new MaskExists flag.
3188         * opth-gen.awk: Don't output MASK and TARGET macros for Mask(...)
3189         if the option has the MaskExists flag.
3190
3191 2005-03-30  Richard Sandiford  <rsandifo@redhat.com>
3192
3193         * opt-functions.awk (flag_set_p, test_flag): New functions.
3194         (switch_flags): Use them.
3195         * opth-gen.awk: Use flag_set_p to check for flags.
3196         * optc-gen.awk: Likewise.  Use opt_args to check for Init(...) flags.
3197
3198 2005-03-30  Ian Lance Taylor  <ian@airs.com>
3199
3200         * config.host (i[34567]86-*-mingw32*): Don't set
3201         host_can_use_collect2 to no.
3202
3203 2005-03-30  Alan Modra  <amodra@bigpond.net.au>
3204
3205         PR target/20203
3206         * builtins.c (get_memory_rtx): Expand address exp using EXPAND_NORMAL.
3207         Remove convert_memory_address call duplicating that in memory_address.
3208
3209 2005-03-29  Richard Henderson  <rth@redhat.com>
3210
3211         PR c/20519
3212         * c-decl.c (c_finish_incomplete_decl): Update complete_array_type call.
3213         (build_compound_literal): Likewise.  Propagate decl type into the
3214         initializer.
3215         (finish_decl): Likewise.  Use new return value from complete_array_type
3216         for zero sized arrays.
3217         (complete_array_type): Move ...
3218         * c-common.c (complete_array_type): ... here.  Change first argument
3219         to pointer-to-type-node.  Consistently use sizetype for the index
3220         except for zero sized arrays.  Detect zero sized arrays for pedantic
3221         mode diagnostics.  Create a new type node instead of modifying the
3222         old node in place.
3223         * c-tree.h (complete_array_type): Move decl ...
3224         * c-common.h (complete_array_type): ... here.
3225
3226 2005-03-29  Richard Henderson  <rth@redhat.com>
3227
3228         PR tree-opt/19108
3229         * tree-sra.c (generate_element_init_1): Handle RANGE_EXPR.
3230
3231 2005-03-29  Kazu Hirata  <kazu@cs.umass.edu>
3232
3233         * builtin-types.def, c-convert.c, c-format.c, ddg.c, debug.c,
3234         debug.h, et-forest.c, et-forest.h, gcov.c, rtl-profile.c,
3235         rtlhooks-def.h, rtlhooks.c, sdbout.c, tree-inline.h,
3236         tree-profile.c, tsystem.h, value-prof.h: Update copyright.
3237
3238 2005-03-29  Eric Christopher  <echristo@redhat.com>
3239
3240         * config/mips/mips.c (mips_gimplify_va_arg_expr): Update for
3241         truthvalue conversion removal.
3242
3243 2005-03-29  Ian Lance Taylor  <ian@airs.com>
3244
3245         PR bootstrap/14316
3246         * collect2.c: Never include <vfork.h>.
3247         (VFORK_STRING, vfork): Don't define.
3248         (pid): Remove global variable.
3249         (handler): Call raise instead of kill (getpid(), ...).
3250         (collect_wait): Add pex parameter.  Change all callers.  Use
3251         pex_get_status rather than pwait.
3252         (do_wait): Add pex parameter.  Change all callers.
3253         (collect_execute): Return struct pex_obj * rather than void.  Use
3254         pex routines rather than pexecute.
3255         (fork_execute): Get pex_obj from collect_execute, and pass it to
3256         do_wait.
3257         (scan_prog_file): Use pex routines rather than pipe/vfork/exec.
3258         Only declare quit_handler if SIGQUIT is defined.
3259         (scan_libraries): Likewise.
3260         * collect2.h (collect_execute): Update declaration.
3261         (collect_wait): Update declaration.
3262         * tlink.c (tlink_execute): Get pex_obj from collect_execute, and
3263         pass it to collect_wait.
3264
3265 2005-03-29  Joseph S. Myers  <joseph@codesourcery.com>
3266
3267         PR c/20672
3268         * c-parser.c (c_parser_compound_statement_nostart): Give error
3269         message for EOF instead of just setting parser->error.
3270
3271 2005-03-29  Dorit Naishlos  <dorit@il.ibm.com>
3272
3273         * tree-vectorizer.c (slpeel_update_phi_nodes_for_guard): Removed.
3274         (slpeel_update_phi_nodes_for_guard1): New function.
3275         (slpeel_update_phi_nodes_for_guard2): New function.
3276         (slpeel_tree_peel_loop_to_edge): Call above new functions instead
3277         of slpeel_update_phi_nodes_for_guard.
3278         (vectorize_loops): Remove call to loop_closed_rewrite.
3279         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Remove
3280         assertion.
3281
3282 2005-03-29  Richard Sandiford  <rsandifo@redhat.com>
3283
3284         * config/m32r/little.h (TARGET_ENDIAN_DEFAULT): Delete.
3285         (TARGET_LITTLE_ENDIAN): New macro.
3286         * config/m32r/m32r.h (SUBTARGET_SWITCHES, target_flags)
3287         (TARGET_RELAX_MASK, TARGET_DEBUG_MASK, TARGET_DEBUG)
3288         (TARGET_ALIGN_LOOPS_MASK, TARGET_ALIGN_LOOPS)
3289         (TARGET_LOW_ISSUE_RATE_MASK, TARGET_LOW_ISSUE_RATE)
3290         (TARGET_BRANCH_COST_MASK, TARGET_BRANCH_COST, TARGET_M32RX_MASK)
3291         (TARGET_M32RX, TARGET_M32R2_MASK, TARGET_M32R2, LITTLE_ENDIAN_BIT)
3292         (TARGET_ENDIAN_DEFAULT, SUBTARGET_SWITCHES, TARGET_DEFAULT)
3293         (TARGET_SWITCHES, m32r_model_string, m32r_sdata_string)
3294         (m32r_cache_flush_trap_string, SUBTARGET_OPTIONS)
3295         (TARGET_OPTIONS): Delete.
3296         (M32R_MODEL_DEFAULT, M32R_SDATA_DEFAULT): Turn into enums.
3297         (CACHE_FLUSH_TRAP): Turn into an integer.
3298         (TARGET_LITTLE_ENDIAN): Define to 0 by default.
3299         (INITIALIZE_TRAMPOLINE): Check m32r_cache_trap >= 0 to see if
3300         -mflush-trap is in use.
3301         * config/m32r/m32r.c (m32r_model_string, m32r_sdata_string)
3302         (m32r_cache_flush_trap_string): Delete.
3303         (m32r_model) Initialize to M32R_MODEL_DEFAULT.
3304         (m32r_sdata): Likewise M32R_SDATA_DEFAULT.
3305         (m32r_cache_trap): Likewise CACHE_FLUSH_TRAP.
3306         (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
3307         (m32r_handle_option): New function.  Move -mflush-trap=, -mflush-func=,
3308         -mmodel= and -msdata= handling from...
3309         (m32r_init): ...here.
3310         * config/m32r/m32r.opt: New file.
3311
3312 2005-03-29  Keith Besaw  <kbesaw@us.ibm.com>
3313
3314         * tree-ssanames.c (duplicate_ssa_name_ptr_info): New function.
3315         (duplicate_ssa_name): Call duplicate_ssa_name_ptr_info.
3316         * tree-vect-analyze.c (vect_object_analysis): additional parm
3317         pass back a "struct ptr_info_def *" with the points-to info.
3318         (vect_analyze_data_refs): set the STMT_VINFO_PTR_INFO for the
3319         statement using info returned from vect_object_analysis.
3320         * tree-vect-transform.c (update_vuses_to_preheader): New function.
3321         (vect_create_data_ref_ptr): Remove updates to vars_to_rename
3322         for virtual uses and defs when creating a replacement vector
3323         reference.  Call duplicate_ssa_name_ptr_info to define points-to
3324         info for vector pointer replacement using STMT_VINFO_PTR_INFO.
3325         (vectorizable_store): copy_virtual_operands and update
3326         definition statements.
3327         (vectorizable_load): copy_virtual_operands.  Remove call to
3328         mark_call_clobbered_vars_to_rename for call to "const" builtin.
3329         * tree-vectorizer.c (vectorize_loops): Remove calls to
3330         rewrite_into_ssa and bitmap_clear (vars_to_rename).
3331         (new_stmt_vec_info): initialize STMT_VINFO_PTR_INFO for stmt.
3332         * tree-vectorizer.h (_stmt_vec_info): add field ptr_info and
3333         define macro STMT_VINFO_PTR_INFO for use in accessing.
3334         * tree.h add export of duplicate_ssa_name_ptr_info.
3335         * rs6000.c (altivec_init_builtins): Declare builtin function
3336         __builtin_altivec_mask_for_load to be "const".
3337
3338 2005-03-29  Jakub Jelinek  <jakub@redhat.com>
3339
3340         PR middle-end/20622
3341         * cgraph.h (struct cgraph_varpool_node): Add alias field.
3342         * cgraph.c (cgraph_varpool_assemble_pending_decls): Don't call
3343         assemble_variable on aliases.
3344         * varasm.c (assemble_alias): Set node->alias.
3345         * toplev.c (wrapup_global_declarations): Don't call
3346         rest_of_decl_compilation on aliases again.
3347
3348 2005-03-29  Paul Brook  <paul@codesourcery.com>
3349
3350         * config/arm/arm-protos.h (arm_dbx_register_number): Add prototype.
3351         * config/arm/arm.c (arm_dbx_register_number): New function.
3352         * config/arm/arm.h (IS_FPA_REGNUM, DBX_REGISTER_NUMBER): Define.
3353
3354 2005-03-29  Eric Botcazou  <ebotcazou@libertysurf.fr>
3355