OSDN Git Service

* fold-const.c: Remove prototypes for native_encode_expr and
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
2
3         * fold-const.c: Remove prototypes for native_encode_expr and
4         native_interpret_expr.
5         (native_encode_expr): Make non-static.
6         (native_interpret_expr): Likewise.
7         * tree.h: Add prototypes for the above.
8
9 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
10
11         gcc/
12         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
13         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
14         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
15         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
16         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
17         Add length attributes.
18
19 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
20
21         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
22         not that it is 1.
23
24         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
25         __STDC_WANT_DEC_FP__.
26
27 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
28
29         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
30         for long double compatibility.
31         * configure: Regenerate.
32
33 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
34
35         PR rtl-optimization/29841
36         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
37         trap instructions.
38         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
39         that may cause control flow transfer from being moved.
40
41 2007-04-18  Jan Hubicka  <jh@suse.cz>
42
43         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
44         types.
45
46 2007-04-18  Eric Christopher  <echristo@apple.com>
47
48         * config/rs6000/darwin.md (load_macho_picbase): Use link register
49         only. Update operands.
50         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
51         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
52         link register to pic register.
53
54 2007-04-18  Dirk Mueller  <dmueller@suse.de>
55
56         PR diagnostic/31227
57         * tree-vrp.c (search_for_addr_array): New.
58         (check_array_bounds): Suppress warning about
59         address taken of array refs if its not de-referenced.
60
61 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
62
63         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
64         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
65
66         * tree-vectorizer.h (NITERS_KNOWN_P): New.
67         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
68         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
69
70         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
71         dump print.
72         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
73         print message.
74         (vect_analyze_scalar_cycles): Fix indentation.
75         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
76         (vect_mark_relevant): Include phis in relevance analysis.
77
78         * tree-vect-transform.c (vect_transform_loop): Add an assert.
79
80 2007-04-18  Anatoly Sokolov <aesok@post.ru>
81
82         * config/avr/avr.c (ptrreg_to_str): Replace error() with
83         output_operand_lossage().
84
85 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
86
87         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
88         the unused code for reduction without adjust-in-epilog to simplify the
89         function.
90
91 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
92
93         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
94         (S390_TDC_NEGATIVE_ZERO): New constant.
95         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
96         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
97         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
98         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
99         (S390_TDC_POSITIVE_INFINITY): New constant.
100         (S390_TDC_NEGATIVE_INFINITY): New constant.
101         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
102         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
103         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
104         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
105         (S390_TDC_INFINITY): New constant.
106         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
107         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
108         optimization for UNSPEC_CCZ_TO_INT.
109         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
110         ("*ccz_to_int"): New insn.
111         ("isinf<mode>2"): New insn.
112         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
113         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
114         (UNSPEC_CCZ_TO_INT): New constant.
115
116 2007-04-18  Richard Guenther  <rguenther@suse.de>
117
118         PR tree-optimization/19431
119         PR tree-optimization/21463
120         * tree-pass.h (pass_phiprop): Declare.
121         * passes.c (init_optimization_passes): New phiprop pass.
122         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
123         (phivn_valid_p): New helper function.
124         (phiprop_insert_phi): Likewise.
125         (propagate_with_phi): Likewise.
126         (tree_ssa_phiprop): New propagator propagating loads
127         through phi nodes if profitable.
128
129 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
130
131         * tree-vect-analyze.c (process_use): New function.
132         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
133         Check phis in all bbs.
134         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
135         assert.
136
137 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
138
139         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
140         we use REG_EQUAL.
141
142 2007-04-17  Anatoly Sokolov <aesok@post.ru>
143
144         PR target/30483
145         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
146         error().
147
148 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
149
150         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
151         on "0".
152         (sse_vmmulv4sf3): Likewise.
153         (sse2_vmaddv2df3): Likewise.
154         (sse2_vmmulv2df3): Likewise.
155
156 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
157
158         PR rtl-optimization/31360
159         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
160         (target_reg_cost): New.
161         (init_set_costs): Initialize target_reg_cost.  Add comments
162         regarding the rationale of the costs.
163         (global_cost_for_size): Renamed to...
164         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
165         of register pressure.
166         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
167         estimate_reg_pressure_cost.  Add number of ivs.
168         (determine_set_costs): Dump target_reg_cost.
169         * loop-invariant.c (gain_for_invariant):  Use
170         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
171         (best_gain_for_invariant, find_invariants_to_move): Remove
172         n_inv_uses.
173         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
174         (target_reg_cost): Declare.
175         (global_cost_for_size): Declaration removed.
176         (estimate_reg_pressure_cost): Declare.
177
178 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
179
180         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
181         regnos into even/odd register pairs.
182         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
183         TDmode similar to the other floating point modes.
184         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
185         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
186         define_expand's.
187         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
188         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
189         (movdd_hardfloat64): Use TARGET_MFPGPR.
190
191 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
192
193         * reload1.c (delete_output_reload): Don't count output in n_inherited.
194
195         Revert
196         2005-01-05  Richard Henderson  <rth@redhat.com>
197         PR rtl-opt/10692
198         * reload1.c (do_input_reload): Restrict the optimization deleteing
199         a previous output reload to RELOAD_FOR_INPUT.
200
201 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
202
203         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
204         induc_vec_info_type.
205         (vectorizable_induction): New function declaration.
206         * tree-vect-transform.c (get_initial_def_for_induction): No need to
207         check if already vectorized.  Find first place in BB where new stmts
208         can be inserted.  Takes only one argument.
209         (vectorizable_induction): New function.
210         (vect_transform_stmt): Add case for induc_vec_info_type to call
211         vectorizable_induction.
212         (vect_transform_loop): Consider phis for vectorization.
213         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
214         condition.
215         (analyze_operations): Call vectorizable_induction when analyzing phis.
216         Fix comment.
217         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
218         (vect_mark_relevant): Include phis in relevance analysis.
219         (vect_mark_stmts_to_be_vectorize): Likewise.
220         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
221
222 2007-04-16  Lawrence Crowl  <crowl@google.com>
223
224         * doc/invoke.texi (Debugging Options): Add documentation for the
225         -femit-struct-debug options -femit-struct-debug-baseonly,
226         -femit-struct-debug-reduced, and
227         -femit-struct-debug-detailed[=...].
228
229         * c-opts.c (c_common_handle_option): Add
230         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
231         and OPT_femit_struct_debug_detailed_.
232         * c.opt: Add specifications for
233         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
234         and -femit-struct-debug-detailed[=...].
235         * opts.c (set_struct_debug_option): Parse the
236         -femit-struct-debug-... options.
237         * opts.c (matches_main_base, main_input_basename,
238         main_input_baselength, base_of_path, matches_main_base): Add
239         variables and functions to compare header base name to compilation
240         unit base name.
241         * opts.c (should_emit_struct_debug): Add to determine to emit a
242         structure based on the option.
243         (dump_struct_debug) Also disabled function to debug this
244         function.
245         * opts.c (handle_options): Save the base name of the
246         compilation unit.
247
248         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
249         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
250         This hook indicates if a type is generic.  Set it by default
251         to "never generic".
252         * langhooks.h (struct lang_hooks_for_types): Add a new hook
253         to determine if a struct type is generic or not.
254         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
255         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
256         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
257         with live C++ hook.
258
259         * flags.h (enum debug_info_usage): Add an enumeration to describe
260         a program's use of a structure type.
261         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
262         to indicate the program's usage of the type.  Filter structs based
263         on the -femit-struct-debug-... specification.
264         (gen_type_die): Split into two routines, gen_type_die and
265         gen_type_die_with_usage.  gen_type_die is now a wrapper
266         that assumes direct usage.
267         (gen_type_die_with_usage): Replace calls to gen_type_die
268         with gen_type_die_with_usage adding the program usage of
269         the referenced type.
270         (dwarf2out_imported_module_or_decl): Suppress struct debug
271         information using should_emit_struct_debug when appropriate.
272
273 2007-04-16  Ian Lance Taylor  <iant@google.com>
274
275         PR tree-optimization/31522
276         * tree-vrp.c (vr_phi_edge_counts): New static variable.
277         (vrp_initialize): Allocate vr_phi_edge_counts.
278         (vrp_visit_phi_node): Don't push to infinity if we saw a new
279         executable edge.  Drop test for all constants.
280         (vrp_finalize): Free vrp_phi_edge_counts.
281
282         * doc/cpp.texi (Common Predefined Macros): Clarify description of
283         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
284
285         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
286         predecessors at head rather than tail.
287
288 2007-04-16  Matthias Klose  <doko@debian.org>
289
290         * gcc/config/alpha/linux.h (CPP_SPEC): Define.
291         * gcc/config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
292
293 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
294
295         * function.h: Remove sequence_stack extern declaration.
296
297 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
298
299         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
300         TARGET_FIDOA.
301         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
302         defined.
303
304 2007-04-16  Anatoly Sokolov <aesok@post.ru>
305
306         * config/avr/avr.c (avr_arch_types): Rearranging  array.
307         (enum avr_arch): Add.
308         (avr_mcu_types): Use avr_arch enumeration constants instead of
309         numbers.
310         * config/avr/avr.h (LINK_SPEC): Simplify.
311
312 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
313
314         * config/m68k/m68k.c (m68k_libcall_value,
315         m68k_function_value): Use macros for register names more.
316
317         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
318         instead.
319         (M68K_REGNAME): Use A6_REG.
320         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
321
322 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
323
324         PR middle-end/28071
325         * sched-int.h (struct deps): Split field 'pending_lists_length' into
326         'pending_read_list_length' and 'pending_write_list_length'.  Update
327         comment.
328         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
329         to handle two length counters instead of one.  Update all uses.
330         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
331         two length counters instead of one.
332         * sched-rgn.c (propagate_deps): Update to handle two length counters
333         instead of one.
334
335 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
336
337         PR target/31582
338         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
339         copy of source, pass it to ix86_expand_vector_set and return
340         it as target.
341
342 2007-04-16  David Ung  <davidu@mips.com>
343             Joseph Myers  <joseph@codesourcery.com>
344
345         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
346         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
347         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
348         Add 74K processor information.
349         * config/mips/mips.md: Include 74k.md.
350         (cpu): Add 74kc,74kf,74kx.
351         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
352         * config/mips/74k.md: New.
353         * doc/invoke.texi (MIPS Options): Document 74K support.
354
355 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
356
357         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
358         vectorizable_* functions.
359         * tree-vect-transform.c (vectorizable_call): Add check for
360         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
361         (vectorizable_store): likewise.
362         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
363         Add comments.
364         (vectorizable_operation, vectorizable_type_demotion): Likewise.
365         (vectorizable_type_promotion, vectorizable_load): Likewise.
366         (vectorizable_live_operation, vectorizable_condition): Likewise.
367         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
368         STMT_VINFO_LIVE_P.
369         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
370
371 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
372
373         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
374         register numbers more.
375         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
376         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
377         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
378         FUNCTION_VALUE_REGNO_P): Likewise.
379         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
380         STATIC_CHAIN_REGNUM): Likewise.
381         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
382         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
383         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
384         * config/m68k/m68k.md (FP_REG): New.
385
386 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
387
388         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
389         alignment on fido.
390
391 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
392
393         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
394         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
395         comment typos.
396
397 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
398
399         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
400         cold loops.
401
402 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
403
404         PR c/31520
405         * c-decl.c (finish_decl): Grab the type of the decl after the call
406         to store_init_value.
407
408 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
409
410         * common.opt (fforward-propagate): Fix "Optimization" annotation.
411
412 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
413
414         PR c++/25874
415         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
416         post dominators and cleanup cfg before returning.
417
418 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
419
420         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
421         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
422
423 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
424
425         * config.gcc: Recognize fido.
426         * config/m68k/m68k-devices.def (fidoa): New.
427         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
428         __mfido__.
429         (FL_FIDOA, TARGET_FIDOA): New.
430         * config/m68k/m68k.opt (mfidoa): New.
431
432 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
433
434         PR middle-end/31322
435         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
436         when a personality function is used.
437
438 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
439
440         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
441
442 2007-04-13  Mike Stump  <mrs@apple.com>
443
444         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
445         we can...
446         * config/darwin.opt (fapple-kext): Make C++ only.
447         * config/darwin.c (darwin_override_options): Remove code to ensure
448         -fapple-kext is given for C++ only.
449
450 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
451
452         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
453         * config/mips/mips.c (override_options): Call
454         SUBTARGET_OVERRIDE_OPTIONS, if defined.
455
456 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
457
458         * config/i386/i386.opt (msvr3-shlib): Removed.
459
460         * doc/invoke.texi: Remove -msvr3-shlib.
461
462 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
463
464         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
465         with "popcnt" instruction.
466
467 2007-04-13  Richard Guenther  <rguenther@suse.de>
468
469         PR tree-optimization/21258
470         * tree-vrp.c (compare_case_labels): New helper.
471         (find_switch_asserts): New function.
472         (find_assert_locations): Call it for SWITCH_EXPRs.
473
474 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
475
476         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
477         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
478         check is now implied in X87_FLOAT_MODE_P.
479         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
480         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
481         (fix_trunc<mode>_i386_fisttp): Ditto.
482         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
483         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
484         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
485         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
486         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
487         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
488         (unnamed_splitters): Ditto.
489         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
490         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
491         FIRST_SSE_REG for local functions when SSE math is enabled or
492         for functions with sseregparm attribute.
493         (standard_80387_constant_p): Return -1 if mode is not
494         X87_FLOAT_MODE_P.
495         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
496         (ix86_expand_compare): Ditto.
497         (ix86_expand_carry_flag_compare): Ditto.
498         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
499         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
500         DECIMAL_FLOAT_MODE_P.
501         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
502         of SCALAR_FLOAT_MODE_P.
503         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
504         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
505         checks before FLOAT_MODE_P.
506         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
507         before FLOAT_MODE_P.
508         [DIV]: Ditto.
509         [NEG]: Ditto.
510         [ABS]: Ditto.
511         [SQRT]: Ditto.
512         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
513
514 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
515             Charles Wilson  <libtool@cwilson.fastmail.fm>
516
517         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
518         (libgcc.mvars): Don't depend on them.
519         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
520         * exec-tool.in: New.
521
522 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
523
524         * doc/invoke.text (--help): Document --help=common.
525
526 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
527
528         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
529
530 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
531
532         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
533         * genemit.c (main): Emit #include "integrate.h".
534         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
535         (LOADGP_RTP): New mips_loadgp_style.
536         * config/mips/mips.h: Include config/vxworks-dummy.h.
537         (TARGET_RTP_PIC): New macro.
538         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
539         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
540         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
541         for TARGET_RTP_PIC.
542         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
543         -mvxworks-pic when using -mrtp and a PIC option.
544         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
545         for RTP PIC.
546         (mips_symbolic_constant_p, mips_symbolic_address_p)
547         (mips_symbol_insns): Handle SYMBOL_HALF.
548         (override_options): Warn about -G and -mrtp being used together.
549         Initialize mips_lo_relocs[SYMBOL_HALF].
550         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
551         (mips_emit_loadgp): Handle LOADGP_RTP.
552         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
553         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
554         (tablejump): Handle function-relative case table entries if
555         TARGET_RTP_PIC.
556         * config/mips/predicates.md (symbol_ref_operand): New predicate.
557
558 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
559
560         * config/mips/mips.md (load_call<mode>): Allow any general register.
561         destination.
562         (sibcall_value_internal, sibcall_value_multiple_internal)
563         (call_value_internal, call_value_split, call_value_multiple_internal)
564         (call_value_multiple_split): Remove constraints from operand 0.
565
566 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
567
568         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
569         rather than loadgp_noshared.
570         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
571         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
572         gen_loadgp.
573         * config/mips/mips.md (loadgp): Rename to...
574         (loadgp_newabi): ...this.
575         (loadgp_noshared): Rename to...
576         (loadgp_absolute): ...this.
577
578 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
579
580         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
581         false for locally-binding symbols.
582         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
583
584 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
585
586         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
587         (SYMBOL_GOT_PAGE_OFST): ...this.
588         (SYMBOL_GOT_GLOBAL): Rename to...
589         (SYMBOL_GOT_DISP): ...this.
590         (SYMBOL_GOTOFF_GLOBAL): Rename to...
591         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
592         * config/mips/mips.c (mips_global_symbol_p): New function.
593         (mips_symbol_binds_local_p): Likewise.
594         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
595         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
596         and mips_symbol_binds_local_p.
597         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
598         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
599         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
600         SYMBOL_GOTOFF_DISP.
601         (mips_ok_for_lazy_binding_p): New function.
602         (mips_load_call_address, mips_expand_call): Use it.
603         (mips_dangerous_for_la25_p): Likewise.
604         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
605         (*got_disp<mode>): Use got_disp_operand instead of
606         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
607         SYMBOL_GOTOFF_GLOBAL.
608         (*got_page<mode>): Use got_page_ofst_operand instead of
609         local_got_operand.
610         * config/mips/predicates.md (const_call_insn_operand): Use
611         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
612         (global_got_operand): Rename to...
613         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
614         SYMBOL_GOT_GLOBAL.
615         (local_got_operand): Rename to...
616         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
617         of SYMBOL_GOT_LOCAL.
618
619 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
620
621         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
622         TARGET_CALL_CLOBBERED_GP.
623         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
624         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
625         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
626         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
627         of TARGET_ABICALLS && !TARGET_NEWABI.
628         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
629         * config/mips/mips.c (mips_load_call_address): Check
630         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
631         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
632         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
633         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
634         TARGET_ABICALLS && TARGET_NEWABI.
635         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
636         TARGET_ABICALLS.
637         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
638         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
639         TARGET_ABICALLS && TARGET_NEWABI.
640         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
641         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
642         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
643         whether indirect calls must use $25.
644         (mips_extra_live_on_entry): Check TARGET_GOT instead of
645         TARGET_ABICALLS.
646         * config/mips/mips.md (jal_macro): Check flag_pic and
647         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
648         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
649         instead of TARGET_ABICALLS.
650         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
651         TARGET_ABICALLS && TARGET_OLDABI.
652         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
653         (sibcall): In the comment above the define_insn, mention
654         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
655         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
656         instead of TARGET_ABICALLS.
657
658 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
659
660         * doc/md.texi (Blackfin family constraints): Document PA and PB.
661         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
662         (MACFLAGS_MATCH_P): New macro.
663         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
664         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
665         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
666         the other MACFLAG constants.
667         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
668         (flag_machi): Tighten constraints.  Renumber some of the operands.
669         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
670         output template.
671         (flag_machi_parts_acconly): New pattern.
672         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
673         used.
674         (flag_macinit1hi): Tighten constraints.
675         (flag_mul_macv2hi_parts_acconly): New pattern.
676
677         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
678         Use a more efficient implementation.
679         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
680         inline sequences when not optimizing for size.
681
682         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
683         movhi_high2low): Delete, merge functionality into...
684         (packv2hi): ... this pattern.
685
686         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
687         * config/bfin/bfin.opt (msim): New option.
688         (mcpu=): New option.
689         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
690         (bfin_cpu_t): Typedef of enum bfin_cpu.
691         (bfin_cpu_type): New declaration.
692         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
693         -msim and -mcpu= options.
694         (LIB_SPEC): Likewise.
695         * config/bfin/bfin.c (bfin_cpu_type): Define.
696         (bfin_handle_option): Handle -mcpu= option.
697         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
698         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
699         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
700
701 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
702
703         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
704         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
705         (powerpc-wrs-vxworksae): Use ${tm_file}.
706         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
707         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
708         * config/i386/vx-common.h: New file.
709
710 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
711
712         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
713         of crt0.o%s.
714
715 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
716
717         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
718         ldxtr.
719
720 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
721
722         PR c++/31078
723         PR c++/31103
724         * c-common.c (c_build_qualified_type): Set canonical type
725         appropriately.
726
727 2007-04-12  Richard Guenther  <rguenther@suse.de>
728
729         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
730         lower bound and element size if lower bound is not zero
731         or either of the ARRAY_REF operands is set.
732
733 2007-04-12  Richard Guenther  <rguenther@suse.de>
734
735         PR tree-optimization/24689
736         PR tree-optimization/31307
737         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
738         indices by value.
739         * gimplify.c (canonicalize_addr_expr): To be consistent with
740         gimplify_compound_lval only set operands two and three of
741         ARRAY_REFs if they are not gimple_min_invariant.  This makes
742         it never at this place.
743         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
744
745 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
746
747         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
748         null before emitting a .nsubspa directive.
749
750 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
751
752         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
753         need_to_partition_p if there are no memory statements in the
754         function.
755
756 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
757
758         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
759         (gcd_of_steps_may_divide_p): New function.
760         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
761
762 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
763
764         * reload.c (find_reloads_toplev, find_reloads_address,
765         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
766         not a pointer equality test, to decide if we need to call
767         push_reg_equiv_alt_mem.
768
769 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
770
771         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
772         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
773         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
774
775 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
776
777         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
778         vector to be positive.
779
780 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
781
782         PR 30735
783         PR 31090
784         * doc/invoke.texi: Document --params max-aliased-vops and
785         avg-aliased-vops.
786         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
787         debug_memory_partitions): Move to tree-flow.h
788         * params.h (AVG_ALIASED_VOPS): Define.
789         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
790         users.
791         (mp_info_t): Likewise.
792         (get_mem_sym_stats_for): New.
793         (set_memory_partition): Move from tree-flow-inline.h.
794         (mark_non_addressable): Only clear the set of symbols for the
795         partition if it exists.
796         (dump_memory_partitions): Move from tree-ssa-operands.c
797         (debug_memory_partitions): Likewise.
798         (need_to_partition_p): New.
799         (dump_mem_ref_stats): New.
800         (debug_mem_ref_stats): New.
801         (dump_mem_sym_stats): New.
802         (debug_mem_sym_stats): New.
803         (update_mem_sym_stats_from_stmt): New.
804         (compare_mp_info_entries): New.
805         (mp_info_cmp): Call it.
806         (sort_mp_info): Change argument to a list of mem_sym_stats_t
807         objects.
808         (get_mpt_for): Move from tree-ssa-operands.c.
809         (find_partition_for): New.
810         (create_partition_for): Remove.
811         (estimate_vop_reduction): New.
812         (update_reference_counts): New.
813         (build_mp_info): New.
814         (compute_memory_partitions): Refactor.
815         Document new heuristic.
816         Call build_mp_info, update_reference_counts,
817         find_partition_for and estimate_vop_reduction.
818         (compute_may_aliases): Populate virtual operands before
819         calling debugging dumps.
820         (delete_mem_sym_stats): New.
821         (delete_mem_ref_stats): New.
822         (init_mem_ref_stats): New.
823         (init_alias_info): Call it.
824         (maybe_create_global_var): Remove alias_info argument.
825         Get number of call sites and number of pure/const call sites
826         from gimple_mem_ref_stats().
827         (dump_alias_info): Call dump_memory_partitions first.
828         (dump_points_to_info_for): Show how many times a pointer has
829         been dereferenced.
830         * opts.c (decode_options): For -O2 set --param
831         max-aliased-vops to 500.
832         For -O3 set --param max-aliased-vops to 1000 and --param
833         avg-aliased-vops to 3.
834         * fortran/options.c (gfc_init_options): Remove assignment to
835         MAX_ALIASED_VOPS.
836         * tree-flow-inline.h (gimple_mem_ref_stats): New.
837         * tree-dfa.c (dump_variable): Dump memory reference
838         statistics.
839         Dump NO_ALIAS* settings.
840         (referenced_var_lookup): Tidy.
841         (mem_sym_stats): New.
842         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
843         and ORIG are different SSA names for a memory partition.
844         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
845         * tree-flow.h (struct mem_sym_stats_d): Define.
846         (mem_sym_stats_t): Define.
847         (struct mem_ref_stats_d): Define.
848         (struct gimple_df): Add field mem_ref_stats.
849         (enum noalias_state): Define.
850         (struct var_ann_d): Add bitfield noalias_state.
851         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
852         debug_mem_ref_stats, debug_memory_partitions,
853         debug_mem_sym_stats): Declare.
854         * tree-ssa-structalias.c (update_alias_info): Update call
855         sites, pure/const call sites and asm sites in structure
856         returned by gimple_mem_ref_stats.
857         Remove local variable IS_POTENTIAL_DEREF.
858         Increase NUM_DEREFS if the memory expression is a potential
859         dereference.
860         Call update_mem_sym_stats_from_stmt.
861         If the memory references memory, call
862         update_mem_sym_stats_from_stmt for all the direct memory
863         symbol references found.
864         (intra_create_variable_infos): Set noalias_state field for
865         pointer arguments according to the value of
866         flag_argument_noalias.
867         * tree-ssa-structalias.h (struct alias_info): Remove fields
868         num_calls_found and num_pure_const_calls_found.
869         (update_mem_sym_stats_from_stmt): Declare.
870         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
871         Set default value to 100.
872         (PARAM_AVG_ALIASED_VOPS): Define.
873
874 2007-04-11  Richard Guenther  <rguenther@suse.de>
875
876         PR middle-end/31530
877         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
878         a * -b + c as c - a * b if we honor sign dependent rounding.
879
880 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
881
882         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
883         bfin_expand_strmov.
884         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
885         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
886         variables.
887         (initialize_trampoline): Don't use old-style function definition.
888         (bfin_secondary_reload): Mark IN_P argument as unused.
889
890 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
891
892         PR tree-optimization/31343
893         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
894         (build_polynomial_chrec): Return a scalar when the evolution is zero.
895         * testsuite/gcc.dg/vect/pr31343.c: New.
896
897 2007-04-10  Eric Christopher  <echristo@apple.com>
898
899         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
900         * config/i386/i386.md (*cmpfp0): Use.
901         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
902         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
903         (fix_trunc<mode>_i386_fisttp): Ditto.
904         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
905         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
906         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
907         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
908         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
909         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
910         (unnamed_splitters): Ditto.
911         * config/i386/i386.c (output_fix_trunc): Assert that
912         we're not being passed a TFmode operand.
913
914 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
915
916         PR tree-optimization/31526
917         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
918         n_basic_blocks to find newly added blocks.
919
920 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
921
922         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
923         alternative.
924         (fix_trunc<mode>si_sse): Ditto.
925         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
926         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
927         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
928         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
929         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
930         expander using SSEMODEF mode macro.
931         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
932         expander using SSEMODEF mode macro.
933         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
934         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
935         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
936         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
937         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
938         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
939         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
940         Macroize insn using X87MODEF mode macro.
941
942 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
943
944         * config/i386/sse.md (sse2_pinsrw): Removed.
945         (sse2_pextrw): Renamed to ...
946         (*sse2_pextrw): This.
947
948 2007-04-09  Jan Hubicka  <jh@suse.cz>
949
950         PR target/27869
951         * config/i386/sse.md
952         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
953         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
954         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
955         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
956
957 2007-04-09  Jan Hubicka  <jh@suse.cz>
958
959         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
960         multiple fields of union.
961
962 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
963
964         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
965         (create_preheaders): Check that loops are available.
966         (fix_loop_structure): Clean up, improve comments.
967         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
968         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
969         state flags.
970         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
971         * predict.c (tree_estimate_probability): Do not call
972         calculate_dominance_info.  Call create_preheaders.
973         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
974         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
975         flags.
976         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
977         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
978         * tree-cfg.c (tree_split_edge): Make an assert more precise.
979         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
980         arguments.
981
982 2007-04-08  Jan Hubicka  <jh@suse.cz>
983
984         * tree.h (maybe_fold_offset_to_component_ref): Declare.
985         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
986         * fold-const.c (fold_unary): Use it.
987
988 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
989
990         * varasm.c (assemble_variable): Remove call to
991         lang_hooks.decls.prepare_assemble_variable.
992         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
993         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
994         * langhooks.h (lang_hooks_for_decls): Remove
995         prepare_assemble_variable.
996
997 2007-04-08  Mike Stump  <mrs@apple.com>
998
999         * config/i386/i386.c: Use inc/dec on Core2.
1000
1001 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
1002
1003         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
1004         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
1005         lhd_tree_inlining_end_inlining): Remove.
1006         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
1007         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
1008         end_inlining hooks.
1009         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
1010         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
1011         lhd_tree_inlining_end_inlining): Remove prototypes.
1012         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
1013         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
1014         LANG_HOOKS_TREE_INLINING_START_INLINING,
1015         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
1016
1017         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
1018         not set it.
1019
1020 2007-04-08  Anatoly Sokolov <aesok@post.ru>
1021
1022         PR target/29932
1023         * config/avr/predicates.md (io_address_operand): Delete predicate.
1024         (low_io_address_operand): Don't use 'mode' argument.
1025         (higth_io_address_operand): Rename ...
1026         (high_io_address_operand): ... to this. Don't use 'mode' argument.
1027         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
1028         for above change.
1029
1030 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
1031
1032         Revert change removing staticp.
1033
1034 2007-04-07  Anatoly Sokolov <aesok@post.ru>
1035
1036         PR target/30289
1037         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
1038         earlyclobber.
1039
1040 2007-04-07  Bruce Korb  <bkorb@gnu.org>
1041
1042         * c.opt: Add -Wformat-contains-nul.
1043         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
1044           -Wformat setting.
1045         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
1046         the NUL byte warning.
1047
1048 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
1049
1050         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
1051
1052 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1053
1054         * tree.c (staticp): No longer use staticp langhook.
1055         * langhooks.c (lhd_staticp): Removed.
1056         * langhooks.h (struct lang_hooks): Remove staticp.
1057         * c-common.c (c_staticp): Remove.
1058         * c-common.h (c_staticp): Ditto.
1059         * langhooks-defs.h (lhd_staticp): Ditto.
1060         (LHD_HOOKS_STATICP): Ditto
1061         * tree.h (gcc_assert_lowered): New macro.
1062
1063 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
1064
1065         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
1066         argument "reliable".
1067         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
1068         Add argument "reliable".  Propagate it through calls.
1069         (infer_loop_bounds_from_undefined):  Derive number of iterations
1070         estimates from references in blocks that do not dominate loop latch.
1071         (gcov_type_to_double_int): New function.
1072         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
1073         and expected_loop_iterations_unbounded.
1074         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
1075         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
1076         * tree-data-ref.c (estimated_loop_iterations): Export.
1077         (get_references_in_stmt): Fix -- do not return addresses of local
1078         objects.
1079         * cfgloop.h (expected_loop_iterations_unbounded,
1080         estimated_loop_iterations): Declare.
1081
1082 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
1083
1084         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
1085
1086 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1087
1088         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
1089         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
1090         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
1091         Use output_387_reg_move().
1092         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
1093         expander using X87MODEF12 mode macro.
1094         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
1095         choosing register preferences.  Use output_387_reg_move().
1096         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
1097         instead of "x".  Use output_387_reg_move().
1098         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
1099         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
1100         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
1101         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
1102         Use output_387_reg_move().
1103         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
1104         mode macro.
1105         (*truncxf?f_i387 splitter): Ditto.
1106
1107 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1108
1109         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
1110         LANG_HOOKS_SAFE_FROM_P.
1111         * expr.c (safe_from_p): Remove langhook call.
1112         * langhooks.h (lang_hooks): Remove safe_from_p.
1113         (lhd_safe_from_p): Remove prototype.
1114         * langhooks.c (lhd_safe_from_p): Remove.
1115
1116 2007-04-06  Jan Hubicka  <jh@suse.cz>
1117
1118         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
1119         functions.
1120
1121 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1122
1123         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
1124         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
1125         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
1126         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
1127         alternative.
1128         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
1129         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
1130
1131 2007-04-05  Richard Henderson  <rth@redhat.com>
1132
1133         * config/alpha/alpha.c (print_operand) [+]: Remove.
1134         (alpha_end_function): Print nop if call at end of function.
1135         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
1136         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
1137         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
1138         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
1139         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
1140         the call pattern. Update peepholes to match.
1141
1142 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
1143
1144         * doc/extend.texi (Other Builtins): Add decimal float variants
1145         of signbit.
1146         * builtins.def: Ditto.
1147         * builtins.c (expand_builtin): Ditto.
1148
1149 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
1150             H.J. Lu  <hongjiu.lu@intel.com>
1151
1152         PR target/31478
1153         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
1154         of V8HImode when calling ix86_binary_operator_ok.
1155         (sse2_pmaddwd): Call ix86_binary_operator_ok.
1156         (sdot_prodv8hi): Operands 1 and 2 must be register.
1157
1158 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
1159
1160         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
1161         initialize align to silence bogus warning.
1162
1163 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
1164
1165         PR middle-end/22156
1166         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
1167         all_no_warning.
1168         (struct sra_walk_fns): Remove use_all parameter from use.
1169         (sra_hash_tree): Handle BIT_FIELD_REFs.
1170         (sra_elt_hash): Don't hash bitfld blocks.
1171         (sra_elt_eq): Skip them in parent compares as well.  Handle
1172         BIT_FIELD_REFs.
1173         (sra_walk_expr): Don't maintain or pass down use_all_p.
1174         (scan_use): Remove use_all parameter.
1175         (scalarize_use): Likewise.  Re-expand assignment to
1176         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
1177         output, and re-scalarize after output.  Don't mark anything
1178         for no warning.
1179         (scalarize_ldst): Adjust.
1180         (scalarize_walk_gimple_modify_statement): Likewise.
1181         (build_element_name_1): Handle BIT_FIELD_REFs.
1182         (instantiate_element): Don't warn for any element whose parent
1183         is used as a whole.
1184         (instantiate_missing_elements_1): Return the sra_elt.
1185         (canon_type_for_field): New.
1186         (try_instantiate_multiple_fields): New.
1187         (instantiate_missing_elemnts): Use them.
1188         (mark_no_warning): Removed.
1189         (generate_one_element_ref): Handle BIT_FIELD_REFs.
1190         (REPLDUP, sra_build_elt_assignment): New.
1191         (generate_copy_inout): Use them.
1192         (generate_element_copy): Likewise.  Handle bitfld differences.
1193         (generate_element_zero): Don't recurse for blocks.  Use
1194         sra_build_elt_assignment.
1195         (generate_one_element_int): Take elt instead of var.  Use
1196         sra_build_elt_assignment.
1197         (generate_element_init_1): Adjust.
1198         (scalarize_use, scalarize_copy): Use REPLDUP.
1199         (scalarize_ldst): Move assert before dereference.
1200         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
1201
1202 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
1203
1204         * regmove.c: Fix unused variable warnings due to previous commit.
1205
1206 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
1207
1208         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
1209         (regmove_bb_head): Remove.
1210         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
1211         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
1212         problems with fixup_match_1.
1213         Don't initialize/free regmove_bb_head.
1214
1215         (reg_is_remote_constant_p): If an insn is in the same basic block
1216         but not before INSN, consider it remote, too.
1217
1218 2007-04-05  Anatoly Sokolov <aesok@post.ru>
1219
1220         PR target/25448
1221         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
1222         DECL_ASSEMBLER_NAME, not the DECL_NAME.
1223
1224 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
1225
1226         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
1227         (CONDITIONAL_REGISTER_USAGE): Likewise.
1228
1229 2007-04-04  Richard Henderson  <rth@redhat.com>
1230
1231         * config/alpha/lib1funcs.asm: Remove unused file.
1232
1233 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1234
1235         PR other/31356
1236         * opts.c (print_specific_help): Fix --help=<language>
1237         header line.
1238         (common_handle_option): Support --help=common.
1239
1240 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1241
1242         PR other/31353
1243         * gcc.c (main): Do not run the linker if
1244         print_subprocess_help indicates that it shouldn't be
1245         run.
1246
1247 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1248
1249         PR doc/31355
1250         * doc/invoke.texi (--help=): Document <languages> value, fix
1251         formatting in tables of values.
1252
1253 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
1254
1255         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
1256         dllimport attribute of virtual methods.
1257
1258 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
1259
1260         * config/score/crti.asm: Change _bss_start to __bss_start.
1261         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
1262         (OUTGOING_REG_PARM_STACK_SPACE) update.
1263         * config/score/score.opt: add options to make backend support
1264         score5, score5u, score7 and score7d.
1265         * config/score/score.md: Likewise.
1266         * config/score/misc.md: Likewise.
1267         * config/score/mac.md: Likewise.
1268         * doc/invoke.texi: Likewise.
1269         * doc/md.texi: update constraints define.
1270
1271 2007-04-03  Richard Henderson  <rth@redhat.com>
1272
1273         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
1274         an appropriate type, use the mode instead.
1275
1276 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
1277
1278         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
1279         Set the default --with-arch setting to mips2.
1280         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
1281         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1282         (MULTILIB_OSDIRNAMES): Delete.
1283         (MULTILIB_DIRNAMES): Define.
1284         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
1285         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
1286         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
1287         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
1288         VXWORKS_OS_CPP_BUILTINS.
1289         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
1290         (MIPS_DEBUGGING_INFO): Undefine.
1291         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
1292
1293 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
1294
1295         PR middle-end/30704
1296         * fold-const.c (native_encode_real): Encode real.c provided longs
1297         as a series of 32-bit native integers.
1298         (native_interpret_real): Interpret buffer as a series of 32-bit
1299         native integers.
1300
1301 2007-04-03  Richard Guenther  <rguenther@suse.de>
1302
1303         * genpreds.c (write_insn_constraint_len): Write function
1304         optimized for CONSTRAINT_LEN implementation.
1305         (write_tm_preds_h): Output insn_constraint_len inline and
1306         use it for CONSTRAINT_LEN.
1307         (write_insn_preds_c): Don't output insn_constraint_len.
1308         * doc/md.texi (define_register_constraint): Document multi-letter
1309         constraints shall have the same length if they start with the same
1310         letter.
1311
1312 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
1313
1314         PR target/31175
1315         * config/i386/i386.md (isinf<mode>2): Expand only when
1316         TARGET_C99_FUNCTIONS is set.
1317
1318 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
1319
1320         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
1321         (x86_64-*-linux*): Ditto.
1322         * config/i386/i386.opt (mpc): New option.
1323         * config/i386/i386.c (overrride_options): Handle
1324         ix87_precision_string.
1325         * config/i386/crtprec.c: New file.
1326         * config/i386/t-crtpc: Ditto.
1327         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
1328         and -mpc80 options.
1329         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
1330         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
1331         crtprec32.o, crtprec64.o and crtprec80.o.
1332
1333         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
1334         and -mpc80 options.
1335         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
1336
1337 2007-04-02  Eric Christopher  <echristo@apple.com>
1338
1339         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
1340         limitations on darwin.
1341
1342 2007-04-02  Anatoly Sokolov <aesok@post.ru>
1343
1344         PR target/31137
1345         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
1346
1347 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1348
1349         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
1350
1351 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1352
1353         * libgcc2.h (exception_descriptor): Don't forward-declare.
1354         (__get_eh_table_language, __get_eh_table_version): Delete
1355         prototypes of long-dead functions.
1356
1357 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
1358
1359         * ebitmap.h: New file
1360         * ebitmap.c: New file
1361         * Makefile.in (ebitmap.o): New target.
1362
1363 2007-04-01  Jan Hubicka  <jh@suse.cz>
1364
1365         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
1366         before very first instruction.
1367
1368 2007-04-01  Jan Hubicka  <jh@suse.cz>
1369
1370         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
1371         waring on 64bit hosts.
1372         * bitmap.h: Fix typo in bitmap_head_def.
1373
1374 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
1375
1376         PR rtl-optimization/31391
1377         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
1378         into a DELETED_LABEL note, and the label is in an empty basic
1379         block, update BB_END as well as BB_HEAD.
1380
1381 2007-04-01  Richard Henderson  <rth@redhat.com>
1382
1383         PR tree-optimization/31169
1384         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
1385         to varying if the range is outside [0,  prec-1].
1386
1387 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
1388
1389         PR target/31388
1390         * config/mips/mips.md (load_const_gp): New insn.
1391         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
1392         the MIPS16 GP pseudo register if no_new_pseudos.
1393         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
1394
1395 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1396
1397         PR target/31364
1398         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
1399         secureplt.
1400         (call_value): Likewise.
1401
1402 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
1403             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1404
1405         PR 14737
1406         * doc/invoke.texi: (optimization options): Reword description
1407         of -ffast-math. Document its primary purpose.
1408
1409 2007-03-31  Richard Guenther  <rguenther@suse.de>
1410
1411         * omp-low.c (splay-tree.h): Include.
1412         (lookup_decl): Replace splay-tree usage by pointer-map.
1413         (maybe_lookup_decl): Likewise.
1414         (new_omp_context): Likewise.
1415         (delete_omp_context): Likewise.
1416         * gimplify.c (splay-tree.h): Include.
1417         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
1418         pointer-map.
1419         (remap_ssa_name): Likewise.
1420         (remap_decl): Likewise.
1421         (remap_type_1): Likewise.
1422         (remap_type): Likewise.
1423         (copy_body_r): Likewise.
1424         (expand_call_inline): Likewise.
1425         (clone_body): Likewise.
1426         (copy_tree_r): Likewise.
1427         (remap_save_expr): Likewise.
1428         (unsave_r): Likewise.
1429         (unsave_expr_now): Likewise.
1430         (tree_function_versioning): Likewise.
1431         (build_duplicate_type): Likewise.
1432         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
1433         (struct copy_body_data): Replace splay-tree by pointer-map.
1434         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
1435         not $(SPLAY_TREE_H).
1436         (gimplify.o): Depend on $(SPLAY_TREE_H).
1437         (omp-low.p): Likewise.
1438
1439 2007-03-31  Anatoly Sokolov <aesok@post.ru>
1440
1441         * config/avr/predicates.md (even_register_operand,
1442         odd_register_operand): New predicates.
1443         * config/avr/avr.md (movw peephole2): New.
1444         (movw_r peephole2): New.
1445
1446 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
1447
1448         * tree.h (get_signed_or_unsigned_type): New.
1449         * fold-const.c (operand_equal_for_comparison_p): Use
1450         get_signed_or_unsigned_type instead of
1451         lang_hooks.types.signed_or_unsigned_type.
1452         * expr.c (store_expr): Ditto.
1453         * langhooks.c (get_signed_or_unsigned_type): New.
1454         (lhd_signed_or_unsigned_type): New.
1455         * langhooks.h (lhd_signed_or_unsigned_type): New.
1456         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
1457
1458 2007-03-30  Richard Henderson  <rth@redhat.com>
1459
1460         * tree-ssa-loop-ivopts.c: Include target.h.
1461         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
1462         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
1463         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
1464         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
1465
1466 2007-03-30  Richard Henderson  <rth@redhat.com>
1467             Kai Tietz  <kai.tietz@onevision.com>
1468
1469         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
1470         default for 64-bit.
1471         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
1472         (TARGET_64BIT_MS_ABI): New.
1473         (DBX_REGISTER_NUMBER): Handle 64-bit.
1474         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
1475         (LONG_TYPE_SIZE): Force to 32.
1476         (REG_PARM_STACK_SPACE): New.
1477         (OUTGOING_REG_PARM_STACK_SPACE): New.
1478         (REGPARM_MAX, SSE_REGPARM_MAX): New.
1479         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1480         (STACK_BOUNDARY): Use 128 for 64-bit.
1481         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
1482         Add 64-bit implementation.
1483         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
1484         argument unused.
1485         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
1486         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
1487         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
1488         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
1489         (ix86_handle_cconv_attribute): Don't warn when ignoring if
1490         TARGET_64BIT_MS_ABI.
1491         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
1492         (ix86_pass_by_reference): Likewise.
1493         (ix86_function_value_regno_p): Likewise.
1494         (ix86_build_builtin_va_list): Likewise.
1495         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
1496         (function_arg_advance_ms_64): New.
1497         (function_arg_advance): Call it.
1498         (function_arg_ms_64): New.
1499         (function_arg): Call it.
1500         (function_value_ms_64): New.
1501         (ix86_function_value_1): Call it.
1502         (return_in_memory_ms_64): New.
1503         (ix86_return_in_memory): Call it.
1504         (setup_incoming_varargs_ms_64): New.
1505         (ix86_setup_incoming_varargs): Call it.
1506         (ix86_expand_prologue): Handle 64-bit stack probing.
1507         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
1508         (output_pic_addr_const): Likewise.
1509         (x86_this_parameter): Likewise.
1510         (x86_output_mi_thunk): Likewise.
1511         (x86_function_profiler): Likewise.
1512         (TARGET_STRICT_ARGUMENT_NAMING): New.
1513         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
1514         (TARGET_64BIT_MS_ABI): New.
1515         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
1516         * config/i386/i386.md (allocate_stack_worker): Remove.
1517         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
1518         describe the clobber of eax without a match_scratch.
1519         (allocate_stack_worker_postreload): Remove.
1520         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
1521         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
1522         (allocate_stack_worker_rex64_postreload): Remove.
1523         (allocate_stack): Handle 64-bit.
1524         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
1525         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
1526         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
1527         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
1528         (STANDARD_STARTFILE_PREFIX_1): Likewise.
1529         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
1530         * config.build (x86_64-*-mingw*): New host.
1531         * config.host (x86_64-*-mingw*): New host.
1532         * config.gcc (x86_64-*-mingw*): New target.
1533         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
1534
1535 2007-03-30  Richard Henderson  <rth@redhat.com>
1536             Kai Tietz  <kai.tietz@onevision.com>
1537
1538         * c-pragma.c (struct def_pragma_macro_value): New.
1539         (struct def_pragma_macro): New.
1540         (pushed_macro_table): New.
1541         (dpm_hash, dpm_eq): New.
1542         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
1543         (init_pragma): Install them.
1544         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1545
1546 2007-03-30  Anatoly Sokolov <aesok@post.ru>
1547
1548         * config/avr/avr.c (avr_override_options): Clear
1549         'flag_delete_null_pointer_checks'.
1550
1551 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
1552
1553         PR c++/26099
1554         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
1555         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
1556         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
1557         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
1558         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
1559         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
1560         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
1561         C++ extensions.
1562         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
1563
1564 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
1565
1566         * regmove.c: Move all of pass_stack_adjustments from here...
1567         * combine-stack-adj.c: ...to this new file.
1568         * Makefile.in: Add rules for combine-stack-adj.o.
1569
1570 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
1571
1572         PR tree-optimization/31383
1573         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
1574         to have the same length.
1575
1576 2007-03-30  Jan Hubicka  <jh@suse.cz>
1577
1578         PR middle-end/30700
1579         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
1580         availablility; add more sanity checking; ask varpool only about
1581         VAR_DECL.
1582
1583 2007-03-29  Richard Henderson  <rth@redhat.com>
1584
1585         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
1586         to decide, but __SIZEOF_LONG_LONG__.
1587
1588 2007-03-29  Richard Henderson  <rth@redhat.com>
1589
1590         * emutls.c (struct __emutls_array): New.
1591         (emutls_destroy): Use it instead of casting element 0 from void*.
1592         (__emutls_get_address): Likewise.
1593
1594 2007-03-29  Richard Henderson  <rth@redhat.com>
1595
1596         * varasm.c (initializer_constant_valid_p): Don't deny
1597         DECL_DLLIMPORT_P on functions.
1598
1599         * config/i386/cygming.h: Remove function declarations.
1600         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
1601         (ASM_OUTPUT_LABELREF): Remove.
1602         (COMMON_ASM_OP): Remove.
1603         (ASM_OUTPUT_COMMON): Remove.
1604         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
1605         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
1606         (ASM_DECLARE_FUNCTION_NAME): Likewise.
1607         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
1608         Rename from TARGET_ENCODE_SECTION_INFO.
1609         * config/i386/netware.h: Likewise.
1610         * config/i386/i386-protos.h: Update.
1611         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
1612         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
1613         (legitimate_constant_p): Reject dllimports.
1614         (dllimport_map, get_dllimport_decl): New.
1615         (legitimize_dllimport_symbol): New.
1616         (legitimize_address, ix86_expand_move): Use it.
1617         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
1618         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
1619         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
1620         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
1621         * config/i386/predicates.md (constant_call_address_operand): Only
1622         accept symbols; reject dllimport_p symbols.
1623         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
1624         i386_pe_maybe_record_exported_symbol.
1625         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
1626         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
1627         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
1628         trust the setting of DECL_DLLIMPORT_P.
1629         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
1630         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
1631         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
1632         tidy the argument scanning loop.
1633         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
1634         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
1635         (i386_pe_strip_name_encoding): Remove.
1636         (i386_pe_binds_local_p): New.
1637         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
1638         (i386_pe_output_labelref): Remove.
1639         (i386_pe_asm_output_aligned_decl_common): New.
1640         (i386_pe_maybe_record_exported_symbol): Rename from
1641         i386_pe_record_exported_symbol; check for dllexported symbols.
1642
1643 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
1644
1645         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
1646         add comment explaining why vsnprintf cannot be used.
1647
1648 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
1649
1650         PR tree-optimization/30666
1651         * tree.c (build_complex_type): When creating type names for DWARF2
1652         debug info, create TYPE_DECLs for TYPE_NAME instead of
1653         IDENTIFIER_NODEs.
1654         (build_common_tree_nodes_2): Use build_complex_type when building
1655         predefined complex types, to preserve canonical types.
1656
1657 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
1658
1659         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
1660         (noce_get_alt_condition): Look at it to determine whether to
1661         reverse the condition or not.
1662         (noce_get_condition): Substitute the truth for lies.
1663         (noce_find_if_block): Set the then_else_reversed field.
1664
1665 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
1666
1667         * config/fr30/fr30.md (movdi): Do not accept immediates as the
1668         destination of this insn.
1669         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
1670         than calling gen_rtx_SET directly.  Use r0 to hold the value of
1671         'address + 4' rather than a stack based temporary which can be
1672         mis-optimized away.
1673
1674 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1675
1676         * config/s390/s390.c (s390_secondary_input_reload_class,
1677         s390_secondary_output_reload_class): Functions removed.
1678         (s390_secondary_reload): New function.
1679         (TARGET_SECONDARY_RELOAD): Target macro defined.
1680         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
1681         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
1682         * config/s390/s390.md ("reload_outti", "reload_outdi",
1683         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
1684         "reload_out<mode>"): Expanders removed.
1685         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
1686         "reload<mode>_nonoffmem_out"): Expanders added.
1687
1688 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1689
1690         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
1691         SRC->DEST replacement failed anyway.
1692
1693 2007-03-28  Mike Stump  <mrs@apple.com>
1694
1695         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
1696         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
1697         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
1698
1699 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1700
1701         * config.gcc: Accept barcelona as a variant of amdfam10.
1702         * config/i386/i386.c (override_options): Likewise.
1703         * doc/invoke.texi: Likewise.
1704
1705 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
1706
1707         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
1708         offsets for BIT_FIELD_REF and COMPONENT_REF.
1709
1710 2007-03-28  Richard Guenther  <rguenther@suse.de>
1711
1712         * tree.c (is_global_var): Move ...
1713         * tree-flow-inline.h (is_global_var): ... here.
1714         * tree.h (is_global_var): Remove declaration.
1715
1716 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
1717
1718         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
1719         option.
1720         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
1721         * config/i386/i386.c (ix86_tune_features): Initialize new
1722         tuning option.
1723         * config/i386/predicates.md (promotable_binary_operator): Use
1724         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
1725
1726 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
1727
1728         PR target/31380
1729         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
1730
1731 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
1732
1733         * config/fr30/fr30.md (movsi_internal): Change destination
1734         constraint from m to V and add m to the end.
1735
1736 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1737
1738         * config/sh/sh.md (movsi_i): Fix type attribute.
1739
1740 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1741
1742         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
1743         (movsf_ie): Likewise.
1744
1745 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1746
1747         * config.gcc: Add sh4-300 to multilib.
1748         * config/sh/t-mlib-sh4-300: New file.
1749
1750 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1751
1752         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
1753         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
1754         fix_trunc<mode>di2.
1755         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
1756         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
1757         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
1758         "fixuns_trunctddi2"): Whitespace fix.
1759
1760 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1761
1762         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
1763         the definition of struct sh_args.
1764         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
1765         CALL_COOKIE_INT_REG_GET): Likewise.
1766
1767 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
1768
1769         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
1770         transformations are applied successfully.
1771
1772 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
1773
1774         * tree.c (tree_contains_struct): Permit 512 tree codes.
1775         * tree.h (tree_contains_struct): Ditto.
1776         (MAX_TREE_CODES): Ditto.
1777         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
1778         SPARE member to store remaining padding bits.
1779
1780 2007-03-27  Anatoly Sokolov <aesok@post.ru>
1781
1782         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
1783         architecture.
1784
1785 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
1786
1787         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
1788         * configure: Regenerate.
1789
1790         * configure: Regenerate using the correct version of autoconf.
1791
1792 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
1793
1794         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
1795         pointer regs.
1796         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
1797         regs to "__SP_L__" and "__SP_H__".
1798
1799 2007-03-27  Richard Guenther  <rguenther@suse.de>
1800
1801         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
1802         computations with it with a HOST_WIDE_INT variable.
1803
1804 2007-03-26  Mike Stump  <mrs@apple.com>
1805
1806         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
1807         objective-c-header, objective-c++-header and objc++-cpp-output
1808         support.
1809         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
1810
1811 2007-03-26  Richard Henderson  <rth@redhat.com>
1812
1813         PR target/31361
1814         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
1815         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
1816         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
1817         IX86_BUILTIN_PSRLQ128): New.
1818         (ix86_init_mmx_sse_builtins): Add them.
1819         (ix86_expand_builtin): Expand them.
1820         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
1821         operand 2 be TImode.
1822         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
1823         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
1824         _mm_srli_epi64): Mark __B const.
1825         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
1826         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
1827         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
1828         new two-vector shift builtins.
1829
1830 2007-03-26  Ian Lance Taylor  <iant@google.com>
1831
1832         PR tree-optimization/31345
1833         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
1834         [+INF, +INF(OVF)] into VARYING.
1835
1836 2007-03-26  Zack Weinberg  <zackw@panix.com>
1837
1838         * gengtype-parse.c: New file.
1839         * gengtype-yacc.y: Delete.
1840         * gengtype-lex.l: Don't include gengtype-yacc.h.
1841         Define YY_DECL and yyterminate appropriately for recursive
1842         descent parser.  yylval is now a string out-parameter to yylex.
1843         (HWS, EOID): New shorthand.
1844         (IWORD): Add a couple more types.
1845         (yylex): Add a setup stanza.  Remove the complex rules for
1846         detecting GTY'ed types and typedefs; replace with simple
1847         keyword detectors.  Adjust everything for the changed
1848         definition of yylval.  Ignore all pp-directives, not just #define.
1849         (yyerror): Delete.
1850         (parse_file): Rename yybegin; do not call yyparse.
1851         (yyend): New.
1852         * gengtype.c (xasprintf): Export again.
1853         (this_file): New.  Use everywhere __FILE__ was being used.
1854         (get_lang_bitmap): Special case types defined in gengtype.c.
1855         (do_typedef, new_structure): Suppress definition of certain types.
1856         (new_structure): Improve diagnostics of duplicate definitions.
1857         Make sure location_s is associated with input.h.
1858         (nreverse_pairs, define_location_structures): New functions.
1859         (main): Improve tagging of kludge types.  Remove old kludges
1860         for input.h types; use define_location_structures.
1861         * gengtype.h: Update prototypes.  Define token codes here.
1862         * Makefile.in: Remove all references to gengtype-yacc.
1863         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
1864         and gengtype.
1865         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
1866         add GTY((skip)) to the field that's only conditionally there.
1867         * doc/install.texi: Document that Bison is no longer required
1868         unless building treelang.
1869
1870         * gengtype.c: Don't include gtyp-gen.h.
1871         (srcdir): Declare here.
1872         (base_files, lang_dir_names): Allocate dynamically.
1873         (gt_files, num_gt_files, num_lang_dirs): New globals.
1874         (measure_input_list, read_input_line, read_input_list)
1875         (set_lang_bitmap): New functions.
1876         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
1877         simplify, relying on read_input_list to set up the bitmaps.
1878         (main): Arguments are no longer unused.  Check for correct number
1879         of command line arguments, set srcdir and srcdir_len, then call
1880         read_input_list, before doing anything else.  No need to worry
1881         about duplicates in main loop.
1882         * configure.ac: Simplify the calculation of all_gtfiles.
1883         Put language tags in there.  Don't set or substitute
1884         all_gtfiles_files_langs or all_gtfiles_files_frags.
1885         * Makefile.in: Revamp the way gengtype is invoked, now that it
1886         takes a file on its command line with a much simpler format.
1887         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
1888         (GTFILES): Remove duplicates and C source files.
1889         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
1890         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
1891         * configure: Regenerate.
1892
1893         * gengtype.h: Remove all type definitions to gengtype.c; leave
1894         only definitions of options_p, type_p, and pair_p as opaque
1895         pointers.  Update prototypes.
1896         * gengtype.c: Many type definitions moved here from gengtype.h.
1897         Consolidate type definitions at the top of the file.
1898         (xvasprintf): Delete.
1899         (xasprintf): Make static.
1900         (create_nested_pointer_option): Add 'next' parameter.
1901         (create_field_all, create_field_at): New functions.
1902         (create_field): Now a thin wrapper around create_field_all.
1903         (create_optional_field): Rename create_optional_field_ and add
1904         line argument.  Original name is now a macro which supplies
1905         __LINE__.
1906         (oprintf): Use vsnprintf directly.
1907         (close_output_files): Use fatal rather than perror/exit.
1908         (note_def_vec, note_def_vec_alloc): Use create_field_at.
1909         (main): Set progname.  Don't use exit.
1910         * gengtype-yacc.y (struct_fields): Use create_field_at.
1911         (option, optionseqopt): Delete.
1912         (optionseq): Consolidate productions from option here so we
1913         can use the first argument to create_option.
1914
1915         * gengtype-lex.l: Distinguish unions from structures in the
1916         token type.  Don't call find_structure; return the tag as a string.
1917         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
1918         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
1919         Reorganize typedef_struct production accordingly.
1920         Use create_nested_ptr_option.
1921         * gengtype.c (create_nested_ptr_option): New function.
1922         * gengtype.h: Declare it.
1923
1924         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
1925         (string_type): Don't declare.
1926         (do_scalar_typedef): Declare.
1927         (create_scalar_type): Update prototype.
1928         * gengtype.c (string_type): Make static.
1929         (scalar_nonchar, scalar_char): New.
1930         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
1931         (resolve_typedef): Use scalar_nonchar for error recovery.
1932         (create_scalar_type): Remove name_len field.  Return scalar_char
1933         or scalar_nonchar as appropriate.
1934         (adjust_field_type): Look at scalar_is_char boolean to decide whether
1935         to use string_type.
1936         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
1937         whenever possible.
1938         (main): Initialize scalar_char and scalar_nonchar before calling
1939         gen_rtx_next.
1940         * gengtype-lex.l: Adjust for removal of second argument to
1941         create_scalar_type.  Use yylval.s instead of yylval.t when
1942         returning SCALAR.
1943         * gengtype-yacc.y: Type of SCALAR is string.  Call
1944         create_scalar_type from type:SCALAR rule.  Adjust for removal of
1945         second argument to create_scalar_type.
1946
1947         * vec.h: Remove all #if IN_GENGTYPE blocks.
1948         Add comment saying that changes may require adjustments to gengtype.
1949         * gengtype.c: Don't include coretypes.h or tm.h.
1950         Add comment to inclusion of errors.h.
1951         (note_def_vec, note_def_vec_alloc): New functions.
1952         * gengtype.h: Declare new functions.
1953         * gengtype-lex.l: Don't include coretypes.h.
1954         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
1955         Delete.
1956         (update_lineno): Remove unnecessary prototype.
1957         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
1958         (VEC rule): Just return VEC_TOKEN.
1959         * gengtype-yacc.y (VEC_TOKEN): New token type.
1960         (type): Add a production for VEC(a,b).
1961         * Makefile.in: Update dependencies.
1962
1963         * gengtype-lex.l: Remove rules for parsing pointer-to-function
1964         typedefs that use the old PARAMS macro.
1965
1966         * gengtype-lex.l: Remove all rules and states relating to yacc
1967         input files.
1968         * gengtype-yacc.y: Similarly.
1969         * gengtype.c (note_yacc_type): Delete function.
1970         * gengtype.h: Update prototypes.
1971
1972 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
1973
1974         * tree-pretty-print.c (dump_generic_node): Report precision of
1975         unnamed integer types.
1976
1977 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
1978
1979         * ifcvt.c (noce_try_store_flag_constants): Don't check
1980         no_new_pseudos here.
1981         (noce_try_store_flag_constants): Don't check no_new_pseudos.
1982         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
1983         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
1984         noce_try_sign_mask): Likewise.
1985         (if_convert): Check no_new_pseudos here.
1986
1987         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
1988         Remove prototypes.
1989         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
1990         (noce_get_condition): Handle new then_else_reversed argument.
1991         (noce_init_if_info): Remove, fold into noce_find_if_block.
1992         (noce_process_if_block): Take a struct noce_if_info as the
1993         argument.  Don't set up one based on ce_if_info.  Update pointer
1994         references accordingly.
1995         (cond_move_process_if_block): Likewise.
1996         (process_if_block): Removed.
1997         (find_if_block): Removed.  Move functionality two new functions,
1998         noce_find_if_block and cond_exec_find_if_block.
1999         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
2000         blocks and the symmetric IF-ELSE-JOIN case.
2001         (cond_exec_find_if_block): Also new function mostly based on old
2002         find_if_block and process_if_block.
2003         (find_if_header): Replace find_if_block call with separately
2004         guarded calls to noce_find_if_block and cond_exec_find_if_block.
2005         (find_cond_trap): Update noce_get_condition call.
2006         (dead_or_predicable): Likewise.
2007
2008 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
2009
2010         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
2011         Remove.
2012         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
2013         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
2014         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
2015         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
2016         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
2017         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
2018         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
2019         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
2020         __builtin_ia32_psrad128 builtins.
2021
2022 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
2023
2024         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
2025         * config/i386/constraints.md
2026         (define_constraint "I"): Use IN_RANGE macro.
2027         (define_constraint "J"): Ditto.
2028         (define_constraint "K"): Ditto.
2029         (define_constraint "M"): Ditto.
2030         (define_constraint "N"): Ditto.
2031         (define_constraint "O"): Ditto.
2032         * config/i386/predicates.md
2033         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
2034         (define_predicate "const_0_to_3_operand"): Ditto.
2035         (define_predicate "const_0_to_7_operand"): Ditto.
2036         (define_predicate "const_0_to_15_operand"): Ditto.
2037         (define_predicate "const_0_to_63_operand"): Ditto.
2038         (define_predicate "const_0_to_255_operand"): Ditto.
2039         (define_predicate "const_1_to_31_operand"): Ditto.
2040         (define_predicate "const_2_to_3_operand"): Ditto.
2041         (define_predicate "const_4_to_7_operand"): Ditto.
2042
2043 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
2044
2045         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
2046         in SImode for save_world.
2047         * config/rs6000/altivec.md (save_world, restore_world): Convert to
2048         LR hard reg.
2049
2050 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
2051
2052         PR tree-optimization/30784
2053         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
2054         BIT_FIELD_REF.
2055
2056 2007-03-25  Revital Eres  <eres@il.ibm.com>
2057
2058         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
2059           Fold movement_possibility function into it.
2060
2061 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
2062
2063         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
2064         (load_macho_picbase_{si,di}): Convert to LR hard reg.
2065         (call_indirect_nonlocal_darwin64): Same.
2066         (call_nonlocal_darwin64): Same.
2067         (call_value_indirect_nonlocal_darwin64): Same.
2068         (call_value_nonlocal_darwin64): Same.
2069         (sibcall_nonlocal_darwin64): Same.
2070         (sibcall_value_nonlocal_darwin64): Same.
2071         (sibcall_symbolic_64): Same.
2072         (sibcall_value_symbolic_64): Same.
2073         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
2074         LR pseudo.
2075         (rs6000_emit_load_toc_table): Same.
2076         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
2077         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
2078         (mull_call): Same.
2079         (divss_call): Same.
2080         (divus_call): Same.
2081         (quoss_call): Same.
2082         (quous_call): Same.
2083         (load_toc_v4_pic_si): Same
2084         (load_toc_v4_PIC_1): Same.
2085         (load_toc_v4_PIC_1b): Same.
2086         (call_indirect_aix{32,64}): Same.
2087         (call_value_indirect_aix{32,64}): Same.
2088         (call): Same.
2089         (call_value): Same.
2090         (call_local{32,64}): Same.
2091         (call_value_local{32,64}): Same.
2092         (call_indirect_nonlocal_aix{32,64}): Same.
2093         (call_nonlocal_aix{32,64}): Same.
2094         (call_value_indirect_nonlocal_aix{32,64}): Same.
2095         (call_value_nonlocal_aix{32,64}): Same.
2096         (call_indirect_nonlocal_sysv<mode>): Same.
2097         (call_nonlocal_sysv<mode>): Same.
2098         (call_value_indirect_nonlocal_sysv<mode>): Same.
2099         (call_value_nonlocal_sysv<mode>): Same.
2100         (sibcall): Same.
2101         (sibcall_local{32,64}): Same.
2102         (sibcall_value_local{32,64}): Same.
2103         (sibcall_nonlocal_aix{32,64}): Same.
2104         (sibcall_value_nonlocal_aix{32,64}): Same.
2105         (sibcall_nonlocal_sysv<mode>): Same.
2106         (sibcall_value): Same.
2107         (sibcall_value_nonlocal_sysv<mode>): Same.
2108
2109 2007-03-24  Paul Brook  <paul@codesourcery.com>
2110
2111         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
2112         * config/arm/linux-eabi.h: Remove legacy syscall hack.
2113
2114 2007-03-24  Richard Henderson  <rth@redhat.com>
2115
2116         * config/ia64/constraints.md: New file.
2117         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
2118         satisfies_constraint_?.
2119         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
2120         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
2121         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
2122         ia64_output_mi_thunk): Likewise.
2123         (ia64_const_ok_for_letter_p): Remove.
2124         (ia64_const_double_ok_for_letter_p): Remove.
2125         (ia64_extra_constraint): Remove.
2126         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
2127         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
2128         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
2129         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
2130         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
2131         EXTRA_MEMORY_CONSTRAINT): Remove.
2132         * config/ia64/ia64.md: Include constriants.md.  Replace
2133         CONST_OK_FOR_? with satisfies_constraint_?.
2134
2135 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
2136             H.J. Lu  <hongjiu.lu@intel.com>
2137
2138         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
2139         DPD or BID name.
2140         (name macros): Use DPD_BID_NAME to convert names properly.
2141
2142         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
2143         decimal floating point format.
2144         (init_floating_libfuncs): Change decimal functions so that they
2145         have a "bid_" prefix if the decimal system uses the BID format,
2146         and "dpd_" prefix if the decimal system uses the DPD format.
2147         (init_interclass_conv_libfuncs): Ditto.
2148         (init_intraclass_conv_libfuncs): Ditto.
2149
2150         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
2151         using the BID format.
2152
2153         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
2154         whether we are using the BID decimal format.
2155         * configure: Regenerate.
2156
2157         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
2158         the compiler has decimal floating point enabled.  Define
2159         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
2160         instead of DPD.
2161
2162         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
2163         using the BID format.
2164
2165         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
2166         whether we are using the BID decimal format.
2167         * configure: Regenerate.
2168
2169         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
2170         the compiler has decimal floating point enabled.  Define
2171         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
2172         instead of DPD.
2173
2174         * doc/install.texi (--enable-decimal-float): Document BID and DPD
2175         options, and that it is enabled for i386/x86_64 systems.
2176
2177         * Makefile.in (enable_decimal_float): New.
2178         (DECNUMFMT): New.
2179         (DECNUMINC): Add  -I$(DECNUMFMT).
2180         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
2181         to $(DECNUMFMT) from $(DECNUM).
2182
2183         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
2184         Substitute enable_decimal_float.
2185         * configure: Regenerated.
2186
2187         PR other/30529
2188         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
2189         unsigned long.
2190
2191         * configure.ac: Enable decimal float for x86_64-*-linux*.
2192         * configure: Regenerated.
2193
2194         PR other/30530
2195         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
2196         decimal128ClearSign to flip and clear the sign bit in decimal128.
2197         (decimal_real_maxval): Set decimal128SetSign to set the sign
2198         bit in decimal128.
2199
2200 2007-03-23  Ian Lance Taylor  <iant@google.com>
2201
2202         * fold-const.c (fold_binary): Correct warning for X - c >= X.
2203
2204 2007-03-23  Ian Lance Taylor  <iant@google.com>
2205
2206         * tree-dump.c (dump_files): Correct comment.
2207
2208 2007-03-23  Ian Lance Taylor  <iant@google.com>
2209
2210         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
2211
2212 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
2213
2214         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
2215         in cfglayout mode.  Don't go into and out of cfglayout mode.
2216         Link the blocks in the order of the constructed traces.
2217         (rest_of_handle_tracer): Adjust call to tracer.
2218         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
2219         Don't go into cfglayout mode.
2220         (rtl_loop_done): Don't go out of cfglayout mode.
2221         * cfglayout.c (relink_block_chain): New function, split out from...
2222         (fixup_reorder_chain): ...here.  Remove redundant checking.
2223         (cfg_layout_finalize): Don't clear the header, footer, and aux
2224         fields here, move the code to do so to relink_block_chain.  Likewise
2225         for free_original_copy_tables.
2226         * rtl.h (tracer): Update prototype.
2227         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
2228         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
2229         mode.  Use relink_block_chain to serialize the CFG according to the
2230         new basic block order.  Move targetm.cannot_modify_jumps_p check from
2231         here...
2232         (gate_handle_reorder_blocks): ...to here.
2233         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
2234         from here...
2235         (gate_duplicate_computed_gotos): ...to here.
2236         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
2237         something always changes when going into and out of cfglayout mode.
2238         Perform an expensive cfg cleanup while going into cfglayout mode.
2239         Always update liveness information on HAVE_conditional_execution
2240         targets.  Reserialize the basic blocks and go out of cfglayout mode.
2241         * reg-stack.c: Include cfglayout.h.
2242         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
2243         the call to reorder_basic_blocks.
2244         * basic-block.h (reorder_basic_blocks): Update prototype.
2245         (relink_block_chain): New prototype.
2246         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
2247
2248 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
2249
2250         * config/mips/mips.md (type, hazard, *movdi_32bit,
2251         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
2252         *movhi_internal, *movqi_internal, *movsf_hardfloat,
2253         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
2254         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
2255         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
2256         applicable.
2257         (movcc): Change first xfer to multi.
2258         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
2259         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
2260         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
2261         config/mips/generic.md: Change reservations using "xfer" to use
2262         "mfc,mtc".
2263         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
2264         using match_operand.
2265         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
2266         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
2267         examining mode.
2268         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
2269
2270 2007-03-22  Richard Henderson  <rth@redhat.com>
2271
2272         * config/i386/i386.c: Remove unnecessary function declarations.
2273         Move targetm definition, and all related macros, to the end of
2274         the file.  Resort some functions to put definitions before uses.
2275         (ix86_attribute_table): Make static.  Move to end of file.
2276         (ix86_gimplify_va_arg): Make static.
2277
2278 2007-03-22  Richard Henderson  <rth@redhat.com>
2279
2280         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
2281         don't increase local_regparm with force_align_arg_pointer check.
2282         (ix86_function_sseregparm): Assert 32-bit.
2283         (type_has_variadic_args_p): New.
2284         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
2285         type_has_variadic_args_p.
2286         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
2287         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
2288         use memset instead.  Do maybe_vaarg check first; skip attribute
2289         tests if true; skip attribute tests for 64-bit.
2290         (construct_container): Remove TARGET_DEBUG_ARG.
2291         (function_arg_advance_32, function_arg_advance_64): Split out ...
2292         (function_arg_advance): ... from here.
2293         (function_arg_32, function_arg_64): Split out ...
2294         (function_arg): ... from here.
2295         (ix86_pass_by_reference): Tidy.
2296         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
2297         (function_value_32): New, from parts of ix86_function_value
2298         and ix86_value_regno.
2299         (function_value_64): New, from parts of ix86_function_value
2300         and ix86_libcall_value.
2301         (ix86_function_value_1): New.
2302         (ix86_function_value, ix86_libcall_value): Use it.
2303         (return_in_memory_32, return_in_memory_64): Split out ...
2304         (ix86_return_in_memory): ... from here.
2305         (ix86_struct_value_rtx): Skip for 64-bit.
2306         (ix86_libcall_value, ix86_value_regno): Remove.
2307         (setup_incoming_varargs_64): Split out ...
2308         (ix86_setup_incoming_varargs): ... from here.
2309         (ix86_va_start): Remove TARGET_DEBUG_ARG.
2310         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
2311         * config/i386/i386-protos.h (ix86_function_value): Remove.
2312         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
2313
2314 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2315
2316         PR other/23572
2317         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
2318         infinities not supported, otherwise emit warning if -Woverflow. On
2319         underflow, emit warning if -Woverflow.
2320         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
2321         and 0 otherwise.
2322         * real.h (real_from_string): Update declaration
2323
2324 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
2325             Richard Henderson  <rth@redhat.com>
2326
2327         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
2328         * calls.c (compute_argument_block_size, expand_call,
2329         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
2330         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
2331         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
2332         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
2333         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
2334         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
2335         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
2336         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
2337         Set to 1.
2338
2339 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
2340
2341         * c-incpath.c (add_sysroot_to_chain): New.
2342         (merge_include_chains): Add sysroot argument.  Call
2343         add_sysroot_to_chain if sysrooted.
2344         (register_include_chains): Update call to merge_include_chains.
2345         * doc/cppopts.texi: Document use of '=' in include directory
2346         arguments.
2347
2348 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
2349
2350         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
2351         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
2352         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
2353         insn pattern using X87MODEF12 mode macro.
2354
2355 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
2356
2357         * regmove.c (regmove_optimize): Use reg_mentioned_p
2358         instead of reg_overlap_mentioned_p for DST.
2359
2360 2007-03-21  Mike Stump  <mrs@apple.com>
2361
2362         * c.opt: Fixup for Objective-C/C++.
2363
2364 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
2365
2366         * explow.c (convert_memory_address): Fold memory reference when
2367         POINTERS_EXTEND_UNSIGNED < 0
2368
2369 2007-03-21  Richard Henderson  <rth@redhat.com>
2370
2371         PR target/31245
2372         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
2373         * config/i386/mmintrin.h (__m64): Likewise.
2374         * config/i386/xmmintrin.h (__m128): Likewise.
2375
2376 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2377
2378         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
2379         (VXWORKS_OS_CPP_BUILTINS): Define.
2380         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
2381         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
2382
2383 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2384
2385         * rtl.h (constant_pool_reference_p): Delete.
2386         (find_constant_src): Declare.
2387         * rtlanal.c (find_constant_src): New function.
2388         * simplify-rtx.c (constant_pool_reference_p): Delete.
2389         * config/i386/i386.md: Use find_constant_src instead of
2390         constant_pool_reference_p/avoid_constant_pool_reference pairs.
2391
2392 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2393
2394         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
2395         * c-cppbuiltin.c (c_cpp_builtins): Define them.
2396
2397 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
2398
2399         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
2400         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
2401         (arm_elf_asm_constructor): Use it.
2402         (arm_elf_asm_destructor): New function.
2403
2404 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
2405
2406         * jump.c (mark_jump_label): Treat SEQUENCE specially.
2407
2408 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
2409
2410         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
2411
2412 2007-03-19  Andrew Haley  <aph@redhat.com>
2413
2414         PR tree-optimization/31264
2415         * tree-vrp.c (register_edge_assert_for_1): Don't look though
2416         VIEW_CONVERT_EXPRs.
2417
2418 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
2419
2420         PR rtl-optimization/30907
2421         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
2422         (fwprop_init): Always call loop_optimizer_initialize.
2423         (fwprop_done): Always call loop_optimizer_finalize.
2424         (fwprop): We always have loop info now.
2425         (gate_fwprop_addr): Remove.
2426         (pass_fwprop_addr): Use gate_fwprop as gate.
2427
2428         PR rtl-optimization/30841
2429         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
2430         df_chain_alloc): Call df_reorganize_refs unconditionally.
2431         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
2432         refs_organized to refs_organized_size.
2433         (df_ref_create_structure): Use refs_organized_size instead of
2434         bitmap_size if refs had been organized, and keep refs_organized_size
2435         up-to-date.
2436         * df.h (struct df_ref_info): Change refs_organized to
2437         refs_organized_size.
2438         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
2439         bitmap_size.
2440
2441 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
2442
2443         * except.c (output_function_exception_table): Do not reference the
2444         EH personality routine for functions that do not require an
2445         exception table.
2446
2447 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
2448
2449         PR c/30762
2450         * c-typeck.c (convert_for_assignment): Call comptypes for
2451         RECORD_TYPE or UNION_TYPE.
2452
2453         PR inline-asm/30505
2454         * reload1.c (reload): Do invalid ASM checking after
2455         cleanup_subreg_operands.
2456
2457 2007-03-19  Jeff Law  <law@redhat.com>
2458
2459         * tree-cfg.c (find_taken_edge): Tighten conditions for
2460         optimizing computed gotos.
2461
2462 2007-03-19  Michael Matz  <matz@suse.de>
2463
2464         * builtins.c (expand_builtin_sync_operation,
2465         expand_builtin_compare_and_swap,
2466         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
2467         correctly.
2468
2469         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
2470         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
2471         for operand 3.
2472
2473 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2474
2475         * doc/tm.texi: Add brackets around the return type of
2476         TARGET_SECONDARY_RELOAD.
2477
2478 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2479         Richard Guenther  <rguenther@suse.de>
2480
2481         PR tree-optimization/31254
2482         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
2483         Use handled_component_p () where appropriate.  Continue
2484         propagating into the rhs if we propagated into an INDIRECT_REF
2485         on the lhs.
2486
2487 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2488
2489         * config/s390/s390.md (op_type attribute): RRR instruction type added.
2490         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
2491         (xde, xdee): Mode attributes adjusted to support DFP modes.
2492         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
2493         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
2494         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
2495         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
2496         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
2497         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2498         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
2499         numbers.
2500         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
2501         "movsf"): Insn definitions removed.
2502         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
2503         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
2504         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
2505         definitions added.
2506         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
2507         "reload_in<mode>", "reload_out<mode>"): Expander added.
2508         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
2509         Expander removed.
2510
2511 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2512
2513         * config/s390/s390.md: Only non-functional changes.  Renamed
2514         FPR mode macro to BFP all over the file.
2515
2516 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2517
2518         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
2519         (op_type attribute): RRF instruction type added.
2520         (fT0): New mode attribute.
2521         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2522         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
2523         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
2524         no secondary memory is needed when moving DFmode values between GPRs
2525         and FPRs.
2526
2527 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2528
2529         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
2530         inverted and documentation adjusted.
2531         ("mhard-dfp", "msoft-dfp"): New options.
2532         * config/s390/s390.c (s390_handle_arch_option): New architecture
2533         switch: z9-ec.
2534         (override_options): Sanity checks for the new options added.
2535         * config.gcc: New architecture switch: z9-ec.
2536         * config/s390/s390.h (processor_flags): PF_DFP added.
2537         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
2538         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
2539         when the bit is NOT set so remove it from the defaults.
2540
2541 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2542
2543         * genemit.c (main): Print include statement for dfp.h.
2544         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
2545         is not available.
2546
2547 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2548
2549         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
2550
2551 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
2552
2553         PR target/31022
2554         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
2555         instead of PATTERN.
2556
2557 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2558
2559         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
2560         attr_length_call, output_call, output_indirect_call): Cleanup
2561         formatting of targetm calls.
2562
2563 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2564
2565         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2566
2567 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2568
2569         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
2570         reservation, bypass and anti-bypass descriptions for these instructions.
2571         Update move patterns.
2572         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
2573         TYPE_FPSTORE.
2574
2575 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
2576
2577         * tree-vect-transform.c (get_initial_def_for_induction): Replace
2578         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
2579         (get_initial_def_for_reduction): Likewise.
2580
2581 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
2582
2583         Fix PR tree-optimization/29922
2584         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
2585         (get_representative): Removed.
2586         (value_dies_in_block_x): Update for rvuse removal.
2587         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
2588         (compute_antic_aux): Handle when PHI nodes appear in
2589         non-single-successors.
2590         (dump_bitmap_of_names): Removed.
2591         (compute_antic_safe): Renamed and removed rvuse calculation.
2592         Calculate only antic safe.
2593         (insert_into_preds_of_block): Remove assert.
2594         (execute_pre): Update for renamed functions.
2595         (defer_or_phi_translate_block): New function.
2596
2597 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2598
2599         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
2600         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
2601         typos.
2602         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
2603         Follow spelling conventions.
2604
2605         * tree-data-ref.h: Remove the prototype for analyze_array.
2606
2607 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
2608
2609         PR tree-optimization/31041
2610         * tree-vect-transform.c (get_initial_def_for_induction): Call
2611         force_gimple_operand.
2612
2613 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
2614
2615         * ipa-type-escape.c (look_for_casts) : Revert code to use
2616         handled_component_p due to ada test a-numaux.adb.
2617
2618 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2619
2620         * final.c (final_scan_insn): Alter the condition of a
2621         conditional trap if we have nonstandard CC.
2622
2623 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2624
2625         * configure.ac: Remove excess quoting from asm line 0 test.
2626         * configure: Rebuilt.
2627
2628 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2629
2630         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
2631         * c-common.c (convert_and_check): Move warning logic to...
2632         (warnings_for_convert_and_check): ...here. Define.
2633         * c-common.h (warnings_for_convert_and_check): Declare.
2634
2635 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2636
2637         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
2638         (output_call): Likewise.
2639
2640 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2641
2642         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
2643
2644 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2645
2646         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
2647
2648 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
2649
2650         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
2651         opteron, athlon-64 and athlon-fx processor_alias_table entries.
2652
2653 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
2654
2655         PR tree-optimization/31183
2656         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2657         Use double_int instead of unsigned int for representing access_strides.
2658         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
2659
2660 2007-03-16  Richard Guenther  <rguenther@suse.de>
2661
2662         PR tree-optimization/31146
2663         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
2664         to allow recursion of forward_propagate_addr_expr.
2665         (forward_propagate_addr_into_variable_array_index): Likewise.
2666         (forward_propagate_addr_expr): Likewise.
2667         (tree_ssa_forward_propagate_single_use_vars): Likewise.
2668         (forward_propagate_addr_expr_1): Recurse on simple copies
2669         instead of propagating into them.  Do so for useless conversions
2670         as well.
2671         (forward_propagate_addr_expr): Clean up unused statements after
2672         recursion.
2673
2674 2007-03-16  Richard Guenther  <rguenther@suse.de>
2675
2676         * builtins.c (expand_builtin_cexpi): Use the right argument
2677         for the expansion via cexp.
2678
2679 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2680
2681         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
2682         * configure: Rebuilt.
2683
2684 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2685
2686         PR debug/29906
2687         * dwarf2out.c (force_type_die): Adjust comment.
2688         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
2689
2690 2007-03-15  DJ Delorie  <dj@redhat.com>
2691
2692         * config/frv/predicates.md (minmax_operator): Don't check operands
2693         here.
2694
2695 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2696
2697         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
2698         Update constant estimates of number of iterations.
2699         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
2700         argument renamed to "realistic".
2701         (compute_estimated_nb_iterations): Removed.
2702         (record_niter_bound): New function.
2703         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
2704         call record_nonwrapping_iv with upper = false.
2705         (infer_loop_bounds_from_signedness): Pass upper argument to
2706         record_nonwrapping_iv.
2707         (estimate_numbers_of_iterations_loop): Do not call
2708         compute_estimated_nb_iterations.  Record estimate based on profile
2709         information.  Initialize the constant estimates of number of
2710         iterations.
2711         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
2712         estimates.
2713         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
2714         number of iterations is too small.
2715         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
2716         (EST_NOT_AVAILABLE): Removed.
2717         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
2718         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
2719         fields.
2720
2721 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2722
2723         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
2724         Handle NE_EXPR guards.
2725
2726 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2727
2728         PR c++/24924
2729         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
2730         Set also -pedantic-errors by default for the  preprocessor unless
2731         -fpermissive is given.
2732
2733 2007-03-15  Richard Guenther  <rguenther@suse.de>
2734
2735         PR middle-end/29719
2736         PR middle-end/31161
2737         * builtins.c (expand_builtin_cexpi): As a fallback if we
2738         don't have builtins for sincos or cexp create a function
2739         declaration for cexp and expand to a call to that.
2740         (expand_builtin_int_roundingfn): Always fall
2741         back to floor/ceil and its variants even if they may be
2742         not available.
2743
2744 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
2745
2746         PR middle-end/31159
2747         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
2748         jump tables, move the call to delete_dead_jumptables from here...
2749         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
2750         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
2751         don't allow merging of blocks that try_redirect_by_replacing_jump
2752         also does not handle when not optimizing.
2753
2754 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2755             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2756
2757         * config/i386/i386.md (x86_sahf_1): Correctly handle
2758         HAVE_AS_IX86_SAHF.
2759
2760 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2761
2762         PR target/31167
2763         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
2764         x86_64_general_operand as operand[2] predicate.  Remove "iF"
2765         from operand constraints and use "e" constraint instead.
2766         (*subti3_1, *subti3_1 splitter): Ditto.
2767         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
2768         operand[1] predicate.
2769
2770 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
2771
2772         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
2773         arrays, multiply the access strides by the size of the sub-array.
2774         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
2775
2776 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2777
2778         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
2779         the configured assembler supports the sahf mnemonic.
2780         * configure: Regenerate.
2781         * config.in: Regenerate.
2782
2783         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
2784         emit "sahf" or ".byte\t0x9e" as asm template.
2785
2786 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
2787
2788         PR 31018
2789         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
2790         option to replace hard coded TARGET_xxx in md file.
2791         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
2792         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2793         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
2794         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
2795         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
2796         (X86_TUNE_NOT_VECTORMODE): Ditto.
2797         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
2798         (TUNE_AVOID_VECTOR_DECODE): Ditto.
2799         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2800         (TUNE_SLOW_IMUL_IMM8): Ditto.
2801         (TUNE_MOVE_M1_VIA_OR): Ditto.
2802         (TUNE_NOT_UNPAIRABLE): Ditto.
2803         (TUNE_NOT_VECTORMODE): Ditto.
2804
2805         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
2806         options.
2807
2808         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
2809         tuning options instead of hard coded TARGET_xxx.
2810         (fix ssemode peephole2's): Ditto.
2811         (imul peephole2's): Ditto.
2812         (movsi_or): Ditto.
2813         (movdi_or_rex64): Ditto.
2814         (move peephole2): Ditto.
2815         (not peephole2's): Ditto.
2816
2817 2007-03-14  Dirk Mueller  <dmueller@suse.de>
2818
2819         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
2820         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
2821         * c-parser.c (c_parser_if_body): Always add an empty statement in case
2822         of empty body.
2823         * c-parser.c (c_parser_do_statement): Warn about empty body in
2824         do/while statement.
2825         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
2826         * doc/invoke.texi (-Wempty-body): Update documentation.
2827
2828 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2829
2830         PR c/21438
2831         * c-common.h (warn_for_div_by_zero): Declare.
2832         * c-common.c (warn_for_div_by_zero): Define.
2833         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
2834         warning.
2835
2836 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2837
2838         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
2839         to PREFIX and STANDARD_PREFIX.
2840
2841 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2842             Phil Edwards  <phil@codesourcery.com>
2843
2844         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
2845         (__gthread_once_t): Remove busy field for RTPs.
2846         (__GTHREAD_ONCE_INIT): Update accordingly.
2847
2848 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2849
2850         * doc/invoke.texi: Document VxWorks options.
2851
2852 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2853
2854         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
2855
2856 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
2857
2858         PR tree-optimization/30590
2859         * tree-nrv.c (tree_nrv): Check for the partial update of the
2860         return value.
2861
2862 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2863
2864         * flags.h (flag_random_seed): Remove declaration, in favor of...
2865         * toplev.h (get_random_seed, set_random_seed): ... these.
2866         * tree.c (get_file_function_name): Use the former.
2867         * opts.c (common_handle_option): Use the latter.
2868         * toplev.c
2869
2870 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
2871
2872         PR middle-end/31127
2873         * cse.c (cse_find_path): Do not bail out if a basic block that
2874         we already visited now becomes part of a path that starts at a
2875         different basic block.  Just disallow this, to make sure we
2876         visit each basic block at most once.
2877
2878 2007-03-13  Jan Hubicka  <jh@suse.cz>
2879
2880         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
2881         when profile esitmate is present, calls with very low frequency are
2882         cold.
2883
2884 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
2885
2886         PR tree-optimization/30730
2887         PR tree-optimization/26900
2888         * tree-ssa-loop-niter.c: Include gmp.h.
2889         (bounds): New type.
2890         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
2891         split_to_var_and_offset, determine_value_range,
2892         bound_difference_of_offsetted_base, refine_bounds_using_guard,
2893         bound_difference, bounds_add, bounds_negate,
2894         number_of_iterations_ne_max, dump_affine_iv): New functions.
2895         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
2896         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
2897         difference of initial and final value of control iv to validate
2898         results.
2899         (number_of_iterations_cond): Add loop parameter.  Determine bounds
2900         on the difference of the extremes of the control iv.  Add dumps.
2901         (expand_simple_operations): Handle phi nodes.
2902         (simplify_using_initial_conditions): Do not record used conditions.
2903         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
2904         Do not set additional_info.
2905         (implies_nonnegative_p, implies_ge_p): Removed.
2906         (derive_constant_upper_bound): Do not use parameter `additional'.
2907         (record_estimate): Parameter `additional' removed.  Parameter
2908         `i_bound' added.  Do not call derive_constant_upper_bound.
2909         (record_nonwrapping_iv): Use derive_constant_upper_bound to
2910         bound the number of iterations estimate.
2911         (estimate_numbers_of_iterations_loop): Pass the estimate from
2912         the number of iterations analysis to record_estimate.
2913         * tree.h (multiple_of_p): Declare.
2914         * tree-scalar-evolution.c (expression_expensive_p): Removed.
2915         (scev_const_prop): Do not check expression_expensive_p.
2916         * fold-const.c (multiple_of_p): Exported.
2917         * double-int.c (double_int_mask): Exported.
2918         * double-int.h (double_int_mask): Declare.
2919         * tree-flow.h (struct tree_niter_desc): Removed additional_info
2920         field.  Added max field.
2921
2922 2007-03-13  David Taylor  <taylor@candd.org>
2923
2924         PR driver/12448:
2925         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
2926         default -MQ.
2927
2928 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2929
2930         PR target/31123
2931         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
2932         two unamed patterns.
2933
2934 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
2935
2936         * config/i386/i386.opt (mcx16, msahf): New options.
2937         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
2938         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
2939
2940         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
2941         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
2942         Output -mcx16 and -msahf options when corresponding bit is set.
2943
2944         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
2945         and -msahf options.
2946
2947 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2948
2949         * configure.ac: Test for assembler tolerance to # 0 "".
2950         * configure, config.in: Rebuilt.
2951         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
2952
2953 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
2954
2955         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
2956
2957         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
2958         (handle_syscall): Handle direct system calls.
2959         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
2960
2961 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2962
2963         * doc/invoke.texi: Fix cpp.info cross-reference.
2964         * doc/passes.texi: Fix gcc.info cross-reference.
2965
2966 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
2967
2968         PR tree-optimization/30835
2969         * lambda-code.c (can_convert_to_perfect_nest): Check whether
2970         bb_for_stmt is not NULL before accessing it.
2971
2972 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
2973
2974         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
2975         some multilibs.
2976
2977 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2978
2979         PR 30635
2980         * doc/install.texi: Document --enable-stage1-languages
2981
2982 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
2983
2984         * tree-pass.h (pass_into_cfg_layout_mode,
2985         pass_outof_cfg_layout_mode): Declare.
2986         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
2987         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
2988         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
2989         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
2990
2991 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
2992
2993         * c-decl.c (warn_variable_length_array): New function.
2994         Refactored from grokdeclarator to handle warn_vla
2995         and handle unnamed array case.
2996         (grokdeclarator): Refactored VLA warning case.
2997         * c.opt (Wvla): New flag.
2998         * doc/invoke.texi (Wvla): New warning.
2999
3000 2007-03-12  Richard Henderson  <rth@redhat.com>
3001
3002         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
3003         (TARGET_SECTION_TYPE_FLAGS): New.
3004
3005 2007-03-12  Richard Henderson  <rth@redhat.com>
3006
3007         * config/darwin.c (machopic_reloc_rw_mask): New.
3008         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
3009         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
3010
3011 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
3012
3013         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
3014         * cppdefault.h (cpp_PREFIX): Document.
3015         (cpp_PREFIX_len): Likewise.
3016         (cpp_EXEC_PREFIX): New variable.
3017         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
3018         * c-incpath.c (add_standard_paths): Correct logic for relocating
3019         paths within prefix.
3020
3021 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
3022
3023         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
3024         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
3025         mode macro.
3026         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
3027         fix_truncdfdi_sse using SSEMODEF mode macro.
3028         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
3029         fix_truncdfsi_sse using SSEMODEF mode macro.
3030         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
3031         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
3032
3033 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
3034
3035         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
3036         elfos.h to tm_file.
3037
3038 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
3039
3040         * tree.h : Add multiple_of_p declaration.
3041         * fold-const.c (multiple_of_p): Make multiple_of_p public.
3042         * ipa-type-escape.c (results_of_malloc): Redundant.
3043         (visited_stmts): New. Visited stmt for walk_use_def_chains.
3044         (cast_type): Extended with new members.
3045         (check_cast): Returns cast_type.
3046         (cast): New structure for data of walk_use_def_chains.
3047         (is_malloc_result, is_cast_from_non_pointer_1,
3048         is_cast_from_non_pointer,
3049         is_array_access_through_pointer_and_index): New functions.
3050         (look_for_casts): Returns cast types.
3051         (check_call): Returns void.
3052         (okay_pointer_operation): Use support of pointer plus index,
3053         pointer plus constant and allow all multiplications.
3054
3055 2007-03-11  Richard Guenther  <rguenther@suse.de>
3056
3057         PR tree-optimization/31115
3058         * tree-vrp.c (extract_range_from_binary_expr): Make sure
3059         the shift count is positive and non-anti-range for RSHIFT_EXPR.
3060         A shift count of zero is not special as with *_DIV_EXPR.
3061         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
3062         direction.
3063
3064 2007-03-11  Ian Lance Taylor  <iant@google.com>
3065
3066         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
3067         the *_DIV_EXPR codes correctly with overflow infinities.
3068
3069 2007-03-11  Ira Rosen  <irar@il.ibm.com>
3070
3071         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
3072         indicate success/failure of the analysis. Add negation to subtrahend
3073         in case of subtraction. Fail if both operands contain constants.
3074         (create_data_ref): Fail if analyze_offset fails.
3075
3076 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
3077
3078         * config/i386/i386.md (frndintxf2): Rename to ...
3079         (rintxf2): ... this. Remove expander having same name.
3080         (rintsf2, rintdf2): Implement using SSEMODEF macro.
3081         (roundsf2, rounddf2): Ditto.
3082         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
3083         (lround<mode>di2, lround<mode>si2): Ditto.
3084
3085 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
3086
3087         * lower-subreg.c: Include except.h.
3088         (decompose_multiword_subregs): Verify that the only control flow
3089         insns we can split are loads to multi-words pseudos.
3090         Handle breaking such blocks after splitting, instead of calling
3091         find_many_sub_basic_blocks.
3092
3093         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
3094         on the new basic block.  Add a lengthy comment explaining why we
3095         thought this was necessary.
3096         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
3097
3098 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
3099
3100         PR c++/30924
3101         * tree.c (walk_type_fields): Recurse into the element type of
3102         ARRAY_TYPEs if there is a pointer set.
3103
3104 2007-03-10  Dirk Mueller  <dmueller@suse.de>
3105
3106         * c-common.c (warn_logical_operator): Fix condition.
3107
3108 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
3109
3110         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
3111         quotation mark.
3112         * config/darwin.c (machopic_select_section): Remove superfluous
3113         argument in call to categorize_decl_for_section.  Remove unused
3114         variable shlib.
3115
3116 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
3117
3118         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
3119         defined.
3120         * configure: Regenerate.
3121
3122 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
3123
3124         PR target/31101
3125         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
3126         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
3127         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
3128         Add LABEL_NUSES to emitted label.
3129         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
3130         branch probability value to emitted jump insn.
3131         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
3132         Do not check life information and do not re-arrange input operands
3133         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
3134
3135 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3136
3137         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
3138         the change of decode_asm_operands.
3139
3140 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3141
3142         * mode-switching.c (create_pre_exit): Skip blockage insn.
3143
3144 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
3145
3146         * tree-pass.h (TODO_update_smt_usage): Remove.
3147         Update all users.
3148         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
3149         argument SOME.
3150         Update all users.
3151
3152 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3153
3154         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
3155         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
3156         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
3157         SOM target.
3158
3159 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
3160
3161         * gcc.c: Document %{, in big comment at top.
3162         (input_suffix_matches): Remove special handling for .s and
3163         .S.
3164         (input_spec_matches): New.
3165         (handle_braces): Handle %{,.
3166         (validate_switches): ',' indicates a value which is not a switch.
3167         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
3168         to detect assembler input.
3169         * config/i386/sol2.h (CPP_SPEC): Likewise.
3170         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
3171         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
3172         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
3173         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
3174         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
3175         -m64 causes deployment target to default to 10.5.
3176         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
3177
3178 2007-03-09  Richard Henderson  <rth@redhat.com>
3179
3180         PR target/26090
3181         * target.h (targetm.asm.out.reloc_rw_mask): New.
3182         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
3183         (TARGET_ASM_OUT): Use it.
3184         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
3185         * varasm.c (categorize_decl_for_section): Remove shlib argument;
3186         use the new reloc_rw_mask target hook instead.
3187         (default_section_type_flags_1): Merge into...
3188         (default_section_type_flags): ... here.
3189         (decl_readonly_section_1): Merge into...
3190         (decl_readonly_section): ... here.
3191         (default_elf_select_section_1): Merge into...
3192         (default_elf_select_section): ... here.
3193         (default_unique_section_1): Merge into...
3194         (default_unique_section): ... here.
3195         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
3196         (default_select_rtx_section): Use it.
3197         (default_elf_select_rtx_section): Likewise.
3198         * output.h: Update to match.
3199         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
3200         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
3201         (TARGET_ASM_RELOC_RW_MASK): New.
3202         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
3203         to categorize_decl_for_section.
3204         (x86_64_elf_unique_section): Likewise.
3205         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
3206         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
3207         (TARGET_ASM_RELOC_RW_MASK): New.
3208         * config/ia64/ia64.c (ia64_rwreloc_select_section,
3209         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
3210         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
3211         (TARGET_RWRELOC): Remove.
3212         (ia64_section_type_flags): Adjust call to default_section_type_flags.
3213         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
3214         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
3215         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
3216         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
3217         (rs6000_xcoff_select_section): Use decl_readonly_section.
3218         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
3219         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
3220         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
3221         (TARGET_SECTION_TYPE_FLAGS): Remove.
3222         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
3223
3224 2007-03-09  Roger Sayle  <roger@eyesopen.com>
3225
3226         * fold-const.c (fold_comparison): Remove compile-time evaluation of
3227         complex constant equality/inequality comparisons for here.
3228         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
3229         known at compile-time or can be simplified to a scalar comparison.
3230         (fold_relational_const): Move compile-time evaluation of complex
3231         constant equality/inequality comparisons to here.
3232
3233 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3234
3235         PR rtl-optimization/30643
3236         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
3237         dest_addr_elt.
3238         (fold_rtx): Recurse, like before 2006-11-03.
3239
3240 2007-03-09  DJ Delorie  <dj@redhat.com>
3241
3242         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
3243         m32c-pragma.o.
3244
3245 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
3246
3247         PR tree-optimization/30375
3248         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
3249         LHS of statements is not the same.
3250         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
3251
3252 2007-03-09  Chao-ying Fu  <fu@mips.com>
3253
3254         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
3255         REV 2.
3256         * doc/invoke.texi (-mdspr2): Document new option.
3257         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
3258         New unspec for DSP REV 2.
3259         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
3260         these instructions are extended in DSP REV 2.
3261         (mips-dspr2.md): Include.
3262         * config/mips/mips.opt (mdspr2): New option.
3263         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
3264         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
3265         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
3266         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
3267         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
3268         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
3269         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
3270         and 2 builtins.
3271         (bdesc_map): Add one field of unsupported_target_flags.
3272         (bdesc_arrays):  Update entries to have extra fields.  Add
3273         dsp_32only_bdesc.
3274         (mips_init_builtins): Initialize new function types.
3275         Check unsupported_target_fileds to filter out builtins.
3276         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
3277         TARGET_DSPR2.
3278         (ASM_SPEC): Pass mdspr2 to the assembler.
3279         * config/mips/mips-dspr2.md: New file.
3280
3281 2007-03-09  Sa Liu  <saliu@de.ibm.com>
3282
3283         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
3284
3285 2007-03-09  Ian Lance Taylor  <iant@google.com>
3286
3287         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
3288         argument) like -Wstrict-overflow=2.
3289         * doc/invoke.texi (Warning Options): Update documentation.
3290
3291 2007-03-09  Dirk Mueller  <dmueller@suse.de>
3292
3293         PR c++/17946
3294         * doc/invoke.texi (-Wlogical-op): Document.
3295         * common.opt (-Wlogical-op): New.
3296         * c-common.h (warn_logical_operator): Declare.
3297         * c-common.c (warn_logical_operator): Define.
3298         * c-typeck.c (parser_build_binary_op): Call
3299         warn_logical_operator.
3300
3301 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3302
3303         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
3304         * final.c (final_scan_insn): Test for non-"" file name.
3305
3306 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
3307
3308         * doc/loop.texi: Document the Omega linear constraints solver.
3309         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
3310         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
3311         omega-hash-table-size, omega-max-keys, and
3312         omega-eliminate-redundant-constraints.
3313         * tree-pass.h (pass_check_data_deps): Declared.
3314         * omega.c: New.
3315         * omega.h: New.
3316         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
3317         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
3318         pass_check_data_deps): New.
3319         * tree-data-ref.c (init_data_ref): Remove declaration.
3320         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
3321         (analyze_array): Renamed init_array_ref, move up initializations.
3322         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
3323         Removed arguments that are set to NULL.
3324         (analyze_indirect_ref): Correct indentation, correct call to
3325         init_pointer_ref.
3326         (object_analysis): Call init_array_ref instead of analyze_array.
3327         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
3328         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
3329         of DR_ACCESS_FNS_ADDR.
3330         (init_omega_eq_with_af, omega_extract_distance_vectors,
3331         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
3332         ddr_consistent_p): New.
3333         (compute_affine_dependence): Check consistency of ddrs when
3334         flag_check_data_deps is passed.
3335         (analyze_all_data_dependences): Uncomment.
3336         (tree_check_data_deps): New.
3337         * tree-data-ref.h: Include omega.h.
3338         (DR_ACCESS_FNS_ADDR): Removed.
3339         (data_dependence_relation): Add inner_loop.
3340         (DDR_INNER_LOOP): New.
3341         * common.opt (fcheck-data-deps): New.
3342         * tree-flow.h (tree_check_data_deps): Declare.
3343         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
3344         (OBJS-common): Depend on omega.o.
3345         (omega.o): Define.
3346         * passes.c (pass_check_data_deps): Scheduled.
3347         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
3348         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
3349         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
3350         PARAM_VECT_MAX_VERSION_CHECKS,
3351         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
3352
3353 2007-03-09  Richard Guenther  <rguenther@suse.de>
3354
3355         PR tree-optimization/30904
3356         PR middle-end/31058
3357         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
3358         the same way as *_DIV_EXPR.
3359
3360 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3361
3362         * recog.c (decode_asm_operands): No mixed declarations and code.
3363
3364 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3365
3366         * rtl.def (ASM_INPUT): Add location.
3367         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
3368         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
3369         (decode_asm_operands): Add loc operand.
3370         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
3371         * stmt.c (expand_asm): Rename to...
3372         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
3373         gen_rtx_ASM_INPUT_loc.
3374         (expand_asm_expr): Adjust.
3375         * recog.c (decode_asm_operands): Add loc operand.
3376         (check_asm_operands, extract_insn): Adjust.
3377         * reload1.c (maybe_fix_stack_asms): Likewise.
3378         * final.c (asm_insn_count): Likewise.
3379         (final_scan_insn): Output # line before and after asm.
3380
3381 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
3382
3383         * tree-ssa-structalias.c (variable_info): Remove
3384         finished_solution.
3385         (new_var_info): Ditto.
3386         (shared_bitmap_info_t): New structure.
3387         (shared_bitmap_table): New variable.
3388         (shared_bitmap_hash): New function.
3389         (shared_bitmap_eq): Ditto
3390         (shared_bitmap_lookup): Ditto.
3391         (shared_bitmap_add): Ditto.
3392         (merge_smts_into): Change to take bitmap directly.
3393         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
3394         (init_alias_vars): Init shared bitmap hashtable.
3395         (delete_points_to_sets): Delete shared bitmap hashtable.
3396         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
3397         is_aliased removal as a change that was still necessary was
3398         deleted.
3399
3400 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
3401
3402         * config/i386/i386.h (override_options): Conditionally disable
3403         x86_sahf for 64bit targets only.
3404
3405 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3406
3407         PR C/31072
3408         * c-decl.c (merge_decls): Don't call make_var_volatile.
3409         * varasm.c (make_var_volatile): Remove.
3410         * output.h (make_var_volatile): Remove.
3411
3412 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
3413
3414         PR tree-optimization/31085
3415         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
3416
3417 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3418
3419         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
3420         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
3421         ATTR_CONST_NOTHROW_LIST.
3422
3423         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
3424         FIX_TRUNC_EXPR.
3425
3426 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
3427
3428         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
3429
3430 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
3431
3432         PR 31013
3433         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
3434         is declared.
3435         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
3436         passed, use shared libgcc.
3437
3438 2007-03-08  Roger Sayle  <roger@eyesopen.com>
3439
3440         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
3441         instead of calling build2 with a GIMPLE_MODIFY_STMT.
3442         (honor_protect_cleanup_actions, lower_try_finally_switch):
3443         Likewise.
3444         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
3445         ifc_temp_var): Likewise.
3446         * tree-inline.c (setup_one_parameter): Likewise.
3447         * tree-mudflap.c (mf_decl_cache_locals,
3448         mf_build_check_statement_for): Likewise.
3449         * tree-nested.c (init_tmp_var, save_tmp_var,
3450         finalize_nesting_tree_1): Likewise.
3451         * tree-outof-ssa.c (insert_copy_on_edge,
3452         insert_backedge_copies): Likewise.
3453         * tree-profile.c (tree_gen_edge_profiler,
3454         tree_gen_ic_profiler): Likewise.
3455         * tree-scalar-evolution.c (scev_const_prop): Likewise.
3456         * tree-sra.c (sra_build_assignment): Likewise.
3457         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
3458         * tree-ssa-math-opts.c (insert_reciprocals,
3459         execute_cse_sincos_1): Likewise.
3460         * tree-tailcall.c (adjust_accumulator_values,
3461         adjust_return_value): Likewise.
3462         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
3463         * tree-vect-transform.c (vect_create_data_ref_ptr,
3464         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
3465         vect_create_epilog_for_reduction, vectorizable_reduction,
3466         vectorizable_call, vectorizable_conversion,
3467         vectorizable_assignment, vectorizable_operation,
3468         vectorizable_type_demotion, vect_gen_widened_results_half,
3469         vect_permute_store_chain, vectorizable_store,
3470         vect_setup_realignment, vect_permute_load_chain,
3471         vectorizable_load, vectorizable_condition,
3472         vect_create_cond_for_align_checks): Likewise.
3473         * tree-vrp.c (build_assert_expr_for): Likewise.
3474
3475 2007-03-08  Ian Lance Taylor  <iant@google.com>
3476
3477         * tree-vrp.c: Include "intl.h".
3478         (usable_range_p): New static function.
3479         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
3480         overflowed values, juts set *strict_overflow_p.
3481         (compare_values): Only return -2 if one of the operands is not a
3482         constant.
3483         (compare_ranges): Call usable_range_p.
3484         (compare_range_with_value): Likewise.
3485         (vrp_evaluate_conditional_warnv): Rename from
3486         vrp_evaluate_conditional.  Make static.  Change all callers.
3487         (vrp_evaluate_conditional): New function.
3488         (simplify_div_or_mod_using_ranges): Issue warning about reliance
3489         on signed overflow.
3490         (simplify_abs_using_ranges): Likewise.
3491         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
3492         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
3493         within_stmt parameter.
3494         * tree-ssa-propagate.c (fold_predicate_in): Update call to
3495         vrp_evaluate_conditional.
3496         * tree-ssa-threadedge.c
3497         (record_temporary_equivalences_from_stmts_at_dest): Change
3498         simplify parameter to take a second tree parameter.
3499         (simplify_control_stmt_condition): Likewise.
3500         (thread_across_edge): Likewise.
3501         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3502         (thread_across_edge): Likewise.
3503         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
3504
3505 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
3506
3507         * config/i386/i386.h (TARGET_SAHF): New define.
3508         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
3509         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
3510         (x86_sahf): New global variable.
3511         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
3512         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
3513         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
3514         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
3515         for 64-bit.
3516         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
3517         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
3518         when expanding fcomi/sahf based tests.
3519         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
3520         expanding sahf based alternative. Emit sahf based sequence when
3521         optimizing for code size.
3522         * config/i386/i386.md (x86_sahf_1): Do not disable for
3523         TARGET_64BIT, enable for TARGET_SAHF.
3524
3525 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
3526
3527         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
3528         spurious whitespace from error message.
3529
3530 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
3531
3532         PR c++/30852
3533         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
3534
3535 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
3536
3537         * c-decl.c (grokdeclarator): Disable warnings for anonymous
3538         bitfields.
3539         * tree-sra.c (instantiate_element): Propagate disabled warnings
3540         from the element itself to the created variable.
3541
3542 2007-03-07  Richard Henderson  <rth@redhat.com>
3543
3544         PR target/30848
3545         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
3546         silently fix up the stack in the case of a missing register.
3547
3548 2007-03-07  Paul Brook  <paul@codesourcery.com>
3549
3550         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
3551
3552 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
3553
3554         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
3555         New.
3556         (phase1_vrs): Use them.
3557         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
3558         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
3559         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
3560         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
3561         __gnu_Unwind_Restore_WMMXC if required.
3562         (_Unwind_VRS_Pop): Implement iWMMXt support.
3563         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
3564         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
3565         gnu_Unwind_Save_WMMXC): Define.
3566
3567 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3568
3569         * config/vxworks.h (vxworks_override_options): Declare.
3570         (VXWORKS_OVERRIDE_OPTIONS): Use it.
3571         * config/vxworks.c: Include target.h and toplev.h.
3572         (vxworks_override_options): New function.
3573         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
3574
3575 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3576
3577         * config/s390/s390.c (override_options): Don't emit an error when
3578         -mstack-size is used without providing -mstack-guard.
3579         (s390_emit_prologue): Choose stack_guard value automatically if not
3580         provided via command line.
3581         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
3582
3583 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3584
3585         * config/i386/i386.c (output_set_got): Add a GOT initialization
3586         sequence for VxWorks PIC.
3587         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
3588         around labels as well as symbols.  Use gotoff_operand instead
3589         of local_symbolic_operand.
3590         (legitimize_pic_address): Use gotoff_operand instead of
3591         local_symbolic_operand.  Use @GOT accesses for labels as
3592         well as symbols.
3593         (ix86_output_addr_diff_elt): Use PC-relative rather than
3594         GP-relative offsets for VxWorks PIC.
3595         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
3596         no_new_pseudos.  Check whether the returned register is op0.
3597         * config/i386/i386.md (tablejump): Use PC-relative rather than
3598         GP-relative offsets for VxWorks PIC.
3599         * config/i386/predicates.md (gotoff_operand): New predicate.
3600
3601 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3602
3603         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
3604         before defining.
3605         * config/vxworks-dummy.h: New file.
3606         * config/i386/i386.h: Include it.
3607
3608 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
3609
3610         * dwarf2out.c (is_inlined_entry_point): New
3611         (add_high_low_attributes): Emit DW_AT_entry_pc along with
3612         DW_AT_ranges if the first subblock is the entry point.
3613
3614 2007-03-06  David Daney  <ddaney@avtrex.com>
3615
3616         * doc/install.texi (mips-*-*): Change recommended binutils
3617         version.
3618
3619 2007-03-06  Anatoly Sokolov <aesok@post.ru>
3620
3621         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
3622         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
3623         devices.
3624         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3625         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3626
3627 2007-03-06  Jan Hubicka  <jh@suse.cz>
3628
3629         * errors.h (warning, error, fatal, internal_error): Mark as cold.
3630         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
3631         are hot.
3632         (probably_cold_bb_p): Cold functions are cold.
3633         (probably_never_executed_bb_p): Cold functions are cold.
3634         (tree_bb_level_predictions): Predict calls to cold functions as not
3635         taken.
3636         (compute_function_frequency): Check hot/cold attributes.
3637         * function.h (function_frequency): Update comments.
3638         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
3639         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
3640         (c_common_att): Add cold and hot.
3641
3642         * doc/extend.texi (hot,cold attributes): Document.
3643
3644 2007-03-06  Andrew Haley  <aph@redhat.com>
3645
3646         * function.c (expand_function_end): Move blockage to just after we
3647         emit the label for the naked return from the function.
3648
3649 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3650
3651         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
3652         before redefining.
3653
3654 2007-03-06  Jan Hubicka  <jh@suse.cz>
3655
3656         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
3657         loaded for constant large models.  Non-large 64bit PIC can do.
3658         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
3659         * cmodel.h: Add LARGE PIC.
3660         * i386.md (UNSPEC_PLTOFF): New.
3661         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
3662         needed.
3663         (*call_1_rex64): Disable for large models.
3664         (*call_1_rex64_large): New.
3665         (*call_value_1_rex64): Disable for large models.
3666         (*call_value_1_rex64_large): New.
3667         (set_rip_rex4): New.
3668         (set_got_offset_rex64): New.
3669         * predicates.md (constant_call_address_operand): For large model
3670         constant calls are not possible.
3671         * i386-protos.h (construct_plt_address): Declare.
3672         * i386.c (override_options): Accept large models.
3673         (ix86_expand_prologue): Expand large PIC GOT pointer load.
3674         (legitimate_constant_p): Add new UNSPECs.
3675         (legitimate_pic_operand_p): Likewise.
3676         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
3677         (legitimize_pic_address): Do easy RIP relative way for TLS only for
3678         non-large model.
3679         (output_pic_addr_const): Add PLTOFF.
3680         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
3681         (ix86_expand_move): Legitimize pic address when in PIC mode.
3682         (construct_plt_address): New function.
3683         (ix86_expand_call): Offload the address to register and use GOT pointer
3684         for large model.
3685         * invoke.texi (mcmodel=large): Update documentation.
3686
3687 2007-03-06  Richard Henderson  <rth@redhat.com>
3688
3689         * config/i386/i386.c (x86_use_leave, x86_push_memory,
3690         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
3691         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
3692         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
3693         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
3694         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
3695         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
3696         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
3697         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
3698         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
3699         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3700         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
3701         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3702         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3703         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
3704         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
3705         x86_schedule, x86_use_bt, x86_pad_returns,
3706         x86_use_xchgb): Merge into ...
3707         (ix86_tune_features): ... here.  New array.
3708         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3709         x86_bswap): Merge into ...
3710         (ix86_arch_features): ... here.  New array.
3711         (x86_3dnow_a): Remove.
3712         (x86_accumulate_outgoing_args): Make static.
3713         (x86_arch_always_fancy_math_387): Make static.
3714         (ix86_tune_mask, ix86_arch_mask): Move ...
3715         (override_options): ... to local variables here.  Apply the
3716         appropriate mask to each element of ix86_arch_features and
3717         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
3718         as were done in the old macros.
3719         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
3720         * config/i386/i386.h (x86_use_leave, x86_push_memory,
3721         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
3722         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
3723         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
3724         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
3725         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
3726         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
3727         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
3728         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
3729         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
3730         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3731         x86_accumulate_outgoing_args, x86_prologue_using_move,
3732         x86_epilogue_using_move, x86_decompose_lea,
3733         x86_arch_always_fancy_math_387, x86_shift1,
3734         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3735         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3736         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
3737         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3738         x86_use_incdec, x86_pad_returns, x86_bswap,
3739         x86_partial_flag_reg_stall): Remove.
3740         (enum ix86_tune_indices): New.
3741         (ix86_tune_features): New.
3742         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
3743         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
3744         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
3745         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
3746         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
3747         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
3748         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
3749         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
3750         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
3751         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
3752         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
3753         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
3754         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
3755         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
3756         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
3757         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
3758         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
3759         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
3760         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
3761         TARGET_EXT_80387_CONSTANTS): Use it.
3762         (enum ix86_arch_indices): New.
3763         (ix86_arch_features): New.
3764         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
3765         TARGET_BSWAP): Use it.
3766         (ix86_tune_mask, ix86_arch_mask): Remove.
3767
3768 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
3769
3770         PR bootstrap/31020
3771         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
3772         Define using $${sysroot_headers_suffix}.
3773         * configure: Regenerate.
3774         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
3775         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
3776         defined.
3777         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
3778         * gcc.c (print_sysroot_headers_suffix): New.
3779         (option_map): Include --print-sysroot-headers-suffix.
3780         (display_help): Mention -print-sysroot-headers-suffix.
3781         (process_command): Handle -print-sysroot-headers-suffix.
3782         (do_spec_1): Append multilib directory to include-fixed path if
3783         sysroot suffixes in use.
3784         (main): Handle -print-sysroot-headers-suffix.
3785         * Makefile.in (start.encap): Don't depend on xlimits.h
3786         (xlimits.h): Remove.
3787         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
3788         limits.h for each multilib in fixinc_list.
3789         (fixinc_list, s-fixinc_list): New.
3790         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
3791         generate them for each multilib in fixinc_list.
3792         (stmp-fixproto): Use include-fixed.  Run fixproto for each
3793         multilib in fixinc_list.
3794         (mostlyclean): Don't remove xlimits.h.
3795         (clean): Remove include-fixed.
3796         (real-install-headers-tar, real-install-headers-cpio,
3797         real-install-headers-cp): Don't copy include, only include-fixed.
3798         (install-mkheaders): Depend on fixinc_list.  Don't depend on
3799         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
3800         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
3801         SYSTEM_HEADER_DIR setting in mkheaders.conf.
3802
3803 2007-03-06  Jan Hubicka  <jh@suse.cz>
3804
3805         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
3806         NANs easilly.
3807
3808 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3809
3810         * configure.ac: Allow tm_file to contain build-directory files.
3811         * configure: Regenerate.
3812         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
3813         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
3814         * config/m68k/print-sysroot-suffix.sh: New file.
3815
3816 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3817
3818         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
3819         of pic_offset_table_rtx if reload_completed.
3820         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
3821         PIC_OFFSET_TABLE_REGNUM.
3822         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
3823         return true.
3824         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
3825         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
3826
3827 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3828
3829         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3830         functions that call eh_return.
3831
3832 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3833
3834         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3835         functions that need a constant pool.
3836
3837 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3838
3839         PR target/28181
3840         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
3841         (m68k_preferred_reload_class): Likewise.
3842         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
3843         (SECONDARY_RELOAD_CLASS): Define.
3844         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
3845         (LIMIT_RELOAD_CLASS): Delete.
3846         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
3847         registers from storing bytes.
3848         (m68k_secondary_reload_class): New function.
3849         (m68k_preferred_reload_class): Likewise.
3850
3851 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3852
3853         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
3854         leaf functions.
3855         (m68k_expand_prologue): Likewise.
3856
3857 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3858
3859         * config/m68k/m68k-protos.h (output_sibcall): Declare.
3860         (mips_expand_epilogue): Add a bool parameter.
3861         (m68k_legitimize_sibcall_address): Declare.
3862         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
3863         (m68k_expand_epilogue): Add a parameter to select between sibling
3864         and normal epilogues.  Only generate a return for the latter.
3865         (m68k_ok_for_sibcall_p): New function.
3866         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
3867         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
3868         (sibcall_value, *sibcall_value): Likewise.
3869         (*call, *call_value): Require !SIBLING_CALL_P.
3870         (epilogue): Update call to m68k_expand_epilogue.
3871         (sibcall_epilogue): New pattern.
3872         * config/m68k/predicates.md (const_call_operand): Say that this
3873         predicate applies to sibling calls too.
3874         (sibcall_operand): New predicate.
3875
3876 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3877
3878         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
3879         alternatives as movsi_cf.
3880         (movsf_cf_hard): Add commentary.
3881
3882 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
3883             Richard Sandiford  <richard@codesourcery.com>
3884
3885         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
3886         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
3887         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
3888         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
3889         as being live on exit from an interrupt function.
3890         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
3891         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
3892         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
3893         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
3894         (m68k_interrupt_function_p): Globalize.
3895         (m68k_compute_frame_layout): Remove reverse mask code.
3896         (m68k_emit_movem, m68k_set_frame_related): New functions.
3897         (m68k_output_function_prologue): Delete in favor of...
3898         (m68k_expand_prologue): ...this new function.
3899         (m68k_output_function_epilogue): Delete in favor of...
3900         (m68k_expand_epilogue): ...this new function.
3901         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
3902         functions.
3903         (print_operand): Handle %?.
3904         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
3905         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
3906         (prologue, epilogue): New patterns.
3907         (return): Turn into a define_expand.
3908         (*return): New pattern, derived from old "return" pattern.  Use rte
3909         rather than rts for interrupt functions.  Only use rtd if the pop
3910         count is nonzero.
3911         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
3912         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
3913         (link, *link, unlink, *unlink, load_got): Likewise.
3914
3915 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3916
3917         PR target/23482
3918         PR target/17114
3919         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
3920         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
3921         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
3922         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
3923         and m68k_matches_u_p.
3924         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
3925         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
3926         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
3927         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
3928         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
3929         (REG_STRICT_P): New macro.
3930         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
3931         PCREL_GENERAL_OPERAND_OK.
3932         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
3933         m68k_legitimate_base_reg_p.
3934         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
3935         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
3936         (PIC_CASE_VECTOR_ADDRESS): Update comment.
3937         * config/m68k/m68k.c (m68k_address): New structure.
3938         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
3939         (m68k_decompose_index, m68k_legitimate_constant_address_p)
3940         (m68k_jump_table_ref_p, m68k_decompose_address)
3941         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
3942         (m68k_matches_u_p): New functions.
3943         (print_operand_address): Rewrite to use m68k_decompose_index.
3944
3945 2007-03-05  David Taylor  <dtaylor@emc.com>
3946
3947         * gcc.c: Correct copyright date in --version output.
3948
3949 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3950
3951         * pa.md: In unamed move patterns, disparge copies between general
3952         and floating point registers using '?' modifier.  Don't include 'f'
3953         constraint for register preferences in DImode, SImode, HImode and
3954         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
3955         Remove constraints for copies between general and floating registers
3956         in soft-float DFmode pattern.
3957         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
3958         floating register.
3959         (movsf): Likewise.
3960
3961 2007-03-05  Mike Stump  <mrs@apple.com>
3962
3963         * c-common.c (targetcm): Add.
3964         * c-opts.c (c_common_handle_option): Handle language specific
3965         target options.
3966         * opts.c (handle_option): Verify language for target options, if
3967         any are given.
3968         * opth-gen.awk: Add CL_LANG_ALL.
3969         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
3970         (TARGETCM_INITIALIZER): Add.
3971         * target.h (struct gcc_targetcm): Add.
3972         (targetcm): Add.
3973         * targhooks.c (default_handle_c_option): Add.
3974         * targhooks.h (default_handle_c_option): Add.
3975         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
3976
3977         * config/darwin.opt (iframework): Add.
3978         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
3979         * config/darwin-c.c (handle_c_option): Add.
3980         (TARGET_HANDLE_C_OPTION): Add.
3981         (targetcm): Add.
3982         * doc/invoke.texi (Darwin Options): Add -iframework.
3983
3984 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3985
3986         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
3987         conversion.
3988
3989 2007-03-05  Ian Lance Taylor  <iant@google.com>
3990
3991         * c.opt (fgnu89-inline): New option.
3992         * c-opts.c (c_common_post_options): Set default value for
3993         flag_gnu89_inline.
3994         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
3995         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
3996         inline functions.
3997         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
3998         (grokdeclarator, start_function): Likewise.
3999         * c-cppbuiltin.c (c_cpp_builtins): Define either
4000         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
4001         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
4002         (C Dialect Options): Document -fgnu89-inline.
4003         * doc/extend.texi (Function Attributes): Explain what the
4004         gnu_inline attribute does.
4005         * doc/cpp.texi (Common Predefined Macros): Document
4006         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
4007
4008 2007-03-05  Ian Lance Taylor  <iant@google.com>
4009
4010         PR tree-optimization/31034
4011         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
4012         half-range if the other side is an overflow infinity.
4013
4014 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
4015
4016         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
4017         (bfin*-linux-uclibc*): New configuration.
4018         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
4019         defining.
4020         * config/bfin/linux.h: New file.
4021         * config/bfin/libgcc-bfin.ver: New file.
4022         * config/bfin/t-bfin-uclinux: New file.
4023         * config/bfin/t-bfin-linux: New file.
4024         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
4025         (TARGET_OS_CPP_BUILTINS): New macro.
4026
4027 2007-03-05  Richard Guenther  <rguenther@suse.de>
4028
4029         * fold-const.c (fold_binary): Remove duplicate folding
4030         of comparison of non-null ADDR_EXPR against null.
4031
4032 2007-03-05  Richard Guenther  <rguenther@suse.de>
4033             Dorit Nuzman  <dorit@il.ibm.com>
4034
4035         PR tree-optimization/26420
4036         * tree-vectorizer.c (vectorize_loops): Bail out early if there
4037         are no loops in the function.  Only print the number of
4038         vectorized loops if it is greater than zero or we are supposed
4039         to print information about unvectorized loops.
4040
4041 2007-03-05  Revital Eres  <eres@il.ibm.com>
4042
4043         * gcc.dg/var-expand1.c: New test.
4044         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
4045         when an accumulator is expanded.
4046
4047 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4048
4049         PR other/30465
4050         * c-common.c (convert_and_check): Don't give warnings for
4051         conversion if 'expr' already overflowed.
4052
4053 2007-03-04  Roger Sayle  <roger@eyesopen.com>
4054
4055         PR middle-end/30744
4056         * fold-const.c (fold_comparison): Enforce type consistency when
4057         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
4058
4059 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
4060
4061         * tree-ssa-address.c (create_mem_ref): Do not put an expression
4062         containing a cast to the base of TARGET_MEM_REF.
4063
4064 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
4065
4066         * tree.c (tree_contains_struct_check_failed): Remove spurious
4067         whitespace from error message.
4068
4069 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
4070
4071         PR target/30406
4072         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
4073         instead of precision.
4074
4075 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
4076             Nathan Sidwell  <nathan@codesourcery.com>
4077
4078         * emit-rtl.c (find_auto_inc): New.
4079         (try_split): recreate REG_INC notes,
4080         Use regular for loops rather than whiles.
4081
4082 2007-03-03  Andreas Schwab  <schwab@suse.de>
4083
4084         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
4085         * configure: Regenerate.
4086
4087 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4088
4089         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
4090         flag_rounding_math, not flag_unsafe_math_optimizations.
4091
4092         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
4093         fold_build2.
4094         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
4095         alpha_fold_vector_minmax): Likewise.
4096         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
4097         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
4098
4099 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4100
4101         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
4102         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
4103         if the lhs has side-effects.
4104         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
4105
4106 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4107
4108         * config/i386/i386.h (TUNEMASK): Remove define.
4109         (ARCHMASK): Remove define.
4110         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
4111          Use ix86_arch_mask variable instead of ARCHMASK.
4112         * config/i386/i386.c (override_options): Ditto.
4113         (standard_80387_constant_p): Ditto.
4114
4115 2007-03-02  Ian Lance Taylor  <iant@google.com>
4116
4117         Used signed infinities in VRP.
4118         * tree-vrp.c (uses_overflow_infinity): New static function.
4119         (supports_overflow_infinity): New static function.
4120         (make_overflow_infinity): New static function.
4121         (negative_overflow_infinity): New static function.
4122         (positive_overflow_infinity): New static function.
4123         (is_negative_overflow_infinity): New static function.
4124         (is_positive_overflow_infinity): New static function.
4125         (is_overflow_infinity): New static function.
4126         (overflow_infinity_range_p): New static function.
4127         (compare_values_warnv): New function split out of compare_values.
4128         (compare_value): Call it.
4129         (set_value_range_to_nonnegative): Add overflow_infinity
4130         parameter.  Change caller.
4131         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
4132         Change callers.
4133         (vrp_expr_computes_nonzero): Likewise.
4134         (compare_ranges, compare_range_with_value): Likewise.
4135         (compare_name_with_value, compare_names): Likewise.
4136         (vrp_evaluate_conditional): Likewise.
4137         (set_value_range): Handle infinity
4138         (vrp_operand_equal_p, operand_less_p): Likewise.
4139         (extract_range_from_assert): Likewise.
4140         (vrp_int_const_binop): Likewise.
4141         (extract_range_from_binary_expr): Likewise.
4142         (extract_range_from_unary_expr): Likewise.
4143         (extract_range_from_comparison): Likewise.
4144         (extract_range_from_expr): Likewise.
4145         (dump_value_range): Likewise.
4146         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
4147         (test_for_singularity): Likewise.
4148         (vrp_int_const_binop): Remove inline qualifier.
4149         (adjust_range_with_scev): Add comment.
4150         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
4151
4152 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
4153
4154         * tree-ssa-structalias.c (could_have_pointers): Tidy.
4155         (get_constraint_for): Likewise.
4156         (do_structure_copy): Likewise.
4157         (find_func_aliases): Fix references to MODIFY_EXPR.
4158         (intra_create_variable_infos): Tidy.
4159         * tree-ssa-operands.c (add_virtual_operand): Add argument
4160         IS_CALL_SITE.
4161         When adding members of alias sets, if IS_CALL_SITE is true and
4162         the symbol is not call-clobbered, skip it.
4163         Adjust all callers.
4164
4165 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4166
4167         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
4168         entry by means of emit_insn_at_entry.
4169
4170 2007-03-02  Richard Henderson  <rth@redhat.com>
4171
4172         * expr.h (promoted_input_arg): Remove decl.
4173         * function.c (promoted_input_arg): Merge into ...
4174         * combine.c (setup_incoming_promotions): ... only caller.
4175         Rearrange to avoid double loop.
4176
4177 2007-03-02  Ben Elliston  <bje@au.ibm.com>
4178             Peter Bergner  <bergner@vnet.ibm.com>
4179             Janis Johnson  <janis187@us.ibm.com>
4180
4181         * config/rs6000/dfp.md: New file.
4182         * config/rs6000/rs6000.md: Include dfp.md.
4183         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
4184         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
4185         and TDmode decimal float modes in FP registers.
4186         (num_insns_constant): Likewise.
4187         (rs6000_legitimate_offset_address_p): Likewise.
4188         (rs6000_legitimize_address): Likewise.
4189         (rs6000_legitimize_reload_address): Likewise.
4190         (rs6000_legitimate_address): Likewise.
4191         (rs6000_emit_move): Likewise.
4192         (function_arg_boundary): Likewise.
4193         (function_arg_advance): Likewise.
4194         (rs6000_darwin64_record_arg_recurse): Likewise.
4195         (function_arg): Likewise.
4196         (rs6000_gimplify_va_arg): Likewise.
4197         (rs6000_split_multireg_move): Likewise.
4198         (rs6000_output_function_epilogue): Likewise.
4199         (rs6000_output_function_epilogue): Likewise.
4200         (rs6000_register_move_cost): Likewise.
4201         (rs6000_function_value): Likewise.
4202         (rs6000_libcall_value): Likewise.
4203
4204 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
4205
4206         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
4207
4208 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
4209
4210         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
4211         Use $MULTIDIR to choose between the kernel and RTP headers,
4212         and use $WIND_BASE and $WIND_USR to locate them.
4213
4214 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4215
4216         * config/i386/i386.c (override_options): Put initialization of
4217         ix86_tune_mask and ix86_arch_mask to the correct place.
4218
4219 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4220             Michael Meissner  <michael.meissner@amd.com>
4221
4222         PR target/31019
4223         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
4224         (ARCHMASK): Define.
4225         (TARGET_CMOVE): Use ARCHMASK.
4226         (TARGET_CMPXCHG): Ditto.
4227         (TARGET_CMPXCHG8B): Ditto.
4228         (TARGET_XADD): Ditto.
4229         (TARGET_BSWAP): Ditto.
4230         * config/i386/i386.c (ix86_tune_mask): New global variable.
4231         (ix86_arch_mask): Ditto.
4232         (override_options): Initialize ix86_tune_mask and
4233         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
4234         target_flags.
4235
4236 2007-03-02  Ben Elliston  <bje@au.ibm.com>
4237
4238         PR 30992
4239         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
4240
4241 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
4242
4243         * target.h (init_dwarf_reg_sizes_extra): New target hook.
4244         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
4245         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
4246         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
4247         hook.
4248         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
4249         rs6000_init_dwarf_reg_sizes_extra): New.
4250         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
4251         SPE register high parts.
4252
4253 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
4254
4255         * Makefile.in: Add install-pdf target as
4256         copied from automake v1.10 rules.
4257         * configure.ac: Add install-pdf to target list.
4258         * configure: Regenerate.
4259
4260 2007-03-01  Paul Brook  <paul@codesourcery.com>
4261
4262         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
4263         modes to LDRD for DImode.
4264         (output_move_double): Fixup out of range ldrd/strd.
4265         (vfp_secondary_reload_class): Rename...
4266         (coproc_secondary_reload_class): ... to this.  Add wb argument.
4267         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
4268         coproc_secondary_reload_class for CLASS_IWMMXT.
4269         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
4270         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
4271
4272 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
4273
4274         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
4275         factor by the estimated number of iterations.
4276         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
4277         prefetch latency.
4278
4279         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
4280         decode_caches_intel, detect_caches_intel): New functions.
4281         (host_detect_local_cpu): Use detect_caches_amd and
4282         detect_caches_intel.
4283
4284 2007-03-01  Richard Henderson  <rth@redhat.com>
4285
4286         * expr.c (emit_move_complex_push): Export.
4287         (emit_move_complex_parts): Split out from ...
4288         (emit_move_complex): ... here.
4289         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
4290         * config/i386/i386.md (movcdi): New.
4291
4292 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
4293
4294         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
4295         size of mode1 to check for tieable modes in MMX case.
4296
4297 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
4298
4299         * Makefile.in (rtlanal.o): Depend on tree.h.
4300         * rtl.h (offset_within_section_p, split_const): Declare.
4301         * rtlanal.c: Include tree.h.
4302         (offset_within_block_p): New function, taken from
4303         mips_offset_within_object_p.
4304         (split_const): New function, taken from mips_split_const.
4305         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
4306         Declare.
4307         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
4308         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
4309         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
4310         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
4311         (m68k_illegitimate_symbolic_constant_p): New function.
4312         * config/m68k/m68k.md (movsi): Remove misleading predicates.
4313         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
4314         symbolic constant that might be outside the symbol's section,
4315         move the symbol first and then add the offset.
4316         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
4317         Override.
4318         * config/mips/mips.c (mips_split_const): Delete.
4319         (mips_offset_within_object_p): Delete.
4320         (mips_symbolic_constant_p): Use offset_within_section_p and
4321         split_const instead of mips_offset_within_object_p and
4322         mips_split_const.
4323         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
4324         (mips_legitimize_const_move, print_operand_reloc)
4325         (mips_dangerous_for_la25_p): Use split_const instead of
4326         mips_split_const.
4327
4328 2007-02-28  Eric Christopher  <echristo@apple.com>
4329
4330         * Makefile.in (install-include-dir): Don't rm -rf include.
4331
4332 2007-02-28  Richard Guenther  <rguenther@suse.de>
4333
4334         PR middle-end/30364
4335         * fold-const.c (fold_binary): Do not associate expressions
4336         with more than one variable for integer types that do not wrap.
4337
4338 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
4339
4340         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
4341         Delete, and replace with...
4342         (fold_builtin_call_array): This.  Update callers to use it.
4343         * fold-const.c (fold_build_call_list): Delete, and replace with...
4344         (fold_build_call_array): This.
4345         (fold_build_call_list_initializer): Delete, and replace with...
4346         (fold_build_call_array_initializer): This.
4347         * tree.h: Update declarations to reflect above changes.
4348
4349         * c-typeck.c (build_function_call): Store converted arguments
4350         in a stack-allocated array instead of building a list.
4351         (convert_arguments): Store arguments in the array passed in as an
4352         argument, and return the actual number of arguments.
4353         * c-format.c: (check_function_format): Pass arguments in an
4354         array instead of a list.
4355         * c-common.c (check_function_nonnull): Likewise.
4356         (check_function_sentinel): Likewise.
4357         (check_function_arguments): Likewise.
4358         * c-common.h: Update declarations to reflect above changes.
4359
4360 2007-02-28  Jan Hubicka  <jh@suse.cz>
4361
4362         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
4363         PRED_NEGATIVE_RETURN): Update outcomes.
4364
4365 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
4366
4367         * calls.c (emit_library_call_value_1): Handle partial registers
4368         correctly when building up CALL_INSN_FUNCTION_USAGE.
4369
4370 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4371
4372         * pa/predicates.md (move_src_operand): Allow zero for mode.
4373         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
4374         move pattern.
4375
4376 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
4377
4378         PR target/30970
4379         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
4380         *movv2df_internal): Enable pattern only for valid operand
4381         combinations.
4382         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
4383         tie only 128bit modes. For MMX registers, tie only 64bit modes.
4384
4385 2007-02-27  Mike Stump  <mrs@apple.com>
4386
4387         * config/darwin-crt3.c: Avoid compilation when compiling for a
4388         kext multilib.
4389
4390 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
4391
4392         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
4393         FIXED_INCLUDE_DIR.
4394         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
4395         for fixed headers and limits.h.
4396         (install-include-dir, install-headers-tar, install-headers-cpio,
4397         install-headers-cp, real-install-headers-tar,
4398         real-install-headers-cpio, real-install-headers-cp): Handle
4399         include-fixed as well as include.
4400         (install-mkheaders): Don't install files that go only in include
4401         not include-fixed.
4402         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
4403         from GCC_INCLUDE_DIR.
4404         * gcc.c (process_command): Remove special -BstageN/ handling.
4405         (do_spec_1): Add include-fixed directories.
4406
4407 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4408
4409         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
4410         _smulsi3_highpart.
4411         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
4412         New functions.
4413         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
4414         patterns.
4415
4416 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
4417
4418         * c-common.c (get_priority): Add check for
4419         SUPPORTS_INIT_PRIORITY.
4420
4421 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4422
4423         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
4424
4425         * config/bfin/bfin.c: Include "cfglayout.h".
4426         (MAX_LSETUP_DISTANCE): New macro.
4427         (struct loop_info): New members incoming, incoming_src and
4428         incoming_dest.  Delete member predecessor.
4429         (length_for_loop): New function.
4430         (bfin_optimize_loop): Handle more different loop structures.
4431         (bfin_discover_loop): Rework detection of predecessor blocks by
4432         examining incoming edges.
4433         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
4434         bfin_reorg_loops.
4435         (bfin_reorder_loops): New function.
4436         (bfin_reorg_loops): Use these three new functions.
4437
4438         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
4439         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
4440         (CONSTRAINT_LEN): Add entry for 'q'.
4441         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
4442         Add 'q' constraints.
4443         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
4444         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
4445
4446         * config/bfin/bfin.md (add_with_carry): New pattern.
4447         (s_or_u, su_optab, su_modifier): New code macros/attrs.
4448         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
4449         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
4450         support unsigned multiplies too.  Removed incorrect commutativity from
4451         operand 1 constraint where appropriate.
4452         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
4453         patterns.
4454         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
4455         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
4456         New patterns.
4457         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
4458         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
4459         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
4460         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
4461         usmulhisi_hh_huh): New patterns.
4462
4463         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
4464         lshifthi3): Fix output template to use half reg for operand 2.
4465
4466         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
4467         instead of R2.
4468
4469         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
4470
4471 2007-02-27  Andreas Schwab  <schwab@suse.de>
4472
4473         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
4474
4475 2007-02-27  Jan Hubicka  <jh@suse.cz>
4476
4477         * predict.c (last_basic_block_p): Remove.
4478         (tree_estimate_probability): Update return heuristic for commonized
4479         return blocks.
4480
4481 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4482
4483         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
4484
4485 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4486
4487         * doc/include/gcc-common.texi (versionsubtitle): New macro.
4488         * doc/cpp.texi: Standardize title page.
4489         * doc/cppinternals.texi: Likewise.
4490         * doc/gcc.texi: Standardize title page, remove version number
4491         from copyright page.
4492         * doc/gccint.texi: Likewise.
4493         * doc/install.texi: Standardize title page, add table of
4494         contents.
4495
4496 2007-02-26  Jan Hubicka  <jh@suse.cz>
4497
4498         * predict.def: Set outcomes according to more recent results.
4499         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
4500         Remove dead predictors.
4501         * predict.c (return_prediction): Fix pasto.
4502
4503 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4504
4505         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
4506         change; avoid a memory leak when returning early.
4507
4508 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
4509
4510         * c-decl.c (static_ctors): Move to c-common.c.
4511         (static_dtors): Likewise.
4512         (finish_function): Use c_record_cdtor_fn.
4513         (build_cdtor): Move to c-common.c.
4514         (c_write_global_declarations): Use c_build_cdtor_fns.
4515         * c-common.h (static_ctors): Declare.
4516         (static_dtors): Likewise.
4517         (c_record_cdtor_fn): Likewise.
4518         (c_build_cdtor_fns): Likewise.
4519         * c-common.c (static_ctors): New variable.
4520         (static_dtors): Likewise.
4521         (c_record_cdtor_fn): New function.
4522         (build_cdtor): Move from c-decl.c
4523         (c_build_cdtor_fns): New function.
4524
4525         * output.h (assemble_addr_to_section): Declare.
4526         (get_cdtor_priority_section): Likewise.
4527         * varasm.c (assemble_addr_to_section): New function.
4528         (get_cdtor_priority_section): Likewise.
4529         (default_named_section_asm_out_destructor): Use them.
4530         (destor_dtor_section_asm_out_destructor): Likewise.
4531         (default_named_section_asm_out_constructor): Likewise.
4532         (default_ctor_section_asm_out_constructor): Likewise.
4533         * config.gcc (*-*-vxworks*): Include vxworks.o.
4534         * config/t-vxworks (vxworks.o): New target.
4535         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
4536         (TARGET_ASM_CONSTRUCTOR): Define.
4537         (TARGET_ASM_DESTRUCTOR): Likewise.
4538         (vxworks_asm_out_constructor): Declare.
4539         (vxworks_asm_out_destructor): Likewise.
4540
4541         * c-common.c (get_priority): Check that we have not just an
4542         INTEGER_CST, but an integer constant with integeral type.
4543
4544 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
4545
4546         PR tree-optimization/30938
4547         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
4548         use &dt[nargs-1] instead of &dt[nargs] in the call to
4549         vect_is_simple_use().
4550
4551 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
4552
4553         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
4554         from register elimination as PRE_MODIFY / POST_MODIFY increments.
4555         Do not attempt to handle MEM inside auto-inc expressions.
4556         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
4557         of a register modified by an auto-inc expression.  However, do handle
4558         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
4559         (elimination_effects): Prohibit elimination of a register modified
4560         by an auto-inc expression.  Disable register elimination rules whose
4561         target register is modified by an auto-inc expression with variable
4562         increment.
4563
4564 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
4565
4566         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
4567         off-by-one error.
4568         (array_at_struct_end_p): New function.
4569         (idx_infer_loop_bounds): Use it.
4570         (estimate_numbers_of_iterations_loop): Export.
4571         * predict.c (predict_loops): Use estimated_loop_iterations_int.
4572         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
4573         (tree_estimate_probability): Call record_loop_exits.
4574         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
4575         (estimated_loop_iterations, estimated_loop_iterations_int,
4576         estimated_loop_iterations_tree): New functions.
4577         (analyze_siv_subscript_cst_affine,
4578         compute_overlap_steps_for_affine_1_2,
4579         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
4580         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
4581         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
4582         (PRED_LOOP_ITERATIONS_GUESSED): New.
4583         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
4584         * cfgloop.h (estimate_numbers_of_iterations_loop,
4585         estimated_loop_iterations_int): Declare.
4586
4587 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
4588
4589         * doc/extend.texi: Document optional priority argument to
4590         constructors and destructors.
4591         * tree.c (init_priority_for_decl): Adjust GTY markers.
4592         (init_ttree): Use priority-info hash functions for
4593         init_priority_for_decl.
4594         (tree_map_eq): Rename to ...
4595         (tree_map_base_eq): ... this.
4596         (tree_map_marked_p): Rename to ...
4597         (tree_map_base_marked_p): ... this.
4598         (tree_map_base_hash): New function.
4599         (decl_init_priority_lookup): Rework.
4600         (decl_fini_priority_lookup): New function.
4601         (decl_priority_info): New function.
4602         (decl_init_priority_insert): Use it.
4603         (decl_fini_priority_insert): Likewise.
4604         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
4605         hierarchy.
4606         (decl_restrict_base_insert): Likewise.
4607         (decl_debug_expr_insert): Likewise.
4608         (decl_value_expr_lookup): Likewise.
4609         (decl_value_expr_insert): Likewise.
4610         * tree.h (priority_type): New type.
4611         (decl_init_priority_lookup): Use priority_type.
4612         (decl_fini_priority_lookup): New function.
4613         (decl_init_priority_insert): Use priority_type.
4614         (decl_fini_priority_insert): New function.
4615         (DECL_HAS_INIT_PRIORITY): Tweak comments.
4616         (DECL_INIT_PRIORITY): Likewise.
4617         (SET_DECL_INIT_PRIORITY): Add comment.
4618         (DECL_FINI_PRIORITY): New macro.
4619         (SET_DECL_FINI_PRIORITY): Likewise.
4620         (DEFAULT_INIT_PRIORITY): Document.
4621         (MAX_INIT_PRIORITY): Likewise.
4622         (MAX_RESERVED_INIT_PRIORITY): Likewise.
4623         (tree_map_base): New type.
4624         (tree_map_base_eq): New function.
4625         (tree_map_base_hash): Likewise.
4626         (tree_map_base_marked_p): Likewise.
4627         (tree_map): Inherit from tree_map_base.
4628         (tree_map_eq): Make it a macro.
4629         (tree_map_marked_p): Likewise.
4630         (tree_int_map): Inherit from tree_map_base.
4631         (tree_int_map_eq): Make it a macro.
4632         (tree_int_map_hash): Likewise.
4633         (tree_int_map_marked_p): Likewise.
4634         (tree_priority_map): New type.
4635         (tree_priority_map_eq): New macro.
4636         (tree_priority_map_hash): Likewise.
4637         (tree_priority_map_marked_p): Likewise.
4638         * varasm.c (emults_decl): Adjust for refactoring of tree_map
4639         hierarchy.
4640         (emutls_common_1): Likewise.
4641         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
4642         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
4643         of tree_map hierarchy.
4644         * tree-cfg.c (move_stmt_r): Likewise.
4645         (new_label_mapper): Likewise.
4646         * c-tree.h (c_expand_body): Move to ...
4647         * c-common.h (c_expand_body): ... here.
4648         * c-decl.c (c_expand_body): Move to ...
4649         * c-common.c (c_expand_body): ... here.
4650         (c_common_attribute_table): Allow 1 argument for the constructor
4651         and destructor attributes.
4652         (get_priority): New function.
4653         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
4654         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
4655
4656 2007-02-24  Jan Hubicka  <jh@suse.cz>
4657
4658         PR middle-end/30509
4659         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
4660
4661 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4662             Jan Hubicka  <jh@suse.cz>
4663
4664         PR target/30778
4665         * i386.c (counter_mode): New function.
4666         (expand_set_or_movmem_via_loop): Use it.
4667         (expand_movmem_epilogue): Likewise; fix pasto.
4668         (ix86_expand_movmem): Do emit guard even for constant counts.
4669         (ix86_expand_setmem): Likewise.
4670
4671 2007-02-25  Nick Clifton  <nickc@redhat.com>
4672
4673         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
4674         (JUMP_TABLES_IN_TEXT_SECTION): Define.
4675
4676 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4677
4678         PR target/30770
4679         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
4680         count argument with 0x10, not with 0x16.
4681         (expand_setmem_epilogue): Ditto.
4682
4683 2007-02-24  Mike Stump  <mrs@apple.com>
4684
4685         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
4686         symbols.
4687
4688 2007-02-24  Richard Guenther  <rguenther@suse.de>
4689
4690         PR middle-end/30951
4691         * fold-const.c (fold_binary): Fold x +- CST op x for
4692         EQ_EXPR and NE_EXPR.
4693
4694 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4695
4696         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
4697
4698 2007-02-24  Jan Hubicka  <jh@suse.cz>
4699
4700         * cgraphunit.c (decide_is_function_needed): Honor
4701         -fkeep-inline-functions.
4702
4703 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4704
4705         * builtins.c (fold_builtin_modf): New.
4706         (fold_builtin_2): Use it.
4707
4708 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
4709
4710         * loop-iv.c (implies_p): Detect additional cases where A implies B.
4711         (determine_max_iter): Take additional LOOP arg; all callers changed.
4712         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
4713         one using simplifications.
4714         (simplify_using_initial_values): Return if the expression becomes
4715         invalid due to altered regs.
4716
4717 2007-02-23  DJ Delorie  <dj@redhat.com>
4718
4719         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
4720
4721 2007-02-23  Mike Stump  <mrs@apple.com>
4722
4723         * tlink.c (scan_linker_output): Parse linker messages from
4724         darwin9's linker better.
4725
4726 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
4727
4728         PR debug/29614
4729         * varpool.c (varpool_assemble_pending_decls):  Set
4730         varpool_last_needed_node to null.
4731
4732 2007-02-23  DJ Delorie  <dj@redhat.com>
4733
4734         * config/i386/i386.c (ix86_data_alignment): Don't specify an
4735         alignment bigger than the object file can handle.
4736
4737 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
4738
4739         PR target/30825
4740         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
4741         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
4742         (*movsf_1): Penalize MMX moves.
4743
4744 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
4745
4746         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
4747         2^32-1 or more times unless flag_unsafe_loop_optimizations.
4748
4749         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
4750
4751 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4752
4753         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
4754         (fold_builtin_1): Use them.
4755         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
4756         BUILT_IN_SIGNIFICAND.
4757
4758 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
4759
4760         * config/i386/i386.c (bdesc_1arg): Initialize
4761         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
4762         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
4763         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
4764         and IX86_BUILTIN_MOVSLDUP.
4765
4766 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
4767
4768         PR rtl-optimization/30841
4769         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
4770
4771 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4772
4773         * builtins.c (fold_builtin_frexp): New.
4774         (fold_builtin_2): Use it.
4775
4776 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
4777
4778         * doc/invoke.texi (Spec Files): Document getenv spec function.
4779
4780         * gcc.c (getenv_spec_function): New function.
4781         (static_spec_functions): Add it.
4782         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
4783         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
4784         header files.
4785
4786 2007-02-22  Michael Matz  <matz@suse.de
4787
4788         PR c++/29433
4789         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
4790         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
4791
4792 2007-02-22  Ian Lance Taylor  <iant@google.com>
4793
4794         PR debug/30898
4795         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
4796         (mem_loc_descriptor): Call it.
4797
4798 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
4799             Ira Rosen  <irar@il.ibm.com>
4800
4801         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
4802
4803 2007-02-22  Ira Rosen  <irar@il.ibm.com>
4804
4805         PR tree-optimization/30843
4806         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
4807         stores only after all the group is vectorized.
4808
4809 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
4810
4811         PR tree-optimization/30858
4812         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
4813         in the reduction cycle have a single use in the loop.
4814         * tree-vectorizer.h (relevant): Add documentation.
4815
4816 2007-02-20  Mike Stump  <mrs@apple.com>
4817
4818         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
4819         * configure: Regenerate.
4820
4821 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4822
4823         Change the defaults of some parameters and options.
4824         * config/spu/spu-protos.h (spu_optimization_options): Declare.
4825         * config/spu/spu.c (spu_optimization_options): Add.
4826         (spu_override_options): Change params in spu_optimization_options.
4827         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
4828
4829         Register 127 is only 16 byte aligned when used as a frame pointer.
4830         * config/spu/spu-protos.h (spu_init_expanders): Declare.
4831         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
4832         HARD_FRAME_POINTER_REGNUM.
4833         (spu_legitimate_address):  Use regno_aligned_for_reload.
4834         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
4835         aligned when frame_pointer_needed is true.
4836         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
4837         to 8 bits.
4838         * config/spu/spu.h (INIT_EXPANDERS): Define.
4839
4840         Make sure shift and rotate instructions have valid immediate operands.
4841         * config/spu/predicates.md (spu_shift_operand): Remove.
4842         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
4843         * config/spu/constraints.md (W, O): Extend range.
4844         * config/spu/spu.md (umask, nmask): Define.
4845         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
4846         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
4847         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
4848         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
4849         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
4850         (lshr<mode>3_reg):  Fix rtl description.
4851
4852         Make sure mulhisi immediate operands are valid.
4853         * config/spu/predicates.md (imm_K_operand): Add.
4854         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
4855
4856         Generate constants using fsmbi and andi.
4857         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
4858         (print_operand, spu_split_immediate, classify_immediate,
4859         fsmbi_const_p): Handle IC_FSMBI2.
4860
4861         Correctly handle a CONST_VECTOR containing symbols.
4862         * config/spu/spu.c (print_operand): Handle HIGH correctly.
4863         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
4864         (immediate_load_p): Allow symbols that use 2 instructions to create.
4865         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
4866         with symbols when flag_pic is set.
4867         (const_vector_immediate_p): New.
4868         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
4869         accept a CONST_VECTOR with symbols.
4870         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
4871         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
4872         correctly.
4873         * config/spu/spu.md (high, low): Delete.
4874         (low_<mode>): Define.
4875
4876         Remove INTRmode and INTR_REGNUM, which didn't work.
4877         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
4878         of INTR_REGNUM.
4879         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
4880         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
4881         peephole2 pattern): Don't use INTR or 131.
4882         (movintrcc): Delete.
4883         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
4884         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
4885         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
4886         (UNSPEC_SET_INTR): Add.
4887         * config/spu/spu-modes.def (INTR): Remove.
4888
4889         More accurate warnings about run-time relocations.
4890         * config/spu/spu.c (reloc_diagnostic): Test in_section.
4891
4892         Correctly warn about immediate arguments to specific intrinsics.
4893         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
4894         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
4895         the instruction predicate.
4896
4897         Fix tree check errors with latest update.
4898         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
4899         CALL_EXPR_ARG.
4900         (spu_expand_builtin): Use CALL_EXPR_FN.
4901
4902         Add missing specific intrinsics.
4903         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
4904         si_bislede.
4905         * config/spu/spu_internals.h: Ditto.
4906
4907         Fix incorrect operand modifiers.
4908         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
4909         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
4910
4911         Optimize one case of zero_extend of a vec_select.
4912         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
4913
4914         Accept any immediate for hbr.
4915         * config/spu/spu.md (hbr):  Change s constraints to i.
4916
4917 2007-02-21  Paul Brook  <paul@codesourcery.com>
4918
4919         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
4920         condexec_count when skipping USE and CLOBBER.
4921
4922 2007-02-21  Nick Clifton  <nickc@redhat.com>
4923
4924         * common.opt (Warray-bounds): Add Warning attribute.
4925         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
4926         Likewise.
4927         (fsized-zeroes): Add Optimization attribute.
4928         (fsplit-wide-types, ftree-scev-cprop): Likewise.
4929         * c.opt (Wc++0x-compat): Add Warning attribute.
4930
4931 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
4932
4933         PR middle-end/30761
4934         * reload1.c (eliminate_regs_in_insn): In the single_set special
4935         case, attempt to re-recognize the insn before falling back to
4936         having reload fix it up.
4937
4938 2007-02-20  Eric Christopher  <echristo@gmail.com>
4939
4940         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
4941         Rewrite accordingly.
4942         (frv_read_iacc_argument): Ditto.
4943         (frv_expand_set_builtin): Take a call instead of arglist, update for
4944         above changes.
4945         (frv_expand_unop_builtin): Ditto.
4946         (frv_expand_binop_builtin): Ditto.
4947         (frv_expand_cut_builtin): Ditto.
4948         (frv_expand_binopimm_builtin): Ditto.
4949         (frv_expand_voidbinop_builtin): Ditto.
4950         (frv_expand_int_void2arg): Ditto.
4951         (frv_expand_prefetches): Ditto.
4952         (frv_expand_voidtriop_builtin): Ditto.
4953         (frv_expand_voidaccop_builtin): Ditto.
4954         (frv_expand_load_builtin): Ditto.
4955         (frv_expand_store_builtin): Ditto.
4956         (frv_expand_mdpackh_builtin): Ditto.
4957         (frv_expand_mclracc_builtin): Ditto.
4958         (frv_expand_mrdacc_builtin): Ditto.
4959         (frv_expand_mwtacc_builtin): Ditto.
4960         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
4961         calls for above.
4962
4963 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
4964
4965         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
4966         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
4967         cmpb instruction.
4968         (HAVE_GAS_DFP): Check for assembler support of decimal floating
4969         point instructions.
4970         * configure: Regenerate.
4971         * config.in: Regenerate.
4972         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
4973         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
4974         masks to power6 and power6x and to POWERPC_MASKS.
4975         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
4976         _ARCH_PWR6.
4977         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
4978         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
4979         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
4980         Access PROTOTYPE as variable, not mask.
4981
4982 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
4983
4984         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
4985         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
4986         * combine.c (adjust_for_new_dest): Use it.
4987         * postreload.c (reload_combine): Likewise.
4988
4989 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
4990
4991         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
4992         notes on an insn with multiple sets, even if single_set returns
4993         non-NULL for that insn.
4994
4995 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4996
4997         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
4998         scalbn and scalbln.
4999
5000 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
5001
5002         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
5003         if user didn't pass it.
5004         * config/i386/darwin.h (CC1_SPEC): Likewise.
5005         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
5006         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
5007         -mmacosx-version-min.
5008
5009 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5010             Uros Bizjak  <ubizjak@gmail.com>
5011
5012         * optabs.h (enum optab_index): Add new OTI_scalb.
5013         (scalb_optab): Define corresponding macro.
5014         * optabs.c (init_optabs): Initialize scalb_optab.
5015         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
5016         patterns.
5017         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
5018         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
5019         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
5020         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
5021         flag_unsafe_math_optimizations is set.
5022
5023         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
5024         to implement scalbf, scalb and scalbl built-ins as inline x87
5025         intrinsics.
5026
5027 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5028             DJ Delorie <dj@redhat.com>
5029
5030         PR other/30824
5031         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
5032         (diagnostic_report_diagnostic): ... here, and turn them into real
5033         errors. If warnings are inhibited, no need to do anything.
5034
5035 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
5036
5037         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
5038         better code generation.
5039
5040 2007-02-20  Ben Elliston  <bje@au.ibm.com>
5041
5042         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
5043
5044 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
5045
5046         * config/alpha/alpha.c, config/alpha/alpha.md,
5047         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
5048         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
5049         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
5050         config/arm/lib1funcs.asm: Follow spelling conventions.
5051
5052         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
5053         config/fr30/fr30.md, config/i386/i386.h,
5054         config/iq2000/iq2000.h, config/iq2000/predicates.md,
5055         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
5056         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
5057         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
5058         config/rs6000/altivec.md, config/rs6000/rs6000.c,
5059         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
5060         config/sparc/sparc.c, config/sparc/sparc.h,
5061         config/sparc/sparc.md, config/spu/constraints.md,
5062         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
5063         conventions.
5064
5065 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
5066
5067         PR target/29943
5068         * varasm.c (use_blocks_for_decl_p): Return false for decls with
5069         alias attribute.
5070
5071 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
5072
5073         * doc/invoke.texi (-ftree-lrs): Remove.
5074
5075 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
5076
5077         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
5078         NULL.
5079
5080 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
5081
5082         * config/ia64/ia64.c (ia64_expand_builtin): Use the
5083         new CALL_EXPR_FN macro for retrieving the function
5084         declaration of the input expression.
5085
5086 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5087
5088         * c.opt (Waddress): New.
5089         * common.opt (Walways-true): Delete.
5090         (Wstring-literal-comparison): Delete.
5091         * doc/invoke.texi (Warning Options): Delete -Walways-true and
5092         -Wstring-literal-comparison. Add -Waddress.
5093         (Waddress): New.
5094         (Walways-true): Delete.
5095         (Wstring-literal-comparison): Delete.
5096         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
5097         consistently instead of -Walways-true in example.
5098         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
5099         * c-typeck.c (parser_build_binary_op): Replace
5100         -Wstring-literal-comparison and -Walways-true with -Waddress.
5101         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
5102         with -Waddress.
5103
5104 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
5105
5106         * tree-cfg.c (dump_function_to_file): Be prepared for functions
5107         without DECL_STRUCT_FUNCTION initialized.
5108
5109 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
5110
5111         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
5112         due to calls to functions taking pointers as parameters.
5113
5114 2007-02-19  Richard Henderson  <rth@redhat.com>
5115
5116         PR debug/29558
5117         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
5118         in memory.
5119
5120 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
5121
5122         * config/s390/s390.c (s390_call_saved_register_used,
5123         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
5124         accessed to the new scheme.
5125
5126 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
5127
5128         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
5129         (cris_print_index, cris_print_operand, cris_print_operand_address)
5130         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
5131         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
5132         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
5133         GET_CODE () == xxx.
5134         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
5135         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
5136         GO_IF_LEGITIMATE_ADDRESS): Ditto.
5137         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
5138         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
5139         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
5140         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
5141         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
5142         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
5143         (uminsi3, call, call_value): Ditto.
5144         (define_split: indir_to_reg_split, unnamed): Ditto.
5145
5146 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
5147
5148         PR tree-optimization/30975
5149         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
5150         wrong assert.
5151
5152 2007-02-18  Eric Christopher  <echristo@gmail.com>
5153
5154         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
5155         Remove use of arglist.
5156         (mips_expand_builtin): Remove use of arglist, pass in expr.
5157         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
5158         (mips_expand_builtin_movtf): Ditto.
5159         (mips_expand_builtin_compare): Ditto.
5160
5161 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
5162
5163         * tree-sra.c (sra_build_assignment): Replace assertion
5164         checking with a comment explaining why it can't be done.
5165
5166 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
5167
5168         PR middle-end/30833
5169         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
5170         during CALL_EXPR representation conversion.
5171         * tree-ssa-propagate.c (set_rhs): Likewise.
5172
5173 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
5174
5175         * tree-sra.c (sra_build_assignment): Disable assertion checking
5176         for now.
5177
5178 2007-02-18  Roger Sayle  <roger@eyesopen.com>
5179
5180         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
5181         instead of calling build2 with a GIMPLE_MODIFY_STMT.
5182         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
5183         Likewise.
5184         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
5185         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
5186         gimplify_init_ctor_eval_range, gimple_push_cleanup,
5187         gimplify_omp_for, gimplify_omp_atomic_pipeline,
5188         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
5189         force_gimple_operand): Likewise.
5190         * ipa-cp.c (constant_val_insert): Likewise.
5191         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
5192         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
5193         perfect_nestify): Likewise.
5194         * langhooks.c (lhd_omp_assignment): Likewise.
5195         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
5196         lower_copyprivate_clauses, lower_send_clauses,
5197         lower_send_shared_vars, expand_parallel_call,
5198         expand_omp_for_generic, expand_omp_for_static_nochunk,
5199         expand_omp_for_static_chunk, expand_omp_sections,
5200         lower_omp_single_copy, lower_omp_for_lastprivate,
5201         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
5202         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
5203         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
5204         Likewise.
5205
5206 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
5207
5208         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
5209         config/sh/sh.md: Follow spelling conventions.
5210
5211         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
5212         config/frv/predicates.md: Follow spelling conventions.
5213
5214         * config/m68k/linux-unwind.h: Fix a comment typo.
5215         * target.h: Follow spelling conventions.
5216
5217 2007-02-18  Roger Sayle  <roger@eyesopen.com>
5218
5219         PR rtl-optimization/28173
5220         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
5221         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
5222         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
5223         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
5224         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
5225
5226 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5227
5228         * builtins.c (fold_builtin_load_exponent): New.
5229         (fold_builtin_2): Use it.
5230
5231 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
5232
5233         PR rtl-optimization/30773
5234         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
5235         if we fail to attach a REG_EQUIV note.
5236
5237 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
5238             Roger Sayle  <roger@eyesopen.com>
5239
5240         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
5241
5242 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
5243
5244         * calls.c (initialize_argument_information): Pass original EXP
5245         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
5246         code to split complex arguments here, as part of initializing the
5247         ARGS array.
5248         (expand_call): Remove code that builds a list of arguments and
5249         inserts implicit arguments into it.  Instead, just count how many
5250         implicit arguments there will be so we can determine the size of
5251         the ARGS array, and let initialize_argument_information do the work.
5252         (split_complex_values): Delete unused function.
5253
5254 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
5255
5256         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
5257
5258 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
5259
5260         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
5261         for arg pointer based indexed addressing.
5262
5263 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
5264
5265         * config/ia64/ia64.h, config/ia64/ia64.md,
5266         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
5267         spelling conventions.
5268
5269 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5270
5271         * config/m68k/m68k.c (split_di): New.
5272         * config/m68k/m68k-protos.h: Declare split_di.
5273         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
5274           Improve predicate handling and split constant shifts.
5275
5276 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5277
5278         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
5279         parameter for register bitfield operations, general predicates
5280         cleanup
5281
5282 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5283
5284         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
5285         * config/m68k/linux-unwind.h: New file.
5286
5287 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
5288
5289         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
5290         config/i386/athlon.md, config/ia64/ia64.md,
5291         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
5292         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
5293         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
5294         tree-ssa-loop-niter.c, tree-vect-analyze.c,
5295         tree-vect-transform.c: Fix comment typos.
5296
5297 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
5298
5299         * sched-deps.c (find_insn_list): Remove.
5300         * sched-int.h: Remove the prototype for find_insn_list.
5301
5302 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
5303
5304         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
5305         to linker.
5306         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
5307         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
5308         darwin_rs6000_override_options.
5309         (C_COMMON_OVERRIDE_OPTIONS): Expect
5310         darwin_macosx_version_min to be non-NULL always.
5311         (TARGET_C99_FUNCTIONS): Likewise.
5312         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
5313         (DARWIN_MINVERSION_SPEC): New.
5314         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
5315         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
5316         to cc1*.
5317         (DARWIN_MINVERSION_SPEC): New.
5318         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
5319         value.
5320         * config/darwin-c.c (darwin_cpp_builtins): Expect
5321         darwin_macosx_version_min to be non-NULL always.
5322
5323         * config/rs6000/rs6000.c: Clean up trailing whitespace.
5324
5325 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
5326
5327         * config/i386/i386.h (x86_use_xchgb): New.
5328         (TARGET_USE_XCHGB): New macro.
5329         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
5330         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
5331         Split after reload into bswaphi for shifts of 8.
5332         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
5333         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
5334         or when optimizing for size.
5335
5336 2007-02-16  Richard Guenther  <rguenther@suse.de>
5337             Christian Bruel  <christian.bruel@st.com>
5338
5339         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
5340         DECLs but prefer SSA_NAMEs over DECLs.
5341
5342 2007-02-16  Richard Guenther  <rguenther@suse.de>
5343
5344         * tree-flow-inline.h (single_imm_use_p): Remove.
5345         (zero_imm_uses_p): Likewise.
5346         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
5347         instead of single_imm_use_p.
5348         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
5349         zero_imm_uses_p.
5350
5351 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5352
5353         PR other/27843
5354         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
5355         nested double- and backquotes.
5356
5357 2007-02-15  Roger Sayle  <roger@eyesopen.com>
5358
5359         PR middle-end/30391
5360         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
5361         should be unreachable.
5362         (build2_stat): Allow construction of MODIFY_EXPR at any time.
5363         For the time being redirect GIMPLE_MODIFY_STMT to the new
5364         (renamed) build_gimple_modify_stmt_stat.
5365         (build2_gimple_stat): Rename to...
5366         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
5367         Always build a GIMPLE_MODIFY_STMT node.
5368         * tree.h (build2_gimple, build2_gimple_stat): Delete.
5369         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
5370         declarations.
5371
5372         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
5373         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
5374         * tree-complex.c (set_component_ssa_name, expand_complex_move,
5375         expand_complex_div_wide): Likewise.
5376         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
5377         * tree-ssa-loop-im.c (schedule_sm): Likewise.
5378         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
5379         * tree-ssa-loop-manip.c (create_iv): Likewise.
5380         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
5381         abs_replacement): Likewise.
5382         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
5383         realify_fake_stores): Likewise.
5384
5385         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
5386         node rather than a GIMPLE_MODIFY_STMT node.
5387         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
5388         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
5389         Likewise.
5390         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
5391         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
5392         GIMPLE_MODIFY_STMT.
5393
5394 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5395
5396         PR middle-end/30433
5397         * fold-const.c (fold_comparison): Add back the
5398         folding of constant complex comparisions.
5399
5400 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5401
5402         PR middle-end/30729
5403         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
5404         effects unknown to this function, return early.
5405
5406 2007-02-15  Ian Lance Taylor  <iant@google.com>
5407
5408         * lower-subreg.c (move_eh_region_note): New static function.
5409         (resolve_simple_move): Call it.
5410         (decompose_multiword_subregs): Track blocks for which we resolve a
5411         simple move which is also a control flow insn.  Pass them to
5412         find_many_sub_basic_blocks.
5413         (pass_lower_subreg): Add TODO_verify_flow.
5414         (pass_lower_subreg2): Likewise.
5415
5416 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5417             Brooks Moses  <brooks.moses@codesourcery.com>
5418             Lee Millward  <lee.millward@codesourcery.com>
5419
5420         * tree.h (enum tree_code_class): Add tcc_vl_exp.
5421         (VL_EXP_CLASS_P): New.
5422         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
5423         TREE_CODE_LENGTH.
5424         (TREE_OPERAND_CHECK_CODE): Likewise.
5425         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
5426         (TREE_RTL_OPERAND_CHECK): Likewise.
5427         (tree_operand_check_failed): Make second parameter the whole tree
5428         instead of its code.  Fixed callers.
5429         (VL_EXP_CHECK): New.
5430         (TREE_OPERAND_LENGTH): New.
5431         (VL_EXP_OPERAND_LENGTH): New.
5432         (CALL_EXPR_FN): New.
5433         (CALL_EXPR_STATIC_CHAIN): New.
5434         (CALL_EXPR_ARGS): New.
5435         (CALL_EXPR_ARG): New.
5436         (call_expr_nargs): New.
5437         (CALL_EXPR_ARGP): New.
5438         (build_nt_call_list): Declare.
5439         (build_vl_exp_stat): Declare.
5440         (build_vl_exp): New.
5441         (build_call_list): Declare.
5442         (build_call_nary): Declare.
5443         (build_call_valist): Declare.
5444         (build_call_array): Declare.
5445         (call_expr_arg): Declare.
5446         (call_expr_argp): Declare.
5447         (call_expr_arglist): Declare.
5448         (fold_build_call_list): Declare.
5449         (fold_build_call_list_initializer): Declare.
5450         (fold_call_expr): Declare to replace fold_builtin.
5451         (fold_builtin_fputs): Update to agree with modified definition.
5452         (fold_builtin_strcpy): Likewise.
5453         (fold_builtin_strncpy): Likewise.
5454         (fold_builtin_memory_chk): Likewise.
5455         (fold_builtin_stxcpy_chk): Likewise.
5456         (fold_builtin_strncpy_chk): Likewise.
5457         (fold_builtin_next_arg): Likewise.
5458         (fold_build_call_expr): Declare.
5459         (fold_builtin_call_list): Declare.
5460         (fold_builtin_call_valist): Declare.
5461         (build_call_expr): Declare.
5462         (validate_arglist): Update to agree with modified definition.
5463         (tree_operand_length): New.
5464         (call_expr_arg_iterator): New.
5465         (init_call_expr_arg_iterator): New.
5466         (next_call_expr_arg): New.
5467         (first_call_expr_arg): New.
5468         (more_call_expr_args_p): New.
5469         (FOR_EACH_CALL_EXPR_ARG): New.
5470
5471         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
5472         and tcc_gimple_stmt.
5473         (tree_code_size): Update documentation.  Use sizeof (tree) rather
5474         than sizeof (char *).
5475         (tree_size): Likewise.  Add case for tcc_vl_exp.
5476         (tree_node_structure): Add case for tcc_vl_exp.
5477         (contains_placeholder_p): Likewise.
5478         (substitute_in_expr): Likewise.
5479         (substitute_placeholder_in_expr): Likewise.
5480         (stabilize_reference_1): Likewise.
5481         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
5482         to diagnose breakage of this interface for constructing CALL_EXPRs.
5483         (build_nt): Add similar assertion here.
5484         (build_nt_call_list): New.
5485         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
5486         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
5487         TREE_CODE_LENGTH.
5488         (get_callee_fndecl): Use new CALL_EXPR accessors.
5489         (tree_operand_check_failed): Change parameters to pass entire node
5490         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
5491         (process_call_operands): New.
5492         (build_vl_exp_stat): New.
5493         (build_call_list): New.
5494         (build_call_nary): New.
5495         (build_call_valist): New.
5496         (build_call_array): New.
5497         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5498         (call_expr_arglist): New.
5499
5500         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
5501         tcc_vl_exp instead of a fixed-size tcc_expression.
5502
5503         * doc/c-tree.texi (CALL_EXPR): Document new representation and
5504         accessors for CALL_EXPRs.
5505         (AGGR_INIT_EXPR): Likewise.
5506
5507 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5508             Brooks Moses  <brooks.moses@codesourcery.com>
5509             Lee Millward  <lee.millward@codesourcery.com>
5510
5511         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
5512         (expand_builtin_nonlocal_goto): Change parameter to be entire
5513         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
5514         (expand_builtin_prefetch): Likewise.
5515         (expand_builtin_classify_type): Likewise.
5516         (mathfn_built_in): Return NULL_TREE instead of 0.
5517         (expand_errno_check): Use new CALL_EXPR accessors.
5518         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
5519         Return NULL_RTX instead of 0.
5520         (expand_builtin_mathfn_2): Likewise.
5521         (expand_builtin_mathfn_3): Likewise.
5522         (expand_builtin_interclass_mathfn): Likewise.
5523         (expand_builtin_sincos): Likewise.
5524         (expand_builtin_cexpi): Likewise.
5525         (expand_builtin_int_roundingfn): Likewise.
5526         (expand_builtin_int_roundingfn_2): Likewise.
5527         (expand_builtin_pow): Likewise.
5528         (expand_builtin_powi): Likewise.
5529         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
5530         of arglist, fixing callers appropriately.  Use new CALL_EXPR
5531         accessors and constructors.  Return NULL_RTX instead of 0.
5532         (expand_builtin_strstr): Likewise.
5533         (expand_builtin_strchr): Likewise.
5534         (expand_builtin_strrchr): Likewise.
5535         (expand_builtin_strpbrk): Likewise.
5536         (expand_builtin_memcpy): Likewise.
5537         (expand_builtin_mempcpy): Likewise.
5538         (expand_builtin_mempcpy_args): New.
5539         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
5540         (expand_builtin_memmove_args): New.
5541         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
5542         (expand_movstr): Likewise.
5543         (expand_builtin_strcpy): Likewise.
5544         (expand_builtin_strcpy_args): New.
5545         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
5546         (expand_builtin_strncpy): Likewise.
5547         (expand_builtin_memset): Likewise.
5548         (expand_builtin_memset_args): New.
5549         (expand_builtin_bzero): Similarly to expand_builtin_memset.
5550         (expand_builtin_memcmp): Likewise.
5551         (expand_builtin_strcmp): Likewise.
5552         (expand_builtin_strncmp): Likewise.
5553         (expand_builtin_strcat): Likewise.
5554         (expand_builtin_strncat): Likewise.
5555         (expand_builtin_strspn): Likewise.
5556         (expand_builtin_strcspn): Likewise.
5557         (expand_builtin_args_info): Likewise.
5558         (expand_builtin_va_start): Likewise.
5559         (gimplify_va_arg_expr): Likewise.
5560         (expand_builtin_va_end): Likewise.
5561         (expand_builtin_va_copy): Likewise.
5562         (expand_builtin_frame_address): Likewise.
5563         (expand_builtin_alloca): Likewise.
5564         (expand_builtin_bswap): Likewise.
5565         (expand_builtin_unop): Likewise.
5566         (expand_builtin_fputs): Likewise.
5567         (expand_builtin_expect): Likewise.
5568         (expand_builtin_fabs): Likewise.
5569         (expand_builtin_copysign): Likewise.
5570         (expand_builtin_printf): Likewise.
5571         (expand_builtin_fprintf): Likewise.
5572         (expand_builtin_sprintf): Likewise.
5573         (expand_builtin_init_trampoline): Likewise.
5574         (expand_builtin_signbit): Likewise.
5575         (expand_builtin_fork_or_exec): Likewise.
5576         (expand_builtin_sync_operation): Likewise.
5577         (expand_builtin_compare_and_swap): Likewise.
5578         (expand_builtin_lock_test_and_set): Likewise.
5579         (expand_builtin_lock_release): Likewise.
5580         (expand_builtin): Likewise.
5581         (builtin_mathfn_code): Likewise.
5582
5583         (fold_builtin_constant_p): Pass call arguments individually instead
5584         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5585         accessors and constructors.  Return NULL_TREE instead of 0.
5586         (fold_builtin_expect): Likewise.
5587         (fold_builtin_classify_type): Likewise.
5588         (fold_builtin_strlen): Likewise.
5589         (fold_builtin_nan): Likewise.
5590         (integer_valued_real_p): Likewise.
5591         (fold_trunc_transparent_mathfn): Likewise.
5592         (fold_fixed_mathfn): Likewise.
5593         (fold_builtin_cabs): Likewise.
5594         (fold_builtin_sqrt): Likewise.
5595         (fold_builtin_cbrt): Likewise.
5596         (fold_builtin_cos): Likewise.
5597         (fold_builtin_cosh): Likewise.
5598         (fold_builtin_tan): Likewise.
5599         (fold_builtin_sincos): Likewise.
5600         (fold_builtin_cexp): Likewise.
5601         (fold_builtin_trunc): Likewise.
5602         (fold_builtin_floor): Likewise.
5603         (fold_builtin_ceil): Likewise.
5604         (fold_builtin_round): Likewise.
5605         (fold_builtin_int_roundingfn): Likewise.
5606         (fold_builtin_bitop): Likewise.
5607         (fold_builtin_bswap): Likewise.
5608         (fold_builtin_logarithm): Likewise.
5609         (fold_builtin_hypot): Likewise.
5610         (fold_builtin_pow): Likewise.
5611         (fold_builtin_powi): Likewise.
5612         (fold_builtin_exponent): Likewise.
5613         (fold_builtin_memset): Likewise.
5614         (fold_builtin_bzero): Likewise.
5615         (fold_builtin_memory_op): Likewise.
5616         (fold_builtin_bcopy): Deleted; call site changed to invoke
5617         fold_builtin_memory_op directly.
5618         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
5619         (fold_builtin_strncpy): Likewise.
5620         (fold_builtin_memcmp): Likewise.
5621         (fold_builtin_strcmp): Likewise.
5622         (fold_builtin_strncmp): Likewise.
5623         (fold_builtin_signbit): Likewise.
5624         (fold_builtin_copysign): Likewise.
5625         (fold_builtin_isascii): Likewise.
5626         (fold_builtin_toascii): Likewise.
5627         (fold_builtin_isdigit): Likewise.
5628         (fold_builtin_fabs): Likewise.
5629         (fold_builtin_abs): Likewise.
5630         (fold_builtin_fmin_fmax): Likewise.
5631         (fold_builtin_carg): Likewise.
5632         (fold_builtin_classify): Likewise.
5633         (fold_builtin_unordered_cmp): Likewise.
5634
5635         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
5636         New functions split out from fold_builtin_1.
5637         (fold_builtin_n): New.
5638         (fold_builtin_varargs): New.
5639         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
5640         instead.
5641         (fold_call_expr): New.
5642         (build_function_call_expr): Rewrite to use new helper function.
5643         (fold_builtin_call_list): New.
5644         (build_call_expr): New.
5645         (fold_builtin_call_valist): New.
5646         (rewrite_call_expr): New.
5647         (validate_arg): New.
5648         (validate_arglist): Change parameter to be entire CALL_EXPR instead
5649         of an arglist.  Change return type to bool.  Use new CALL_EXPR
5650         accessors.
5651
5652         (fold_builtin_strstr):  Pass call arguments individually instead
5653         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5654         accessors and constructors.  Return NULL_TREE instead of 0.
5655         (fold_builtin_strchr): Likewise.
5656         (fold_builtin_strrchr): Likewise.
5657         (fold_builtin_strpbrk): Likewise.
5658         (fold_builtin_strcat): Likewise.
5659         (fold_builtin_strncat): Likewise.
5660         (fold_builtin_strspn): Likewise.
5661         (fold_builtin_strcspn): Likewise.
5662         (fold_builtin_fputs): Likewise.
5663         (fold_builtin_next_arg): Likewise.
5664         (fold_builtin_sprintf): Likewise.
5665
5666         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
5667         NULL_RTX instead of 0.
5668         (expand_builtin_memory_chk): Likewise.
5669         (maybe_emit_chk_warning): Likewise.
5670         (maybe_emit_sprintf_chk_warning): Likewise.
5671
5672         (fold_builtin_object_size): Pass call arguments individually instead
5673         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5674         accessors and constructors.  Return NULL_TREE instead of 0.
5675         (fold_builtin_memory_chk): Likewise.
5676         (fold_builtin_stxcpy_chk): Likewise.
5677         (fold_builtin_strncpy_chk): Likewise.
5678         (fold_builtin_strcat_chk): Likewise.
5679         (fold_builtin_strcat_chk): Likewise.
5680         (fold_builtin_strncat_chk): Likewise.
5681         (fold_builtin_sprintf_chk): Likewise.
5682         (fold_builtin_snprintf_chk): Likewise.
5683         (fold_builtin_printf): Likewise.
5684         (fold_builtin_vprintf): Likewise.
5685
5686         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
5687         constructors.
5688         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
5689         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5690         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
5691         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
5692         (fold_unary): Likewise.
5693         (fold_binary): Likewise.
5694         (fold_ternary): Remove CALL_EXPR case, since they are no longer
5695         ternary expressions.
5696         (fold): Add logic for tcc_vl_exp.
5697         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
5698         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5699         (fold_build3_stat): Add assertion to flag broken interface for
5700         constructing CALL_EXPRs.
5701         (fold_build_call_list): New.
5702         (fold_build_call_list_initializer): New.
5703         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
5704         constructors.
5705         (fold_strip_sign_ops): Likewise.
5706
5707 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5708             Brooks Moses  <brooks.moses@codesourcery.com>
5709             Lee Millward  <lee.millward@codesourcery.com>
5710
5711         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
5712         accessors and dump arguments explicitly.
5713
5714         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
5715         TREE_CODE_LENGTH.
5716         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
5717         explicitly.
5718         (print_call_name): Use new CALL_EXPR accessors.
5719
5720         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
5721         CALL_EXPR arguments explicitly instead of as a list.  Use
5722         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5723
5724         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
5725         (vrp_visit_stmt): Likewise.
5726
5727         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
5728         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
5729         TREE_CODE_LENGTH.
5730         (force_move_till_expr): Likewise.
5731
5732         * targhooks.c (default_external_stack_protect_fail): Use
5733         build_call_expr instead of build_function_call_expr.
5734         (default_hidden_stack_protect_fail): Likewise.
5735
5736         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
5737         build the call.
5738
5739         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
5740         and walk arguments explicitly.
5741
5742         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
5743         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5744         (expand_simple_operations): Likewise.
5745         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
5746
5747         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
5748         of TREE_CODE_LENGTH.
5749         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
5750
5751         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
5752         instead of TREE_CODE_LENGTH.
5753
5754         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
5755         (tree_ic_transform): Likewise.
5756         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
5757         parameter instead of arglist.  Fix callers.
5758         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
5759         (tree_stringops_transform): Likewise.
5760         (tree_indirect_call_to_profile): Likewise.
5761         (tree_stringops_values_to_profile): Likewise.
5762
5763         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
5764         (eliminate_tail_call): Likewise.
5765
5766         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
5767
5768         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
5769         Use TREE_OPERAND_LENGTH and generalize to handle any number of
5770         operands.
5771         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
5772
5773         * omp-low.c (build_omp_barrier): Use build_call_expr.
5774         (lower_rec_input_clauses): Likewise.
5775         (lower_reduction_clauses): Likewise.
5776         (expand_parallel_call): Likewise.
5777         (maybe_catch_exception): Likewise.
5778         (expand_omp_for_generic): Likewise.
5779         (expand_omp_for_static_nochunk): Likewise.
5780         (expand_omp_sections): Likewise.
5781         (lower_omp_single_simple): Likewise.
5782         (lower_omp_single_copy): Likewise.
5783         (lower_omp_master): Likewise.
5784         (lower_omp_ordered): Likewise.
5785         (lower_omp_critical): Likewise.
5786
5787         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
5788         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
5789
5790         * tree-gimple.c (is_gimple_call_addr): Fix doc.
5791         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
5792         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
5793
5794         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
5795         and generalize to handle any number of operands.
5796         (chrec_contains_undetermined): Likewise.
5797         (tree_contains_chrecs): Likewise.
5798         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
5799
5800         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
5801
5802         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
5803         fold_call_expr instead of fold_builtin.
5804         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
5805         match declarations there.
5806         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
5807         updates.
5808
5809         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
5810         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5811
5812         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
5813         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
5814
5815         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
5816         accessors.
5817
5818         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
5819         (execute_cse_sincos): Use new CALL_EXPR accessors.
5820
5821         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
5822
5823         * gimple-low.c (lower_function_body): Use build_call_expr.
5824         (lower_builtin_setjmp): Likewise.
5825
5826         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
5827         (set_storage_via_libcall): Likewise.
5828         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
5829         instead of TREE_CODE_LENGTH.
5830         (expand_expr_real_1): Use new CALL_EXPR accessors.
5831
5832         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
5833         generalize to handle any number of operands.
5834         (TB_parent_eq): Likewise.
5835
5836         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
5837         (strip_builtin_expect): Likewise.
5838
5839         * function.c (gimplify_parameters): Use build_call_expr.
5840
5841         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
5842         instead of TREE_CODE_LENGTH.
5843
5844         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
5845         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
5846
5847         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
5848         iterators.
5849
5850         * gimplify.c (build_stack_save_restore): Use build_call_expr.
5851         (gimplify_decl_expr): Likewise.
5852         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
5853         Use new CALL_EXPR iterators.
5854         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
5855         (gimplify_modify_expr_to_memset): Likewise.
5856         (gimplify_variable_sized_compare): Likewise.
5857         (gimplify_omp_atomic_fetch_op): Likewise.
5858         (gimplify_omp_atomic_pipeline): Likewise.
5859         (gimplify_omp_atomic_mutex): Likewise.
5860         (gimplify_function_tree): Likewise.
5861
5862         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
5863         (call_expr_flags): Likewise.
5864         (expand_call): Likewise.
5865
5866         * except.c (expand_builtin_eh_return_data_regno): Pass entire
5867         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
5868         accessors.
5869
5870         * coverage.c (create_coverage): Use build_call_expr.
5871
5872         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
5873         (temp_call_expr_obstack): New.
5874         (pool_copy_list): Delete.
5875         (temp_copy_call_expr): New.
5876         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
5877         CALL_EXPR accessors.  Get rid of special goo for copying argument
5878         lists and use temp_copy_call_expr instead.
5879         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
5880         CALL_EXPR accessors.
5881         (create_expression_by_pieces): Likewise.  Use build_call_array
5882         to construct the result instead of fold_build3.
5883         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
5884         dealing with argument lists.
5885         (init_pre): Remove references to expression_node_pool and
5886         list_node_pool.  Init temp_call_expr_obstack instead.
5887         (fini_pre): Remove references to expression_node_pool and
5888         list_node_pool.
5889
5890         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
5891         and walk arguments explicitly instead of as a list.
5892
5893         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
5894         (mx_register_decls): Likewise.
5895         (mudflap_register_call): Likewise.
5896         (mudflap_finish_file): Likewise.
5897
5898         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
5899         (ipa_callsite_compute_param): Likewise.
5900
5901         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
5902         accessors and constructor.
5903
5904         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
5905         accessors and constructor.
5906         (convert_tramp_reference): Likewise.
5907         (convert_call_expr): Likewise.
5908         (finalize_nesting_tree_1): Likewise.
5909
5910         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
5911         accessors.
5912
5913         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
5914
5915         * tree-inline.c (initialize_inlined_parameters): Pass entire
5916         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
5917         accessors.
5918         (estimate_num_insns_1): Use new CALL_EXPR accessors.
5919         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
5920
5921         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
5922         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5923         (vectorizable_reduction): Likewise.
5924         (vectorizable_call): Use new CALL_EXPR iterators.
5925         (vectorizable_conversion): Use build_call_expr.
5926         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
5927         (vect_gen_widened_results_half): Use build_call_expr.
5928         (vect_setup_realignment): Likewise.
5929         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
5930
5931         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
5932         (pass_through_call): Likewise.
5933         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
5934         fold_builtin.
5935
5936         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
5937         (tree_gen_pow2_profiler): Likewise.
5938         (tree_gen_one_value_profiler): Likewise.
5939         (tree_gen_ic_func_profiler): Likewise.
5940         (tree_gen_average_profiler): Likewise.
5941         (tree_gen_ior_profiler): Likewise.
5942
5943         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
5944         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
5945         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5946
5947         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
5948         of TREE_CODE_LENGTH.
5949
5950         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
5951         of TREE_CODE_LENGTH.
5952
5953         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
5954         constructor.
5955         (convert_to_integer): Likewise.
5956
5957         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
5958         accessors.
5959
5960 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5961             Brooks Moses  <brooks.moses@codesourcery.com>
5962             Lee Millward  <lee.millward@codesourcery.com>
5963
5964         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
5965         accessors.
5966         * config/frv/frv.c (frv_expand_builtin): Likewise.
5967         * config/s390/s390.c (s390_expand_builtin): Likewise.
5968
5969         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
5970         (sparc_expand_builtin): Use new CALL_EXPR accessors.
5971
5972         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
5973         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
5974         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
5975         (ix86_expand_store_builtin): Likewise.
5976         (ix86_expand_unop_builtin): Likewise.
5977         (ix86_expand_unop1_builtin): Likewise.
5978         (ix86_expand_sse_compare): Likewise.
5979         (ix86_expand_sse_comi): Likewise.
5980         (ix86_expand_vec_init_builtin): Likewise.
5981         (ix86_expand_vec_ext_builtin): Likewise.
5982         (ix86_expand_vec_set_builtin): Likewise.
5983         (ix86_expand_builtin): Use new CALL_EXPR accessors.
5984
5985         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
5986         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
5987
5988         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
5989         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5990         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
5991
5992         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
5993         build_call_expr.
5994         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
5995         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
5996         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5997         (altivec_expand_abs_builtin): Likewise.
5998         (rs6000_expand_binop_builtin): Likewise.
5999         (altivec_expand_predicate_builtin): Likewise.
6000         (altivec_expand_lv_builtin): Likewise.
6001         (spe_expand_stv_builtin): Likewise.
6002         (altivec_expand_stv_builtin): Likewise.
6003         (rs6000_expand_ternop_builtin): Likewise.
6004         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
6005         (altivec_expand_st_builtin): Likewise.
6006         (altivec_expand_dst_builtin): Likewise.
6007         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
6008         arglist.  Use new CALL_EXPR accessors.  Fix callers.
6009         (altivec_expand_vec_set_builtin): Likewise.
6010         (altivec_expand_vec_ext_builtin): Likewise.
6011         (altivec_expand_builtin): Use new CALL_EXPR accessors.
6012         (spe_expand_builtin): Likewise.
6013         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
6014         arglist.  Use new CALL_EXPR accessors.  Fix callers.
6015         (spe_expand_evsel_builtin): Likewise.
6016         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
6017         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
6018
6019         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
6020         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
6021         (arm_expand_unop_builtin): Likewise.
6022         (arm_expand_builtin): Use new CALL_EXPR accessors.
6023
6024         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
6025         accessors.
6026
6027         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
6028         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
6029         (bfin_expand_unop_builtin): Likewise.
6030         (bfin_expand_builtin): Use new CALL_EXPR accessors.
6031
6032 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
6033             Brooks Moses  <brooks.moses@codesourcery.com>
6034             Lee Millward  <lee.millward@codesourcery.com>
6035
6036         * c-semantics.c (build_stmt): Add internal diagnostic check.
6037
6038         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
6039         accessors.  Print arguments explicitly instead of as a list.
6040
6041         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
6042
6043         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
6044         (c_finish_omp_flish): Likewise.
6045
6046         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
6047         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
6048         instead of TREE_CODE_LENGTH.
6049         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
6050         (c_warn_unused_result): Likewise.
6051
6052 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6053
6054         PR c/26494
6055         * doc/invoke.texi (Warning Options): Remove
6056         -Werror-implicit-function-declaration.
6057         (Wimplicit-function-declaration): Update description.
6058         * opts.c (common_handle_option): Move handling of -Werror=* to...
6059         (enable_warning_as_error): ...here.
6060         * opts.h (enable_warning_as_error): Declare.
6061         * c-decl.c (implicit_decl_warning): Unless
6062         -Wno-implicit-function-declaration is given, emit a pedwarn if
6063         -std=c99 or emit a warning if -Wimplicit-function-declaration.
6064         * c.opt (Wimplicit-function-declaration): Replace
6065         mesg_implicit_function_declaration with
6066         warn_implicit_function_declaration.
6067         * c-opts.c (c_common_handle_option):
6068         -Werror-implicit-function-declaration is exactly equal as
6069         -Werror=implicit-function-declaration.
6070         (set_Wimplicit): Replace mesg_implicit_function_declaration with
6071         warn_implicit_function_declaration.
6072         (c_common_post_options): -Wimplict-function-declaration is enabled
6073         by default by -std=c99, otherwise is disabled by default.
6074         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
6075
6076 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
6077
6078         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
6079         DECL on the rhs to a DECL on the lhs for debug info purposes if the
6080         former is ignored but not the latter.
6081
6082 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
6083
6084         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
6085         is made and the reference doesn't use the alias set of its type,
6086         do not create the temporary using that type.
6087
6088 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
6089
6090         * jump.c: Remove prototypes for delete_computation and
6091         delete_prior_computation.
6092
6093 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
6094
6095         * jump.c (get_label_after): Delete.
6096         (get_label_before, delete_computation, delete_jump,
6097         delete_prior_computation, follow_jumps): Move...
6098         * reorg.c (delete_computation, delete_prior_computation): ... here...
6099         (get_label_before, delete_jump): ... making these static ...
6100         (follow_jumps): ... and simplifying this since it only runs after
6101         reload.
6102         * rtl.h (get_label_after, get_label_before, delete_jump,
6103         follow_jumps): Delete prototypes.
6104
6105 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
6106
6107         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
6108
6109 2007-02-15  Nick Clifton  <nickc@redhat.com>
6110
6111         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
6112         order to prevent it from being munged by the target.
6113
6114 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
6115
6116         * config/i386/i386.md: Remove misleading comment.
6117
6118 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6119
6120         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
6121         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
6122         invalid patterns.
6123
6124 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6125
6126         * tree-sra.c (instantiate_missing_elements): Canonicalize
6127         bit-field types.
6128         (sra_build_assignment): New.
6129         (generate_copy_inout, generate_element_copy,
6130         generate_element_zero, generate_one_element_init): Use it.
6131
6132 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6133
6134         * tree-sra.c (instantiate_missing_elements): Canonicalize
6135         bit-field types.
6136         (sra_build_assignment): New.
6137         (generate_copy_inout, generate_element_copy,
6138         generate_element_zero, generate_one_element_init): Use it.
6139
6140 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6141
6142         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
6143         limbo die nodes.
6144
6145 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
6146
6147         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
6148         types as aggregates not scalars.
6149         * function.c (assign_stack_temp_for_type): Likewise.
6150
6151 2007-02-14  Roger Sayle  <roger@eyesopen.com>
6152             Zdenek Dvorak  <dvorakz@suse.cz>
6153
6154         * tree-dump.c (dump_switch_p_1): Require exact match of the option
6155         name.
6156
6157 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
6158
6159         * passes.c (next_pass_1): Clear the next field of the copied
6160         pass structure.
6161
6162 2007-02-14  Richard Henderson  <rth@redhat.com>
6163
6164         * tree-sra.c (early_sra): New.
6165         (decl_can_be_decomposed_p): Deny va_list if early_sra.
6166         (tree_sra_early, pass_sra_early): New.
6167         * tree-pass.h (pass_sra_early): Declare.
6168         * passes.c (init_optimization_passes): Use it.
6169
6170 2007-02-14  Richard Guenther  <rguenther@suse.de>
6171
6172         * flags.h (issue_strict_overflow_warning): Convert to a macro.
6173
6174 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
6175
6176          PR tree-optimization/30771
6177         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
6178         also phi nodes.
6179         (vect_analyze_operations): Induction phis can now be marked as
6180         used_in_loop.
6181         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
6182         Update documentation accordingly.
6183
6184 2007-02-14  Nick Clifton  <nickc@redhat.com>
6185
6186         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
6187         most 3 arguments are supported.
6188         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
6189
6190 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
6191
6192         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
6193         Ensure dst->current is valid.
6194
6195 2007-02-13  Paul Brook  <paul@codesourcery.com>
6196
6197         * config.gcc: Add arm*-*-uclinux-*eabi.
6198         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
6199         (SUBTARGET_EXTRA_LINK_SPEC): Define.
6200         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
6201         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
6202         (LINK_SPEC): Define.
6203         (LIB_SPEC): Define.
6204         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
6205         register.
6206         * config/arm/uclinux-eabi.h: New file.
6207         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
6208         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
6209         based targets.
6210
6211 2007-02-13  Ian Lance Taylor  <iant@google.com>
6212
6213         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
6214         * flags.h (warn_strict_overflow): Declare.
6215         (enum warn_strict_overflow_code): Define.
6216         (issue_strict_overflow_warning): New static inline function.
6217         * opts.c (warn_strict_overflow): New variable.
6218         (common_handle_option): Handle OPT_Wstrict_overflow and
6219         OPT_Wstrict_overflow_.
6220         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
6221         OPT_Wall.
6222         * fold-const.c: Include intl.h.
6223         (fold_deferring_overflow_warnings): New static variable.
6224         (fold_deferred_overflow_warning): New static variable.
6225         (fold_deferred_overflow_code): New static variable.
6226         (fold_defer_overflow_warnings): New function.
6227         (fold_undefer_overflow_warnings): New function.
6228         (fold_undefer_and_ignore_overflow_warnings): New function.
6229         (fold_deferring_overflow_warnings_p): New function.
6230         (fold_overflow_warning): New static function.
6231         (make_range): Add strict_overflow_p parameter.  Change all
6232         callers.
6233         (extract_muldiv, extract_muldiv_1): Likewise.
6234         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
6235         tree_expr_nonnegative_p.
6236         (fold_negate_expr): Call fold_overflow_warning.
6237         (fold_range_test): Likewise.
6238         (fold_comparison): Likewise.
6239         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
6240         instead of tree_expr_nonnegative_p.
6241         (tree_expr_nonnegative_warnv_p): Rename from
6242         tree_expr_nonnegative_p, add strict_overflow_p parameter.
6243         (tree_expr_nonnegative_p): New function.
6244         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
6245         strict_overflow_p parameter.
6246         (tree_expr_nonzero_p): New function.
6247         * passes.c (verify_interpass_invariants): New static function.
6248         (execute_one_pass): Call it.
6249         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
6250         warnings.
6251         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
6252         (estimate_numbers_of_iterations): Likewise.
6253         (scev_probably_wraps_p): Likewise.
6254         * tree-ssa-ccp.c: Include "toplev.h".
6255         (evaluate_stmt): Defer fold overflow warnings until we know we are
6256         going to optimize.
6257         (struct fold_stmt_r_data): Add stmt field.
6258         (fold_stmt_r): Defer fold overflow warnings until we know we
6259         optimized.
6260         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
6261         (fold_stmt_inplace): Likewise.
6262         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
6263         (cleanup_control_expr_graph): Defer fold overflow warnings until
6264         we know we are going to optimize.
6265         * tree-cfg.c (fold_cond_expr_cond): Likewise.
6266         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
6267         Likewise.
6268         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
6269         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
6270         * tree-ssa-loop-manip.c (create_iv): Likewise.
6271         * c-typeck.c (build_conditional_expr): Likewise.
6272         (build_binary_op): Likewise.
6273         * tree-vrp.c (vrp_expr_computes_nonzero): Call
6274         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
6275         (extract_range_from_unary_expr): Likewise.
6276         * simplify-rtx.c (simplify_const_relational_operation): Warn when
6277         assuming that signed overflow does not occur.
6278         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
6279         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
6280         (fold_defer_overflow_warnings): Declare.
6281         (fold_undefer_overflow_warnings): Declare.
6282         (fold_undefer_and_ignore_overflow_warnings): Declare.
6283         (fold_deferring_overflow_warnings_p): Declare.
6284         (tree_expr_nonzero_warnv_p): Declare.
6285         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
6286         of warning options.
6287         (Warning Options): Document -Wstrict-overflow.
6288         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
6289         (tree-ssa-ccp.o): Likewise.
6290         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
6291         (fold-const.o): Depend on intl.h.
6292
6293 2007-02-13  Ian Lance Taylor  <iant@google.com>
6294
6295         PR middle-end/30751
6296         * lower-subreg.c (resolve_simple_move): Decompose subregs in
6297         addresses.
6298
6299 2007-02-13  Stuart Hastings  <stuart@apple.com>
6300
6301         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
6302
6303 2007-02-13  Richard Henderson  <rth@redhat.com>
6304
6305         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
6306         handled_component_p before looking for the indirect_ref.
6307
6308 2007-02-13  Richard Henderson  <rth@redhat.com>
6309
6310         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
6311         remove flags clobber.
6312         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
6313         (bswaphi_lowpart): New.
6314         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
6315         remove TARGET_BSWAP test.  Delete expander of the same name.
6316
6317         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
6318         (expand_unop): Use them.
6319
6320 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
6321
6322         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
6323         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
6324         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
6325         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
6326         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
6327         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
6328         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
6329         assembler dialect choice from asm templates.
6330
6331 2007-02-12  Richard Henderson  <rth@redhat.com>
6332
6333         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
6334         (fixuns_trunc<SSEMODEF>si2): Use it.
6335         * config/i386/sse.md (vec_setv4sf_0): Export.
6336         * config/i386/i386.c (ix86_build_const_vector): Export.
6337         (ix86_split_convert_uns_si_sse): Rename from
6338         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
6339         * config/i386/i386-protos.h: Update.
6340
6341 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6342
6343         PR c/29521
6344         * c-typeck.c (c_finish_return): Improve warning message.
6345
6346 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6347
6348         * alias.c (find_symbolic_term): Delete unused function.
6349
6350 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
6351
6352         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
6353         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
6354         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
6355
6356 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
6357
6358         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
6359         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
6360         the function, temporarily point the debug interface to the null one.
6361
6362 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
6363
6364         * dwarf2out.c (round_up_to_align): New static function.
6365         (field_byte_offset): Use it to round the offset.
6366
6367 2007-02-12  Richard Henderson  <rth@redhat.com>
6368
6369         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
6370         (inswl_const): Export.
6371
6372 2007-02-12  Richard Henderson  <rth@redhat.com>
6373
6374         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
6375         result mode of the libcall, convert back to outmode.
6376
6377 2007-02-12  Roger Sayle  <roger@eyesopen.com>
6378
6379         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
6380         (bswapdi2): New define_expand to implement 32-bit implementation.
6381
6382 2007-02-12  Nick Clifton  <nickc@redhat.com>
6383
6384         * doc/invoke.texi (Overall Options): Document --help=.
6385         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
6386         (cc1_options): Pass --help= on to cc1.
6387         (display_help): Add description of --help=.
6388         (process_command): Add code to handle --help=.  Allow translated
6389         --help and --target-help switches to be passed on to compiler
6390         sub-process.
6391         (main): Remove unused if statement.
6392         * opts.c (columns): Remove.
6393         (LEFT_COLUMN): Define.
6394         (wrap_help): Add columns argument.
6395         (print_filtered_help): Change parameters to be an include bitmask,
6396         an exclude bitmask, an any bitmask and the column width.  Move the
6397         code to display the params list here.  Add code to display the
6398         status of options rather than their descriptions if the quiet flag
6399         is not active.
6400         (print_specific_help): Change parameters to be an include bitmask,
6401         an exclude bitmask and an any bitmask.  Move code to look up the
6402         column width here.  Decide upon the title for an options listing.
6403         (common_handle_options): Add code to handle --help=.  Adapt code
6404         for --help and --target-help to use the revised form of the
6405         print_specific_help function.
6406         (print_help): Delete.
6407         (print_param_help): Delete.
6408         (print_switch): Delete.
6409         * opts.h (cl_lang_count): Add prototype.
6410         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
6411         CL_MAX_OPTION_CLASS): New defines.
6412         * optc-gen.awk: Add construction of cl_lang_count.
6413         * c.opt: Add Warning attribute to warning options and Optimization
6414         attribute to optimization options.
6415         * common.opt: Likewise.
6416         Add --help=.
6417         Add -fhelp and -ftarget-help as aliases for the transformed --help
6418         and --target-help options.
6419         * opt-functions.awk: Add code to handle Warning and Optimization
6420         attributes.
6421
6422 2007-02-12  Richard Henderson  <rth@redhat.com>
6423
6424         * config/alpha/constraints.md: New file.
6425         * config/alpha/alpha.c: Include tm-constrs.h.
6426         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
6427         alpha_extra_constraint): Remove.
6428         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
6429         * config/alpha/alpha-protos.h: Update.
6430         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
6431         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
6432         (EXTRA_CONSTRAINT): Remove.
6433         * config/alpha/alpha.md: Include constraints.md.
6434         (adddi splitter): Use satisfies_constraint_*.
6435         * config/alpha/predicates.md (add_operand): Likewise.
6436         (sext_add_operand, addition_operation): Likewise.
6437
6438 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
6439
6440         PR tree-optimization/29145
6441         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
6442         in our handling of restrict qualified pointers.
6443
6444 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6445
6446         PR middle-end/7651
6447         * doc/invoke.texi (Wunused-value): Update description.
6448         (Wextra): Delete item.
6449         * opts.c (set_Wextra): Don't use the value of Wextra to set the
6450         value of Wunused-value.
6451         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
6452         (c_finish_stmt_expr): Don't check extra_warnings.
6453         (emit_side_effect_warnings): The caller is responsible to check
6454         warn_unused_value.
6455
6456 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6457             Matt Thomas  <matt@3am-software.com>
6458
6459         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
6460
6461 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6462
6463         * simplify-rtx.c (simplify_relational_operation_1): Optimize
6464         comparisons of POPCOUNT against zero.
6465         (simplify_const_relational_operation): Likewise.
6466
6467 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6468
6469         * doc/invoke.texi (Wextra): Delete outdated paragraph.
6470
6471 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6472
6473         * dwarf2out.c (root_type): Delete unused function.
6474
6475 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6476
6477         * genattrtab.c (contained_in_p): Delete unused function.
6478         (write_expr_attr_cache): Likewise.
6479
6480 2007-02-11  Jan Hubicka  <jh@suse.cz>
6481
6482         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
6483         previous patch.
6484
6485 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
6486
6487         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
6488         to add the REG_EQ* note.
6489         * see.c (see_merge_one_use_extension): Likewise.
6490         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
6491         turn REG_EQUAL notes into REG_EQUIV notes if the target
6492         register may have more than one set.
6493         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
6494         * gcse.c (try_replace_reg): Likewise.
6495         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
6496         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
6497         more than one REG_EQUIV note.
6498         * reload1.c (gen_reload): Use set_unique_reg_note.
6499
6500 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
6501
6502         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
6503         (ix86_builtin_conversion): New function.
6504
6505 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
6506
6507         PR target/29487
6508         * tree.h (DECL_REPLACEABLE_P): New macro.
6509         * except.c (set_nothrow_function_flags): Likewise.
6510
6511 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
6512             Ira Rosen  <irar@il.ibm.com>
6513             Dorit Nuzman  <dorit@il.ibm.com>
6514
6515         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
6516         * targhooks.c (default_builtin_vectorized_conversion): New.
6517         * targhooks.h (default_builtin_vectorized_function): New declaration.
6518         * target.h (struct vectorize): Add builtin_conversion field.
6519         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
6520         stmt_vec_info_type value.
6521         (vectorizable_conversion): New declaration.
6522         * tree-vect-analyze.c (vect_analyze_operations): Add
6523         vectorizable_conversion call.
6524         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
6525         * tree-vect-transform.c (vectorizable_conversion): New function.
6526         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
6527         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
6528         mode.
6529         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
6530         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
6531         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
6532         or ALTIVEC_BUILTIN_VCFSX.
6533
6534 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6535
6536         PR target/30634
6537         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
6538         CONST_DOUBLE and operand 0 is a hard register.
6539         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
6540         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
6541         is a hard floating-point register.
6542
6543 2007-02-10  Richard Henderson  <rth@redhat.com>
6544             Jakub Jelinek  <jakub@redhat.com>
6545             Alexandre Oliva  <aoliva@redhat.com>
6546
6547         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
6548         * builtin-types.def (BT_WORD): Make unsigned.
6549         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
6550         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
6551         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
6552         * c-decl.c (grokdeclarator): Don't error if !have_tls.
6553         * c-parser.c (c_parser_omp_threadprivate): Likewise.
6554         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
6555         emulated tls.
6556         * expr.c (emutls_var_address): New.
6557         (expand_expr_real_1): Expand emulated tls.
6558         (expand_expr_addr_expr_1): Likewise.
6559         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
6560         * output.h (emutls_finish): Declare.
6561         * toplev.c (compile_file): Call it.
6562         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
6563         address before wrapping in CONST.
6564         * varasm.c (emutls_htab, emutls_object_type): New.
6565         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
6566         (get_emutls_object_name, get_emutls_object_type): New.
6567         (get_emutls_init_templ_addr, emutls_decl): New.
6568         (emutls_common_1, emutls_finish): New.
6569         (assemble_variable): When emulating tls, swap decls; generate
6570         constructor for the emutls objects.
6571         (do_assemble_alias): When emulating tls, swap decl and target name.
6572         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
6573         for emulated tls.
6574         * varpool.c (decide_is_variable_needed): Look at force_output.
6575         Recurse for emulated tls.
6576         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
6577         with decide_is_variable_needed.
6578         * emutls.c: New file.
6579         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
6580         tls_object for real tls.
6581
6582 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6583
6584         PR rtl-optimization/29599
6585         * reload1.c (eliminate_regs_in_insn): Take the destination
6586         mode into account when computing the offset.
6587
6588 2007-02-09  Stuart Hastings  <stuart@apple.com>
6589             Richard Henderson  <rth@redhat.com>
6590
6591         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6592         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6593         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
6594         fixuns_truncdfhi2): New.
6595         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
6596         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
6597         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
6598         (floatunssidf2): Allow nonimmediate source.
6599         * gcc/config/i386/sse.md (movdi_to_sse): New.
6600         (vec_concatv2di): Drop '*'.
6601         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
6602         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6603         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
6604         New.
6605         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
6606         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6607         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
6608         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
6609         (ix86_build_signbit_mask): Fix decl of v, refactor to call
6610         ix86_build_const_vector.
6611         (x86_emit_floatuns): Rewrite.
6612
6613 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6614
6615         * genautomata.c (longest_path_length): Delete unused function.
6616         (struct state): Delete unused longest_path_length.
6617         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
6618         (get_free_state): Delete unused.
6619
6620 2007-02-09  Jan Hubicka  <jh@suse.cz>
6621
6622         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
6623         * doc/invoke.texi (inline-unit-growth): Update default value.
6624
6625         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
6626         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
6627         (rebuild_cgraph_edges): Likewise.
6628         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
6629         (dump_cgraph_node): Dump frequencies.
6630         (cgraph_clone_edge): Add frequency scales.
6631         (cgraph_clone_node): Add freuqnecy.
6632         * cgraph.h (cgraph_edge): Add freuqnecy argument.
6633         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
6634         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
6635         * tree-pass.h (TODO_rebuild_frequencies): New constant.
6636         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
6637         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
6638         (save_inline_function_body): Likewise.
6639         * ipa-inline.c: inluce rtl.h
6640         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
6641         (cgraph_edge_badness): Use frequencies.
6642         (cgraph_decide_recursive_inlining): Update clonning.
6643         (cgraph_decide_inlining_of_small_function): Dump frequency.
6644         * predict.c (estimate_bb_frequencies): Export.
6645         * predict.h (estimate_bb_frequencies): Declare.
6646         * tree-inline.c (copy_bb): Watch overflows.
6647         (expand_call_inline): Update call of cgraph_create_edge.
6648         (optimize_inline_calls): Use TODO flags to update frequnecies.
6649         * passes.h: Include predict.h
6650         (init_optimization_passes): Move profile ahead.
6651         (execute_function_todo): Handle TODO_rebuild_frequencies.
6652
6653 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6654
6655         * config/alpha/alpha.c (emit_insxl): Force the first operand of
6656         the insbl or inswl pattern into a register.
6657
6658 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6659
6660         * config/ia64/ia64.md (bswapdi2): New define_insn.
6661
6662 2007-02-09  Richard Henderson  <rth@redhat.com>
6663
6664         * config/i386/constraints.md (Ym): New constraint.
6665         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
6666         (movdi_1_rex64): Split sse and xmm general register moves from
6667         memory move alternatives.  Use conditional register constraints.
6668         (movsf_1, movdf_integer): Likewise.
6669         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
6670         (movdf_integer_rex64): New.
6671         (pushsf_rex64): Fix output constraints.
6672         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
6673         (sse2_stored): Likewise.
6674         (sse2_storeq_rex64): New.
6675         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
6676         amd and not generic.
6677         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
6678         for optimize_size.  Remove SF/DFmode hack.
6679
6680 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6681
6682         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
6683         (bit_SSE4a): New.
6684
6685 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
6686             Richard Sandiford  <richard@codesourcery.com>
6687
6688         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
6689         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
6690         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
6691         m68k/t-mlib to tmake_file.
6692         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
6693         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
6694         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
6695         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
6696         variable is not empty, add t-$m68k_arch_family to tmake_file.
6697         Add t-mlibs to tmake_file.
6698         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
6699         * config/m68k/t-cf: New file.
6700         * config/m68k/t-m68k: Likewise.
6701         * config/m68k/t-mlibs: Likewise.
6702         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6703         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6704         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6705         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6706         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
6707         Delete.
6708         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
6709         (INSTALL_LIBGCC): Delete.
6710         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6711         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6712         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6713         (M68K_MLIB_CPU): Define.
6714         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6715         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6716         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
6717
6718 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
6719             Richard Guenther  <rguenther@suse.de>
6720
6721         PR middle-end/23361
6722         * fold-const.c (fold_comparison): Handle obfuscated comparisons
6723         against INT_MIN/INT_MAX.
6724         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
6725         file if a loop is removed.
6726
6727 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
6728
6729         * calls.c (store_one_arg): Pass correct alignment to
6730         emit_push_insn for non-BLKmode values.
6731         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
6732         unaligned stack slot via a suitably aligned slot.
6733
6734 2007-02-08  DJ Delorie  <dj@redhat.com>
6735
6736         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
6737         warnings.
6738         (legal_subregs): Use unsigned char, make const.
6739         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
6740
6741 2007-02-08  Paul Brook  <paul@codesourcery.com>
6742
6743         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
6744         special interworking needed.
6745
6746 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
6747
6748         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
6749         conditional to __SSE2__.
6750         (Entries below should have been added to first ChangeLog
6751         entry for amdfam10 dated 2007-02-05)
6752         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
6753         defined.
6754         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
6755         defined.
6756         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
6757         defined.
6758
6759 2007-02-08  DJ Delorie  <dj@redhat.com>
6760
6761         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
6762         * config/m32c/m32c.c (legal_subregs): New.
6763         (m32c_illegal_subreg_p): New.
6764         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
6765         unsupported subregs of hard regs.
6766
6767 2007-02-08  Jan Hubicka  <jh@suse.cz>
6768
6769         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
6770         the same one; always update histograms.
6771
6772 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
6773
6774         * passes.c (init_optimization_passes): Tidy comment.
6775
6776 2007-02-08  Roger Sayle  <roger@eyesopen.com>
6777
6778         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
6779         strip zero_extend, bswap and rotates from POCOUNT's argument.
6780         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
6781         zero_extend and rotates from PARITY's argument.
6782         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
6783         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
6784         of an integer constant at compile-time.
6785
6786 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
6787
6788         PR 30562
6789         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
6790         Update all users.
6791         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
6792         users.
6793         (init_alias_info):
6794         * tree-ssa-live.c (remove_unused_locals): Do not remove
6795         TREE_ADDRESSABLE variables.
6796         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
6797         * tree-ssa-operands.c (add_virtual_operand): Remove argument
6798         FOR_CLOBBER.  Update all users.
6799         If VAR has an associated alias set, add a virtual operand for
6800         it if no alias is found to conflict with the memory reference.
6801
6802 2007-02-07  Jan Hubicka  <jh@suse.cz>
6803             Robert Kidd <rkidd@crhc.uiuc.edu>
6804
6805         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
6806
6807 2007-02-07  Ian Lance Taylor  <iant@google.com>
6808
6809         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
6810
6811 2007-02-07  Roger Sayle  <roger@eyesopen.com>
6812
6813         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
6814         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
6815         tablejumpdi, movsi_to_cr_one): Remove constraints from
6816         define_expand's match_operands.
6817
6818 2007-02-07  Roger Sayle  <roger@eyesopen.com>
6819
6820         * global.c (compute_regsets): Move declatation of "i" inside of
6821         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
6822
6823 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
6824
6825         PR c++/30703
6826         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
6827         of INDIRECT_REF <RESULT_DECL>.
6828
6829         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
6830
6831 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
6832             Kaz Kojima  <kkojima@gcc.gnu.org>
6833
6834         PR target/29746
6835         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
6836         properly.
6837         (sh_initialize_trampoline): Add parentheses to avoid a warning.
6838
6839 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
6840
6841         * doc/loop.texi: Document possibility not to perform disambiguation
6842         of loops with multiple latches.
6843         * cfgloopmanip.c (alp_enum_p): Removed.
6844         (add_loop): Handle subloops.  Use get_loop_body_with_size.
6845         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
6846         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
6847         the new forwarder block.
6848         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
6849         Handle the case latch is NULL.
6850         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
6851         when marking loop exits.
6852         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
6853         be modified.
6854         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
6855         disambiguate_loops_with_multiple_latches.
6856         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
6857         before fix_loop_structure.
6858         * cfgloop.c: Include pointer-set.h and output.h.
6859         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
6860         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
6861         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
6862         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
6863         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
6864         disambiguate_multiple_latches, get_loop_body_with_size,
6865         disambiguate_loops_with_multiple_latches): New functions.
6866         (flow_loop_dump): Dump multiple latch edges.
6867         (flow_loop_nodes_find): Handle loops with multiple latches.
6868         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
6869         (glb_enum_p): Modified.
6870         (get_loop_body): Use get_loop_body_with_size.
6871         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
6872         (AVOID_CFG_MODIFICATIONS): New constant.
6873         (disambiguate_loops_with_multiple_latches, add_loop,
6874         get_loop_body_with_size): Declare.
6875         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
6876
6877 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
6878
6879         PR inline-asm/28686
6880         * global.c (compute_regsets): New function.
6881         (global_alloc): Refactored ELIMINABLE_REGSET
6882         and NO_GLOBAL_ALLOC_REGS computation out.
6883         (rest_of_handle_global_alloc): Call compute_regsets()
6884         for non-optimizing case.
6885
6886 2007-02-06  Richard Henderson  <rth@redhat.com>
6887
6888         * config/i386/constraints.md (Y2): Rename from Y.
6889         (Yi): New constraint.
6890         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
6891         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
6892         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
6893         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
6894         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
6895         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
6896         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
6897         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
6898         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
6899         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
6900         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
6901         vec_extractv2si_1): Change Y constraints to Y2.
6902         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
6903         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
6904         Change Y constraints to Y2.
6905         (sse2_loadld): Change Y constraints to x.
6906
6907 2007-02-06  Roger Sayle  <roger@eyesopen.com>
6908
6909         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
6910         (parity<mode>2): New define_expand using rs6000_emit_parity.
6911         * config/rs6000/rs6000.c (rs6000_emit_popcount,
6912         rs6000_emit_parity): New functions.
6913         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
6914         rs6000_emit_parity): Prototype here.
6915
6916 2007-02-06  Ian Lance Taylor  <iant@google.com>
6917
6918         * lower-subreg.c (simple_move_operand): Reject CONST.
6919         (resolve_clobber): Call validate_change rather than directly
6920         assigning to XEXP (pat, 0).
6921
6922 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
6923
6924         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
6925         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
6926         (tree-cfg.o): Remove hashtab.h dependency.
6927
6928         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
6929         (struct ivopts_data): Change niters to pointer_map_t.
6930         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
6931         (niter_for_exit): Create pointer_map on demand.  Change for
6932         pointer_map API.
6933         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
6934         (free_loop_data): Destroy data->niters if created and reset field.
6935         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
6936         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
6937
6938         * tree-ssa-reassoc.c: Include pointer-set.h.
6939         (bb_rank): Change to long *.
6940         (operand_rank): Change to pointer_map_t.
6941         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
6942         (insert_operand_rank): Accept long.
6943         (operand_entry_hash, operand_entry_eq): Remove.
6944         (get_rank): Return long.  Adjust for changes above.
6945         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
6946         and operand_rank.
6947         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
6948
6949         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
6950         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
6951         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
6952         is not NULL.
6953         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
6954         directly since it cannot be NULL.
6955         (get_vi_for_tree): Rewrite for pointer_map API.
6956         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
6957         (init_alias_vars): Create vi_for_tree as pointer_map.
6958         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
6959
6960         * tree-cfg.c: Don't include hashtab.h.
6961         (edge_to_cases): Declare as pointer_map.
6962         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
6963         Delete.
6964         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
6965         (start_recording_case_labels): Create edge_to_cases as pointer_map.
6966         (end_recoding_case_labels): Cleanup edge_to_cases manually before
6967         destroying it.
6968         (record_switch_edge): Delete.
6969         (get_cases_for_edge): Adjust for pointer_map API, inline
6970         record_switch_edge (rewritten for new API), remove goto.
6971
6972 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
6973
6974         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
6975         * tree-nested.c: Include pointer-set.h.
6976         (var_map_elt, var_map_eq, var_map_hash): Delete.
6977         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
6978         to pointer_map_t's.
6979         (nesting_info_bitmap_obstack): New.
6980         (lookup_field_for_decl): Adjust for pointer_map API.
6981         (lookup_tramp_for_decl): Adjust for pointer_map API.
6982         (get_nonlocal_debug_decl): Adjust for pointer_map API.
6983         (get_local_debug_decl): Adjust for pointer_map API.
6984         (convert_nl_goto_reference): Adjust for pointer_map API.
6985         (convert_nl_goto_receiver): Adjust for pointer_map API.
6986         (create_nesting_tree): Create outside GGC space.  Create bitmap on
6987         the new obstack.  Create field_map and var_map as pointer_maps.
6988         (free_nesting_tree): Adjust for changes to create_nesting_tree.
6989         (root): Delete.
6990         (lower_nested_functions): Move root here, no need to NULL it.
6991         Initialize and release the obstack.
6992
6993 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
6994
6995         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
6996         Remove prototypes and make them non-static.
6997         (struct tree_int_map): Remove.
6998         * tree.h (struct tree_int_map): Move here, turning TO into an
6999         unsigned int.
7000         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
7001
7002         * tree.h (TREE_COMPLEXITY): Remove.
7003         (struct tree_exp): Remove complexity field.
7004         * tree.c (build1_stat): Don't set it.
7005
7006 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
7007             Victor Kaplansky  <victork@il.ibm.com>
7008
7009         * tree-vectorizer.c (vect_is_simple_use): Support induction.
7010         (vect_is_simple_reduction): Support reduction with induction as
7011         one of the operands.
7012         (vect_is_simple_iv_evolution): Fix formatting.
7013         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
7014         formatting.  Don't mark induction phis for vectorization.
7015         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
7016         * tree-vect-transform.c (get_initial_def_for_induction): New function.
7017         (vect_get_vec_def_for_operand): Support induction.
7018         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
7019         induction case.
7020         (vectorizable_reduction): Support reduction with induction as one of
7021         the operands.
7022         (vectorizable_type_demotion): Use def-type of stmt argument rather
7023         than dummy def-type.
7024
7025         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
7026         flag_tree_scev_cprop.
7027         * common.opt (tree-scev-cprop): New flag.
7028
7029         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
7030         call to vect_get_new_vect_var.
7031
7032 2007-02-06  Ira Rosen  <irar@il.ibm.com>
7033
7034         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
7035         vectype is not NULL.
7036         (vect_pattern_recog_1): Likewise.
7037
7038 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7039
7040         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
7041         (fold_negate_expr): Likewise.
7042
7043 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
7044
7045         PR debug/30189
7046         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
7047         even if cv-qualification is the same.
7048
7049 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
7050
7051         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
7052         __enable_execute_stack on completion.
7053
7054 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7055
7056         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
7057         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
7058         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
7059         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
7060         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
7061         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
7062         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
7063         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
7064
7065 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7066
7067         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
7068         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
7069         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
7070         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
7071         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
7072         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
7073         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
7074         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
7075         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
7076         umuldi3_highpart_rex64, umulsi3_highpart_insn,
7077         umulsi3_highpart_zext, smuldi3_highpart_rex64,
7078         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
7079         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
7080         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
7081         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
7082         sqrtextenddfxf2_i387): Added amdfam10_decode.
7083
7084         * config/i386/athlon.md (athlon_idirect_amdfam10,
7085         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
7086         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
7087         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
7088         athlon_ivector_store_amdfam10): New define_insn_reservation.
7089         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
7090         amdfam10.
7091
7092 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7093
7094         * config/i386/athlon.md (athlon_call_amdfam10,
7095         athlon_pop_amdfam10, athlon_lea_amdfam10): New
7096         define_insn_reservation.
7097         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
7098         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
7099         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
7100
7101 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7102
7103         * config/i386/athlon.md (athlon_sseld_amdfam10,
7104         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
7105         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
7106
7107 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7108
7109         * config/i386/athlon.md (athlon_sseins_amdfam10): New
7110         define_insn_reservation.
7111         * config/i386/i386.md (sseins): Added sseins to define_attr type
7112         and define_attr unit.
7113         * config/i386/sse.md: Set type attribute to sseins for insertq
7114         and insertqi.
7115
7116 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7117
7118         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
7119         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
7120         ssecomi_load_amdfam10, ssecomi_amdfam10,
7121         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
7122         define_insn_reservation.
7123         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
7124
7125 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7126
7127         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
7128         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
7129         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
7130         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
7131         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
7132         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
7133         define_insn_reservation.
7134
7135         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
7136         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
7137         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
7138         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
7139         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
7140
7141 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7142
7143         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
7144         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
7145         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
7146         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
7147         athlon_ssemul_load_k8): Added amdfam10.
7148
7149 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7150
7151         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
7152         (x86_sse_unaligned_move_optimal): New variable.
7153
7154         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
7155         m_AMDFAM10.
7156         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
7157         for unaligned vector SSE double/single precision loads for AMDFAM10.
7158
7159 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7160
7161         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
7162         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
7163         Define TARGET_CPU_DEFAULT_amdfam10.
7164         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
7165         (processor_type): Add PROCESSOR_AMDFAM10.
7166
7167         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
7168         processor_type in config/i386/i386.h.
7169         Enable imul peepholes for TARGET_AMDFAM10.
7170
7171         * config.gcc: Add support for --with-cpu option for amdfam10.
7172
7173         * config/i386/i386.c (amdfam10_cost): New variable.
7174         (m_AMDFAM10): New macro.
7175         (m_ATHLON_K8_AMDFAM10): New macro.
7176         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
7177         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
7178         x86_promote_QImode, x86_integer_DFmode_moves,
7179         x86_partial_reg_dependency, x86_memory_mismatch_stall,
7180         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
7181         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
7182         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
7183         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
7184         Enable/disable for amdfam10.
7185         (override_options): Add amdfam10_cost to processor_target_table.
7186         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
7187         processor_alias_table.
7188         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
7189         (ix86_adjust_cost): Add code for amdfam10.
7190
7191 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7192
7193         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
7194         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
7195         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
7196         * config/i386/i386.h: Add builtin definition for SSE4A.
7197         * config/i386/i386.md: Add support for ABM instructions
7198         (popcnt and lzcnt).
7199         * config/i386/sse.md: Add support for SSE4A instructions
7200         (movntss, movntsd, extrq, insertq).
7201         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
7202         Add -march=amdfam10 flag.
7203         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
7204         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
7205         and amdfam10.
7206         * doc/extend.texi: Add documentation for SSE4A builtins.
7207
7208 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
7209
7210         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
7211
7212 2007-02-05  Richard Guenther  <rguenther@suse.de>
7213
7214         * tree-vectorizer.h (vectorizable_function): Add argument type
7215         argument, change return type.
7216         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
7217         * tree-vect-transform.c (vectorizable_function): Handle extra
7218         argument, return vectorized function decl.
7219         (build_vectorized_function_call): Remove.
7220         (vectorizable_call): Handle calls with result and argument types
7221         differing.  Handle loop vectorization factor correctly.
7222         * targhooks.c (default_builtin_vectorized_function): Adjust for
7223         extra argument.
7224         * targhooks.h (default_builtin_vectorized_function): Likewise.
7225         * target.h (builtin_vectorized_function): Add argument type
7226         argument.
7227         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
7228         extra argument, allow vectorizing of lrintf.
7229         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
7230         documentation of target hook.
7231
7232 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
7233
7234         PR target/30665
7235         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
7236         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
7237         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
7238
7239 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7240
7241         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
7242         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
7243         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
7244         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
7245         before canonicalizing sincos to cexpi.
7246         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
7247
7248 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7249
7250         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
7251         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
7252         (alpha_init_builtins): Use alpha_add_builtins to process tables.
7253
7254 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7255
7256         * mips-tfile.c (initialize_init_file): Correct endianness test.
7257
7258 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
7259
7260         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
7261         the 'y' constraint.
7262
7263 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
7264
7265         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
7266         saves in a PARALLEL before the register assignments.
7267
7268 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
7269
7270         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
7271         DWARF_FRAME_RETURN_COLUMN to be a general register.
7272         * dwarf2out.c (init_return_column_size): New function, split from...
7273         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
7274         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
7275         to be nongeneral registers.
7276         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
7277         integer registers.
7278         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
7279         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
7280
7281 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
7282
7283         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
7284
7285 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
7286
7287         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
7288         (remove_path): Use can_remove_branch_p and remove_branch instead
7289         of loop_delete_branch_edge.
7290         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
7291         (tree_transform_and_unroll_loop): Remove dead branches immediately.
7292         Update profile using scale_dominated_blocks_in_loop.
7293         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
7294         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
7295         (can_remove_branch_p, remove_branch): Declare.
7296         * tree-cfg.c (tree_can_remove_branch_p): New function.
7297         (tree_cfg_hooks): Add tree_can_remove_branch_p.
7298         * cfgrtl.c (rtl_can_remove_branch_p): New function.
7299         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
7300
7301 2007-02-05  Jan Hubicka  <jh@suse.cz>
7302
7303         PR middle-end/30696
7304         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
7305         nodes in cgraph, don't remove offline copy of the function.
7306
7307 2007-02-04  Jan Hubicka  <jh@suse.cz>
7308
7309         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
7310         vectors might cause maybe_lookup_element_for_expr to be called
7311         on non-sra-candidate.
7312
7313 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7314
7315         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
7316         config/bfin/bfin.md, config/bfin/predicates.md: Follow
7317         spelling conventions.
7318
7319 2007-02-04  Richard Guenther  <rguenther@suse.de>
7320
7321         PR middle-end/30636
7322         * fold-const.c (try_move_mult_to_index): Make sure to not
7323         overflow one dimension of a multi-dimensional array access.
7324
7325 2007-02-04  Jan Hubicka  <jh@suse.cz>
7326
7327         * passes.c (init_optimization_passes): Reindent.
7328
7329 2007-02-04  Jan Hubicka  <jh@suse.cz>
7330             Eric Botcazou  <ebotcazou@adacore.com>
7331
7332         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
7333         (execute_fixup_cfg): Break out the abnormal goto code.
7334         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
7335         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
7336         (optimize_inline_calls): Call make_nonlocal_label_edges.
7337
7338 2007-02-04  Jan Hubicka  <jh@suse.cz>
7339
7340         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
7341         true when something was changed.
7342         (rename_ssa_copies): When something was changed, do
7343         TODO_remove_unused_locals.
7344         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
7345         add TODO_remove_unused_locals when instruction was removed.
7346
7347 2007-02-04  Jan Hubicka  <jh@suse.cz>
7348
7349         * ipa-inline.c (try_inline): Improve debug output; work on already
7350         inline edges too.
7351         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
7352         call try_inline for already inlined edges too when flattening;
7353         inline also functions that make callee growth but overall unit size
7354         reduce.
7355
7356 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7357
7358         * config/m32c/bitops.md, config/m32c/jump.md,
7359         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
7360         config/m32r/m32r.h, config/m32r/m32r.md,
7361         config/m32r/predicates.md, config/m68hc11/larith.asm,
7362         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
7363         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
7364         config/mips/mips-protos.h, config/mips/mips.c,
7365         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
7366         config/mn10300/mn10300.h, config/mn10300/predicates.md,
7367         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
7368         spelling conventions.
7369
7370         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
7371         Follow spelling conventions.
7372
7373 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
7374
7375         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
7376         warn about C++0x compatibility.
7377
7378 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7379
7380         * config/h8300/h8300.c, config/h8300/h8300.h,
7381         config/h8300/h8300.md: Follow spelling conventions.
7382
7383 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
7384
7385         PR middle-end/30667
7386         * combine.c (try_combine): Do not substitute source operand
7387         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
7388
7389 2007-02-03  Jan Hubicka  <jh@suse.cz>
7390
7391         PR gcov-profile/30650
7392         * value-prof.c (stringop_block_profile): Fix handling of size counter;
7393         do not divide by zero for never executed counters.
7394         (tree_find_values_to_profile): Fix counters.
7395         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
7396
7397 2007-02-03  Ian Lance Taylor  <iant@google.com>
7398
7399         * lower-subreg.c (simple_move_operand): New static function,
7400         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
7401         operands.
7402         (simple_move): Call simple_move_operand.
7403         (find_decomposable_subregs): Add special handling of MEMs.
7404         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
7405         meaning of return value.  If we see a hard register, test whether
7406         it can store a word_mode value.  Change all callers.
7407
7408 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7409
7410         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
7411         ftrapv insns and expanders.
7412         (subdi3): Change define_expand operand 1 to arith11_operand, and
7413         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
7414         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
7415         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
7416         respectively.
7417
7418         PR middle-end/30174
7419         * varasm.c (notice_global_symbol): Treat global objects as weak when
7420         flag_shlib is true.
7421
7422 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7423
7424         * emit-rtl.c (dconstpi): Delete.
7425         (dconstsqrt2): New.
7426         (init_emit_once): Delete dconstpi and init dconstsqrt2.
7427         * real.h (dconstpi): Delete.
7428         (dconstsqrt2): New.
7429         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
7430         (fold_builtin_hypot): Likewise.
7431
7432 2007-02-03  Tom Tromey  <tromey@redhat.com>
7433
7434         PR driver/30246
7435         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
7436         -gcoff3, -gxcoff3, -gvms3 implies -dD.
7437
7438 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
7439
7440         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
7441         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
7442         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
7443         config/rs6000/cell.md, config/rs6000/darwin.h,
7444         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
7445         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
7446         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
7447         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
7448         typos.  Follow spelling conventions.
7449         * doc/invoke.texi: Follow spelling conventions.
7450
7451 2007-02-03  Roger Sayle  <roger@eyesopen.com>
7452
7453         * simplify-rtx.c (simplify_relational_operation_1): Implement some
7454         canonicalization transformations that attempt to simplify integer
7455         constant comparisons to become comparisons against zero.
7456
7457 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7458
7459         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
7460         fabs(x)*sqrt(2).
7461         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
7462         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
7463
7464 2007-02-02  Mike Stump  <mrs@apple.com>
7465
7466         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
7467         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
7468         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
7469         generate a branch island.
7470
7471 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
7472
7473         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
7474         (xtensa_legitimate_address_p): New.
7475         (xtensa_legitimize_address): New.
7476         (xtensa_output_addr_const_extra): New.
7477         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
7478         (BASE_REG_P): New.
7479         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
7480         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
7481         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
7482         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
7483         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
7484         (xtensa_legitimize_address): New.
7485         (xtensa_output_addr_const_extra): New.
7486
7487 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
7488
7489         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
7490
7491 2007-02-02  Ian Lance Taylor  <iant@google.com>
7492
7493         * expmed.c (expand_divmod): Add comment.
7494
7495 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
7496
7497         * emit-rtl.c (renumber_insns): Remove.
7498         * flags.h: Remove the extern for flag_renumber_insns.
7499         * rtl.h: Remove the prototype for renumber_insns.
7500         * toplev.c (flag_renumber_insns): Remove.
7501
7502 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
7503
7504         Revert for x86 darwin:
7505         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
7506
7507         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
7508         code before the following patch under TARGET_MACHO.
7509         (ix86_function_value_regno_p): Likewise.
7510
7511 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7512
7513         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
7514         COMPLEX_EXPR.
7515
7516 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7517
7518         PR target/29682
7519         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
7520         general or fp registers.  Add comments.
7521         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
7522
7523 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
7524
7525         * pointer-set.c (insert_aux): Only return insertion slot.
7526         (pointer_set_insert): Adjust.
7527         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
7528         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
7529         pointer_map_traverse): New.
7530         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
7531         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
7532         pointer_map_contains, pointer_map_traverse): Declare.
7533
7534 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
7535
7536         PR middle-end/30473
7537         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
7538         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
7539
7540 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7541
7542         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
7543
7544         (struct _dep): New type.
7545         (dep_t): New typedef.
7546         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
7547         (DEP_STATUS): New access macro.  The macro with the same name was
7548         renamed to DEP_LINK_STATUS.
7549         (dep_init): Declare function
7550
7551         (struct _dep_link): New type.
7552         (dep_link_t): New typedef.
7553         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
7554         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
7555         (DEP_LINK_STATUS): New macro.
7556         (debug_dep_links): New debug function.
7557
7558         (struct _deps_list): New type.
7559         (deps_list_t): New typedef.
7560         (DEPS_LIST_FIRST): New access macro.
7561         (FOR_EACH_DEP_LINK): New cycle macro.
7562         (create_deps_list, free_deps_list, delete_deps_list): Declare
7563         functions.
7564         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
7565         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7566         (copy_deps_list_change_con): Ditto.
7567
7568         (move_dep_link): Declare function.
7569
7570         (struct _dep_node): New type.
7571         (dep_node_t): New typedef.
7572         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
7573
7574         (struct haifa_insn_data.back_deps): New field to hold backward
7575         dependencies of the insn.
7576         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
7577         to deps_list_t.
7578         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
7579         Change its type to deps_list_t.
7580         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
7581         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
7582         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
7583
7584         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
7585
7586         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
7587
7588         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
7589         all callers.
7590         (dep_cost): Declare.
7591
7592         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
7593         (ds_to_dk, dk_to_ds): New functions.
7594
7595         (init_dep_1): New static function.
7596         (init_dep): New function.
7597         (copy_dep): New static function.
7598
7599         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
7600         functions.
7601         (detach_dep_link): New static function.
7602         (move_dep_link): New function.
7603
7604         (dep_links_consistent_p, dump_dep_links): New static functions.
7605         (debug_dep_links): New debugging function.
7606
7607         (deps_obstack, dl_obstack, dn_obstack): New static variables.
7608
7609         (alloc_deps_list, init_deps_list): New static functions.
7610         (create_deps_list): New function.
7611         (clear_deps_list): New static function.
7612         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
7613         (deps_list_consistent_p, dump_deps_list): New static functions.
7614         (debug_deps_list): New function.
7615         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
7616         functions.
7617         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
7618
7619         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
7620         use new scheduler dependencies lists.
7621         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
7622         (sched_analyze): Ditto.  Initialize dependencies lists.
7623         (add_forw_dep, compute_forward_dependences): Update to use new
7624         scheduler dependencies lists.
7625
7626         (init_dependency_caches): Init deps_obstack.
7627         (free_dependency_caches): Free deps_obstack.
7628
7629         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
7630         new scheduler dependencies lists.
7631         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
7632         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7633
7634         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
7635         Update to use new scheduler dependencies lists.
7636         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
7637         (debug_dependencies): Ditto.
7638         (schedule_region): Update comments.
7639
7640         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
7641         scheduler dependencies lists.
7642         (schedule_ebb): Update comments.
7643
7644         * rtl.def (DEPS_LIST): Remove.
7645
7646         * lists.c (unused_deps_list): Remove.
7647         (free_list): Update assertions.
7648
7649         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
7650         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7651
7652         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
7653         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7654
7655         * haifa-sched.c (comments): Update.
7656         (insn_cost1): Remove.  Inline the code into insn_cost ().
7657         (insn_cost): Update to use new scheduler dependencies lists.  Move
7658         processing of the dependency cost to dep_cost ().
7659         (dep_cost): New function.  Use it instead of insn_cost () when
7660         evaluating cost of the dependency.  Use compatible interface to
7661         interact with the target.
7662         (priority): Update to use new scheduler dependencies lists.
7663         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
7664         with greater number of insns that depend on the insn.
7665         (schedule_insn): Update to use new scheduler dependencies lists.  Add
7666         code to free backward dependencies lists.  Inline and optimize code
7667         from resolve_dep () - see PR28071.
7668         (ok_for_early_queue_removal): Update to use new scheduler dependencies
7669         lists.  Update call to targetm.sched.is_costly_dependence hook.
7670
7671         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
7672         scheduler dependencies lists.
7673
7674         (resolve_dep): Remove.  Move the logic to schedule_insn ().
7675         (init_h_i_d): Initialize dependencies lists.
7676
7677         (process_insn_depend_be_in_spec): Rename to
7678         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
7679         dependencies lists.
7680         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
7681         Update to use new scheduler dependencies lists.
7682         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
7683
7684         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
7685         new scheduler dependencies lists.
7686         (build_intra_loop_deps): Ditto.
7687
7688         * target.h (struct _dep): Declare to use in
7689         gcc_target.sched.is_costly_dependence.
7690         (struct gcc_target.sched.adjust_cost): Fix typo.
7691         (struct gcc_target.sched.is_costly_dependence): Change signature to use
7692         single dep_t parameter instead of an equivalent triad.
7693         (struct gcc_target.sched.adjust_cost_2): Remove.
7694
7695         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
7696
7697         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
7698
7699         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
7700         documentation.
7701         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
7702
7703         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
7704         (REG_DEP_TRUE): Document.
7705
7706         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
7707         Change signature to correspond to the targetm.sched.adjust_cost hook.
7708         Update use in TARGET_SCHED_ADJUST_COST_2.
7709         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
7710         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
7711         new scheduler dependencies lists.
7712         (ia64_gen_check): Ditto.
7713
7714         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
7715         dependencies lists.
7716
7717         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
7718         signature to correspond to the targetm.sched.is_costly_dependence hook.
7719         (is_costly_group): Update to use new scheduler dependencies lists.
7720
7721         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
7722         instead of INSN_COST () macro.
7723
7724 2007-02-01  Ian Lance Taylor  <iant@google.com>
7725
7726         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
7727
7728 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
7729
7730         * pa.md (tp_load): Correct mfctl instruction syntax.
7731
7732 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
7733
7734         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
7735         altivec_padding_size calculation on AIX.  Improve comment, add
7736         assert to verify that it's right.
7737
7738         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
7739         64-bit.
7740
7741 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
7742
7743         PR inline-asm/28686
7744         * global.c (global_alloc): Add mising initialization of
7745         ELIMINABLE_REGSET.
7746
7747 2007-02-01  Roger Sayle  <roger@eyesopen.com>
7748
7749         * alias.c (init_alias_analysis): Correct whitespace.
7750         * bb-reorder.c (fix_edges_for_rarely_executed_code,
7751         partition_hot_cold_basic_blocks): Likewise.
7752         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
7753         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
7754         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
7755         fold_builtin_snprintf_chk, fold_builtin_printf,
7756         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
7757         do_mpfr_arg3, do_mpfr_sincos): Likewise.
7758         * cfgcleanup.c (cleanup_cfg): Likewise.
7759         * cfgexpand.c (tree_expand_cfg): Likewise.
7760         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
7761         * function.c (get_next_funcdef_no): Likewise.
7762         * gengtype.c (main): Likewise.
7763         * genmodes.c (main): Likewise.
7764         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
7765         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
7766         * ifcvt.c (noce_emit_move_insn): Likewise.
7767         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
7768         Likewise.
7769         * stor-layout.c (get_best_mode): Likewise.
7770         * tree-ssa-loop-niter.c (get_val_for): Likewise.
7771         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
7772         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
7773         perform_var_substitution, solve_graph): Likewise.
7774         * tree-vrp.c (vrp_finalize): Likewise.
7775
7776 2007-02-01  Ian Lance Taylor  <iant@google.com>
7777
7778         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
7779         high part of a paradoxical subreg, return a constant zero.
7780
7781 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
7782
7783         * toplev.c (lang_dependent_init): Call init_set_costs.
7784         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
7785
7786 2007-02-01  Richard Guenther  <rguenther@suse.de>
7787
7788         PR middle-end/30656
7789         * fold-const.c (fold_negate_expr): Allow negating a
7790         constant if overflow does not change.
7791
7792 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7793
7794         * doc/c-tree.texi (Expression trees): Improve markup.
7795         * doc/tm.texi (Register Classes, Addressing Modes)
7796         (Floating Point): Fix spacing after abbreviations.  Fix some
7797         typos.
7798
7799 2007-02-01  Ben Elliston  <bje@au.ibm.com>
7800
7801         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
7802         * doc/contrib.texi: Likewise.
7803         * doc/install.texi: Likewise.
7804
7805 2007-01-31  Richard Henderson  <rth@redhat.com>
7806             Ian Lance Taylor  <iant@google.com>
7807
7808         * lower-subreg.c: New file.
7809         * rtl.def (CONCATN): Define.
7810         * passes.c (init_optimization_passes): Add pass_lower_subreg and
7811         pass_lower_subreg2.
7812         * emit-rtl.c (update_reg_offset): New static function, broken out
7813         of gen_rtx_REG_offset.
7814         (gen_rtx_REG_offset): Call update_reg_offset.
7815         (gen_reg_rtx_offset): New function.
7816         * regclass.c: Revert patch of 2006-03-05, restoring
7817         reg_scan_update.
7818         (clear_reg_info_regno): New function.
7819         * dwarf2out.c (concatn_loc_descriptor): New static function.
7820         (loc_descriptor): Handle CONCATN.
7821         * common.opt (fsplit_wide_types): New option.
7822         * opts.c (decode_options): Set flag_split_wide_types when
7823         optimizing.
7824         * timevar.def (TV_LOWER_SUBREG): Define.
7825         * rtl.h (gen_reg_rtx_offset): Declare.
7826         (reg_scan_update): Declare.
7827         * regs.h (clear_reg_info_regno): Declare.
7828         * tree-pass.h (pass_lower_subreg): Declare.
7829         (pass_lower_subreg2): Declare.
7830         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
7831         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
7832         -fsplit-wide-types.
7833         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
7834         * Makefile.in (OBJS-common): Add lower-subreg.o.
7835         (lower-subreg.o): New target.
7836
7837 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7838
7839         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
7840
7841 2007-01-31  Anatoly Sokolov <aesok@post.ru>
7842
7843         PR target/19087
7844         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
7845
7846 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7847
7848         PR middle-end/29335
7849         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
7850
7851 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
7852
7853         * cfgloop.h: Include vec-prim.h.
7854         (enum li_flags): Remove LI_ONLY_OLD.
7855         (loop_iterator): Changed.
7856         (fel_next, fel_init): Iterate over loop tree.
7857         (FOR_EACH_LOOP_BREAK): New macro.
7858         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
7859         FOR_EACH_LOOP.
7860         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
7861         * modulo-sched.c (sms_schedule): Ditto.
7862         * tree-vectorizer.c (vectorize_loops): Ditto.
7863         * doc/loop.texi: Update information on loop numbering and behavior of
7864         FOR_EACH_LOOP wrto new loops.
7865         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
7866         add_to_evolution_1): Test nestedness of loops instead of comparing
7867         their numbers.
7868         * tree-chrec.c (chrec_fold_plus_poly_poly,
7869         chrec_fold_multiply_poly_poly, chrec_evaluate,
7870         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
7871         reset_evolution_in_loop): Ditto.
7872         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
7873
7874 2007-01-31  Dirk Mueller  <dmueller@suse.de>
7875
7876         * c-common.c (warn_about_parentheses): Separate warning about
7877         un-parenthized sequence of comparison operators from the one
7878         which is supposed to warn about x <= y <= z.
7879
7880 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
7881
7882         * optabs.h (enum optab_index): Add new OTI_isinf.
7883         (isinf_optab): Define corresponding macro.
7884         * optabs.c (init_optabs): Initialize isinf_optab.
7885         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
7886         patterns.
7887         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
7888         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
7889         using isinf_optab.
7890         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
7891         expand_builtin_interclass_mathfn.
7892         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
7893         * config/i386/i386.md (UNSPEC_FXAM): New constant.
7894         (fxam<mode>2_i387): New insn pattern.
7895         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
7896         built-in functions as x87 inline asm.
7897
7898 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7899
7900         * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
7901
7902 2007-01-30  Eric Christopher  <echristo@apple.com>
7903
7904         * config.gcc: Add geode.
7905
7906 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7907
7908         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
7909         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
7910         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
7911         value-prof.c: Fix comment typos.
7912
7913 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7914
7915         PR c++/24745
7916         * doc/invoke.texi (Wpointer-arith): Document warning.
7917
7918 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
7919
7920         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
7921         the list of discrepancies from the draft TR.
7922
7923 2007-01-30  Dirk Mueller  <dmueller@suse.de>
7924
7925         PR c++/30601
7926         * doc/invoke.texi (-Wreturn-type): Update description to
7927         match new behavior.
7928
7929 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
7930
7931         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
7932
7933 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
7934
7935         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
7936         to handle optabs that operate on floating point input argument and
7937         output to integer output.
7938         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
7939         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
7940         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
7941         expand_builtin_interclass_mathfn ().
7942         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
7943         (ilogbsi2): Remove.
7944         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
7945         ilogbl built-in functions as x87 intrinsics.
7946
7947 2007-01-30  Richard Guenther  <rguenther@suse.de>
7948
7949         PR middle-end/27657
7950         * dwarf2out.c (reference_to_unused): Query varpool if the
7951         variable was output.
7952
7953 2007-01-30  Richard Guenther  <rguenther@suse.de>
7954
7955         PR middle-end/30313
7956         * passes.c (execute_one_pass): Reset in_gimple_form to not
7957         confuse non-unit-at-a-time mode.
7958
7959 2007-01-29  Roger Sayle  <roger@eyesopen.com>
7960             Richard Guenther  <rguenther@suse.de>
7961
7962         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
7963         avoid undefined behaviour on overflow.  Use force_fit_type_double
7964         to construct the constant with the specified TREE_OVERFLOW.
7965
7966 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
7967
7968         * config/dfp-bit.c: Add parameterized support for fp exceptions.
7969         * config/dfp-bit.h: Ditto.
7970
7971 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7972
7973         * c-decl.c (pop_scope): Replace warnings with call to
7974         warn_for_unused_label.
7975         * c-common.h (warn_for_unused_label): Declare.
7976         * c-common.c (warn_for_unused_label): Define.
7977
7978 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7979
7980         * tree-optimize.c (update_inlined_to_pointers): Delete unused
7981         function.
7982
7983 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
7984
7985         * Makefile.in (USER_H): Remove decfloat.h.
7986         * ginclude/decfloat.h: Delete, moving contents to ...
7987         * ginclude/float.h: Add support for decimal floating point,
7988         guarded by __STDC_WANT_DEC_FP__.
7989
7990 2007-01-29  Mike Stump  <mrs@apple.com>
7991
7992         * doc/gccint.texi (Top): Rename Loop Representation to Loop
7993         Analysis and Representation to resolve case insensitive conflict.
7994         * doc/loop.texi (Loop Analysis and Representation): Likewise.
7995
7996 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
7997
7998         * tree.h (struct tree_memory_tag): Add aliases member.
7999         (MTAG_ALIASES): New macro.
8000         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
8001         (add_may_alias): Remove pointer-set. Update for may_aliases being
8002         a bitmap.
8003         (mark_aliases_call_clobbered): Update for may_aliases being a
8004         bitmap.
8005         (compute_tag_properties): Ditto.
8006         (create_partition_for): Ditto.
8007         (compute_memory_partitions): Ditto.
8008         (dump_may_aliases_for): Ditto.
8009         (is_aliased_with): Ditto.
8010         (add_may_alias_for_new_tag): Ditto.
8011         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
8012         (compute_is_aliased): New function.
8013         (compute_may_aliases): Call compute_is_aliased).
8014         (init_alias_info): Initialize alias_bitmap_obstack.
8015         (union_alias_set_into): New function.
8016         (compute_flow_sensitive_aliasing): Use union_aliases_into.
8017         (have_common_aliases_p): Rewrite to take two bitmaps and use
8018         intersection.
8019         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
8020         Update for bitmaps.
8021         (finalize_ref_all_pointers): Update for add_may_alias changes.
8022         (new_type_alias): Ditto.
8023         * tree-flow-inline.h (may_aliases): Return a bitmap.
8024         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
8025         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
8026         may_aliases being a bitmap.
8027         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
8028         may_aliases now returns a bitmap.
8029         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
8030         being a bitmap.
8031         * tree-ssa-operands.c (add_virtual_operand): Update for
8032         may_aliases being a bitmap.
8033
8034 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
8035
8036         PR tree-optimization/30630
8037         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
8038         variable as changed.
8039
8040 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
8041
8042         PR c++/28266
8043         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
8044         expanded only once even if an error occurs.
8045
8046 2007-01-29  Ben Elliston  <bje@au.ibm.com>
8047
8048         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
8049         (__gcov_average_profiler): Likewise.
8050         (__gcov_ior_profiler): Likewise.
8051         (__gcov_merge_ior): Likewise.
8052
8053 2007-01-28  Jan Hubicka  <jh@suse.cz>
8054
8055         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
8056         * value-prof.c (stringop_block_profile): Likewise.
8057
8058 2007-01-28  Jan Hubicka  <jh@suse.cz>
8059
8060         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
8061         variant handling histograms; add wrapper.
8062         (clear_storage_via_libcall): Export.
8063         (emit_block_move_hints): Break out from ...; add histograms.
8064         (emit_block_move): ... this one.
8065         (clear_storage_hints): Break out from ...; add histograms.
8066         (clear_storage): ... this one.
8067         (set_storage_via_memset): Handle histogram.
8068         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
8069         (clear_storage_hints, clear_storage_via_libcall): Declare.
8070         (set_storage_via_setmem): Update prototype.
8071         * doc/md.texi (movmem, setmem): Document new arguments.
8072
8073         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
8074         new histograms.
8075         (stringop_block_profile): New global function.
8076         (tree_stringops_values_to_profile): Profile block size and alignment.
8077         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
8078         HIST_TYPE_IOR.
8079         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
8080         (stringop_block_profile): Declare.
8081         * builtins.c: Include value-prof.h.
8082         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
8083         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
8084         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
8085         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
8086         * profile.c (instrument_values): Add new counters.
8087         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
8088         calls.
8089         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
8090         (tree_init_edge_profiler): Build new profilers.
8091         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
8092         (pass_tree_profile): Add dump.
8093         (tree_profile_hooks): Update.
8094         * Makefile.in (LIBGCOV): Add new constants.
8095         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
8096         __gcov_ior_profiler): New.
8097         * i386.md (movmem/setmem expanders): Add new optional arguments.
8098
8099 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
8100
8101         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
8102
8103 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
8104
8105         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
8106         (tree_unswitch_single_loop): Pass eni_size_weights to
8107         tree_num_loop_insns.
8108         * tree-ssa-loop-manip.c: Include tree-inline.h.
8109         (can_unroll_loop_p): Pass eni_size_weights to
8110         tree_num_loop_insns.
8111         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
8112         Pass eni_size_weights to estimate_num_insns.
8113         * tree.h (init_inline_once): Export.
8114         * toplev.c (backend_init): Call init_inline_once.
8115         * cgraphunit.c (cgraph_process_new_functions,
8116         cgraph_analyze_function): Pass eni_inlining_weights to
8117         estimate_num_insns.
8118         * ipa-inline.c (compute_inline_parameters): Ditto.
8119         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
8120         to estimate_num_insns.
8121         (try_unroll_loop_completely): Pass eni_size_weights to
8122         tree_num_loop_insns.
8123         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
8124         ot estimate_num_insns.
8125         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
8126         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
8127         * tree-inline.c (eni_inlining_weights, eni_size_weights,
8128         eni_time_weights): New variables.
8129         (init_inline_once): Initialize them.
8130         (struct eni_data): Mew.
8131         (estimate_num_insns_1, estimate_num_insns): Use weights.
8132         * tree-inline.h (struct eni_weights_d): New.
8133         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
8134         (estimate_num_insns): Declaration changed.
8135         * cfgloop.h (tree_num_loop_insns): Declaration changed.
8136         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
8137         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
8138
8139 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
8140
8141         * tree-data-ref.c (conflict_fn): Assert that the number of affine
8142         relations in the conflict function is valid.
8143
8144 2007-01-27  Ian Lance Taylor  <iant@google.com>
8145
8146         * common.opt: Add fstrict-overflow.
8147         * opts.c (decode_options): Set flag_strict_overflow if -O2.
8148         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
8149         (TYPE_OVERFLOW_UNDEFINED): Define.
8150         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
8151         Replace all uses.
8152         * tree.h (TYPE_TRAP_SIGNED): Don't define.
8153         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
8154         (fold_negate_expr): Likewise.
8155         (make_range): Likewise.
8156         (extract_muldiv_1): Likewise.
8157         (maybe_canonicalize_comparison): Likewise.
8158         (fold_comparison): Likewise.
8159         (fold_binary): Likewise.
8160         (tree_expr_nonnegative_p): Likewise.
8161         (tree_expr_nonzero_p): Likewise.
8162         * tree-vrp.c (compare_values): Likewise.
8163         (extract_range_from_binary_expr): Likewise.
8164         (extract_range_from_unary_expr): Likewise.
8165         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
8166         Likewise.
8167         (nowrap_type_p): Likewise.
8168         * tree-scalar-evolution.c (simple_iv): Likewise.
8169         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
8170         (build_range_check): Likewise.
8171         (extract_muldiv_1): Likewise.
8172         (fold_comparison): Likewise.
8173         * tree-vrp.c (vrp_int_const_binop): Likewise.
8174         (extract_range_from_unary_expr): Likewise.
8175         * convert.c (convert_to_integer): Likewise.
8176         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
8177         (fold_comparison): Likewise.
8178         (fold_binary): Likewise.
8179         * optabs.c (optab_for_tree_code): Likewise.
8180         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
8181         * simplify-rtx.c (simplify_const_relational_operation): Check
8182         flag_strict_overflow and flag_trapv.
8183         (simplify_const_relational_operation): Likewise.
8184         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
8185         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
8186         -fstrict-overflow.
8187
8188 2007-01-27  Roger Sayle  <roger@eyesopen.com>
8189
8190         * tree.c (tree_fold_gcd): Delete.
8191         * tree.h (tree_fold_gcd): Remove prototype.
8192         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
8193         test whether one constant integer is a multiple of another.  Instead
8194         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
8195         * fold-const.c (multiple_of_p):  We've determined both TOP and
8196         BOTTOM are integer constants so we can call int_const_binop directly
8197         instead of the more generic const_binop.
8198
8199 2007-01-27  Roger Sayle  <roger@eyesopen.com>
8200
8201         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
8202         1*X check that the constant hasn't overflowed, to preserve the
8203         TREE_OVERFLOW bit.
8204         (round_up): Provide an efficient implementation when rouding-up an
8205         INTEGER_CST to a power-of-two.
8206
8207 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8208
8209         * doc/sourcebuild.texi: Add comma for clarity.
8210         * doc/extend.texi: Fix some typos.
8211         * doc/passes.texi: Likewise.
8212         * doc/cppinternals.texi: Likewise.
8213         * doc/c-tree.texi: Likewise.
8214         * doc/tree-ssa.texi: Likewise.
8215         * doc/install.texi: Likewise.
8216
8217 2007-01-27  Jan Hubicka  <jh@suse.cz>
8218
8219         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
8220         (pass_sra): Do not require alias information.
8221         * passes.c (init_optimization_passes): Add SRA
8222
8223 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
8224
8225         * tracer.c (rest_of_handle_tracer): We already cleaned
8226         up the CFG in tracer() so don't do it here again.
8227         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
8228         cleanup_cfg here, either.  And don't call renumber_insns.
8229
8230         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
8231         and BB_HEAD are in the insn stream here.  Instead make sure
8232         that BB_INSN is valid on all insns.  Also, do check here that
8233         there are no pending branch predictions...
8234         (rtl_verify_flow_info): ...instead of doing it here.  Checks
8235         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
8236         here.
8237
8238 2007-01-26  Roger Sayle  <roger@eyesopen.com>
8239
8240         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
8241         function to simplify/factorize operand order canonicalization.
8242         (ix86_fixup_binary_operands): Reorganize using the above function.
8243         (ix86_binary_operator_ok): Likewise.
8244
8245 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
8246
8247         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
8248         file scope from optimize_attrs.
8249         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
8250         up search.
8251         (optimize_attrs): Clear insn_code_values after freeing it.
8252
8253 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
8254
8255         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
8256         a parts.base assignment.
8257
8258 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
8259
8260         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
8261         (compute_subscript_distance, initialize_data_dependence_relation,
8262         finalize_ddr_dependent, analyze_ziv_subscript,
8263         analyze_siv_subscript_cst_affine,
8264         compute_overlap_steps_for_affine_univar,
8265         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
8266         analyze_siv_subscript, analyze_miv_subscript,
8267         analyze_overlapping_iterations, subscript_dependence_tester_1,
8268         compute_self_dependence, free_dependence_relation): Work
8269         with affine_fn instead of chrecs.
8270         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
8271         common_affine_function, affine_function_base,
8272         affine_function_constant_p, affine_fn_op, affine_fn_plus,
8273         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
8274         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
8275         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
8276         (all_chrecs_equal_p): Removed.
8277         * tree-data-ref.h (affine_fn, conflict_function): New types.
8278         (struct subscript): Change type of conflicting_iterations_in_a
8279         and conflicting_iterations_in_b.
8280
8281 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
8282
8283         PR other/30182
8284         * config/pa/pa.h (TARGET_HPUX_11): New.
8285         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
8286         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
8287
8288 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
8289         Richard Guenther  <rguenther@suse.de>
8290
8291         * tree-ssa-structalias.c (solve_graph): Handle case
8292         we merged the variable to another.
8293
8294 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8295
8296         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
8297         functions.
8298
8299         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
8300         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
8301
8302 2007-01-25  DJ Delorie  <dj@redhat.com>
8303
8304         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
8305         allow changes to modes which don't fit in those registers.
8306
8307         * reload1.c (choose_reload_regs): Check for invalid subregs before
8308         computing their locations, not after.
8309
8310 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
8311
8312         PR 25127
8313         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
8314         save Altivec registers in an eh_return function.
8315         (compute_vrsave_mask): Likewise.
8316         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
8317         for saving Altivec registers.
8318         (rs6000_emit_prologue): Don't allocate stack twice in
8319         eh_return function.  Correct expected value of altivec_save_offset
8320         when using save_world.  Describe save of R0 to stack when using
8321         save_world.  Describe stack pointer adjustment when using
8322         save_world.  Remove duplicated eh_return parameter register saving.
8323         Update sp_offset variable after save_world.
8324         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
8325         darwin-world.asm.
8326         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
8327         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
8328         implies Altivec.
8329
8330 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
8331
8332         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
8333
8334 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
8335
8336         PR other/30182
8337         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
8338         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
8339
8340 2007-01-25  Richard Guenther  <rguenther@suse.de>
8341
8342         * doc/invoke.texi (-Wcoverage-mismatch): Document.
8343         * common.opt (-Wcoverage-mismatch): New warning option.
8344         * coverage.c (get_coverage_counts): Ignore coverage mismatch
8345         if -Wcoverage-mismatch is given.
8346
8347 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
8348
8349         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
8350         (ipcp_driver): Change to static definition.
8351         Add dumping of the ifunctions.
8352         (constant_val_insert): Remove unused parameter. Support for SSA.
8353         (ipcp_propagate_const): Support for SSA.
8354         (ipcp_profile_bb_print): Print only analyzed nodes.
8355         (ipcp_replace_map_create): Remove support for Fortran constant
8356         for now.
8357         * ipa-prop.c (ipa_method_modify_stmt,
8358         ipa_callsite_compute_param): Support for SSA.
8359         * ipa-prop.h (ipcp_driver): Remove declaration.
8360         (IS_VALID_TREE_MAP_INDEX): Add define.
8361
8362 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
8363
8364         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
8365
8366 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8367
8368         PR middle-end/30447
8369         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
8370         constant argument to cabs and do it without checking for
8371         -funsafe-math-optimizations.
8372
8373 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
8374
8375         * c-common.h (RID_FIRST_CXX0X): New.
8376         (RID_LAST_CXX0X): New.
8377         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
8378         by -Wall.
8379         * c.opt (Wc++0x-compat): New.
8380         * doc/invoke.texi (-Wc++0x-compat): Document.
8381
8382 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8383
8384         * builtins.c (fold_builtin_carg): New.
8385         (fold_builtin_1): Use it.
8386
8387 2007-01-24  Jan Hubicka  <jh@suse.cz>
8388
8389         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
8390
8391         * ipa-inline.c (initial_insns, max_insns): Delete.
8392         (compute_max_insns): New function.
8393         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
8394         of insns as base for code growth.
8395         (cgraph_decide_inlining): Make initial_insns local; do not compute
8396         max_insns.
8397         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
8398         * doc/invoke.texi (inline-unit-growth): Update docs.
8399
8400 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
8401
8402         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
8403         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
8404         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
8405         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
8406         for CPUs that have PTA_CX16 set.
8407
8408         PR middle-end/27416
8409         * gimplify.c (omp_check_private): New function.
8410         (gimplify_scan_omp_clauses): Use it for
8411         firstprivate/lastprivate/reduction.
8412
8413         PR middle-end/30494
8414         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
8415         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
8416
8417         PR middle-end/30421
8418         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
8419         If lower_lastprivate_clauses emits some statements, append them
8420         to dlist rather than body_p and to body_p append an initializer.
8421         (lower_omp_for): Adjust caller.
8422
8423 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
8424
8425         * target.h (globalize_decl_name): New.
8426         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
8427         * output.h (default_globalize_decl_name): New.
8428         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
8429         globalize_label.
8430         (globalize_decl): Ditto.
8431         (default_globalize_decl_name): New.
8432         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
8433         (ia64_handle_version_id_attribute): New.
8434         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
8435         (ia64_asm_output_external): Use globalize_decl_name instead
8436         of globalize_label.
8437         * doc/extend.texi (version_id): New pragma.
8438         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
8439
8440 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8441
8442         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
8443         _uleb128_t and _Unwind_SWord with _sleb128_t.
8444         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
8445         uw_frame_state_for, uw_update_context_1): Likewise.
8446         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
8447         * unwind-pe.h (read_uleb128, read_sleb128,
8448         read_encoded_value_with_base): Likewise.
8449         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
8450
8451 2007-01-24  Richard Guenther  <rguenther@suse.de>
8452
8453         * builtins.c (expand_builtin_cexpi): Get the fndecl
8454         for cexp in the correct way.
8455
8456 2007-01-24  Jan Hubicka  <jh@suse.cz>
8457
8458         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
8459
8460 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8461
8462         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
8463         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
8464         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
8465         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
8466         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
8467         __SIZEOF_PTRDIFF_T__.
8468         * doc/cpp.texi: Documentation for the new builtin macros added.
8469
8470 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
8471
8472         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
8473         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
8474         instead of operands[2] to avoid access past the end of array.
8475
8476 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
8477
8478         * reload1.c (emit_reload_insns): Pass the reload register
8479         for a non-spill output reload through forget_old_reloads_1.
8480
8481 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
8482
8483         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
8484         _SOFT_DOUBLE if doubles use software floating-point.
8485         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
8486         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8487         * config/rs6000/darwin-ldouble.c: Also compile functions for
8488         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
8489         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8490         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
8491         commented-out long double override.
8492         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
8493         * config/rs6000/eabispe.h: Likewise.
8494         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
8495         long double for non-SPE.
8496         (rs6000_handle_option): Likewise.
8497         (invalid_e500_subreg): Disallow more subregs involding DImode,
8498         DFmode, TImode or TFmode.
8499         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
8500         E500 double.
8501         (legitimate_lo_sum_address_p): Also check for TFmode for E500
8502         double.
8503         (rs6000_legitimize_address): Also handle TFmode for E500 double.
8504         (rs6000_legitimize_reload_address): Also handle TFmode for E500
8505         double.
8506         (rs6000_legitimate_address): Also check for TFmode for E500
8507         double.
8508         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
8509         (spe_build_register_parallel): Handle TFmode and TCmode.
8510         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
8511         double.
8512         (function_arg): Handle TFmode and TCmode for E500 double.
8513         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
8514         in general.
8515         (print_operand): Handle TFmode and TImode for %y.
8516         (rs6000_generate_compare): Handle TFmode comparisons for E500
8517         double.
8518         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
8519         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
8520         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
8521         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
8522         TFmode for E500 double.
8523         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
8524         (floatsidf2): Enable for E500 double.
8525         (movtf_softfloat): Use rs6000_nonimmediate_operand.
8526         (extenddftf2): Change to extenddftf2_fprs.
8527         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
8528         depending on TARGET_E500_DOUBLE.
8529         (extendsftf2): Enable for E500 double.
8530         (trunctfdf2): Enable for E500 double.
8531         (trunctfsf2): Change to trunctfsf2_fprs.
8532         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
8533         depending on TARGET_E500_DOUBLE.
8534         (floatsitf2): Enable for E500 double.
8535         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
8536         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
8537         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
8538         (negtf2): Change to negtf2_internal.
8539         (negtf2): New expander.
8540         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
8541         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
8542         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
8543         (movdi_internal32): Use rs6000_nonimmediate_operand.
8544         (unnamed splitter): Likewise.
8545         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
8546         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
8547         (SPE64TF, DITI): New mode macros.
8548         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
8549         modes.
8550         (frob_tf_ti): New.
8551         (frob_<mode>_di_2): New.
8552         (frob_tf_di_8_2): New.
8553         (frob_di_df): Change to frob_di_<mode>; allow more modes.
8554         (frob_ti_tf): New.
8555         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
8556         more modes.
8557         (frob_ti_<mode>_8_2): New.
8558         (frob_ti_tf_2): New.
8559         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
8560         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
8561         TFmode.
8562         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
8563         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
8564         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
8565         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
8566         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
8567         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
8568         tsttflt_gp): New.
8569
8570 2007-01-23  Ian Lance Taylor  <iant@google.com>
8571
8572         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
8573         insn-*.o first.
8574         (OBJS-archive): Reformat, alphabetize.
8575         (OBJS): Change out_object_file to OBJS-md.
8576
8577 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
8578
8579         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
8580         JUMP_P and CALL_P predicates where applicable.
8581         * config/i386/i386.c: Ditto.
8582         * config/i386/i386.md: Ditto.
8583         * config/i386/mmx.md: Ditto.
8584         * config/i386/predicates.md: Ditto.
8585
8586 2007-01-22  Andreas Schwab  <schwab@suse.de>
8587
8588         * config/m68k/m68k.h: Fix comment.
8589
8590 2007-01-22  Jan Hubicka  <jh@suse.cz>
8591
8592         * passes.c (init_optimization_passes): Do not rerun
8593         pass_early_warn_uninitialized.
8594
8595 2007-01-22  Richard Guenther  <rguenther@suse.de>
8596
8597         PR tree-optimization/30038
8598         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
8599         function.
8600         (execute_cse_sincos_1): Likewise.
8601         (execute_cse_sincos): Likewise.
8602         (gate_cse_sincos): Likewise.
8603         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
8604         the cexpi() canonicalization of sincos().
8605         * tree-pass.h (pass_cse_sincos): Declare.
8606         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
8607
8608 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
8609
8610         PR rtl-optimization/29329
8611         * combine.c (replaced_rhs_insn): Rename to i2mod.
8612         (replaced_rhs_value): Rename to i2mod_new_rhs.
8613         (i2mod_old_rhs): New global variable.
8614         (combine_instructions): Adjust for above change.  Save a copy of
8615         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
8616         note are substituted in the second instruction.
8617         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
8618         ditch the note if it pertains to the second eliminated register
8619         and this register is mentioned in i2mod_old_rhs.
8620
8621         Revert:
8622         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
8623
8624         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
8625         the insn to which the note was originally attached.
8626
8627 2007-01-21  Jan Hubicka  <jh@suse.cz>
8628
8629         * ipa-inline.c (inlining_mode): Comment, move up.
8630         (cgraph_decide_inlining_incrementally): Do not perform inlining
8631         itself; fix handling of flattening of self recursive functions.
8632         (cgraph_find_cycles): Remove.
8633         (cgraph_flatten_node): Remove.
8634         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
8635         (try_inline): New function.
8636         (cgraph_early_inlining): Update call of
8637         cgraph_decide_inlining_incrementally.  Apply inlining here.
8638         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
8639
8640 2007-01-21  Dirk Mueller  <dmueller@suse.de>
8641
8642         PR bootstrap/30511
8643         * tree-vrp.c (check_array_bounds): do not warn
8644         about ADDR_EXPR's of ARRAY_REF's which are immediately
8645         used in binary expressions.
8646
8647 2007-01-21  Ira Rosen  <irar@il.ibm.com>
8648
8649         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
8650         read_write_dep and macros for its access.
8651         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
8652         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
8653         argument, call vect_check_interleaving for every independent pair of
8654         data-refs. Mark loads that access the same memory location as a store
8655         in the loop.
8656         (vect_check_dependences): Remove.
8657         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
8658         call, fix the call to vect_analyze_data_ref_dependence.
8659         (vect_analyze_data_ref_access): For statements that access the same
8660         data-ref, check that they are not stores; for loads, check that there
8661         is no store that access the same location.
8662
8663 2007-01-20  Roger Sayle  <roger@eyesopen.com>
8664             Joseph Myers  <joseph@codesourcery.com>
8665
8666         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
8667         (-fdump-rtl-stack): Likewise.
8668         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
8669         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
8670         (-mpt-fixed): Use @minus{} for minus sign.
8671         (Using Precompiled Headers): Fix under/overfull hbox.
8672
8673 2007-01-20  Jan Hubicka  <jh@suse.cz>
8674
8675         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
8676         place within annotation.
8677
8678 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8679
8680         * pa.c (output_move_double): Change array size of xoperands to 4.
8681
8682 2007-01-20  Jan Hubicka  <jh@suse.cz>
8683
8684         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
8685         as temporary.
8686
8687 2007-01-19  Ian Lance Taylor  <iant@google.com>
8688
8689         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
8690         constant to unsigned HOST_WIDE_INT before negating.
8691
8692 2007-01-19  Ian Lance Taylor  <iant@google.com>
8693
8694         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
8695         to unsigned.
8696         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
8697         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8698         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
8699         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
8700         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8701         (realloc_vdef, realloc_vuse): Change second parameter to
8702         unsigned.
8703         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
8704         fields to unsigned.
8705         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
8706         unsigned. Change x and lim locals to unsigned.
8707         (realloc_vdef, realloc_vuse): Change num_elem parameter to
8708         unsigned.
8709         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
8710         (copy_virtual_operands): Change i and n locals to unsigned.
8711
8712 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8713
8714         PR middle-end/29335
8715         * builtins.c (fold_builtin_1): Handle builtin fdim.
8716
8717 2007-01-20  Jan Hubicka  <jh@suse.cz>
8718
8719         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
8720         * tree-ssa-structalias.c (compute_points_to_sets): Do call
8721         init_alias_heapvars.
8722         (init_alias_heapvars): Initialize only when not already initialized.
8723         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
8724
8725 2007-01-19  Roger Sayle  <roger@eyesopen.com>
8726
8727         * common.opt (fsigned-zeros): New command line option.
8728         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
8729         of flag_unsafe_math_optimizations.
8730         * opts.c (set_fast_math_flags): The -ffast-math command line option
8731         implies -fno-signed-zeros.
8732         (fast_math_flags_set_p): Likewise.
8733
8734         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
8735         the documentation of -ffast-math appropriately.  Wrap long lines.
8736
8737 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
8738
8739         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
8740         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
8741
8742 2007-01-19  Tomas Bily  <tbily@suse.cz>
8743
8744         * cgraphunit.c (cgraph_finalize_function): Updating of pid
8745         * tree-profile.c:
8746         (tree_init_ic_make_global_vars): New function
8747         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
8748         (tree_gen_ic_profiler): New function
8749         (tree_gen_ic_func_profiler): New function
8750         (tree_profiling): Added calling of tree_gen_ic_func_profiler
8751         (tree_profile_hooks): Added hook for indirec/virtual calls
8752         * value-prof.c (tree_find_values_to_profile): New case for
8753         indirect calls
8754         (tree_values_to_profile): Call for determining indirect/virtual
8755         counters
8756         (tree_indirect_call_to_profile): New function
8757         (tree_ic_transform): New function
8758         (tree_ic): New function
8759         (find_func_by_pid): New function
8760         (init_pid_map): New function
8761         (tree_value_profile_transformations): Added check for
8762         indirect/virtual call transformation
8763         * value-prof.h (enum hist_type): New counter type for
8764         indirect/virtual calls
8765         (profile_hooks): Added new hook for profiling indirect/virtual
8766         calls
8767         * profile.c (instrument_values): New case for indirect/virtual
8768         call added
8769         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
8770         (GCOV_COUNTER_V_INDIR): New counter type
8771         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
8772         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
8773         call added
8774         * cgraph.c: Definition of cgraph_max_pid
8775         (cgraph_create_node): Default init of pid attribute
8776         * cgraph.h: Declaration of cgraph_max_pid
8777         (struct cgraph_node): Added pid attribute
8778         * libgcov.c (__gcov_indirect_call_profiler): New function
8779         (__gcov_one_value_profiler_body): New function
8780         (__gcov_one_value_profiler): Body was moved to
8781         __gcov_one_value_profiler_body and calls it
8782
8783 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
8784
8785         * doc/gty.texi (Options): Document the mark_hook option to GTY.
8786         * gengtype.c (write_types_data, write_func_for_structure,
8787         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
8788         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
8789         (walk_type, write_func_for_structure): Generate the mark_hook if
8790         needed.
8791
8792 2007-01-19  Jan Hubicka  <jh@suse.cz>
8793
8794         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
8795         'early' argument take inlining mode argument specifying whether to
8796         inline for size/speeed or all functions; add support for flattening;
8797         improve dumpting.
8798         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
8799
8800 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8801
8802         PR c++/17947
8803         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
8804         the name of the declared identifier.
8805
8806 2007-01-19  Dirk Mueller  <dmueller@suse.de>
8807
8808         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
8809         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
8810         duplicate evaluation.
8811
8812 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
8813
8814         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
8815         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
8816         to XFMode, use acosxf2 and truncate result to requested mode.
8817         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
8818         (asin<mode>2): Similarly, with asin expanders.
8819         (*fscalexf4_i387): Rename from *fscalexf4.
8820         (expNcorexf3): New expander.
8821         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
8822         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
8823         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
8824         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
8825         patterns for SSE math.
8826         (exp10<mode>2): Similarly, with exp10 expanders.
8827         (exp2<mode>2): Similarly, with exp2 expanders.
8828         (expm1<mode>2): Similarly, with expm1 expanders.
8829         (ldexp<mode>3): Similarly, with ldexp expanders.
8830         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
8831         Use gen_truncxf<mode>2_i387_noop to truncate result.
8832
8833 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8834
8835         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
8836         for ColdFire targets.
8837
8838 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
8839             Richard Sandiford  <richard@codesourcery.com>
8840
8841         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
8842         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
8843         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
8844         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
8845         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
8846         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
8847
8848 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8849
8850         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
8851         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
8852         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
8853         (*adddi_dilshr32_cf): New pattern.
8854         (adddi3, subdi3): Remove first alternatives.
8855
8856 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8857
8858         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
8859         implemented using move.l, do not use its cc result for floating-point
8860         comparisons.
8861
8862 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8863
8864         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
8865         from accepting 's' constraints if flag_pic.
8866
8867 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8868
8869         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
8870         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
8871         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
8872         condition from TARGET_68881 to TARGET_HARD_FLOAT.
8873
8874 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
8875
8876         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
8877         ColdFire alternatives.
8878         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
8879         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
8880         architectures that support ff1 instruction.
8881
8882 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8883             Julian Brown  <julian@codesourcery.com>
8884
8885         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
8886         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
8887         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
8888         Add commentary.
8889
8890 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8891
8892         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
8893         and return a bool.
8894         (output_move_const_into_data_reg, output_move_simode_const): Delete.
8895         * config/m68k/m68k.c (const_method, const_int_cost): Take a
8896         HOST_WIDE_INT instead of an rtx.
8897         (m68k_rtx_costs): Update call accordingly.
8898         (output_move_const_into_data_reg): Likewise.  Fix formatting.
8899         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
8900         Return a bool.
8901         (output_move_simode_const): Update calls after above changes.
8902         Rework to use automatic variables and predicates like MEM_P.
8903         * config/m68k/m68k.md (pushexthisi_const): Update call to
8904         valid_mov3q_const.
8905
8906 2007-01-19  Dirk Mueller  <dmueller@suse.de>
8907
8908         * tree-ssa-alias.c (perform_var_substitution): Fix typo
8909         in dump_flags test.
8910
8911 2007-01-19  Richard Guenther  <rguenther@suse.de>
8912
8913         * builtins.c (expand_builtin_cexpi): Fall back to expanding
8914         via cexp in case sincos is not available.
8915
8916 2007-01-19  Richard Guenther  <rguenther@suse.de>
8917
8918         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
8919         * defaults.h (TARGET_HAS_SINCOS): Default to off.
8920         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
8921         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
8922         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
8923         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
8924         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
8925         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
8926
8927 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
8928
8929         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
8930         New insn patterns.
8931         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
8932         (atan2xf3): Directly generate RTL pattern.
8933         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
8934         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
8935         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8936         disable patterns for SSE math.
8937         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
8938         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
8939         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8940         disable patterns for SSE math.
8941
8942 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
8943
8944         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
8945
8946 2007-01-18  Roger Sayle  <roger@eyesopen.com>
8947
8948         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
8949         VIEW_CONVERT_EXPR to the same type as it's operand.
8950
8951 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
8952
8953         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
8954         configured for long double 128.
8955
8956 2007-01-18  Mike Stump  <mrs@apple.com>
8957
8958         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
8959         error.
8960
8961 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
8962
8963         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
8964         type correct.
8965
8966 2007-01-18  Jan Hubicka  <jh@suse.cz>
8967
8968         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
8969         greater than NUM_VOP_FREE_BUCKETS.
8970
8971 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
8972
8973         * tree-ssa-structalias.c: Update comments.
8974         (ptabitmap_obstack): Removed.
8975         (pta_obstack): New.
8976         (oldpta_obstack): Ditto.
8977         (stats): Add a few members.
8978         (struct variable_info): Remove node, complex, address_taken, and
8979         indirect_target members. Add oldsolution member.
8980         (new_var_info): Do not initialize removed members.
8981         (constraint_expr_type): Remove INCLUDES.
8982         (constraint_graph): Add size, implicit_preds, rep,
8983         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
8984         (FIRST_REF_NODE): New macro.
8985         (LAST_REF_NODE): Ditto.
8986         (FIRST_ADDR_NODE): Ditto.
8987         (find): New function.
8988         (unite): Ditto.
8989         (dump_constraint): Do not handle INCLUDES.
8990         (insert_into_complex): Do not insert duplicate constraints.
8991         (condense_varmap_nodes): Renamed and rewritten into ...
8992         (merge_node_constraints): This. Also fix bug in handling of
8993         offseted copy constraints.
8994         (clear_edges_for_node): No longer need to deal with preds at all,
8995         or removing associated preds/succs.
8996         (merge_graph_nodes): Deal with indirect_cycles.
8997         Don't deal with predecessors.
8998         (add_implicit_graph_edge): New function.
8999         (add_pred_graph_edge): Ditto.
9000         (add_graph_edge): Don't deal with predecessors.
9001         (build_constraint_graph): Removed.
9002         (build_pred_graph): New function.
9003         (build_succ_graph): Ditto.
9004         (struct scc_info): Removed in_component. Added roots, dfs, and
9005         node_mapping. Remove visited_index, unification_queue.
9006         (scc_visit): Deal with union-find we do now.
9007         Deal with cycles with REF nodes.
9008         (collapse_nodes): Renamed and rewritten to ...
9009         (unify_nodes): This.
9010         (process_unification_queue): Removed.
9011         (topo_visit): Cleanup
9012         (do_da_constraint): Use find.
9013         (do_sd_constraint): Ditto.
9014         (do_ds_constraint): Ditto.
9015         (do_complex_constraint): Ditto.
9016         (init_scc_info): Update for removed and added members.
9017         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
9018         (find_indirect_cycles): This.
9019         (equivalence_class): New variable.
9020         (label_visit): New function.
9021         (perform_variable_substitution): Rewritten.
9022         (free_var_substitution_info): New function.
9023         (find_equivalent_node): Ditto.
9024         (move_complex_constraints): Ditto.
9025         (eliminate_indirect_cycles): Ditto.
9026         (solve_graph): Only propagate changed bits.
9027         Use indirect cycle elimination.
9028         Use find.
9029         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
9030         (tree_id_eq): Renamed to ...
9031         (tree_vi_eq): This. Update for member change
9032         (insert_id_for_tree): Renamed and rewritten to ...
9033         (insert_vi_for_tree): This.
9034         (lookup_id_for_tree): Renamed and rewritten to ...
9035         (lookup_vi_for_tree): This.
9036         (get_id_for_tree): Renamed and rewritten to ...
9037         (get_vi_for_tree): Ditto.
9038         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
9039         (process_constraint): Don't handle INCLUDES.
9040         Remove special ADDRESSOF case.
9041         (find_func_aliases): Rewrite to use vi functions instead of id
9042         ones.
9043         (create_function_info_for): Ditto.
9044         (create_variable_info_for): Ditto.
9045         (intra_create_variable_infos): Ditto.
9046         (merge_smts_into): Ditto.
9047         (find_what_p_points_to): Ditto.
9048         (init_base_vars): Ditto.
9049         (init_alias_vars): Ditto.
9050         (remove_preds_and_fake_succs): New function.
9051         (dump_sa_points_to_info): Dump new stats.
9052         (dump_solution_for_var): Use find.
9053         (set_used_smts): Fix formatting.
9054         (compute_points_to_sets): Updated for new functions.
9055         (ipa_pta_execute): Ditto.
9056
9057 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9058             Richard Sandiford  <richard@codesourcery.com>
9059
9060         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
9061         parallels.
9062         * calls.c (expand_call): If the return value is a PARALLEL,
9063         extract its first member.
9064         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
9065         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
9066         use FUNCTION_EXTRA_EPILOGUE.
9067         (m68k_function_value): Return a PARALLEL if the return value
9068         is of a pointer type.
9069         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
9070         (FUNCTION_EXTRA_EPILOGUE): Remove.
9071         * config/m68k/m68k.md (D0_REG): New constant.
9072
9073 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9074
9075         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
9076         output a NOP for empty epilogues.
9077
9078 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9079
9080         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
9081         before function.  Extend register save check to include all
9082         registers, not just integer ones.
9083
9084 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9085
9086         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
9087         (m68k_use_return_insn): ...this.
9088         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
9089         * config/m68k/m68k.c (use_return_insn): Rename to...
9090         (m68k_use_return_insn): ...this.
9091         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
9092         of USE_RETURN_INSN.
9093
9094 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9095
9096         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
9097         nearest even, fix denormal rounding overflow.
9098
9099 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9100
9101         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
9102         f%$smove and f%$move.
9103         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
9104         (extendsfdf2_cf): Use fdmove instead of f%&move.
9105         (truncdfsf2_cf): Use fsmove instead of f%$smove.
9106         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
9107
9108 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9109
9110         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
9111         GPR<-GPR moves.
9112
9113 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9114
9115         * real.h (real_format): Add a canonical_nan_lsbs_set field.
9116         (coldfire_single_format): Declare.
9117         (coldfire_double_format): Likewise.
9118         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
9119         of qnan_msb_set to determine the lower bits of a canonical
9120         NaN significand.
9121         (encode_ieee_double): Likewise.
9122         (encode_ieee_quad): Likewise.
9123         (ieee_single_format): Initialize canonical_nan_lsbs_set.
9124         (mips_single_format): Likewise.
9125         (ieee_double_format): Likewise.
9126         (mips_double_format): Likewise.
9127         (ieee_extended_motorola_format): Likewise.
9128         (ieee_extended_intel_96_format): Likewise.
9129         (ieee_extended_intel_128_format): Likewise.
9130         (ieee_extended_intel_96_round_53_format): Likewise.
9131         (ibm_extended_format): Likewise.
9132         (mips_extended_format): Likewise.
9133         (ieee_quad_format): Likewise.
9134         (mips_quad_format): Likewise.
9135         (vax_f_format): Likewise.
9136         (vax_d_format): Likewise.
9137         (vax_g_format): Likewise.
9138         (i370_single_format): Likewise.
9139         (i370_double_format): Likewise.
9140         (decimal_single_format): Likewise.
9141         (decimal_double_format): Likewise.
9142         (decimal_quad_format): Likewise.
9143         (c4x_single_format): Likewise.
9144         (c4x_extended_format): Likewise.
9145         (real_internal_format): Likewise.
9146         (coldfire_single_format): New real_format.
9147         (coldfire_double_format): Likewise.
9148         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
9149         canonical_nan_lsbs_set.
9150         (pdp11_d_format): Likewise.
9151         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
9152         if TARGET_COLDFIRE_CPU.
9153
9154 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9155
9156         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
9157         (output_call, m68k_legitimize_call_address): Declare.
9158         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
9159         parenthesees.  Add support for a 'W' constraint.
9160         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
9161         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
9162         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
9163         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
9164         variables.
9165         (override_options): Initialize them.  Do not set flag_no_function_cse
9166         for TARGET_ID_SHARED_LIBRARY.
9167         (m68k_output_pic_call): Delete.
9168         (m68k_legitimize_call_address): New function.
9169         (print_operand): Remove the %o prefix.  Handle the %p prefix.
9170         (output_call): New function.
9171         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
9172         target address from the GOT if symbolic jumps are not allowed.
9173         * config/m68k/m68k.md (call, general_operand): Do not set
9174         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
9175         Merge separate flag_pic and !flag_pic define_insns into...
9176         (*call, *call_value): ...these new patterns.  Match the address
9177         rather than the containing MEM and require it to be a call_operand.
9178         Use output_call to generate the asm template.
9179         * config/m68k/predicates.md (const_call_operand): New predicate.
9180         (call_operand): Likewise.
9181
9182 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9183
9184         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
9185         (STACK_GROWS_DOWNWARD): Define to 1.
9186         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
9187         comments, emphasizing that these values are only defaults.
9188         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
9189         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
9190
9191 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9192
9193         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
9194
9195 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9196             Richard Sandiford  <richard@codesourcery.com>
9197
9198         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
9199         (FP_REGNO_P): New macros.
9200         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
9201         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
9202         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
9203         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
9204
9205 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9206
9207         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9208         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
9209         to $tmake_file.
9210         * config/m68k/t-floatlib: New file, extracting common code from...
9211         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
9212         * config/m68k/t-uclinux: Here.
9213         * config/m68k/fpgnulib.c: Do not compile extendeed precision
9214         routines on ColdFire targets.
9215
9216 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9217
9218         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9219         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
9220         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
9221         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
9222         explicitly set MOTOROLA to 1.
9223         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
9224
9225 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9226             Nathan Sidwell  <nathan@codesourcery.com>
9227
9228         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
9229         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
9230         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
9231         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
9232         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
9233         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
9234         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
9235         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
9236         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
9237         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
9238         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
9239         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
9240         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
9241         (DBX_REGISTER_NUMBER): Delete.
9242         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
9243         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
9244         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
9245
9246 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9247
9248         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
9249         * config/flat.h: New file.
9250         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
9251         OBJECT_FORMAT_FLAT.
9252         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
9253         indirect references for -msep-data or -mid-shared-library.
9254         Do not use PC-relative code addresses either.
9255         * config/m68k/m68k.c (override_options): Restrict -fPIC error
9256         to -mpcrel.
9257         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
9258         for shared libraries and crt1.o for executables.  Use crti.o and
9259         crtbegin.o.
9260         (ENDFILE_SPEC): Use crtend.o and crtn.o.
9261         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
9262         Do not add -elf2flt or -shared-lib-id options here.
9263         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
9264         Pass -shared-lib-id if -mid-shared-library, taking the library
9265         identifier from -mshared-library-id if given, otherwise
9266         defaulting to 0.
9267         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
9268         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
9269         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
9270         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
9271         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
9272         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
9273         and crtend.o.
9274         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
9275         jump sequence for ISA A and ISA A+.
9276         (PICJUMP): Likewise.
9277
9278 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9279
9280         * config.gcc (m68k-*-uclinux*): Base the port on the common
9281         and m68k GNU/Linux files rather than on the generic ELF ones.
9282         * config/m68k/uclinux.h (TARGET_VERSION): Override.
9283         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
9284
9285 2007-01-18  Julian Brown  <julian@codesourcery.com>
9286             Richard Sandiford  <richard@codesourcery.com>
9287
9288         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
9289         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
9290         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
9291         before redefining.
9292         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
9293         80 unconditionally.
9294         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
9295
9296 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9297
9298         * doc/install.texi: Document m68k-uclinuxoldabi.
9299         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
9300         * config/m68k/uclinux-oldabi.h: New file, copied from
9301         config/m68k/uclinux.h.
9302
9303 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
9304
9305         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
9306         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
9307         (m32r_compute_frame_size): Use unsigned for regno.
9308         (m32r_reload_lr): Use gen_frame_mem.
9309         (pop): New.
9310         (m32r_output_function_epilogue): Don't output the function epilogue
9311         textually here.
9312         (m32r_expand_epilogue): New.
9313         (direct_return): Return false if the function has the interrupt
9314         attribute.
9315         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
9316         * config/m32r/m32r.md (epilogue): New expander.
9317         (return_lr, return_rte): New insns.
9318         (return): Make it expander.
9319         (return_normal): New expander.
9320
9321 2007-01-18  Josh Conner  <jconner@apple.com>
9322
9323         PR target/30485
9324         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
9325         support for UNLE, UNLT, UNGE, and UNGT.
9326
9327 2007-01-18  Jan Hubicka  <jh@suse.cz>
9328
9329         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
9330         * tree-tailcall (add_virtual_phis): Likewise.
9331         (optimize_tail_call): Return TODOs.
9332         (execute_tail_calls): Return TODOs.
9333         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
9334         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
9335         changed.
9336         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
9337         Cleanup cfg using TODO.
9338         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
9339         * passes.c (execute_function_todo): When cleanup did something, remove
9340         unused locals.
9341         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
9342         (make_edges): Don't cleanup_cfg.
9343
9344 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
9345
9346         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
9347         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
9348         operate on the top of stack.
9349         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
9350         register handling of instructions that output to the second
9351         stack slot.
9352         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
9353         (move_for_stack_reg): Special-case check for dead destination
9354         stack slot for constant load of 1.0 inside UNSPEC_TAN.
9355
9356         * config/i386/i386.md (UNSPEC_TAN): New constant.
9357         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
9358         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
9359         to correctly model move of constant 1.0 to top stack slot.
9360         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
9361         (unnamed peephole2 pattern): Remove corresponding peephole2
9362         pattern that optimizes tan insn and loading of constant 1.0.
9363         (tanxf2): Use fptanxf4_i387.
9364         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
9365         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
9366         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
9367         disable patterns for SSE math.
9368         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
9369         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
9370
9371 2007-01-18  Dirk Mueller  <dmueller@suse.de>
9372             Richard Guenther <rguenther@suse.de>
9373
9374         PR diagnostic/8268
9375         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
9376         * common.opt (Warray-bounds): Add new warning option.
9377         * c-opts.c (c_common_handle_option): Define -Warray-bounds
9378         if -Wall is given.
9379         * Makefile.in: make tree-vrp.o depend on toplev.h
9380         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
9381         is enabled.
9382         (check_array_refs, check_array_bounds, check_array_ref): New.
9383
9384 2007-01-18  Jan Hubicka  <jh@suse.cz>
9385
9386         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
9387         (execute_ssa_ccp): Return flags conditionally.
9388         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
9389         changed.
9390         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
9391
9392 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
9393
9394         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
9395         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
9396
9397         * Makefile.c (GTFILES): Add cfglayout.h.
9398         * gengtype.c (open_base_files): Likewise.
9399         * cfglayout.c (cfg_layout_function_footer,
9400         cfg_layout_function_header) Reindent to make gengtype happy.
9401         * cfglayout.h (cfg_layout_function_footer,
9402         cfg_layout_function_header): Add GTY(()) marker.
9403
9404         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
9405
9406 2007-01-18  Ben Elliston  <bje@au.ibm.com>
9407
9408         * genautomata.c (write_automata): Include xstrerror output in the
9409         error message if writing the DFA description file fails.
9410
9411 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
9412
9413         * config/mips/mips-protos.h (mips_output_external): Make it
9414         return void.
9415         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
9416         * config/mips/mips.c (irix_output_external_libcall): Likewise.
9417         (extern_list): Likewise.
9418         (extern_head): Likewise.
9419         (TARGET_ASM_FILE_END): Likewise.
9420         (mips_file_end): Likewise.
9421         (mips_output_external): Rewritten.
9422
9423 2007-01-18  Ben Elliston  <bje@au.ibm.com>
9424
9425         * genpreds.c (write_insn_preds_c): Only write out the function
9426         body for regclass_for_constraint if we have register constraints.
9427
9428 2007-01-17  Tom Tromey  <tromey@redhat.com>
9429
9430         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
9431         * doc/install.texi (Testing): Use sourceware.org.
9432         (Binaries): Likewise.
9433         (Specific): Likewise.
9434         * doc/contrib.texi (Contributors): Use sourceware.org.
9435
9436 2007-01-17  Anatoly Sokolov <aesok@post.ru>
9437
9438         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
9439         (AVR_ENHANCED): Rename to ...
9440         (AVR_HAVE_MUL): ... new.
9441         (avr_enhanced_p): Rename to ...
9442         (avr_have_mul_p): ... new.
9443         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
9444         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
9445         * config/avr/avr.c (avr_enhanced_p): Rename to ...
9446         (avr_have_mul_p): ... new.
9447         (base_arch_s): Rename 'enhanced' to 'have_mul'.
9448         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
9449         'avr_enhanced_p' and 'enhanced'.
9450         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
9451         AVR_HAVE_MUL instead of AVR_ENHANCED.
9452         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
9453         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
9454         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
9455         instead of AVR_ENHANCED.
9456         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
9457         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
9458         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
9459
9460 2007-01-17  Ian Lance Taylor  <iant@google.com>
9461
9462         * vec.h (VEC_reserve_exact): Define.
9463         (vec_gc_p_reserve_exact): Declare.
9464         (vec_gc_o_reserve_exact): Declare.
9465         (vec_heap_p_reserve_exact): Declare.
9466         (vec_heap_o_reserve_exact): Declare.
9467         (VEC_OP (T,A,reserve_exact)): New static inline function, three
9468         versions.
9469         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
9470         negative parameter.
9471         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
9472         (VEC_OP (T,A,copy)) [all versions]: Likewise.
9473         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
9474         * vec.c (calculate_allocation): Add exact parameter.  Change all
9475         callers.
9476         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
9477         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
9478         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
9479         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
9480         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
9481         (vec_heap_p_reserve_exact): New function.
9482         (vec_heap_o_reserve_exact): New function.
9483
9484 2007-01-17  Jan Hubicka  <jh@suse.cz>
9485
9486         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
9487
9488 2007-01-17  Eric Christopher  <echristo@apple.com>
9489
9490         * config.gcc: Support core2 processor.
9491
9492 2007-01-16  Jan Hubicka  <jh@suse.cz>
9493
9494         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
9495         the names, just unlink the chain so we don't crash on dangling pointers
9496         to dead SSA names.
9497
9498 2007-01-16  Jan Hubicka  <jh@suse.cz>
9499
9500         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
9501         * tree-pass.h: Reorder to make IPA passes appear toegher.
9502         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
9503         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
9504         parameters, do not call early inliner.
9505         * ipa-inline.c: Update comments.  Include tree-flow.h
9506         (cgraph_decide_inlining): Do not compute inlining parameters.
9507         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
9508         be called with function context set up.
9509         (pass_ipa_inline): Remove unreachable functions before pass.
9510         (cgraph_early_inlining): Simplify assuming to be called from the
9511         PM as local pass.
9512         (pass_early_inline): New pass.
9513         (cgraph_gate_ipa_early_inlining): New gate.
9514         (pass_ipa_early_inline): Turn into simple wrapper.
9515         (compute_inline_parameters): New function.
9516         (gate_inline_passes): New gate.
9517         (pass_inline_parameters): New pass.
9518         (apply_inline): Move here from tree-optimize.c
9519         (pass_apply_inline): New pass.
9520         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
9521         transforming.
9522         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
9523         doing them by hand.
9524         (tree_function_versioning): Do not allocate dummy struct function.
9525         * tree-inline.h (optimize_inline_calls): Update prototype.
9526         * tree-optimize.c (execute_fixup_cfg): Export.
9527         (pass_fixup_cfg): Remove
9528         (tree_rest_of_compilation): Do not apply inlines.
9529         * tree-flow.h (execute_fixup_cfg): Declare.
9530         * Makefile.in (gt-passes.c): New.
9531         * passes.c: Include gt-passes.h
9532         (init_optimization_passes): New passes.
9533         (nnodes, order): New static vars.
9534         (do_per_function_toporder): New function.
9535         (execute_one_pass): Dump current pass here.
9536         (execute_ipa_pass_list): Don't dump current pass here.
9537
9538 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
9539
9540         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
9541         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
9542
9543 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
9544
9545         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
9546         (strong_alias): Define.
9547         (__gcc_qmul): Provide non-FMA for soft-float.
9548         (__gcc_qdiv): Same.
9549         (__gcc_qneg): New.
9550         (__gcc_qeq): New.
9551         (__gcc_qle): New.
9552         (__gcc_qge): New.
9553         (__gcc_qunord): New.
9554         (__gcc_stoq): New.
9555         (__gcc_dtoq): New.
9556         (__gcc_qtos): New.
9557         (__gcc_qtod): New.
9558         (__gcc_qtoi): New.
9559         (__gcc_qtou): New.
9560         (__gcc_itoq): New.
9561         (__gcc_utoq): New.
9562         (fmsub): New.
9563         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
9564         soft-float functions.
9565         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
9566         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
9567         about long double soft float.
9568
9569 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
9570             Tehila Meyzels  <tehila@il.ibm.com>
9571
9572         * tree-vectorizer.h (is_pattern_stmt_p): New.
9573         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
9574         formatting (tabs instead of spaces). Cleanup and clarify setting
9575         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
9576         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
9577         (vectorizable_type_demotion): Check that types are integral.
9578         (vectorizable_type_promotion): Likewise.
9579         (vectorizable_store): Fix typo.  Eliminate new-line at end of
9580         comments.
9581
9582 2007-01-16  Jan Hubicka  <jh@suse.cz>
9583
9584         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
9585         cgraph edges too.
9586
9587 2007-01-15  Eric Christopher  <echristo@apple.com>
9588
9589         * ifcvt.c: Include vec.h, vecprim.h.
9590         (check_cond_move_block): New argument regs.
9591         Reorganize. Add registers used to regs.
9592         (cond_move_process_if_block): Use regs set above as
9593         loop bounds.
9594
9595 2007-01-15  Eric Christopher  <echristo@apple.com>
9596
9597         * config/darwin.h: Update copyright.
9598         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
9599         (LINK_COMMAND_SPEC): Add -u.
9600         (LINK_SPEC): Fix umbrella for above.
9601
9602 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
9603
9604         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
9605         glibc CVS.
9606
9607 2007-01-15  Tom Tromey  <tromey@redhat.com>
9608
9609         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
9610         * doc/install.texi (Testing): Don't mention jacks.
9611         (Configuration): Document --enable-java-maintainer-mode.  Move
9612         --with-java-home to libgcj-specific section.  Document
9613         --with-ecj-jar.
9614         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
9615
9616 2007-01-15  Jan Hubicka  <jh@suse.cz>
9617
9618         * tree-ssa-dce.c (DCE_TODOs): New.
9619         (propagate_necessity): Return if something changed.
9620         (eliminate_unnecessary_stmts): Likewise.
9621         (perform_tree_ssa_dce): Return TODO flags when needed.
9622         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
9623
9624 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
9625
9626         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
9627         (fyl2x_extend<mode>xf3_i387): New insn pattern.
9628         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
9629         patterns using X87MODEF12 mode macro.  Extend operand 1
9630         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
9631         (log10<mode>2): Ditto.
9632         (log2<mode>2): Ditto.
9633         (log1p<mode>2): Ditto.
9634         (logb<mode>2): Ditto.
9635         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
9636         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
9637         (*fxtractxf3_i387): Rename from *fxtractxf3.
9638         (fxtract_extend<mode>xf3_i387): New insn pattern.
9639         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
9640         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
9641         and gen_fyl2xxf3_i387().
9642
9643 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
9644
9645         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
9646         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
9647         get_loop_exit_edges.  Changed return type to bool.
9648         * cfgloop.h (fix_loop_placement): Declaration removed.
9649
9650 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
9651
9652         * param.h (MIN_VECT_LOOP_BOUND): New.
9653         * params.def (MIN_VECT_LOOP_BOUND): New.
9654         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
9655         argument - minimum threshold for number of iterations.
9656         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
9657         argument to declaration.
9658         * tree-vect-analyze.c (vect_analyze_operations): Check value of
9659         MIN_VECT_LOOP_BOUND.
9660         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
9661         slpeel_tree_peel_loop_to_edge with additional argument.
9662         (vect_do_peeling_for_alignment): Likewise.
9663         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
9664
9665 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
9666
9667         PR target/30413
9668         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
9669         operands of size 1.
9670
9671 2007-01-14  Jan Hubicka  <jh@suse.cz>
9672
9673         * tree-dfa.c (remove_referenced_var): New function.
9674         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
9675         prune referenced vars list too.
9676         * tree-flow.h (remove_referenced_var): Declare.
9677
9678 2007-01-14  Jan Hubicka  <jh@suse.cz>
9679
9680         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
9681         separately.
9682         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
9683         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
9684         * except.h (verify_eh_throw_table_statements): Kill prototype.
9685         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
9686         into call exrepssions.
9687         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
9688         eh trhow verifier.
9689         * tree-cfg.c: Include pointer-set.h.
9690         (verify_node_sharing): Work on pointer set.
9691         (verify_eh_throw_stmt_node): New.
9692         (verify_stmts): Use pointers sets, verify throw_stmt.
9693
9694 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
9695
9696         * ipa-reference.c (analyze_function): Consider also addresses taken
9697         in phi nodes.
9698
9699 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9700
9701         * c-typeck.c (null_pointer_constant_p): Replace use of
9702         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9703         (build_c_cast): Likewise.
9704
9705 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9706
9707         * tree.h (force_fit_type_double): Remove unused final argument.
9708         * c-common.c (constant_expression_warning): Replace use of
9709         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9710         (convert_and_check): Likewise.
9711         (shorten_compare): Update call to force_fit_type_double.
9712         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
9713         * convert.c (convert_to_pointer): Update call to
9714         force_fit_type_double.
9715         * fold-const.c (force_fit_type_double): Remove overflowed_const
9716         argument.
9717         (int_const_binop, fold_convert_const_int_from_int,
9718         fold_convert_const_int_from_real, fold_div_compare,
9719         fold_sign_changed_comparison, fold_unary, fold_negate_const,
9720         fold_abs_const, fold_not_const): Remove the final argument from
9721         calls to force_fit_type_double.
9722
9723 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9724
9725         * configure.ac: Set insn to "nop" for spu-*-* also.
9726         * configure: Regenerate.
9727
9728 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
9729
9730         * builtins.def : Add BUILT_IN_FREE.
9731
9732 2007-01-12  Jan Hubicka  <jh@suse.cz>
9733
9734         PR tree-optimization/30443
9735         * tree-inline.c (tree_function_versioning): Do not optimize when
9736         cloning for inlining.
9737
9738 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
9739
9740         * doc/loop.texi: Document recording of loop exits.
9741         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
9742         (update_single_exits_after_duplication,
9743         update_single_exit_for_duplicated_loop,
9744         update_single_exit_for_duplicated_loops): Removed.
9745         (duplicate_loop_to_header_edge): Do not call
9746         update_single_exits_after_duplication and
9747         update_single_exit_for_duplicated_loops.
9748         (loop_version): Do not update single_exit information.
9749         (fix_loop_structure): Use record_loop_exits instead of
9750         mark_single_exit_loops.
9751         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
9752         the lists of loop exits.
9753         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
9754         split_edge, merge_blocks): Update the lists of loop exits.
9755         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
9756         loop_optimizer_init.
9757         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
9758         of mark_single_exit_loops.
9759         (loop_optimizer_finalize): Call release_recorded_exits.
9760         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
9761         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
9762         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
9763         update single exit information.
9764         * lambda-code.c (perfect_nestify): Ditto.
9765         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
9766         (mark_single_exit_loops): Removed.
9767         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
9768         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
9769         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
9770         functions.
9771         (get_loop_exit_edges, single_exit): Use recorded exit lists.
9772         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
9773         (verify_loop_structure): Verify consistency of the exit lists.
9774         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
9775         (set_single_exit): Removed.
9776         * cfgloop.h (struct loop_exit): New function.
9777         (struct loop): single_exit_ field replaced by exits field.
9778         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
9779         (struct loops): Added exits hash.
9780         (mark_single_exit_loops, set_single_exit): Declaration removed.
9781         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
9782
9783 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9784
9785         * doc/invoke.texi: Avoid use of @headitem.
9786
9787 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9788
9789         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
9790
9791 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9792
9793         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
9794         list of targets.
9795
9796 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9797             Richard Sandiford  <richard@codesourcery.com>
9798
9799         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
9800         * config/m68k/m68k.opt: Resort options.
9801         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
9802
9803 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9804             Richard Sandiford  <richard@codesourcery.com>
9805
9806         * doc/invoke.texi: Document the macros that are defined by
9807         m68k's -mtune and -mhard-float options.
9808         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
9809         (m68k_cpp_cpu_family): Likewise.
9810         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
9811         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
9812         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
9813         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
9814         (m68k_cpp_cpu_family): Likewise.
9815
9816 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9817
9818         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
9819         macros besides mc68000 as tuning macros.  Use a switch statement
9820         to set them and mcpu32.
9821
9822 2007-01-12  Julian Brown  <julian@codesourcery.com>
9823
9824         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
9825         (TARGET_68040_ONLY): Rename to...
9826         (TARGET_68040): ...this.
9827         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
9828         * config/m68k/m68k.md: Likewise.
9829
9830 2007-01-12  Julian Brown  <julian@codesourcery.com>
9831             Nathan Sidwell  <nathan@codesourcery.com>
9832             Richard Sandiford  <richard@codesourcery.com>
9833
9834         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
9835         the -mcpu= argument associated with the --with-cpu setting.
9836         Define M68K_DEFAULT_TUNE to the default -mtune= option,
9837         if different from the one implied by the -mcpu setting.
9838         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
9839         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
9840         * doc/invoke.texi: Mention ColdFire in the introduction to the
9841         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
9842         -mno-div and -mhard-float options.  Make -m68881 a synonym for
9843         -mhard-float.  Document the previously-undocumented -m5206e,
9844         -m528x, -m5307 and -m5407 options.  Tweak the existing option
9845         documentation for consistency.
9846         * doc/install.texi: Mention new --with-cpu arguments.
9847         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
9848         default CPU if neither -mcpu nor -march are specified.
9849         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
9850         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
9851         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
9852         using m68k_tune to decide between families that implement the
9853         same ISA.  Use m68k_tune to set __mcfv4e__.
9854         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
9855         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
9856         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
9857         (FL_ISA_C, FL_ISA_MMU): New macros.
9858         (MASK_COLDFIRE): Delete.
9859         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
9860         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
9861         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
9862         (TARGET_HARD_FLOAT): Do not define here.
9863         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
9864         (TUNE_68000): New macro.
9865         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
9866         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
9867         (TUNE_CFV2): Redefine in terms of m68k_tune.
9868         (uarch_type, target_device, fpu_type): New enums.
9869         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
9870         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
9871         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
9872         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
9873         (FL_FOR_isa_c): New macros.
9874         (m68k_isa): New enum.
9875         (m68k_target_selection): New structure.
9876         (all_devices, all_isas, all_microarchs): New tables.
9877         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
9878         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
9879         (MASK_ALL_CPU_BITS): Delete.
9880         (m68k_find_selection): New function.
9881         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
9882         Map the legacy target options to a combination of the new ones.
9883         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
9884         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
9885         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
9886         settings.
9887         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
9888         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
9889         properties.
9890         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
9891         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
9892         * config/m68k/m68k-devices.def: New file.
9893
9894 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9895             Nathan Sidwell  <nathan@codesourcery.com>
9896
9897         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
9898         (SUBTARGET_EXTRA_SPECS): New macros.
9899         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
9900         use %(asm_cpu_spec) instead.
9901         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
9902         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
9903         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
9904         (EXTRA_SPECS): Rename to...
9905         (SUBTARGET_EXTRA_SPECS): ...this.
9906
9907 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9908             Richard Sandiford  <richard@codesourcery.com>
9909             Julian Brown  <julian@codesourcery.com>
9910
9911         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9912         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
9913         to the configuration's default CPU.
9914         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
9915         Remove default masks.
9916         (m680[012]0-*-*): Set the default with_cpu to the first part of
9917         the target name.
9918         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
9919         (m68k*-*-linux): Extend the --with-cpu handling to...
9920         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
9921         and m68010.  Don't set target_cpu_default2.
9922         * doc/install.texi: Document --with-cpu for m68k.
9923         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
9924         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
9925         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
9926         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
9927         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
9928         (ASM_SPEC): Remove use of %(asm_cpu_default).
9929         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
9930         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
9931         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
9932         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
9933         __HAVE_FPU__ if TARGET_HARD_FLOAT.
9934         (TARGET_DEFAULT): Delete.
9935         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
9936         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
9937         (CPP_CPU_SPEC): Delete.
9938         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
9939         the appropriate string.
9940         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
9941         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
9942         (ASM_SPEC): Don't use %(asm_default_spec).
9943         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
9944         TARGET_DEFAULT and add MASK_68881.
9945         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
9946
9947 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9948
9949         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
9950         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
9951         MASK_68010 alongside MASK_68020.
9952         * doc/invoke.texi: Document -m68010.
9953         * config/m68k/m68k.opt (m68010): New.
9954         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
9955         if TUNE_68010.
9956         (TUNE_68010): New macro.
9957         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
9958         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
9959         (M68K_CPU_m68332): Add MASK_68010.
9960         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
9961         fallback definition.
9962         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
9963         defines.
9964         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
9965         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
9966         to all entries that use MASK_68020.
9967         (output_move_simode_const, output_move_himode, output_move_qimode)
9968         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
9969         instead of TARGET_68020 to select clr behavior.  Remove comment
9970         about there being no TARGET_68010.
9971         * config/m68k/m68k.md: Likewise throughout.
9972
9973 2007-01-12  Julian Brown  <julian@codesourcery.com>
9974
9975         * config/m68k/m68k.h (TARGET_ISAB): New macro.
9976         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
9977         * config/m68k/m68k.md: Likewise.
9978
9979 2007-01-12  Julian Brown  <julian@codesourcery.com>
9980
9981         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
9982         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
9983
9984 2007-01-12  Julian Brown  <julian@codesourcery.com>
9985
9986         * config/m68k/m68k.h (TUNE_68040_60): New macro.
9987         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
9988         * config/m68k/m68k.md: Likewise.
9989
9990 2007-01-12  Julian Brown  <julian@codesourcery.com>
9991             Richard Sandiford  <richard@codesourcery.com>
9992
9993         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
9994         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
9995         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
9996         TARGET_CPU32.
9997         (TARGET_CPU32): Rename to...
9998         (TUNE_CPU32): ...this.
9999         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
10000         (TUNE_CFV2): New macros.
10001         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
10002         remove conditions that are implied by TARGET_68020.
10003         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
10004         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
10005         (m68k_output_function_epilogue): Likewise.
10006         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
10007         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
10008         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
10009         non-68000 timings.  Refactor multiplication and division costs.
10010         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
10011         TUNE_CPU32 instead of TARGET_CPU32.
10012         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
10013         and TUNE_68060 instead of TARGET_68060.
10014         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
10015         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
10016         TARGET_CPU32.
10017         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
10018         && !TARGET_COLDFIRE" to choose between moveq and clr.
10019         Likewise in the unnamed movsf pattern.
10020         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
10021         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
10022         ashiftrt pattern.
10023
10024 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
10025
10026         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
10027         of tabbing before backslashes.
10028
10029 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10030
10031         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
10032         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
10033         (ASM_OUTPUT_INTERNAL_LABEL): Define.
10034
10035 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
10036
10037         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
10038         find_interesting_uses_cond.
10039         (find_interesting_uses_cond): Use extract_cond_operands.
10040         (rewrite_use_compare): Use extract_cond_operands and
10041         force_gimple_operand_bsi.  Do not call update_stmt.
10042         (determine_use_iv_cost_condition): Use extract_cond_operands.
10043         Return cheaper of using original bound and changing the exit bound.
10044
10045 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
10046
10047         PR tree-optimization/29516
10048         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
10049         most_expensive_mult_to_index, addr_to_parts,
10050         create_mem_ref, maybe_fold_tmr): Make the type of
10051         fields of TARGET_MEM_REF sizetype.
10052         (move_fixed_address_to_symbol, move_pointer_to_base):
10053         New functions.
10054         * tree.def (TARGET_MEM_REF): Add comment on types of
10055         the operands.
10056
10057 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
10058
10059         * c-common.c (vector_types_convertible_p): Treat opaque types as
10060         always convertible if they have the same size, but not otherwise.
10061
10062 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
10063
10064         * ifcvt.c (struct noce_if_info): Add comments to the fields.
10065         Remove the b_unconditional field.
10066         (noce_try_sign_mask): Do not look at b_unconditional.
10067         (noce_process_if_block): Do not use merge_if_blocks.  Update
10068         the CFG here.  Do not set b_unconditional.
10069         (cond_move_process_if_block): Likewise.
10070         (find_cond_trap): Likewise.
10071         (check_cond_move_block): Require simple jump insns at the end
10072         of the basic block.
10073
10074 2007-01-11  Jan Hubicka  <jh@suse.cz>
10075
10076         PR tree-optimization/1046
10077         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
10078         when alias info is not ready.
10079         (pass_tail_recursion): Do not require aliasing.
10080         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
10081         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
10082         * tree-ssa-copy.c (pass_copy_prop): Likewise.
10083         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
10084         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
10085         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
10086         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
10087         before inlining.
10088         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
10089         When aliasing is not build, mark statement as volatile.
10090
10091 2007-01-11  Tom Tromey  <tromey@redhat.com>
10092
10093         PR preprocessor/15185, PR preprocessor/20989:
10094         * doc/cppopts.texi <-MT>: Update description of algorithm for
10095         computing default target.
10096         <-M, -MD>: Reword "basename" text.
10097
10098 2007-01-11  Roger Sayle  <roger@eyesopen.com>
10099
10100         * builtins.c (expand_builtin_pow, expand_builtin_powi,
10101         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
10102         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
10103         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
10104         fold_builtin_bswap, real_constp, fold_builtin_pow,
10105         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
10106         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
10107         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
10108         * convert.c (convert_to_pointer): Likewise.
10109         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
10110         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
10111         const_binop, fold_convert_const_int_from_int,
10112         fold_convert_const_int_from_real,
10113         fold_convert_const_real_from_real, sign_bit_p,
10114         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
10115         fold_sign_changed_comparison, fold_unary, fold_comparison,
10116         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
10117         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
10118         * print-tree.c (print_node_brief, print_node): Likewise.
10119         * stor-layout.c (place_field, layout_type): Likewise.
10120         * tree-chrec.c (keep_cast): Likewise.
10121         * tree.c (build_vector, build_real, build_real_from_int_cst,
10122         build_complex): Likewise.
10123
10124 2007-01-11  Roger Sayle  <roger@eyesopen.com>
10125
10126         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
10127         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
10128
10129 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
10130
10131         * configure.ac (strict1_warn): Rename to strict_warn.
10132         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
10133         cc_set_by_configure, quoted_cc_set_by_configure,
10134         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
10135         all_boot_languages, all_stagestuff): Remove.
10136         (target_list): Remove bootstrap targets.
10137         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
10138         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
10139         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
10140         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
10141         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
10142         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
10143         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
10144         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
10145         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
10146         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
10147         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
10148         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
10149         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
10150         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
10151         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
10152         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
10153         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
10154         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
10155         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
10156         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
10157         (mostlyclean): Adjust.
10158         (clean, distclean): Don't mention bootstrap stuff.
10159         * configure: Regenerate.
10160         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
10161         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
10162         treelang/config-lang.in (stagestuff): Remove.
10163         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
10164         stageprofile, stagefeedback, stagestuff): Remove mention.
10165
10166 2007-01-11  Nick Clifton  <nickc@redhat.com>
10167
10168         * config/mcore/predicates.md (mcore_general_movesrc_operand):
10169         Accept CONSTs.
10170         (mcore_general_movdst_operand): Do not accept CONST_INTs.
10171         (mcore_arith_K_S_operand): Run the test for the S constraint not
10172         the test for the M constraint.
10173         (mcore_addsub_operand): Do not accept integer values that are
10174         larger than 32 bits.
10175         * config/mcore/mcore.md: Remove unused constraints from split.
10176         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
10177         (addsi3): Likewise.
10178         (allocate_stack): Likewise.
10179         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
10180         operands to 32 bits.
10181         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
10182         INTVAL.
10183         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
10184         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
10185         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
10186         mcore_output_bclri, mcore_output_andn, output_inline_const,
10187         mcore_output_move, mcore_output_movedouble): Likewise.
10188         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
10189         (output_inline_const): Likewise.
10190         (output_inline_const): Fix format strings used in sprintf
10191         statements.
10192         * config/mcore/mcore-protos.h: Update prototypes for changed
10193         functions in mcore.c.
10194         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
10195         HOST_WIDE_INT and not int.
10196         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
10197         CONST_OK_FOR_N): Likewise.
10198         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
10199         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
10200         an INTVAL.
10201
10202 2007-01-10  Jan Hubicka  <jh@suse.cz>
10203
10204         * tree-vrp.c (remove_range_assertions): Release defs.
10205         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
10206         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
10207
10208 2007-01-10  Paul Brook  <paul@codesourcery.com>
10209
10210         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
10211         * config/arm/arm.md (mulsi3subsi): New insn.
10212
10213 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
10214
10215         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
10216         (tree_transform_and_unroll_loop): New.
10217         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
10218         Declare.
10219
10220 2007-01-10  Robert Kennedy <jimbob@google.com>
10221
10222         * fold-const.c (fold_comparison): Fold comparisons like (x *
10223         1000 < 0) to (x < 0).
10224
10225 2007-01-10  Ian Lance Taylor  <iant@google.com>
10226
10227         * tree-pretty-print.c (dump_generic_node): Print parentheses when
10228         operands have the same priority.
10229
10230 2007-01-10  Tom Tromey  <tromey@redhat.com>
10231
10232         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
10233         (fold_binary): Likewise.
10234         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
10235         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
10236         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
10237         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
10238         * langhooks.h (struct lang_hooks): Removed field
10239         'can_use_bit_fields_p'.
10240
10241 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
10242
10243         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
10244
10245 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
10246
10247         * function.c (get_last_funcdef_no): New function.
10248         * function.h (get_last_funcdef_no): Declare.
10249         * tree-inline.c (initialize_cfun): Add initialization.
10250         (tree_function_versioning): Cleanup.
10251
10252 2007-01-10  Jan Hubicka  <jh@suse.cz>
10253
10254         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
10255         PHIs.
10256
10257 2007-01-10  Sa Liu  <saliu@de.ibm.com>
10258             Ben Elliston  <bje@au.ibm.com>
10259
10260         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
10261         for SAVE_NONLOCAL and Pmode for any other save level.
10262         * spu-protos.h (spu_restore_stack_block): Declare.
10263         * spu.md (save_stack_block): Remove.
10264         (restore_stack_block): Call spu_restore_stack_block.
10265         * spu.c (spu_restore_stack_block): New function.
10266         (spu_expand_epilogue): Remove old comment.
10267
10268 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
10269
10270         PR tree-optimization/30322
10271         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
10272         (cand_value_at): Return the value as aff_tree.
10273         (may_eliminate_iv): Convert the bound from aff_tree to tree.
10274         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
10275         aff_combination_mult): New functions.
10276         (aff_combination_add): Use aff_combination_add_cst.
10277         (aff_combination_convert): Allow conversions to a wider type.
10278         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
10279         * tree-affine.h (aff_combination_mult): Declare.
10280
10281 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
10282
10283         * doc/tm.texi: Update documentation to reflect reality of exec
10284         and start file search behaviours. Update copyright year.
10285         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
10286         header file directories.
10287
10288 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
10289
10290         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
10291         (*cosxf2): Rename to cosxf2_i387.
10292         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
10293         using X87MODEF12 mode macro. Rename patterns to
10294         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
10295         for SSE math.
10296         (*cosdf2, *cossf2): Ditto.
10297         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
10298         to match extended input operands.
10299         (sincos<mode>3): New expander.
10300         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
10301         insn patterns and corresponding splitters.
10302
10303 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
10304
10305         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
10306         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
10307
10308 2007-01-09  Nicolas Pitre  <nico@cam.org>
10309
10310         PR target/30173
10311         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
10312
10313 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
10314
10315         * target.h (struct gcc_target): New field library_rtti_comdat.
10316         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
10317         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
10318         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
10319         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
10320
10321 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
10322
10323         * doc/invoke.texi (Optimize Options): Correct description of -O0.
10324
10325 2007-01-08  Richard Guenther  <rguenther@suse.de>
10326
10327         * tree.h (force_fit_type_double): Export.
10328         (force_fit_type): Remove.
10329         * fold-const.c (force_fit_type_double): New function.
10330         (force_fit_type): Remove.
10331         (int_const_binop): Use it.
10332         (fold_convert_const_int_from_int): Likewise.
10333         (fold_convert_const_int_from_real): Likewise.
10334         (fold_div_compare): Likewise.
10335         (fold_sign_changed_comparison): Likewise.
10336         (fold_unary): Likewise.
10337         (fold_negate_const): Likewise.
10338         (fold_abs_const): Likewise.
10339         (fold_not_const): Likewise.
10340         * c-common.c (shorten_compare): Use force_fit_type_double.
10341         * convert.c (convert_to_pointer): Likewise.
10342
10343 2007-01-08  Richard Guenther  <rguenther@suse.de>
10344
10345         * tree.h (build_int_cst_wide_type): Export.
10346         * tree.c (build_int_cst_wide_type): New function.
10347         (build_int_cst_wide): Fix comment.
10348         * builtins.c (fold_builtin_object_size): Use build_int_cst
10349         to build -1 or 0 of the correct type.  Use fit_double_type
10350         to check for overflow.
10351         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
10352         to build the mask.
10353         (decode_field_reference): Likewise.
10354         (all_ones_mask_p): Likewise.
10355         (native_interpret_int): Use build_int_cst_wide_type.
10356         (fold_binary): Use build_int_cst_type to build an all-ones
10357         value.
10358         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
10359
10360 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
10361
10362         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
10363
10364 2007-01-09  Ben Elliston  <bje@au.ibm.com>
10365
10366         * genautomata.c (STATS_OPTION): New option.
10367         (stats_flag): New flag.
10368         (gen_automata_option): Handle it.
10369         (initiate_automaton_gen): Ditto.
10370         (write_automata): Output statistics only if stats_flag is
10371         set. Likewise, output time statistics only if time_flag is set.
10372         * doc/md.texi (Processor pipeline description): Document new flag.
10373
10374 2007-01-08  Richard Guenther  <rguenther@suse.de>
10375
10376         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
10377         * tree.c (build_int_cst_type): Likewise.
10378         (size_in_bytes): Don't call force_fit_type on the result.
10379         (int_fits_type_p): Use fit_double_type.
10380         * fold-const.c (fit_double_type): New function.
10381         (force_fit_type): Use it.
10382         * tree.h (fit_double_type): Export.
10383
10384 2007-01-08  Jan Hubicka  <jh@suse.cz>
10385
10386         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
10387         * ipa.c (function_and_variable_visibility): Fix return type.
10388
10389 2007-01-08  Richard Guenther  <rguenther@suse.de>
10390
10391         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
10392         of offset to build the index.
10393         * tree-pretty-print.c (dump_generic_node): Don't build negated
10394         const just for printing.
10395         * c-pretty-print.c (pp_c_integer_constant): Likewise.
10396         * builtins.c (fold_builtin_int_roundingfn): Check if result
10397         fits the type by using force_fit_type and comparing the result.
10398         * predict.c (predict_loops): Use compare_tree_int for comparison.
10399         * tree.c (build_int_cst): Fall back to integer_type_node for
10400         NULL_TREE type.
10401         (build_int_cst_wide): Assert type is non-null.
10402
10403 2007-01-08  Roberto Costa  <roberto.costa@st.com>
10404
10405         * tree-vrp.c (extract_range_from_cond_expr): New.
10406         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
10407         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
10408         as expressions.
10409         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
10410         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
10411         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
10412         used as expressions.
10413         * tree-object-size.c (cond_expr_object_size): New.
10414         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
10415
10416 2007-01-08  Jan Hubicka  <jh@suse.cz>
10417
10418         * tree-ssa-forwprop.c (forward_propagate_into_cond,
10419         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
10420         statement.
10421
10422 2007-01-08  Richard Guenther  <rguenther@suse.de>
10423
10424         PR tree-optimization/23603
10425         * tree-vrp.c (set_value_range_to_truthvalue): New function.
10426         (extract_range_from_binary): Fall back to truthvalue instead of
10427         varying for TRUTH_*_EXPR.
10428         (extract_range_from_comparison): Fall back to truthvalue instead of
10429         varying.
10430         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
10431         if all visited PHI values were constant.
10432
10433 2007-01-08  Jan Hubicka  <jh@suse.cz>
10434
10435         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
10436         (cgraph_analyze_function): break out from ...
10437         (cgraph_finalize_compilation_unit): ... here.
10438         (cgraph_expand_function): Remove forgoten commented out line.
10439         (cgraph_optimize): Analyze functions.
10440
10441 2007-01-08  Jan Hubicka  <jh@suse.cz>
10442
10443         * tree-pas.h (TODO_remove_function): New flag.
10444         (TODO_update*): Renumber.
10445         (pass_ipa_increase_alignment,
10446         pass_ipa_function_and_variable_visibility): New passes.
10447         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
10448         (cgraph_function_and_variable_visibility): Move to ipa.c
10449         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
10450         cgraph_increase_alignment.
10451         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
10452         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
10453         calling tree-inline.
10454         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
10455         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
10456         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
10457         (gate_increase_alignment): New function.
10458         (pass_ipa_increase_alignment): New pass.
10459         * ipa.c: Inline tree-pass.h and timevar.h
10460         (function_and_variable_visibility): Move here from cgraphunit.c
10461         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
10462         * passes.c (init_optimization_passes): Add the two new passes.
10463         (execute_todo): Handle cgraph_remove_functions.
10464
10465 2007-01-08  Nick Clifton  <nickc@redhat.com>
10466
10467         * config/frv/predicates.md (reg_or_0_operand): Accept
10468         CONST_DOUBLEs.
10469
10470 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
10471
10472         * config/bfin/rtems.h, config/bfin/t-rtems: New.
10473         * config.gcc: Add bfin*-rtems*.
10474
10475 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10476
10477         * c.opt: Add -flax-vector-conversions.
10478         * c-typeck.c (convert_for_assignment): Pass flag to
10479         vector_types_convertible_p to allow emission of note.
10480         (digest_init): Likewise.
10481         * c-opts.c: Handle -flax-vector-conversions.
10482         * c-common.c (flag_lax_vector_conversions): New.
10483         (vector_types_convertible_p): Unless -flax-vector conversions
10484         has been passed, disallow conversions between vectors with
10485         differing numbers of subparts and/or element types.  If such
10486         a conversion is disallowed, possibly emit a note on the first
10487         occasion only to inform the user of -flax-vector-conversions.
10488         The new last argument specifies this.
10489         * c-common.h (flag_lax_vector_conversions): New.
10490         (vector_types_convertible_p): Add extra argument.
10491         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
10492         char_type_node for V*QI type vectors.
10493         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
10494         Update to satisfy new typechecking rules.
10495         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
10496         C and C++ variants.
10497         * doc/invoke.texi (C Dialect Options): Document
10498         -flax-vector-conversions.
10499
10500 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10501
10502         PR tree-optimization/29877
10503         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
10504         a register variable on the RHS to not be replaceable.
10505
10506 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
10507         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
10508         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
10509         const_simm15, const_pow2, const_npow2): Added.
10510         * config/score/misc.md (insv, extv, extzv, movmemsi,
10511         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
10512         * config/score/score.c (score_address_cost, score_select_cc_mode):
10513         Added.
10514         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
10515         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
10516         Update score_print_operand.
10517         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
10518         Adjust register allocate order and update some macro define.
10519         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
10520         mdx_block_move_straight, mdx_block_move_loop_head,
10521         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
10522         mdx_block_move): Added.
10523         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
10524         mdp_limm): Updated and fix some bug and typo.
10525         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
10526         (movsf, movdf, doloop_end): Added.
10527
10528 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
10529
10530         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
10531         config/arm/thumb2.md: Fix comment typos.
10532         * doc/extend.texi: Fix a typo.
10533
10534 2007-01-07  Eric Christopher  <echristo@apple.com>
10535
10536         * configure.ac: Check for __stack_chk_fail for darwin.
10537         * configure: Regenerate.
10538
10539 2007-01-07  Richard Guenther  <rguenther@suse.de>
10540
10541         * tree-vrp.c (extract_range_from_assert): CSE calls to
10542         compare_values where possible.
10543         (extract_range_from_unary_expr): Likewise.
10544
10545 2007-01-07  Anatoly Sokolov <aesok@post.ru>
10546
10547         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
10548         * config/avr/avr.c (call_insn_operand): Delete function.
10549         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
10550         instead of register number. Use predicates.
10551         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
10552         call_insn_operand): Add.
10553
10554 2007-01-06  Jan Hubicka  <jh@suse.cz>
10555
10556         * tree-pass.h (pass_build_cgraph_edges): Declare.
10557         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
10558         (visited_nodes): Remove.
10559         (cgraph_create_edges): Move to cgraphbuild.c; rename to
10560         build_cgrpah_edges; make visited_nodes local.
10561         (cgraph_process_new_functions): DO not call initialize_inline_failed.
10562         (record_references_in_initializer): Move to cgraphbuild.c
10563         (initialize_inline_failed, rebuild_cgraph_edges,
10564         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
10565         (verify_cgraph_node): Make visited_nodes local.
10566         (cgraph_analyze_function): Do not call cgraph_create_edges and
10567         initialize_inline_failed.
10568         (cgraph_expand_function): Do not call cgraph_lower_function;
10569         assert that function is already lowered.
10570         * Makefile.in (cgraphbuild.o): New.
10571         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
10572         at the end of lowering passes.
10573
10574 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
10575
10576         * ifcvt.c (cond_move_convert_if_block): New function, code
10577         factored out from...
10578         (cond_move_process_if_block): ...here.  Call the new function
10579         on the THEN and ELSE blocks.
10580         (merge_if_block): Do not copy global_live_at_end, merge_blocks
10581         already takes care of this.
10582
10583 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10584
10585         PR c/19978
10586         * tree.h (TREE_OVERFLOW_P): New.
10587         * c-typeck.c (parser_build_unary_op): Warn only if result
10588         overflowed and operands did not.
10589         (parser_build_binary_op): Likewise.
10590         (convert_for_assignment): Remove redundant overflow_warning.
10591         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
10592
10593 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10594
10595         * c-typeck.c (store_init_value): Split over two lines to follow
10596         the GNU coding style.
10597
10598 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
10599
10600         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
10601         __GXX_EXPERIMENTAL_CXX0X__.
10602         * doc/cpp.texi: Same.
10603
10604 2007-01-05  Richard Guenther  <rguenther@suse.de>
10605
10606         PR middle-end/27826
10607         * tree.c (get_narrower): Do not construct COMPONENT_REFs
10608         with mismatched types.  Instead explicitly build a
10609         conversion NOP_EXPR.
10610
10611 2007-01-05  Ian Lance Taylor  <iant@google.com>
10612
10613         * c-common.c (decl_with_nonnull_addr_p): New function.
10614         (c_common_truthvalue_conversion): Call it.
10615         * c-typeck.c (build_binary_op): Likewise.
10616         * c-common.h (decl_with_nonnull_addr_p): Declare.
10617
10618 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
10619
10620         PR c/30360
10621         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
10622         denom against 0.0.
10623
10624 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
10625
10626         * doc/install.texi (Final install): Document the fact that
10627         the GNAT runtime should not be stripped.
10628
10629 2007-01-04  Jan Hubicka  <jh@suse.cz>
10630
10631         * tree-inline.c (fold_marked_statements): Update operand caches
10632         and EH after folding
10633
10634 2007-01-04  Ian Lance Taylor  <iant@google.com>
10635
10636         * c-common.c (check_function_nonnull): Whitespace fix.
10637
10638 2007-01-04  Jan Hubicka  <jh@suse.cz>
10639
10640         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
10641         comitted older version of patch.
10642         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
10643         function, celanup cfg and collect garbage.
10644
10645 2007-01-04  Mike Stump  <mrs@apple.com>
10646
10647         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
10648         (clean): Likewise.
10649
10650 2007-01-04  Eric Christopher  <echristo@apple.com>
10651
10652         * libgcc2.c (__bswapsi2): Use SItype.
10653         (__bswapdi2): Use DItype.
10654         * libgcc2.h: Update for above.
10655
10656 2007-01-04  Paul Brook  <paul@codesourcery.com>
10657
10658         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
10659         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
10660         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
10661         umulsidi3, umulsidi3adddi, smulsi3_highpart,
10662         umulsi3_highpart): Make conditional on !arm_arch6.
10663         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
10664         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
10665         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
10666         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
10667         umulsi3_highpart_v6): New insns.
10668
10669 2007-01-04  Roger Sayle  <roger@eyesopen.com>
10670
10671         * fold-const.c (fold_convert): When casting an expression to void,
10672         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
10673         have a type.  Instead of attempting to build a NOP_EXPR, return
10674         these "special" trees directly.
10675
10676 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
10677
10678         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
10679         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
10680         rs6000_cost->fp not 0 as adjustment for outer NEG.
10681
10682 2007-01-04  Jan Hubicka  <jh@suse.cz>
10683
10684         * cgraph.c (cgraph_release_function_body): New function.
10685         (cgraph_remove_node): Use it.
10686         * cgraph.h (cgraph_release_function_body): Declare.
10687         * cgraphunit.c (cgraph_expand_function): Use it.
10688         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
10689         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
10690         is initialized and while compilation of other function is running.
10691         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
10692         statement CFG annotations from here to ...
10693         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
10694
10695 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
10696
10697         * cfgloop.h (enum li_flags): Make the constants powers of two.
10698
10699 2007-01-04  Jan Hubicka  <jh@suse.cz>
10700
10701         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
10702         set.
10703         (fold_marked_statements): New function.
10704         (optimize_inline_calls, tree_function_versioning): Fold new statements.
10705         * tree-inline.h (copy_body_data): Add statements_to_fold.
10706
10707 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
10708
10709         * config.gcc: Mention libgcc/config.host.
10710         * Makefile.in: Update comments mentioning libgcc.
10711         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
10712         (all.cross, start.encap, rest.encap, rest.cross): Update
10713         dependencies for libgcc move.
10714         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
10715         (clean-target, clean-target-libgcc): Delete.
10716         (srcdirify, GCC_EXTRA_PARTS): New macros.
10717         (libgcc-support, libgcc.mvars): New rules.
10718         (distclean): Remove mention of mklibgcc.
10719         (install): Don't reference INSTALL_LIBGCC.
10720         (install-common): Don't reference EXTRA_PARTS.
10721         (install-libgcc, install-multilib): Delete rules.
10722         * mklibgcc.in: Delete file.
10723         * doc/configfiles.texi: Don't mention mklibgcc.
10724
10725         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
10726         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
10727         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
10728         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
10729         (mklibgcc, ldblspecs): Likewise.
10730
10731         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
10732         (posixpre.def): Use $(T).
10733         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
10734         (SHLIB_SRC, SHLIB_INSTALL): Delete.
10735         (SHLIB_LINK): Make dummy.
10736         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
10737
10738         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
10739
10740         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
10741         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
10742         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
10743         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
10744
10745         * configure.ac (all_outputs): Remove mklibgcc.
10746         * configure: Regenerated.
10747
10748 2007-01-03  Josh Conner  <jconner@apple.com>
10749
10750         PR middle-end/29683
10751         * calls.c (compute_argument_addresses): Set stack and stack_slot
10752         for partial args, too.
10753         (store_one_arg): Use locate.size.constant for the size when
10754         generating a save_area.
10755
10756 2007-01-03  Robert Kennedy <jimbob@google.com>
10757
10758         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
10759         whose definitions are deleted due to basic block merging.
10760
10761 2007-01-03  Paul Brook  <paul@codesourcery.com>
10762
10763         PR target/16634
10764         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
10765         functions.
10766         (use_return_insn): Return 0 for Thumb interrupt functions.
10767         (print_multi_reg): Add rfe argument for IRQ returns.
10768         (arm_output_epilogue): Pop interrupt return address directly into PC.
10769         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
10770
10771 2007-01-03  Paul Brook  <paul@codesourcery.com>
10772
10773         Merge from sourcerygxx-4_1.
10774         * config/arm/thumb2.md: New file.
10775         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
10776         Thumb-2.
10777         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
10778         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
10779         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
10780         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
10781         tables.
10782         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
10783         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
10784         comptibility.
10785         * config/arm/ieee754-sf.S: Ditto.
10786         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
10787         (thumb1_base_register_rtx_p): ... to this.
10788         (thumb_index_register_rtx_p): Rename...
10789         (thumb1_index_register_rtx_p): ... to this.
10790         (thumb_output_function_prologue): Rename...
10791         (thumb1_output_function_prologue): ... to this.
10792         (thumb_legitimate_address_p): Rename...
10793         (thumb1_legitimate_address_p): ... to this.
10794         (thumb_rtx_costs): Rename...
10795         (thumb1_rtx_costs): ... to this.
10796         (thumb_compute_save_reg_mask): Rename...
10797         (thumb1_compute_save_reg_mask): ... to this.
10798         (thumb_final_prescan_insn): Rename...
10799         (thumb1_final_prescan_insn): ... to this.
10800         (thumb_expand_epilogue): Rename...
10801         (thumb1_expand_epilogue): ... to this.
10802         (arm_unwind_emit_stm): Rename...
10803         (arm_unwind_emit_sequence): ... to this.
10804         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
10805         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
10806         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
10807         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
10808         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
10809         thumb2_output_casesi): New functions.
10810         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
10811         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
10812         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
10813         THUMB2_WORK_REGS): Define.
10814         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
10815         arm_condexec_mask, arm_condexec_masklen)): New variables.
10816         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
10817         (arm_override_options): Check new CPU capabilities.
10818         Set new architecture flag variables.
10819         (arm_isr_value): Handle v7m interrupt functions.
10820         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
10821         Thumb-2.
10822         (const_ok_for_arm): Handle Thumb-2 constants.
10823         (arm_gen_constant): Ditto.  Use movw when available.
10824         (arm_function_ok_for_sibcall): Return false for v7m interrupt
10825         functions.
10826         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
10827         (thumb_find_work_register, arm_load_pic_register,
10828         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
10829         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
10830         print_multi_reg, output_mov_long_double_fpa_from_arm,
10831         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
10832         output_mov_double_fpa_from_arm, output_move_double,
10833         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
10834         output_return_instruction, arm_output_function_prologue,
10835         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
10836         arm_output_mi_thunk, thumb_set_return_address): Ditto.
10837         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
10838         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
10839         (arithmetic_instr, shift_op): Use arm_shift_nmem.
10840         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
10841         '!' and 'L'.
10842         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
10843         (thumb_expand_prologue): Use thumb_set_frame_pointer.
10844         (arm_file_start): Output directive for unified syntax.
10845         (arm_unwind_emit_set): Handle stack alignment instruction.
10846         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
10847         Add v6t2, v7, v7a, v7r and v7m.
10848         (RETLDM): Add Thumb-2 code.
10849         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
10850         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
10851         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
10852         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
10853         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
10854         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
10855         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
10856         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
10857         ADJUST_INSN_LENGTH): Define.
10858         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
10859         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
10860         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
10861         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
10862         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
10863         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
10864         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
10865         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
10866         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
10867         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
10868         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
10869         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
10870         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
10871         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
10872         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
10873         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
10874         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
10875         cortex-m3.
10876         * config/arm/arm-tune.md: Regenerate.
10877         * config/arm/arm-protos.h: Update prototypes.
10878         * config/arm/vfp.md: Enable patterns for Thumb-2.
10879         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
10880         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
10881         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
10882         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
10883         * config/arm/libunwind.S: Add Thumb-2 code.
10884         * config/arm/constraints.md: Update include Thumb-2.
10885         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
10886         * config/arm/ieee754-df.S: Ditto.
10887         * config/arm/bpabi.S: Ditto.
10888         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
10889         * config/arm/predicates.md (low_register_operand,
10890         low_reg_or_int_operand, thumb_16bit_operator): New.
10891         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
10892         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
10893         * config/arm/t-arm-elf: Add armv7 multilib.
10894         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
10895         Include thumb2.md.
10896         (UNSPEC_STACK_ALIGN, ce_count): New.
10897         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
10898         arm_zero_extendsidi2, arm_zero_extendqidi2): New
10899         insns/expanders.
10900         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
10901         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
10902         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
10903         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
10904         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
10905         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
10906         insns.
10907         * doc/extend.texi: Document ARMv7-M interrupt functions.
10908         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
10909
10910 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
10911
10912         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
10913         (struct _Unwind_Context): Rename args_size to flags, remove
10914         signal_frame field, add a new args_size field and version field.
10915         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
10916         _Unwind_IsExtendedContext): New inline functions.
10917         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
10918         Assume by_value array is only present if _Unwind_IsExtendedContext.
10919         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
10920         _Unwind_IsSignalFrame.
10921         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
10922         (uw_update_context_1): Use _Unwind_SetSignalFrame.
10923         (uw_init_context_1): Initialize context->flags to
10924         EXTENDED_CONTEXT_BIT.
10925         * config/rs6000/linux-unwind.h (frob_update_context): Use
10926         _Unwind_SetSignalFrame.
10927
10928 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10929
10930         PR middle-end/30353
10931         * gimplify.c (gimplify_modify_expr_complex_part): Move below
10932         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
10933         the value.
10934
10935 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
10936
10937         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
10938         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
10939         RET, AT_SP): Remove.
10940         * config/i386/i386.md (*sse_prologue_save_insn): Use return
10941         instead of RET.
10942
10943         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10944         * cfgbuild.c (find_basic_blocks): Likewise.
10945         * cfgrtl.c (rtl_create_basic_block): Likewise.
10946         * function.c (temp_slots_at_level): Likewise.
10947         * reg-stack.c (stack_regs_mentioned): Likewise.
10948         * regclass.c (allocate_reg_info): Likewise.
10949         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10950         set_bb_for_stmt, move_block_to_fn): Likewise.
10951         * tree-complex.c (tree_lower_complex): Likewise.
10952         * vec.h (VEC_safe_grow_cleared): New.
10953
10954         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
10955
10956 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
10957
10958         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
10959         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
10960         to loop_version.
10961         * cfgloopmanip.c (scale_loop_frequencies): Export.
10962         (loopify): Scale the frequencies by prescribed coefficients.
10963         (set_zero_probability): New function.
10964         (duplicate_loop_to_header_edge): Improve updating of frequencies.
10965         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
10966         and frequencies according to arguments.
10967         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
10968         correctly.
10969         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
10970         * modulo-sched.c (sms_schedule): Set probabilities for entering
10971         versioned loop correctly.
10972         * tree-vect-transform.c (vect_transform_loop): Ditto.
10973         * cfgloop.h (loopify, loop_version): Declaration changed.
10974         (scale_loop_frequencies): Declared.
10975
10976 2007-01-02  Jan Hubicka  <jh@suse.cz>
10977
10978         * cgraph.c: Include tree-flow.h
10979         (cgraph_add_new-function): Handle IPA_SSA mode; execute
10980         early_local_passes.
10981         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
10982         * tree-pass.h (pass_all_early_optimizations): Declare.
10983         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
10984         early_local_passes.
10985         (cgraph_analyze_function): Do early_local_passes.
10986         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
10987         Do not add referenced vars.
10988         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
10989         SSA form.
10990         (gate_all_early_local_passes): New gate.
10991         (pass_early_local_passes): Use new gate.
10992         (execute_early_local_optimizations): New functions.
10993         (gate_all_early_optimizations): New gate.
10994         (pass_all_early_optimizations): New pass.
10995         (execute_free_datastructures): Free SSA only when initialized.
10996         (gate_init_datastructures): Init only when optimizing.
10997         (tree_lowering_passes): Do early local passes when called late.
10998         * tree-profile.c (do_tree_profiling): Don't profile functions added
10999         late.
11000         (do_early_tree_profiling, pass_early_tree_profile): Kill.
11001         * tree-cfg.c (update_modified_stmts): Do not update when operands are
11002         not active.
11003         * passes.c (init_optimizations_passes): Reorder so we go into SSA
11004         during early_local_passes.
11005         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
11006
11007
11008 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
11009
11010         * Makefile.in: Update copyright year.
11011
11012 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
11013
11014         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
11015         in $(lang_checks) and check-consistency targets.
11016
11017 2007-01-02  Jan Hubicka  <jh@suse.cz>
11018
11019         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
11020         Do not add referenced vars.
11021         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
11022         are not active.
11023         * passes.c (init_optimization_passes): Put mudflap_2 after
11024         free_datastructures.
11025
11026 2007-01-02  Jan Hubicka  <jh@suse.cz>
11027
11028         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
11029         Set NOTHROW flag on call statements proved to be nothrow.
11030         Update statement of local calls so new pure/const functions are
11031         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
11032         goto receivers.
11033         (tree_rest_of_compilation): Register hooks and initialize bitmap
11034         early. Do not set after_inlining flag.
11035
11036 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
11037
11038         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
11039         HOST_BITS_PER_LONGLONG
11040
11041 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
11042
11043         PR c/19977
11044         * c-typeck.c (store_init_value): Don't emit pedantic overflow
11045         warning for non-static initializers.
11046
11047 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
11048
11049         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
11050         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
11051         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
11052         Always use set_unique_reg_note to add REG_EQUAL notes.
11053
11054 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
11055
11056         Revert:
11057         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
11058
11059         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
11060         * cfgbuild.c (find_basic_blocks): Likewise.
11061         * cfgrtl.c (rtl_create_basic_block): Likewise.
11062         * function.c (temp_slots_at_level): Likewise.
11063         * reg-stack.c (stack_regs_mentioned): Likewise.
11064         * regclass.c (allocate_reg_info): Likewise.
11065         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
11066         set_bb_for_stmt, move_block_to_fn): Likewise.
11067         * tree-complex.c (tree_lower_complex): Likewise.
11068         * vec.h (VEC_safe_grow_cleared): New.
11069
11070 2007-01-02  Ian Lance Taylor  <iant@google.com>
11071
11072         * c-common.c (c_common_truthvalue_conversion): When warning about
11073         using an assignment as a truth value, set TREE_NO_WARNING.
11074
11075 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11076
11077         PR middle-end/7651
11078         * c.opt (Wold-style-declaration): New.
11079         * doc/invoke.texi (C-only Warning Options): New.
11080         (Wold-style-declaration): Document it.
11081         (Wextra): Enabled by -Wextra.
11082         * c-opts.c (c_common_post_options): Enabled by -Wextra.
11083         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
11084         -Wold-style-declaration.
11085
11086 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
11087
11088         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
11089         * cfgbuild.c (find_basic_blocks): Likewise.
11090         * cfgrtl.c (rtl_create_basic_block): Likewise.
11091         * function.c (temp_slots_at_level): Likewise.
11092         * reg-stack.c (stack_regs_mentioned): Likewise.
11093         * regclass.c (allocate_reg_info): Likewise.
11094         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
11095         set_bb_for_stmt, move_block_to_fn): Likewise.
11096         * tree-complex.c (tree_lower_complex): Likewise.
11097         * vec.h (VEC_safe_grow_cleared): New.
11098
11099 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
11100
11101         * c-common.c (c_common_nodes_and_builtins): Since variants of
11102         void_type_node get built before it is given a name, we need to
11103         give those variants the name, too.
11104         (complete_array_type): We need to work with the canonical main
11105         type of the array, from which we will build the qualified version.
11106         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
11107         * print-tree.c (print_node): Display canonical type information
11108         for each type.
11109         * stor-layout.c (layout_type): When we don't know the
11110         alignment of a type for which we're building an array, we end up
11111         guessing wrong, so make the type require structural equality.
11112         * tree.c (make_node_stat): When we build a new type, it is its
11113         own canonical type.
11114         (build_type_attribute_qual_variant): When building an attribute
11115         variant, its canonical type is the non-attribute variant. However,
11116         if the attributes are target-dependent and they differ, we need to
11117         use structural equality checks for this type.
11118         (build_qualified_type): A qualified type is not equivalent to its
11119         unqualified variant; set the canonical type appropriately.
11120         (build_distinct_type_copy): When building a distinct type from
11121         another type, the new type is its own canonical type.
11122         (build_variant_type_copy): When building a new type variant, we
11123         assume that it is equivalent to the original type.
11124         (build_pointer_type_for_mode): When building a pointer type, also
11125         build a canonical type pointer.
11126         (build_reference_type_for_mode): When building a reference type,
11127         also build a canonical type reference.
11128         (build_index_type): When we can't hash an index type (e.g.,
11129         because its maximum value is negative), the index type requires
11130         structural equality tests.
11131         (build_array_type): Build the canonical form of an array type.
11132         (build_function_type): Function types require structural equality,
11133         because they contain default arguments, attributes, etc.
11134         (build_method_type_directly): Ditto for method types.
11135         (build_offset_type): Build the canonical offset type.
11136         (build_complex_type): Build the canonical vector type.
11137         (make_vector_type): Build the canonical vector type.
11138         * tree.h (TYPE_CANONICAL): New.
11139         (TYPE_STRUCTURAL_EQUALITY_P): New.
11140         (SET_TYPE_STRUCTURAL_EQUALITY): New.
11141         (struct tree_type): Added "canonical" field.
11142         * params.h (VERIFY_CANONICAL_TYPES): New.
11143         * doc/c-tree.texi (TYPE_CANONICAL): Document.
11144         (TYPE_STRUCTURAL_EQUALITY_P): Document.
11145         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
11146         * doc/invoke.texi (verify-canonical-types): Document --param
11147         parameter for verifying canonical types.
11148
11149 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11150
11151         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
11152         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
11153         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
11154         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
11155         tm_file.
11156         * config/rs6000/e500.h: New.
11157         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
11158         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
11159         Remove.
11160         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
11161         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
11162         TARGET_E500_DOUBLE): Remove.
11163         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
11164         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
11165         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
11166         * config/rs6000/rs6000.c (rs6000_override_options): Use
11167         CHECK_E500_OPTIONS.
11168
11169 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11170
11171         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
11172         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
11173         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
11174         rs6000_emit_cmove): Don't check TARGET_E500.
11175         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
11176         sordered): Don't check TARGET_E500.
11177
11178 2007-01-01  Eric Christopher  <echristo@apple.com>
11179
11180         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
11181         HARD_REGISTER_NUM_P.
11182
11183 2007-01-01  Roger Sayle  <roger@eyesopen.com>
11184
11185         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
11186         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
11187         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
11188         eq/ne Y".
11189
11190 2007-01-01  Mike Stump  <mrs@apple.com>
11191
11192         * configure.ac: Remove support for building with Apple's gcc-3.1.
11193
11194 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11195
11196         PR middle-end/30311
11197         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
11198         REG is a hard register.  Do not modify REG before calling
11199         subreg_nregs.
11200         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
11201         multiple of the size of YMODE for certain lowpart cases.
11202
11203 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11204
11205         PR middle-end/30253
11206         * gimplify (voidify_wrapper_expr): Update for
11207         GIMPLE_MODIFY_STMT.
11208
11209 2007-01-01  Andreas Schwab  <schwab@suse.de>
11210
11211         PR target/29166
11212         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
11213         save of BR0 in extra_spill_size instead of spill_size.
11214         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
11215         area.
11216         (ia64_expand_epilogue): Restore BR0 from its new location.
11217
11218 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11219
11220         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
11221         Use a temporary variable if the left hand side is not a gimple
11222         register.
11223
11224 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11225
11226         * gimplify.c (gimplify_return_expr): Make the temporary variable
11227         for the return expression, a gimple register variable.
11228
11229 2007-01-01  Jan Hubicka  <jh@suse.cz>
11230
11231         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
11232         INSN_LIST.
11233
11234 2007-01-01  Mike Stump  <mrs@apple.com>
11235
11236         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
11237         .literal16.
11238         * config/darwin.c (machopic_select_rtx_section): Use
11239         HAVE_GAS_LITERAL16.
11240         (darwin_mergeable_constant_section): Likewise.
11241         * configure: Regenerate.
11242         * config.in: Regenerate.
11243
11244 2007-01-01  Jan Hubicka  <jh@suse.cz>
11245             Andrew Pinski  <pinskia@gmail.com>
11246
11247         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
11248         before starting IPA passes.