OSDN Git Service

* fold-const.c (div_if_zero_remainder): Do signed divide for pointer
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-18  Jan Hubicka  <jh@suse.cz>
2
3         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
4         types.
5
6 2007-04-18  Eric Christopher  <echristo@apple.com>
7
8         * config/rs6000/darwin.md (load_macho_picbase): Use link register
9         only. Update operands.
10         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
11         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
12         link register to pic register.
13
14 2007-04-18  Dirk Mueller  <dmueller@suse.de>
15
16         PR diagnostic/31227
17         * tree-vrp.c (search_for_addr_array): New.
18         (check_array_bounds): Suppress warning about
19         address taken of array refs if its not de-referenced.
20
21 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
22
23         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
24         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
25
26         * tree-vectorizer.h (NITERS_KNOWN_P): New.
27         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
28         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
29
30         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
31         dump print.
32         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
33         print message.
34         (vect_analyze_scalar_cycles): Fix indentation.
35         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
36         (vect_mark_relevant): Include phis in relevance analysis.
37
38         * tree-vect-transform.c (vect_transform_loop): Add an assert.
39
40 2007-04-18  Anatoly Sokolov <aesok@post.ru>
41
42         * config/avr/avr.c (ptrreg_to_str): Replace error() with
43         output_operand_lossage().
44
45 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
46
47         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
48         the unused code for reduction without adjust-in-epilog to simplify the
49         function.
50
51 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
52
53         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
54         (S390_TDC_NEGATIVE_ZERO): New constant.
55         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
56         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
57         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
58         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
59         (S390_TDC_POSITIVE_INFINITY): New constant.
60         (S390_TDC_NEGATIVE_INFINITY): New constant.
61         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
62         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
63         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
64         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
65         (S390_TDC_INFINITY): New constant.
66         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
67         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
68         optimization for UNSPEC_CCZ_TO_INT.
69         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
70         ("*ccz_to_int"): New insn.
71         ("isinf<mode>2"): New insn.
72         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
73         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
74         (UNSPEC_CCZ_TO_INT): New constant.
75
76 2007-04-18  Richard Guenther  <rguenther@suse.de>
77
78         PR tree-optimization/19431
79         PR tree-optimization/21463
80         * tree-pass.h (pass_phiprop): Declare.
81         * passes.c (init_optimization_passes): New phiprop pass.
82         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
83         (phivn_valid_p): New helper function.
84         (phiprop_insert_phi): Likewise.
85         (propagate_with_phi): Likewise.
86         (tree_ssa_phiprop): New propagator propagating loads
87         through phi nodes if profitable.
88
89 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
90
91         * tree-vect-analyze.c (process_use): New function.
92         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
93         Check phis in all bbs.
94         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
95         assert.
96
97 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
98
99         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
100         we use REG_EQUAL.
101
102 2007-04-17  Anatoly Sokolov <aesok@post.ru>
103
104         PR target/30483
105         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
106         error().
107
108 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
109
110         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
111         on "0".
112         (sse_vmmulv4sf3): Likewise.
113         (sse2_vmaddv2df3): Likewise.
114         (sse2_vmmulv2df3): Likewise.
115
116 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
117
118         PR rtl-optimization/31360
119         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
120         (target_reg_cost): New.
121         (init_set_costs): Initialize target_reg_cost.  Add comments
122         regarding the rationale of the costs.
123         (global_cost_for_size): Renamed to...
124         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
125         of register pressure.
126         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
127         estimate_reg_pressure_cost.  Add number of ivs.
128         (determine_set_costs): Dump target_reg_cost.
129         * loop-invariant.c (gain_for_invariant):  Use
130         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
131         (best_gain_for_invariant, find_invariants_to_move): Remove
132         n_inv_uses.
133         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
134         (target_reg_cost): Declare.
135         (global_cost_for_size): Declaration removed.
136         (estimate_reg_pressure_cost): Declare.
137
138 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
139
140         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
141         regnos into even/odd register pairs.
142         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
143         TDmode similar to the other floating point modes.
144         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
145         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
146         define_expand's.
147         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
148         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
149         (movdd_hardfloat64): Use TARGET_MFPGPR.
150
151 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
152
153         * reload1.c (delete_output_reload): Don't count output in n_inherited.
154
155         Revert
156         2005-01-05  Richard Henderson  <rth@redhat.com>
157         PR rtl-opt/10692
158         * reload1.c (do_input_reload): Restrict the optimization deleteing
159         a previous output reload to RELOAD_FOR_INPUT.
160
161 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
162
163         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
164         induc_vec_info_type.
165         (vectorizable_induction): New function declaration.
166         * tree-vect-transform.c (get_initial_def_for_induction): No need to
167         check if already vectorized.  Find first place in BB where new stmts
168         can be inserted.  Takes only one argument.
169         (vectorizable_induction): New function.
170         (vect_transform_stmt): Add case for induc_vec_info_type to call
171         vectorizable_induction.
172         (vect_transform_loop): Consider phis for vectorization.
173         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
174         condition.
175         (analyze_operations): Call vectorizable_induction when analyzing phis.
176         Fix comment.
177         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
178         (vect_mark_relevant): Include phis in relevance analysis.
179         (vect_mark_stmts_to_be_vectorize): Likewise.
180         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
181
182 2007-04-16  Lawrence Crowl  <crowl@google.com>
183
184         * doc/invoke.texi (Debugging Options): Add documentation for the
185         -femit-struct-debug options -femit-struct-debug-baseonly,
186         -femit-struct-debug-reduced, and
187         -femit-struct-debug-detailed[=...].
188
189         * c-opts.c (c_common_handle_option): Add
190         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
191         and OPT_femit_struct_debug_detailed_.
192         * c.opt: Add specifications for
193         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
194         and -femit-struct-debug-detailed[=...].
195         * opts.c (set_struct_debug_option): Parse the
196         -femit-struct-debug-... options.
197         * opts.c (matches_main_base, main_input_basename,
198         main_input_baselength, base_of_path, matches_main_base): Add
199         variables and functions to compare header base name to compilation
200         unit base name.
201         * opts.c (should_emit_struct_debug): Add to determine to emit a
202         structure based on the option.
203         (dump_struct_debug) Also disabled function to debug this
204         function.
205         * opts.c (handle_options): Save the base name of the
206         compilation unit.
207
208         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
209         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
210         This hook indicates if a type is generic.  Set it by default
211         to "never generic".
212         * langhooks.h (struct lang_hooks_for_types): Add a new hook
213         to determine if a struct type is generic or not.
214         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
215         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
216         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
217         with live C++ hook.
218
219         * flags.h (enum debug_info_usage): Add an enumeration to describe
220         a program's use of a structure type.
221         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
222         to indicate the program's usage of the type.  Filter structs based
223         on the -femit-struct-debug-... specification.
224         (gen_type_die): Split into two routines, gen_type_die and
225         gen_type_die_with_usage.  gen_type_die is now a wrapper
226         that assumes direct usage.
227         (gen_type_die_with_usage): Replace calls to gen_type_die
228         with gen_type_die_with_usage adding the program usage of
229         the referenced type.
230         (dwarf2out_imported_module_or_decl): Suppress struct debug
231         information using should_emit_struct_debug when appropriate.
232
233 2007-04-16  Ian Lance Taylor  <iant@google.com>
234
235         PR tree-optimization/31522
236         * tree-vrp.c (vr_phi_edge_counts): New static variable.
237         (vrp_initialize): Allocate vr_phi_edge_counts.
238         (vrp_visit_phi_node): Don't push to infinity if we saw a new
239         executable edge.  Drop test for all constants.
240         (vrp_finalize): Free vrp_phi_edge_counts.
241
242         * doc/cpp.texi (Common Predefined Macros): Clarify description of
243         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
244
245         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
246         predecessors at head rather than tail.
247
248 2007-04-16  Matthias Klose  <doko@debian.org>
249
250         * gcc/config/alpha/linux.h (CPP_SPEC): Define.
251         * gcc/config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
252
253 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
254
255         * function.h: Remove sequence_stack extern declaration.
256
257 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
258
259         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
260         TARGET_FIDOA.
261         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
262         defined.
263
264 2007-04-16  Anatoly Sokolov <aesok@post.ru>
265
266         * config/avr/avr.c (avr_arch_types): Rearranging  array.
267         (enum avr_arch): Add.
268         (avr_mcu_types): Use avr_arch enumeration constants instead of
269         numbers.
270         * config/avr/avr.h (LINK_SPEC): Simplify.
271
272 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
273
274         * config/m68k/m68k.c (m68k_libcall_value,
275         m68k_function_value): Use macros for register names more.
276
277         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
278         instead.
279         (M68K_REGNAME): Use A6_REG.
280         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
281
282 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
283
284         PR middle-end/28071
285         * sched-int.h (struct deps): Split field 'pending_lists_length' into
286         'pending_read_list_length' and 'pending_write_list_length'.  Update
287         comment.
288         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
289         to handle two length counters instead of one.  Update all uses.
290         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
291         two length counters instead of one.
292         * sched-rgn.c (propagate_deps): Update to handle two length counters
293         instead of one.
294
295 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
296
297         PR target/31582
298         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
299         copy of source, pass it to ix86_expand_vector_set and return
300         it as target.
301
302 2007-04-16  David Ung  <davidu@mips.com>
303             Joseph Myers  <joseph@codesourcery.com>
304
305         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
306         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
307         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
308         Add 74K processor information.
309         * config/mips/mips.md: Include 74k.md.
310         (cpu): Add 74kc,74kf,74kx.
311         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
312         * config/mips/74k.md: New.
313         * doc/invoke.texi (MIPS Options): Document 74K support.
314
315 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
316
317         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
318         vectorizable_* functions.
319         * tree-vect-transform.c (vectorizable_call): Add check for
320         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
321         (vectorizable_store): likewise.
322         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
323         Add comments.
324         (vectorizable_operation, vectorizable_type_demotion): Likewise.
325         (vectorizable_type_promotion, vectorizable_load): Likewise.
326         (vectorizable_live_operation, vectorizable_condition): Likewise.
327         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
328         STMT_VINFO_LIVE_P.
329         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
330
331 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
332
333         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
334         register numbers more.
335         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
336         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
337         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
338         FUNCTION_VALUE_REGNO_P): Likewise.
339         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
340         STATIC_CHAIN_REGNUM): Likewise.
341         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
342         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
343         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
344         * config/m68k/m68k.md (FP_REG): New.
345
346 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
347
348         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
349         alignment on fido.
350
351 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
352
353         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
354         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
355         comment typos.
356
357 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
358
359         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
360         cold loops.
361
362 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
363
364         PR c/31520
365         * c-decl.c (finish_decl): Grab the type of the decl after the call
366         to store_init_value.
367
368 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
369
370         * common.opt (fforward-propagate): Fix "Optimization" annotation.
371
372 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
373
374         PR c++/25874
375         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
376         post dominators and cleanup cfg before returning.
377
378 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
379
380         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
381         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
382
383 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
384
385         * config.gcc: Recognize fido.
386         * config/m68k/m68k-devices.def (fidoa): New.
387         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
388         __mfido__.
389         (FL_FIDOA, TARGET_FIDOA): New.
390         * config/m68k/m68k.opt (mfidoa): New.
391
392 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
393
394         PR middle-end/31322
395         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
396         when a personality function is used.
397
398 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
399
400         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
401
402 2007-04-13  Mike Stump  <mrs@apple.com>
403
404         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
405         we can...
406         * config/darwin.opt (fapple-kext): Make C++ only.
407         * config/darwin.c (darwin_override_options): Remove code to ensure
408         -fapple-kext is given for C++ only.
409
410 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
411
412         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
413         * config/mips/mips.c (override_options): Call
414         SUBTARGET_OVERRIDE_OPTIONS, if defined.
415
416 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
417
418         * config/i386/i386.opt (msvr3-shlib): Removed.
419
420         * doc/invoke.texi: Remove -msvr3-shlib.
421
422 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
423
424         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
425         with "popcnt" instruction.
426
427 2007-04-13  Richard Guenther  <rguenther@suse.de>
428
429         PR tree-optimization/21258
430         * tree-vrp.c (compare_case_labels): New helper.
431         (find_switch_asserts): New function.
432         (find_assert_locations): Call it for SWITCH_EXPRs.
433
434 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
435
436         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
437         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
438         check is now implied in X87_FLOAT_MODE_P.
439         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
440         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
441         (fix_trunc<mode>_i386_fisttp): Ditto.
442         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
443         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
444         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
445         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
446         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
447         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
448         (unnamed_splitters): Ditto.
449         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
450         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
451         FIRST_SSE_REG for local functions when SSE math is enabled or
452         for functions with sseregparm attribute.
453         (standard_80387_constant_p): Return -1 if mode is not
454         X87_FLOAT_MODE_P.
455         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
456         (ix86_expand_compare): Ditto.
457         (ix86_expand_carry_flag_compare): Ditto.
458         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
459         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
460         DECIMAL_FLOAT_MODE_P.
461         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
462         of SCALAR_FLOAT_MODE_P.
463         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
464         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
465         checks before FLOAT_MODE_P.
466         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
467         before FLOAT_MODE_P.
468         [DIV]: Ditto.
469         [NEG]: Ditto.
470         [ABS]: Ditto.
471         [SQRT]: Ditto.
472         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
473
474 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
475             Charles Wilson  <libtool@cwilson.fastmail.fm>
476
477         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
478         (libgcc.mvars): Don't depend on them.
479         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
480         * exec-tool.in: New.
481
482 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
483
484         * doc/invoke.text (--help): Document --help=common.
485
486 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
487
488         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
489
490 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
491
492         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
493         * genemit.c (main): Emit #include "integrate.h".
494         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
495         (LOADGP_RTP): New mips_loadgp_style.
496         * config/mips/mips.h: Include config/vxworks-dummy.h.
497         (TARGET_RTP_PIC): New macro.
498         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
499         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
500         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
501         for TARGET_RTP_PIC.
502         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
503         -mvxworks-pic when using -mrtp and a PIC option.
504         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
505         for RTP PIC.
506         (mips_symbolic_constant_p, mips_symbolic_address_p)
507         (mips_symbol_insns): Handle SYMBOL_HALF.
508         (override_options): Warn about -G and -mrtp being used together.
509         Initialize mips_lo_relocs[SYMBOL_HALF].
510         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
511         (mips_emit_loadgp): Handle LOADGP_RTP.
512         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
513         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
514         (tablejump): Handle function-relative case table entries if
515         TARGET_RTP_PIC.
516         * config/mips/predicates.md (symbol_ref_operand): New predicate.
517
518 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
519
520         * config/mips/mips.md (load_call<mode>): Allow any general register.
521         destination.
522         (sibcall_value_internal, sibcall_value_multiple_internal)
523         (call_value_internal, call_value_split, call_value_multiple_internal)
524         (call_value_multiple_split): Remove constraints from operand 0.
525
526 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
527
528         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
529         rather than loadgp_noshared.
530         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
531         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
532         gen_loadgp.
533         * config/mips/mips.md (loadgp): Rename to...
534         (loadgp_newabi): ...this.
535         (loadgp_noshared): Rename to...
536         (loadgp_absolute): ...this.
537
538 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
539
540         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
541         false for locally-binding symbols.
542         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
543
544 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
545
546         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
547         (SYMBOL_GOT_PAGE_OFST): ...this.
548         (SYMBOL_GOT_GLOBAL): Rename to...
549         (SYMBOL_GOT_DISP): ...this.
550         (SYMBOL_GOTOFF_GLOBAL): Rename to...
551         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
552         * config/mips/mips.c (mips_global_symbol_p): New function.
553         (mips_symbol_binds_local_p): Likewise.
554         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
555         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
556         and mips_symbol_binds_local_p.
557         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
558         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
559         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
560         SYMBOL_GOTOFF_DISP.
561         (mips_ok_for_lazy_binding_p): New function.
562         (mips_load_call_address, mips_expand_call): Use it.
563         (mips_dangerous_for_la25_p): Likewise.
564         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
565         (*got_disp<mode>): Use got_disp_operand instead of
566         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
567         SYMBOL_GOTOFF_GLOBAL.
568         (*got_page<mode>): Use got_page_ofst_operand instead of
569         local_got_operand.
570         * config/mips/predicates.md (const_call_insn_operand): Use
571         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
572         (global_got_operand): Rename to...
573         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
574         SYMBOL_GOT_GLOBAL.
575         (local_got_operand): Rename to...
576         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
577         of SYMBOL_GOT_LOCAL.
578
579 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
580
581         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
582         TARGET_CALL_CLOBBERED_GP.
583         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
584         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
585         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
586         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
587         of TARGET_ABICALLS && !TARGET_NEWABI.
588         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
589         * config/mips/mips.c (mips_load_call_address): Check
590         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
591         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
592         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
593         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
594         TARGET_ABICALLS && TARGET_NEWABI.
595         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
596         TARGET_ABICALLS.
597         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
598         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
599         TARGET_ABICALLS && TARGET_NEWABI.
600         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
601         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
602         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
603         whether indirect calls must use $25.
604         (mips_extra_live_on_entry): Check TARGET_GOT instead of
605         TARGET_ABICALLS.
606         * config/mips/mips.md (jal_macro): Check flag_pic and
607         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
608         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
609         instead of TARGET_ABICALLS.
610         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
611         TARGET_ABICALLS && TARGET_OLDABI.
612         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
613         (sibcall): In the comment above the define_insn, mention
614         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
615         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
616         instead of TARGET_ABICALLS.
617
618 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
619
620         * doc/md.texi (Blackfin family constraints): Document PA and PB.
621         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
622         (MACFLAGS_MATCH_P): New macro.
623         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
624         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
625         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
626         the other MACFLAG constants.
627         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
628         (flag_machi): Tighten constraints.  Renumber some of the operands.
629         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
630         output template.
631         (flag_machi_parts_acconly): New pattern.
632         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
633         used.
634         (flag_macinit1hi): Tighten constraints.
635         (flag_mul_macv2hi_parts_acconly): New pattern.
636
637         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
638         Use a more efficient implementation.
639         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
640         inline sequences when not optimizing for size.
641
642         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
643         movhi_high2low): Delete, merge functionality into...
644         (packv2hi): ... this pattern.
645
646         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
647         * config/bfin/bfin.opt (msim): New option.
648         (mcpu=): New option.
649         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
650         (bfin_cpu_t): Typedef of enum bfin_cpu.
651         (bfin_cpu_type): New declaration.
652         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
653         -msim and -mcpu= options.
654         (LIB_SPEC): Likewise.
655         * config/bfin/bfin.c (bfin_cpu_type): Define.
656         (bfin_handle_option): Handle -mcpu= option.
657         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
658         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
659         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
660
661 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
662
663         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
664         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
665         (powerpc-wrs-vxworksae): Use ${tm_file}.
666         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
667         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
668         * config/i386/vx-common.h: New file.
669
670 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
671
672         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
673         of crt0.o%s.
674
675 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
676
677         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
678         ldxtr.
679
680 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
681
682         PR c++/31078
683         PR c++/31103
684         * c-common.c (c_build_qualified_type): Set canonical type
685         appropriately.
686
687 2007-04-12  Richard Guenther  <rguenther@suse.de>
688
689         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
690         lower bound and element size if lower bound is not zero
691         or either of the ARRAY_REF operands is set.
692
693 2007-04-12  Richard Guenther  <rguenther@suse.de>
694
695         PR tree-optimization/24689
696         PR tree-optimization/31307
697         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
698         indices by value.
699         * gimplify.c (canonicalize_addr_expr): To be consistent with
700         gimplify_compound_lval only set operands two and three of
701         ARRAY_REFs if they are not gimple_min_invariant.  This makes
702         it never at this place.
703         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
704
705 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
706
707         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
708         null before emitting a .nsubspa directive.
709
710 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
711
712         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
713         need_to_partition_p if there are no memory statements in the
714         function.
715
716 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
717
718         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
719         (gcd_of_steps_may_divide_p): New function.
720         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
721
722 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
723
724         * reload.c (find_reloads_toplev, find_reloads_address,
725         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
726         not a pointer equality test, to decide if we need to call
727         push_reg_equiv_alt_mem.
728
729 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
730
731         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
732         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
733         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
734
735 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
736
737         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
738         vector to be positive.
739
740 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
741
742         PR 30735
743         PR 31090
744         * doc/invoke.texi: Document --params max-aliased-vops and
745         avg-aliased-vops.
746         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
747         debug_memory_partitions): Move to tree-flow.h
748         * params.h (AVG_ALIASED_VOPS): Define.
749         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
750         users.
751         (mp_info_t): Likewise.
752         (get_mem_sym_stats_for): New.
753         (set_memory_partition): Move from tree-flow-inline.h.
754         (mark_non_addressable): Only clear the set of symbols for the
755         partition if it exists.
756         (dump_memory_partitions): Move from tree-ssa-operands.c
757         (debug_memory_partitions): Likewise.
758         (need_to_partition_p): New.
759         (dump_mem_ref_stats): New.
760         (debug_mem_ref_stats): New.
761         (dump_mem_sym_stats): New.
762         (debug_mem_sym_stats): New.
763         (update_mem_sym_stats_from_stmt): New.
764         (compare_mp_info_entries): New.
765         (mp_info_cmp): Call it.
766         (sort_mp_info): Change argument to a list of mem_sym_stats_t
767         objects.
768         (get_mpt_for): Move from tree-ssa-operands.c.
769         (find_partition_for): New.
770         (create_partition_for): Remove.
771         (estimate_vop_reduction): New.
772         (update_reference_counts): New.
773         (build_mp_info): New.
774         (compute_memory_partitions): Refactor.
775         Document new heuristic.
776         Call build_mp_info, update_reference_counts,
777         find_partition_for and estimate_vop_reduction.
778         (compute_may_aliases): Populate virtual operands before
779         calling debugging dumps.
780         (delete_mem_sym_stats): New.
781         (delete_mem_ref_stats): New.
782         (init_mem_ref_stats): New.
783         (init_alias_info): Call it.
784         (maybe_create_global_var): Remove alias_info argument.
785         Get number of call sites and number of pure/const call sites
786         from gimple_mem_ref_stats().
787         (dump_alias_info): Call dump_memory_partitions first.
788         (dump_points_to_info_for): Show how many times a pointer has
789         been dereferenced.
790         * opts.c (decode_options): For -O2 set --param
791         max-aliased-vops to 500.
792         For -O3 set --param max-aliased-vops to 1000 and --param
793         avg-aliased-vops to 3.
794         * fortran/options.c (gfc_init_options): Remove assignment to
795         MAX_ALIASED_VOPS.
796         * tree-flow-inline.h (gimple_mem_ref_stats): New.
797         * tree-dfa.c (dump_variable): Dump memory reference
798         statistics.
799         Dump NO_ALIAS* settings.
800         (referenced_var_lookup): Tidy.
801         (mem_sym_stats): New.
802         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
803         and ORIG are different SSA names for a memory partition.
804         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
805         * tree-flow.h (struct mem_sym_stats_d): Define.
806         (mem_sym_stats_t): Define.
807         (struct mem_ref_stats_d): Define.
808         (struct gimple_df): Add field mem_ref_stats.
809         (enum noalias_state): Define.
810         (struct var_ann_d): Add bitfield noalias_state.
811         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
812         debug_mem_ref_stats, debug_memory_partitions,
813         debug_mem_sym_stats): Declare.
814         * tree-ssa-structalias.c (update_alias_info): Update call
815         sites, pure/const call sites and asm sites in structure
816         returned by gimple_mem_ref_stats.
817         Remove local variable IS_POTENTIAL_DEREF.
818         Increase NUM_DEREFS if the memory expression is a potential
819         dereference.
820         Call update_mem_sym_stats_from_stmt.
821         If the memory references memory, call
822         update_mem_sym_stats_from_stmt for all the direct memory
823         symbol references found.
824         (intra_create_variable_infos): Set noalias_state field for
825         pointer arguments according to the value of
826         flag_argument_noalias.
827         * tree-ssa-structalias.h (struct alias_info): Remove fields
828         num_calls_found and num_pure_const_calls_found.
829         (update_mem_sym_stats_from_stmt): Declare.
830         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
831         Set default value to 100.
832         (PARAM_AVG_ALIASED_VOPS): Define.
833
834 2007-04-11  Richard Guenther  <rguenther@suse.de>
835
836         PR middle-end/31530
837         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
838         a * -b + c as c - a * b if we honor sign dependent rounding.
839
840 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
841
842         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
843         bfin_expand_strmov.
844         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
845         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
846         variables.
847         (initialize_trampoline): Don't use old-style function definition.
848         (bfin_secondary_reload): Mark IN_P argument as unused.
849
850 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
851
852         PR tree-optimization/31343
853         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
854         (build_polynomial_chrec): Return a scalar when the evolution is zero.
855         * testsuite/gcc.dg/vect/pr31343.c: New.
856
857 2007-04-10  Eric Christopher  <echristo@apple.com>
858
859         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
860         * config/i386/i386.md (*cmpfp0): Use.
861         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
862         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
863         (fix_trunc<mode>_i386_fisttp): Ditto.
864         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
865         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
866         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
867         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
868         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
869         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
870         (unnamed_splitters): Ditto.
871         * config/i386/i386.c (output_fix_trunc): Assert that
872         we're not being passed a TFmode operand.
873
874 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
875
876         PR tree-optimization/31526
877         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
878         n_basic_blocks to find newly added blocks.
879
880 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
881
882         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
883         alternative.
884         (fix_trunc<mode>si_sse): Ditto.
885         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
886         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
887         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
888         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
889         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
890         expander using SSEMODEF mode macro.
891         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
892         expander using SSEMODEF mode macro.
893         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
894         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
895         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
896         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
897         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
898         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
899         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
900         Macroize insn using X87MODEF mode macro.
901
902 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
903
904         * config/i386/sse.md (sse2_pinsrw): Removed.
905         (sse2_pextrw): Renamed to ...
906         (*sse2_pextrw): This.
907
908 2007-04-09  Jan Hubicka  <jh@suse.cz>
909
910         PR target/27869
911         * config/i386/sse.md
912         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
913         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
914         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
915         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
916
917 2007-04-09  Jan Hubicka  <jh@suse.cz>
918
919         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
920         multiple fields of union.
921
922 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
923
924         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
925         (create_preheaders): Check that loops are available.
926         (fix_loop_structure): Clean up, improve comments.
927         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
928         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
929         state flags.
930         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
931         * predict.c (tree_estimate_probability): Do not call
932         calculate_dominance_info.  Call create_preheaders.
933         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
934         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
935         flags.
936         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
937         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
938         * tree-cfg.c (tree_split_edge): Make an assert more precise.
939         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
940         arguments.
941
942 2007-04-08  Jan Hubicka  <jh@suse.cz>
943
944         * tree.h (maybe_fold_offset_to_component_ref): Declare.
945         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
946         * fold-const.c (fold_unary): Use it.
947
948 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
949
950         * varasm.c (assemble_variable): Remove call to
951         lang_hooks.decls.prepare_assemble_variable.
952         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
953         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
954         * langhooks.h (lang_hooks_for_decls): Remove
955         prepare_assemble_variable.
956
957 2007-04-08  Mike Stump  <mrs@apple.com>
958
959         * config/i386/i386.c: Use inc/dec on Core2.
960
961 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
962
963         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
964         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
965         lhd_tree_inlining_end_inlining): Remove.
966         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
967         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
968         end_inlining hooks.
969         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
970         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
971         lhd_tree_inlining_end_inlining): Remove prototypes.
972         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
973         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
974         LANG_HOOKS_TREE_INLINING_START_INLINING,
975         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
976
977         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
978         not set it.
979
980 2007-04-08  Anatoly Sokolov <aesok@post.ru>
981
982         PR target/29932
983         * config/avr/predicates.md (io_address_operand): Delete predicate.
984         (low_io_address_operand): Don't use 'mode' argument.
985         (higth_io_address_operand): Rename ...
986         (high_io_address_operand): ... to this. Don't use 'mode' argument.
987         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
988         for above change.
989
990 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
991
992         Revert change removing staticp.
993
994 2007-04-07  Anatoly Sokolov <aesok@post.ru>
995
996         PR target/30289
997         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
998         earlyclobber.
999
1000 2007-04-07  Bruce Korb  <bkorb@gnu.org>
1001
1002         * c.opt: Add -Wformat-contains-nul.
1003         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
1004           -Wformat setting.
1005         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
1006         the NUL byte warning.
1007
1008 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
1009
1010         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
1011
1012 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1013
1014         * tree.c (staticp): No longer use staticp langhook.
1015         * langhooks.c (lhd_staticp): Removed.
1016         * langhooks.h (struct lang_hooks): Remove staticp.
1017         * c-common.c (c_staticp): Remove.
1018         * c-common.h (c_staticp): Ditto.
1019         * langhooks-defs.h (lhd_staticp): Ditto.
1020         (LHD_HOOKS_STATICP): Ditto
1021         * tree.h (gcc_assert_lowered): New macro.
1022
1023 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
1024
1025         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
1026         argument "reliable".
1027         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
1028         Add argument "reliable".  Propagate it through calls.
1029         (infer_loop_bounds_from_undefined):  Derive number of iterations
1030         estimates from references in blocks that do not dominate loop latch.
1031         (gcov_type_to_double_int): New function.
1032         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
1033         and expected_loop_iterations_unbounded.
1034         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
1035         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
1036         * tree-data-ref.c (estimated_loop_iterations): Export.
1037         (get_references_in_stmt): Fix -- do not return addresses of local
1038         objects.
1039         * cfgloop.h (expected_loop_iterations_unbounded,
1040         estimated_loop_iterations): Declare.
1041
1042 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
1043
1044         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
1045
1046 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1047
1048         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
1049         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
1050         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
1051         Use output_387_reg_move().
1052         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
1053         expander using X87MODEF12 mode macro.
1054         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
1055         choosing register preferences.  Use output_387_reg_move().
1056         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
1057         instead of "x".  Use output_387_reg_move().
1058         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
1059         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
1060         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
1061         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
1062         Use output_387_reg_move().
1063         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
1064         mode macro.
1065         (*truncxf?f_i387 splitter): Ditto.
1066
1067 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1068
1069         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
1070         LANG_HOOKS_SAFE_FROM_P.
1071         * expr.c (safe_from_p): Remove langhook call.
1072         * langhooks.h (lang_hooks): Remove safe_from_p.
1073         (lhd_safe_from_p): Remove prototype.
1074         * langhooks.c (lhd_safe_from_p): Remove.
1075
1076 2007-04-06  Jan Hubicka  <jh@suse.cz>
1077
1078         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
1079         functions.
1080
1081 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1082
1083         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
1084         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
1085         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
1086         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
1087         alternative.
1088         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
1089         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
1090
1091 2007-04-05  Richard Henderson  <rth@redhat.com>
1092
1093         * config/alpha/alpha.c (print_operand) [+]: Remove.
1094         (alpha_end_function): Print nop if call at end of function.
1095         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
1096         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
1097         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
1098         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
1099         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
1100         the call pattern. Update peepholes to match.
1101
1102 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
1103
1104         * doc/extend.texi (Other Builtins): Add decimal float variants
1105         of signbit.
1106         * builtins.def: Ditto.
1107         * builtins.c (expand_builtin): Ditto.
1108
1109 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
1110             H.J. Lu  <hongjiu.lu@intel.com>
1111
1112         PR target/31478
1113         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
1114         of V8HImode when calling ix86_binary_operator_ok.
1115         (sse2_pmaddwd): Call ix86_binary_operator_ok.
1116         (sdot_prodv8hi): Operands 1 and 2 must be register.
1117
1118 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
1119
1120         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
1121         initialize align to silence bogus warning.
1122
1123 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
1124
1125         PR middle-end/22156
1126         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
1127         all_no_warning.
1128         (struct sra_walk_fns): Remove use_all parameter from use.
1129         (sra_hash_tree): Handle BIT_FIELD_REFs.
1130         (sra_elt_hash): Don't hash bitfld blocks.
1131         (sra_elt_eq): Skip them in parent compares as well.  Handle
1132         BIT_FIELD_REFs.
1133         (sra_walk_expr): Don't maintain or pass down use_all_p.
1134         (scan_use): Remove use_all parameter.
1135         (scalarize_use): Likewise.  Re-expand assignment to
1136         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
1137         output, and re-scalarize after output.  Don't mark anything
1138         for no warning.
1139         (scalarize_ldst): Adjust.
1140         (scalarize_walk_gimple_modify_statement): Likewise.
1141         (build_element_name_1): Handle BIT_FIELD_REFs.
1142         (instantiate_element): Don't warn for any element whose parent
1143         is used as a whole.
1144         (instantiate_missing_elements_1): Return the sra_elt.
1145         (canon_type_for_field): New.
1146         (try_instantiate_multiple_fields): New.
1147         (instantiate_missing_elemnts): Use them.
1148         (mark_no_warning): Removed.
1149         (generate_one_element_ref): Handle BIT_FIELD_REFs.
1150         (REPLDUP, sra_build_elt_assignment): New.
1151         (generate_copy_inout): Use them.
1152         (generate_element_copy): Likewise.  Handle bitfld differences.
1153         (generate_element_zero): Don't recurse for blocks.  Use
1154         sra_build_elt_assignment.
1155         (generate_one_element_int): Take elt instead of var.  Use
1156         sra_build_elt_assignment.
1157         (generate_element_init_1): Adjust.
1158         (scalarize_use, scalarize_copy): Use REPLDUP.
1159         (scalarize_ldst): Move assert before dereference.
1160         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
1161
1162 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
1163
1164         * regmove.c: Fix unused variable warnings due to previous commit.
1165
1166 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
1167
1168         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
1169         (regmove_bb_head): Remove.
1170         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
1171         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
1172         problems with fixup_match_1.
1173         Don't initialize/free regmove_bb_head.
1174
1175         (reg_is_remote_constant_p): If an insn is in the same basic block
1176         but not before INSN, consider it remote, too.
1177
1178 2007-04-05  Anatoly Sokolov <aesok@post.ru>
1179
1180         PR target/25448
1181         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
1182         DECL_ASSEMBLER_NAME, not the DECL_NAME.
1183
1184 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
1185
1186         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
1187         (CONDITIONAL_REGISTER_USAGE): Likewise.
1188
1189 2007-04-04  Richard Henderson  <rth@redhat.com>
1190
1191         * config/alpha/lib1funcs.asm: Remove unused file.
1192
1193 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1194
1195         PR other/31356
1196         * opts.c (print_specific_help): Fix --help=<language>
1197         header line.
1198         (common_handle_option): Support --help=common.
1199
1200 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1201
1202         PR other/31353
1203         * gcc.c (main): Do not run the linker if
1204         print_subprocess_help indicates that it shouldn't be
1205         run.
1206
1207 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1208
1209         PR doc/31355
1210         * doc/invoke.texi (--help=): Document <languages> value, fix
1211         formatting in tables of values.
1212
1213 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
1214
1215         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
1216         dllimport attribute of virtual methods.
1217
1218 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
1219
1220         * config/score/crti.asm: Change _bss_start to __bss_start.
1221         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
1222         (OUTGOING_REG_PARM_STACK_SPACE) update.
1223         * config/score/score.opt: add options to make backend support
1224         score5, score5u, score7 and score7d.
1225         * config/score/score.md: Likewise.
1226         * config/score/misc.md: Likewise.
1227         * config/score/mac.md: Likewise.
1228         * doc/invoke.texi: Likewise.
1229         * doc/md.texi: update constraints define.
1230
1231 2007-04-03  Richard Henderson  <rth@redhat.com>
1232
1233         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
1234         an appropriate type, use the mode instead.
1235
1236 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
1237
1238         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
1239         Set the default --with-arch setting to mips2.
1240         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
1241         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1242         (MULTILIB_OSDIRNAMES): Delete.
1243         (MULTILIB_DIRNAMES): Define.
1244         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
1245         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
1246         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
1247         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
1248         VXWORKS_OS_CPP_BUILTINS.
1249         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
1250         (MIPS_DEBUGGING_INFO): Undefine.
1251         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
1252
1253 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
1254
1255         PR middle-end/30704
1256         * fold-const.c (native_encode_real): Encode real.c provided longs
1257         as a series of 32-bit native integers.
1258         (native_interpret_real): Interpret buffer as a series of 32-bit
1259         native integers.
1260
1261 2007-04-03  Richard Guenther  <rguenther@suse.de>
1262
1263         * genpreds.c (write_insn_constraint_len): Write function
1264         optimized for CONSTRAINT_LEN implementation.
1265         (write_tm_preds_h): Output insn_constraint_len inline and
1266         use it for CONSTRAINT_LEN.
1267         (write_insn_preds_c): Don't output insn_constraint_len.
1268         * doc/md.texi (define_register_constraint): Document multi-letter
1269         constraints shall have the same length if they start with the same
1270         letter.
1271
1272 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
1273
1274         PR target/31175
1275         * config/i386/i386.md (isinf<mode>2): Expand only when
1276         TARGET_C99_FUNCTIONS is set.
1277
1278 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
1279
1280         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
1281         (x86_64-*-linux*): Ditto.
1282         * config/i386/i386.opt (mpc): New option.
1283         * config/i386/i386.c (overrride_options): Handle
1284         ix87_precision_string.
1285         * config/i386/crtprec.c: New file.
1286         * config/i386/t-crtpc: Ditto.
1287         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
1288         and -mpc80 options.
1289         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
1290         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
1291         crtprec32.o, crtprec64.o and crtprec80.o.
1292
1293         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
1294         and -mpc80 options.
1295         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
1296
1297 2007-04-02  Eric Christopher  <echristo@apple.com>
1298
1299         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
1300         limitations on darwin.
1301
1302 2007-04-02  Anatoly Sokolov <aesok@post.ru>
1303
1304         PR target/31137
1305         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
1306
1307 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1308
1309         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
1310
1311 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1312
1313         * libgcc2.h (exception_descriptor): Don't forward-declare.
1314         (__get_eh_table_language, __get_eh_table_version): Delete
1315         prototypes of long-dead functions.
1316
1317 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
1318
1319         * ebitmap.h: New file
1320         * ebitmap.c: New file
1321         * Makefile.in (ebitmap.o): New target.
1322
1323 2007-04-01  Jan Hubicka  <jh@suse.cz>
1324
1325         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
1326         before very first instruction.
1327
1328 2007-04-01  Jan Hubicka  <jh@suse.cz>
1329
1330         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
1331         waring on 64bit hosts.
1332         * bitmap.h: Fix typo in bitmap_head_def.
1333
1334 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
1335
1336         PR rtl-optimization/31391
1337         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
1338         into a DELETED_LABEL note, and the label is in an empty basic
1339         block, update BB_END as well as BB_HEAD.
1340
1341 2007-04-01  Richard Henderson  <rth@redhat.com>
1342
1343         PR tree-optimization/31169
1344         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
1345         to varying if the range is outside [0,  prec-1].
1346
1347 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
1348
1349         PR target/31388
1350         * config/mips/mips.md (load_const_gp): New insn.
1351         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
1352         the MIPS16 GP pseudo register if no_new_pseudos.
1353         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
1354
1355 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1356
1357         PR target/31364
1358         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
1359         secureplt.
1360         (call_value): Likewise.
1361
1362 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
1363             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1364
1365         PR 14737
1366         * doc/invoke.texi: (optimization options): Reword description
1367         of -ffast-math. Document its primary purpose.
1368
1369 2007-03-31  Richard Guenther  <rguenther@suse.de>
1370
1371         * omp-low.c (splay-tree.h): Include.
1372         (lookup_decl): Replace splay-tree usage by pointer-map.
1373         (maybe_lookup_decl): Likewise.
1374         (new_omp_context): Likewise.
1375         (delete_omp_context): Likewise.
1376         * gimplify.c (splay-tree.h): Include.
1377         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
1378         pointer-map.
1379         (remap_ssa_name): Likewise.
1380         (remap_decl): Likewise.
1381         (remap_type_1): Likewise.
1382         (remap_type): Likewise.
1383         (copy_body_r): Likewise.
1384         (expand_call_inline): Likewise.
1385         (clone_body): Likewise.
1386         (copy_tree_r): Likewise.
1387         (remap_save_expr): Likewise.
1388         (unsave_r): Likewise.
1389         (unsave_expr_now): Likewise.
1390         (tree_function_versioning): Likewise.
1391         (build_duplicate_type): Likewise.
1392         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
1393         (struct copy_body_data): Replace splay-tree by pointer-map.
1394         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
1395         not $(SPLAY_TREE_H).
1396         (gimplify.o): Depend on $(SPLAY_TREE_H).
1397         (omp-low.p): Likewise.
1398
1399 2007-03-31  Anatoly Sokolov <aesok@post.ru>
1400
1401         * config/avr/predicates.md (even_register_operand,
1402         odd_register_operand): New predicates.
1403         * config/avr/avr.md (movw peephole2): New.
1404         (movw_r peephole2): New.
1405
1406 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
1407
1408         * tree.h (get_signed_or_unsigned_type): New.
1409         * fold-const.c (operand_equal_for_comparison_p): Use
1410         get_signed_or_unsigned_type instead of
1411         lang_hooks.types.signed_or_unsigned_type.
1412         * expr.c (store_expr): Ditto.
1413         * langhooks.c (get_signed_or_unsigned_type): New.
1414         (lhd_signed_or_unsigned_type): New.
1415         * langhooks.h (lhd_signed_or_unsigned_type): New.
1416         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
1417
1418 2007-03-30  Richard Henderson  <rth@redhat.com>
1419
1420         * tree-ssa-loop-ivopts.c: Include target.h.
1421         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
1422         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
1423         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
1424         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
1425
1426 2007-03-30  Richard Henderson  <rth@redhat.com>
1427             Kai Tietz  <kai.tietz@onevision.com>
1428
1429         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
1430         default for 64-bit.
1431         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
1432         (TARGET_64BIT_MS_ABI): New.
1433         (DBX_REGISTER_NUMBER): Handle 64-bit.
1434         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
1435         (LONG_TYPE_SIZE): Force to 32.
1436         (REG_PARM_STACK_SPACE): New.
1437         (OUTGOING_REG_PARM_STACK_SPACE): New.
1438         (REGPARM_MAX, SSE_REGPARM_MAX): New.
1439         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1440         (STACK_BOUNDARY): Use 128 for 64-bit.
1441         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
1442         Add 64-bit implementation.
1443         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
1444         argument unused.
1445         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
1446         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
1447         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
1448         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
1449         (ix86_handle_cconv_attribute): Don't warn when ignoring if
1450         TARGET_64BIT_MS_ABI.
1451         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
1452         (ix86_pass_by_reference): Likewise.
1453         (ix86_function_value_regno_p): Likewise.
1454         (ix86_build_builtin_va_list): Likewise.
1455         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
1456         (function_arg_advance_ms_64): New.
1457         (function_arg_advance): Call it.
1458         (function_arg_ms_64): New.
1459         (function_arg): Call it.
1460         (function_value_ms_64): New.
1461         (ix86_function_value_1): Call it.
1462         (return_in_memory_ms_64): New.
1463         (ix86_return_in_memory): Call it.
1464         (setup_incoming_varargs_ms_64): New.
1465         (ix86_setup_incoming_varargs): Call it.
1466         (ix86_expand_prologue): Handle 64-bit stack probing.
1467         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
1468         (output_pic_addr_const): Likewise.
1469         (x86_this_parameter): Likewise.
1470         (x86_output_mi_thunk): Likewise.
1471         (x86_function_profiler): Likewise.
1472         (TARGET_STRICT_ARGUMENT_NAMING): New.
1473         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
1474         (TARGET_64BIT_MS_ABI): New.
1475         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
1476         * config/i386/i386.md (allocate_stack_worker): Remove.
1477         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
1478         describe the clobber of eax without a match_scratch.
1479         (allocate_stack_worker_postreload): Remove.
1480         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
1481         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
1482         (allocate_stack_worker_rex64_postreload): Remove.
1483         (allocate_stack): Handle 64-bit.
1484         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
1485         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
1486         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
1487         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
1488         (STANDARD_STARTFILE_PREFIX_1): Likewise.
1489         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
1490         * config.build (x86_64-*-mingw*): New host.
1491         * config.host (x86_64-*-mingw*): New host.
1492         * config.gcc (x86_64-*-mingw*): New target.
1493         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
1494
1495 2007-03-30  Richard Henderson  <rth@redhat.com>
1496             Kai Tietz  <kai.tietz@onevision.com>
1497
1498         * c-pragma.c (struct def_pragma_macro_value): New.
1499         (struct def_pragma_macro): New.
1500         (pushed_macro_table): New.
1501         (dpm_hash, dpm_eq): New.
1502         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
1503         (init_pragma): Install them.
1504         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1505
1506 2007-03-30  Anatoly Sokolov <aesok@post.ru>
1507
1508         * config/avr/avr.c (avr_override_options): Clear
1509         'flag_delete_null_pointer_checks'.
1510
1511 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
1512
1513         PR c++/26099
1514         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
1515         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
1516         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
1517         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
1518         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
1519         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
1520         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
1521         C++ extensions.
1522         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
1523
1524 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
1525
1526         * regmove.c: Move all of pass_stack_adjustments from here...
1527         * combine-stack-adj.c: ...to this new file.
1528         * Makefile.in: Add rules for combine-stack-adj.o.
1529
1530 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
1531
1532         PR tree-optimization/31383
1533         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
1534         to have the same length.
1535
1536 2007-03-30  Jan Hubicka  <jh@suse.cz>
1537
1538         PR middle-end/30700
1539         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
1540         availablility; add more sanity checking; ask varpool only about
1541         VAR_DECL.
1542
1543 2007-03-29  Richard Henderson  <rth@redhat.com>
1544
1545         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
1546         to decide, but __SIZEOF_LONG_LONG__.
1547
1548 2007-03-29  Richard Henderson  <rth@redhat.com>
1549
1550         * emutls.c (struct __emutls_array): New.
1551         (emutls_destroy): Use it instead of casting element 0 from void*.
1552         (__emutls_get_address): Likewise.
1553
1554 2007-03-29  Richard Henderson  <rth@redhat.com>
1555
1556         * varasm.c (initializer_constant_valid_p): Don't deny
1557         DECL_DLLIMPORT_P on functions.
1558
1559         * config/i386/cygming.h: Remove function declarations.
1560         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
1561         (ASM_OUTPUT_LABELREF): Remove.
1562         (COMMON_ASM_OP): Remove.
1563         (ASM_OUTPUT_COMMON): Remove.
1564         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
1565         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
1566         (ASM_DECLARE_FUNCTION_NAME): Likewise.
1567         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
1568         Rename from TARGET_ENCODE_SECTION_INFO.
1569         * config/i386/netware.h: Likewise.
1570         * config/i386/i386-protos.h: Update.
1571         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
1572         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
1573         (legitimate_constant_p): Reject dllimports.
1574         (dllimport_map, get_dllimport_decl): New.
1575         (legitimize_dllimport_symbol): New.
1576         (legitimize_address, ix86_expand_move): Use it.
1577         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
1578         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
1579         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
1580         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
1581         * config/i386/predicates.md (constant_call_address_operand): Only
1582         accept symbols; reject dllimport_p symbols.
1583         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
1584         i386_pe_maybe_record_exported_symbol.
1585         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
1586         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
1587         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
1588         trust the setting of DECL_DLLIMPORT_P.
1589         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
1590         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
1591         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
1592         tidy the argument scanning loop.
1593         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
1594         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
1595         (i386_pe_strip_name_encoding): Remove.
1596         (i386_pe_binds_local_p): New.
1597         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
1598         (i386_pe_output_labelref): Remove.
1599         (i386_pe_asm_output_aligned_decl_common): New.
1600         (i386_pe_maybe_record_exported_symbol): Rename from
1601         i386_pe_record_exported_symbol; check for dllexported symbols.
1602
1603 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
1604
1605         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
1606         add comment explaining why vsnprintf cannot be used.
1607
1608 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
1609
1610         PR tree-optimization/30666
1611         * tree.c (build_complex_type): When creating type names for DWARF2
1612         debug info, create TYPE_DECLs for TYPE_NAME instead of
1613         IDENTIFIER_NODEs.
1614         (build_common_tree_nodes_2): Use build_complex_type when building
1615         predefined complex types, to preserve canonical types.
1616
1617 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
1618
1619         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
1620         (noce_get_alt_condition): Look at it to determine whether to
1621         reverse the condition or not.
1622         (noce_get_condition): Substitute the truth for lies.
1623         (noce_find_if_block): Set the then_else_reversed field.
1624
1625 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
1626
1627         * config/fr30/fr30.md (movdi): Do not accept immediates as the
1628         destination of this insn.
1629         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
1630         than calling gen_rtx_SET directly.  Use r0 to hold the value of
1631         'address + 4' rather than a stack based temporary which can be
1632         mis-optimized away.
1633
1634 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1635
1636         * config/s390/s390.c (s390_secondary_input_reload_class,
1637         s390_secondary_output_reload_class): Functions removed.
1638         (s390_secondary_reload): New function.
1639         (TARGET_SECONDARY_RELOAD): Target macro defined.
1640         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
1641         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
1642         * config/s390/s390.md ("reload_outti", "reload_outdi",
1643         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
1644         "reload_out<mode>"): Expanders removed.
1645         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
1646         "reload<mode>_nonoffmem_out"): Expanders added.
1647
1648 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1649
1650         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
1651         SRC->DEST replacement failed anyway.
1652
1653 2007-03-28  Mike Stump  <mrs@apple.com>
1654
1655         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
1656         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
1657         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
1658
1659 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1660
1661         * config.gcc: Accept barcelona as a variant of amdfam10.
1662         * config/i386/i386.c (override_options): Likewise.
1663         * doc/invoke.texi: Likewise.
1664
1665 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
1666
1667         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
1668         offsets for BIT_FIELD_REF and COMPONENT_REF.
1669
1670 2007-03-28  Richard Guenther  <rguenther@suse.de>
1671
1672         * tree.c (is_global_var): Move ...
1673         * tree-flow-inline.h (is_global_var): ... here.
1674         * tree.h (is_global_var): Remove declaration.
1675
1676 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
1677
1678         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
1679         option.
1680         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
1681         * config/i386/i386.c (ix86_tune_features): Initialize new
1682         tuning option.
1683         * config/i386/predicates.md (promotable_binary_operator): Use
1684         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
1685
1686 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
1687
1688         PR target/31380
1689         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
1690
1691 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
1692
1693         * config/fr30/fr30.md (movsi_internal): Change destination
1694         constraint from m to V and add m to the end.
1695
1696 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1697
1698         * config/sh/sh.md (movsi_i): Fix type attribute.
1699
1700 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1701
1702         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
1703         (movsf_ie): Likewise.
1704
1705 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1706
1707         * config.gcc: Add sh4-300 to multilib.
1708         * config/sh/t-mlib-sh4-300: New file.
1709
1710 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1711
1712         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
1713         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
1714         fix_trunc<mode>di2.
1715         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
1716         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
1717         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
1718         "fixuns_trunctddi2"): Whitespace fix.
1719
1720 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1721
1722         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
1723         the definition of struct sh_args.
1724         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
1725         CALL_COOKIE_INT_REG_GET): Likewise.
1726
1727 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
1728
1729         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
1730         transformations are applied successfully.
1731
1732 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
1733
1734         * tree.c (tree_contains_struct): Permit 512 tree codes.
1735         * tree.h (tree_contains_struct): Ditto.
1736         (MAX_TREE_CODES): Ditto.
1737         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
1738         SPARE member to store remaining padding bits.
1739
1740 2007-03-27  Anatoly Sokolov <aesok@post.ru>
1741
1742         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
1743         architecture.
1744
1745 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
1746
1747         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
1748         * configure: Regenerate.
1749
1750         * configure: Regenerate using the correct version of autoconf.
1751
1752 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
1753
1754         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
1755         pointer regs.
1756         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
1757         regs to "__SP_L__" and "__SP_H__".
1758
1759 2007-03-27  Richard Guenther  <rguenther@suse.de>
1760
1761         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
1762         computations with it with a HOST_WIDE_INT variable.
1763
1764 2007-03-26  Mike Stump  <mrs@apple.com>
1765
1766         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
1767         objective-c-header, objective-c++-header and objc++-cpp-output
1768         support.
1769         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
1770
1771 2007-03-26  Richard Henderson  <rth@redhat.com>
1772
1773         PR target/31361
1774         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
1775         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
1776         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
1777         IX86_BUILTIN_PSRLQ128): New.
1778         (ix86_init_mmx_sse_builtins): Add them.
1779         (ix86_expand_builtin): Expand them.
1780         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
1781         operand 2 be TImode.
1782         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
1783         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
1784         _mm_srli_epi64): Mark __B const.
1785         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
1786         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
1787         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
1788         new two-vector shift builtins.
1789
1790 2007-03-26  Ian Lance Taylor  <iant@google.com>
1791
1792         PR tree-optimization/31345
1793         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
1794         [+INF, +INF(OVF)] into VARYING.
1795
1796 2007-03-26  Zack Weinberg  <zackw@panix.com>
1797
1798         * gengtype-parse.c: New file.
1799         * gengtype-yacc.y: Delete.
1800         * gengtype-lex.l: Don't include gengtype-yacc.h.
1801         Define YY_DECL and yyterminate appropriately for recursive
1802         descent parser.  yylval is now a string out-parameter to yylex.
1803         (HWS, EOID): New shorthand.
1804         (IWORD): Add a couple more types.
1805         (yylex): Add a setup stanza.  Remove the complex rules for
1806         detecting GTY'ed types and typedefs; replace with simple
1807         keyword detectors.  Adjust everything for the changed
1808         definition of yylval.  Ignore all pp-directives, not just #define.
1809         (yyerror): Delete.
1810         (parse_file): Rename yybegin; do not call yyparse.
1811         (yyend): New.
1812         * gengtype.c (xasprintf): Export again.
1813         (this_file): New.  Use everywhere __FILE__ was being used.
1814         (get_lang_bitmap): Special case types defined in gengtype.c.
1815         (do_typedef, new_structure): Suppress definition of certain types.
1816         (new_structure): Improve diagnostics of duplicate definitions.
1817         Make sure location_s is associated with input.h.
1818         (nreverse_pairs, define_location_structures): New functions.
1819         (main): Improve tagging of kludge types.  Remove old kludges
1820         for input.h types; use define_location_structures.
1821         * gengtype.h: Update prototypes.  Define token codes here.
1822         * Makefile.in: Remove all references to gengtype-yacc.
1823         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
1824         and gengtype.
1825         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
1826         add GTY((skip)) to the field that's only conditionally there.
1827         * doc/install.texi: Document that Bison is no longer required
1828         unless building treelang.
1829
1830         * gengtype.c: Don't include gtyp-gen.h.
1831         (srcdir): Declare here.
1832         (base_files, lang_dir_names): Allocate dynamically.
1833         (gt_files, num_gt_files, num_lang_dirs): New globals.
1834         (measure_input_list, read_input_line, read_input_list)
1835         (set_lang_bitmap): New functions.
1836         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
1837         simplify, relying on read_input_list to set up the bitmaps.
1838         (main): Arguments are no longer unused.  Check for correct number
1839         of command line arguments, set srcdir and srcdir_len, then call
1840         read_input_list, before doing anything else.  No need to worry
1841         about duplicates in main loop.
1842         * configure.ac: Simplify the calculation of all_gtfiles.
1843         Put language tags in there.  Don't set or substitute
1844         all_gtfiles_files_langs or all_gtfiles_files_frags.
1845         * Makefile.in: Revamp the way gengtype is invoked, now that it
1846         takes a file on its command line with a much simpler format.
1847         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
1848         (GTFILES): Remove duplicates and C source files.
1849         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
1850         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
1851         * configure: Regenerate.
1852
1853         * gengtype.h: Remove all type definitions to gengtype.c; leave
1854         only definitions of options_p, type_p, and pair_p as opaque
1855         pointers.  Update prototypes.
1856         * gengtype.c: Many type definitions moved here from gengtype.h.
1857         Consolidate type definitions at the top of the file.
1858         (xvasprintf): Delete.
1859         (xasprintf): Make static.
1860         (create_nested_pointer_option): Add 'next' parameter.
1861         (create_field_all, create_field_at): New functions.
1862         (create_field): Now a thin wrapper around create_field_all.
1863         (create_optional_field): Rename create_optional_field_ and add
1864         line argument.  Original name is now a macro which supplies
1865         __LINE__.
1866         (oprintf): Use vsnprintf directly.
1867         (close_output_files): Use fatal rather than perror/exit.
1868         (note_def_vec, note_def_vec_alloc): Use create_field_at.
1869         (main): Set progname.  Don't use exit.
1870         * gengtype-yacc.y (struct_fields): Use create_field_at.
1871         (option, optionseqopt): Delete.
1872         (optionseq): Consolidate productions from option here so we
1873         can use the first argument to create_option.
1874
1875         * gengtype-lex.l: Distinguish unions from structures in the
1876         token type.  Don't call find_structure; return the tag as a string.
1877         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
1878         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
1879         Reorganize typedef_struct production accordingly.
1880         Use create_nested_ptr_option.
1881         * gengtype.c (create_nested_ptr_option): New function.
1882         * gengtype.h: Declare it.
1883
1884         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
1885         (string_type): Don't declare.
1886         (do_scalar_typedef): Declare.
1887         (create_scalar_type): Update prototype.
1888         * gengtype.c (string_type): Make static.
1889         (scalar_nonchar, scalar_char): New.
1890         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
1891         (resolve_typedef): Use scalar_nonchar for error recovery.
1892         (create_scalar_type): Remove name_len field.  Return scalar_char
1893         or scalar_nonchar as appropriate.
1894         (adjust_field_type): Look at scalar_is_char boolean to decide whether
1895         to use string_type.
1896         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
1897         whenever possible.
1898         (main): Initialize scalar_char and scalar_nonchar before calling
1899         gen_rtx_next.
1900         * gengtype-lex.l: Adjust for removal of second argument to
1901         create_scalar_type.  Use yylval.s instead of yylval.t when
1902         returning SCALAR.
1903         * gengtype-yacc.y: Type of SCALAR is string.  Call
1904         create_scalar_type from type:SCALAR rule.  Adjust for removal of
1905         second argument to create_scalar_type.
1906
1907         * vec.h: Remove all #if IN_GENGTYPE blocks.
1908         Add comment saying that changes may require adjustments to gengtype.
1909         * gengtype.c: Don't include coretypes.h or tm.h.
1910         Add comment to inclusion of errors.h.
1911         (note_def_vec, note_def_vec_alloc): New functions.
1912         * gengtype.h: Declare new functions.
1913         * gengtype-lex.l: Don't include coretypes.h.
1914         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
1915         Delete.
1916         (update_lineno): Remove unnecessary prototype.
1917         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
1918         (VEC rule): Just return VEC_TOKEN.
1919         * gengtype-yacc.y (VEC_TOKEN): New token type.
1920         (type): Add a production for VEC(a,b).
1921         * Makefile.in: Update dependencies.
1922
1923         * gengtype-lex.l: Remove rules for parsing pointer-to-function
1924         typedefs that use the old PARAMS macro.
1925
1926         * gengtype-lex.l: Remove all rules and states relating to yacc
1927         input files.
1928         * gengtype-yacc.y: Similarly.
1929         * gengtype.c (note_yacc_type): Delete function.
1930         * gengtype.h: Update prototypes.
1931
1932 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
1933
1934         * tree-pretty-print.c (dump_generic_node): Report precision of
1935         unnamed integer types.
1936
1937 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
1938
1939         * ifcvt.c (noce_try_store_flag_constants): Don't check
1940         no_new_pseudos here.
1941         (noce_try_store_flag_constants): Don't check no_new_pseudos.
1942         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
1943         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
1944         noce_try_sign_mask): Likewise.
1945         (if_convert): Check no_new_pseudos here.
1946
1947         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
1948         Remove prototypes.
1949         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
1950         (noce_get_condition): Handle new then_else_reversed argument.
1951         (noce_init_if_info): Remove, fold into noce_find_if_block.
1952         (noce_process_if_block): Take a struct noce_if_info as the
1953         argument.  Don't set up one based on ce_if_info.  Update pointer
1954         references accordingly.
1955         (cond_move_process_if_block): Likewise.
1956         (process_if_block): Removed.
1957         (find_if_block): Removed.  Move functionality two new functions,
1958         noce_find_if_block and cond_exec_find_if_block.
1959         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
1960         blocks and the symmetric IF-ELSE-JOIN case.
1961         (cond_exec_find_if_block): Also new function mostly based on old
1962         find_if_block and process_if_block.
1963         (find_if_header): Replace find_if_block call with separately
1964         guarded calls to noce_find_if_block and cond_exec_find_if_block.
1965         (find_cond_trap): Update noce_get_condition call.
1966         (dead_or_predicable): Likewise.
1967
1968 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
1969
1970         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
1971         Remove.
1972         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
1973         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
1974         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
1975         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
1976         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
1977         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
1978         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
1979         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
1980         __builtin_ia32_psrad128 builtins.
1981
1982 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
1983
1984         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
1985         * config/i386/constraints.md
1986         (define_constraint "I"): Use IN_RANGE macro.
1987         (define_constraint "J"): Ditto.
1988         (define_constraint "K"): Ditto.
1989         (define_constraint "M"): Ditto.
1990         (define_constraint "N"): Ditto.
1991         (define_constraint "O"): Ditto.
1992         * config/i386/predicates.md
1993         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
1994         (define_predicate "const_0_to_3_operand"): Ditto.
1995         (define_predicate "const_0_to_7_operand"): Ditto.
1996         (define_predicate "const_0_to_15_operand"): Ditto.
1997         (define_predicate "const_0_to_63_operand"): Ditto.
1998         (define_predicate "const_0_to_255_operand"): Ditto.
1999         (define_predicate "const_1_to_31_operand"): Ditto.
2000         (define_predicate "const_2_to_3_operand"): Ditto.
2001         (define_predicate "const_4_to_7_operand"): Ditto.
2002
2003 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
2004
2005         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
2006         in SImode for save_world.
2007         * config/rs6000/altivec.md (save_world, restore_world): Convert to
2008         LR hard reg.
2009
2010 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
2011
2012         PR tree-optimization/30784
2013         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
2014         BIT_FIELD_REF.
2015
2016 2007-03-25  Revital Eres  <eres@il.ibm.com>
2017
2018         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
2019           Fold movement_possibility function into it.
2020
2021 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
2022
2023         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
2024         (load_macho_picbase_{si,di}): Convert to LR hard reg.
2025         (call_indirect_nonlocal_darwin64): Same.
2026         (call_nonlocal_darwin64): Same.
2027         (call_value_indirect_nonlocal_darwin64): Same.
2028         (call_value_nonlocal_darwin64): Same.
2029         (sibcall_nonlocal_darwin64): Same.
2030         (sibcall_value_nonlocal_darwin64): Same.
2031         (sibcall_symbolic_64): Same.
2032         (sibcall_value_symbolic_64): Same.
2033         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
2034         LR pseudo.
2035         (rs6000_emit_load_toc_table): Same.
2036         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
2037         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
2038         (mull_call): Same.
2039         (divss_call): Same.
2040         (divus_call): Same.
2041         (quoss_call): Same.
2042         (quous_call): Same.
2043         (load_toc_v4_pic_si): Same
2044         (load_toc_v4_PIC_1): Same.
2045         (load_toc_v4_PIC_1b): Same.
2046         (call_indirect_aix{32,64}): Same.
2047         (call_value_indirect_aix{32,64}): Same.
2048         (call): Same.
2049         (call_value): Same.
2050         (call_local{32,64}): Same.
2051         (call_value_local{32,64}): Same.
2052         (call_indirect_nonlocal_aix{32,64}): Same.
2053         (call_nonlocal_aix{32,64}): Same.
2054         (call_value_indirect_nonlocal_aix{32,64}): Same.
2055         (call_value_nonlocal_aix{32,64}): Same.
2056         (call_indirect_nonlocal_sysv<mode>): Same.
2057         (call_nonlocal_sysv<mode>): Same.
2058         (call_value_indirect_nonlocal_sysv<mode>): Same.
2059         (call_value_nonlocal_sysv<mode>): Same.
2060         (sibcall): Same.
2061         (sibcall_local{32,64}): Same.
2062         (sibcall_value_local{32,64}): Same.
2063         (sibcall_nonlocal_aix{32,64}): Same.
2064         (sibcall_value_nonlocal_aix{32,64}): Same.
2065         (sibcall_nonlocal_sysv<mode>): Same.
2066         (sibcall_value): Same.
2067         (sibcall_value_nonlocal_sysv<mode>): Same.
2068
2069 2007-03-24  Paul Brook  <paul@codesourcery.com>
2070
2071         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
2072         * config/arm/linux-eabi.h: Remove legacy syscall hack.
2073
2074 2007-03-24  Richard Henderson  <rth@redhat.com>
2075
2076         * config/ia64/constraints.md: New file.
2077         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
2078         satisfies_constraint_?.
2079         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
2080         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
2081         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
2082         ia64_output_mi_thunk): Likewise.
2083         (ia64_const_ok_for_letter_p): Remove.
2084         (ia64_const_double_ok_for_letter_p): Remove.
2085         (ia64_extra_constraint): Remove.
2086         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
2087         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
2088         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
2089         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
2090         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
2091         EXTRA_MEMORY_CONSTRAINT): Remove.
2092         * config/ia64/ia64.md: Include constriants.md.  Replace
2093         CONST_OK_FOR_? with satisfies_constraint_?.
2094
2095 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
2096             H.J. Lu  <hongjiu.lu@intel.com>
2097
2098         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
2099         DPD or BID name.
2100         (name macros): Use DPD_BID_NAME to convert names properly.
2101
2102         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
2103         decimal floating point format.
2104         (init_floating_libfuncs): Change decimal functions so that they
2105         have a "bid_" prefix if the decimal system uses the BID format,
2106         and "dpd_" prefix if the decimal system uses the DPD format.
2107         (init_interclass_conv_libfuncs): Ditto.
2108         (init_intraclass_conv_libfuncs): Ditto.
2109
2110         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
2111         using the BID format.
2112
2113         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
2114         whether we are using the BID decimal format.
2115         * configure: Regenerate.
2116
2117         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
2118         the compiler has decimal floating point enabled.  Define
2119         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
2120         instead of DPD.
2121
2122         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
2123         using the BID format.
2124
2125         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
2126         whether we are using the BID decimal format.
2127         * configure: Regenerate.
2128
2129         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
2130         the compiler has decimal floating point enabled.  Define
2131         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
2132         instead of DPD.
2133
2134         * doc/install.texi (--enable-decimal-float): Document BID and DPD
2135         options, and that it is enabled for i386/x86_64 systems.
2136
2137         * Makefile.in (enable_decimal_float): New.
2138         (DECNUMFMT): New.
2139         (DECNUMINC): Add  -I$(DECNUMFMT).
2140         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
2141         to $(DECNUMFMT) from $(DECNUM).
2142
2143         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
2144         Substitute enable_decimal_float.
2145         * configure: Regenerated.
2146
2147         PR other/30529
2148         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
2149         unsigned long.
2150
2151         * configure.ac: Enable decimal float for x86_64-*-linux*.
2152         * configure: Regenerated.
2153
2154         PR other/30530
2155         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
2156         decimal128ClearSign to flip and clear the sign bit in decimal128.
2157         (decimal_real_maxval): Set decimal128SetSign to set the sign
2158         bit in decimal128.
2159
2160 2007-03-23  Ian Lance Taylor  <iant@google.com>
2161
2162         * fold-const.c (fold_binary): Correct warning for X - c >= X.
2163
2164 2007-03-23  Ian Lance Taylor  <iant@google.com>
2165
2166         * tree-dump.c (dump_files): Correct comment.
2167
2168 2007-03-23  Ian Lance Taylor  <iant@google.com>
2169
2170         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
2171
2172 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
2173
2174         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
2175         in cfglayout mode.  Don't go into and out of cfglayout mode.
2176         Link the blocks in the order of the constructed traces.
2177         (rest_of_handle_tracer): Adjust call to tracer.
2178         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
2179         Don't go into cfglayout mode.
2180         (rtl_loop_done): Don't go out of cfglayout mode.
2181         * cfglayout.c (relink_block_chain): New function, split out from...
2182         (fixup_reorder_chain): ...here.  Remove redundant checking.
2183         (cfg_layout_finalize): Don't clear the header, footer, and aux
2184         fields here, move the code to do so to relink_block_chain.  Likewise
2185         for free_original_copy_tables.
2186         * rtl.h (tracer): Update prototype.
2187         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
2188         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
2189         mode.  Use relink_block_chain to serialize the CFG according to the
2190         new basic block order.  Move targetm.cannot_modify_jumps_p check from
2191         here...
2192         (gate_handle_reorder_blocks): ...to here.
2193         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
2194         from here...
2195         (gate_duplicate_computed_gotos): ...to here.
2196         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
2197         something always changes when going into and out of cfglayout mode.
2198         Perform an expensive cfg cleanup while going into cfglayout mode.
2199         Always update liveness information on HAVE_conditional_execution
2200         targets.  Reserialize the basic blocks and go out of cfglayout mode.
2201         * reg-stack.c: Include cfglayout.h.
2202         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
2203         the call to reorder_basic_blocks.
2204         * basic-block.h (reorder_basic_blocks): Update prototype.
2205         (relink_block_chain): New prototype.
2206         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
2207
2208 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
2209
2210         * config/mips/mips.md (type, hazard, *movdi_32bit,
2211         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
2212         *movhi_internal, *movqi_internal, *movsf_hardfloat,
2213         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
2214         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
2215         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
2216         applicable.
2217         (movcc): Change first xfer to multi.
2218         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
2219         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
2220         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
2221         config/mips/generic.md: Change reservations using "xfer" to use
2222         "mfc,mtc".
2223         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
2224         using match_operand.
2225         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
2226         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
2227         examining mode.
2228         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
2229
2230 2007-03-22  Richard Henderson  <rth@redhat.com>
2231
2232         * config/i386/i386.c: Remove unnecessary function declarations.
2233         Move targetm definition, and all related macros, to the end of
2234         the file.  Resort some functions to put definitions before uses.
2235         (ix86_attribute_table): Make static.  Move to end of file.
2236         (ix86_gimplify_va_arg): Make static.
2237
2238 2007-03-22  Richard Henderson  <rth@redhat.com>
2239
2240         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
2241         don't increase local_regparm with force_align_arg_pointer check.
2242         (ix86_function_sseregparm): Assert 32-bit.
2243         (type_has_variadic_args_p): New.
2244         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
2245         type_has_variadic_args_p.
2246         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
2247         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
2248         use memset instead.  Do maybe_vaarg check first; skip attribute
2249         tests if true; skip attribute tests for 64-bit.
2250         (construct_container): Remove TARGET_DEBUG_ARG.
2251         (function_arg_advance_32, function_arg_advance_64): Split out ...
2252         (function_arg_advance): ... from here.
2253         (function_arg_32, function_arg_64): Split out ...
2254         (function_arg): ... from here.
2255         (ix86_pass_by_reference): Tidy.
2256         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
2257         (function_value_32): New, from parts of ix86_function_value
2258         and ix86_value_regno.
2259         (function_value_64): New, from parts of ix86_function_value
2260         and ix86_libcall_value.
2261         (ix86_function_value_1): New.
2262         (ix86_function_value, ix86_libcall_value): Use it.
2263         (return_in_memory_32, return_in_memory_64): Split out ...
2264         (ix86_return_in_memory): ... from here.
2265         (ix86_struct_value_rtx): Skip for 64-bit.
2266         (ix86_libcall_value, ix86_value_regno): Remove.
2267         (setup_incoming_varargs_64): Split out ...
2268         (ix86_setup_incoming_varargs): ... from here.
2269         (ix86_va_start): Remove TARGET_DEBUG_ARG.
2270         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
2271         * config/i386/i386-protos.h (ix86_function_value): Remove.
2272         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
2273
2274 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2275
2276         PR other/23572
2277         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
2278         infinities not supported, otherwise emit warning if -Woverflow. On
2279         underflow, emit warning if -Woverflow.
2280         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
2281         and 0 otherwise.
2282         * real.h (real_from_string): Update declaration
2283
2284 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
2285             Richard Henderson  <rth@redhat.com>
2286
2287         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
2288         * calls.c (compute_argument_block_size, expand_call,
2289         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
2290         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
2291         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
2292         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
2293         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
2294         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
2295         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
2296         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
2297         Set to 1.
2298
2299 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
2300
2301         * c-incpath.c (add_sysroot_to_chain): New.
2302         (merge_include_chains): Add sysroot argument.  Call
2303         add_sysroot_to_chain if sysrooted.
2304         (register_include_chains): Update call to merge_include_chains.
2305         * doc/cppopts.texi: Document use of '=' in include directory
2306         arguments.
2307
2308 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
2309
2310         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
2311         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
2312         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
2313         insn pattern using X87MODEF12 mode macro.
2314
2315 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
2316
2317         * regmove.c (regmove_optimize): Use reg_mentioned_p
2318         instead of reg_overlap_mentioned_p for DST.
2319
2320 2007-03-21  Mike Stump  <mrs@apple.com>
2321
2322         * c.opt: Fixup for Objective-C/C++.
2323
2324 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
2325
2326         * explow.c (convert_memory_address): Fold memory reference when
2327         POINTERS_EXTEND_UNSIGNED < 0
2328
2329 2007-03-21  Richard Henderson  <rth@redhat.com>
2330
2331         PR target/31245
2332         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
2333         * config/i386/mmintrin.h (__m64): Likewise.
2334         * config/i386/xmmintrin.h (__m128): Likewise.
2335
2336 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2337
2338         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
2339         (VXWORKS_OS_CPP_BUILTINS): Define.
2340         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
2341         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
2342
2343 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2344
2345         * rtl.h (constant_pool_reference_p): Delete.
2346         (find_constant_src): Declare.
2347         * rtlanal.c (find_constant_src): New function.
2348         * simplify-rtx.c (constant_pool_reference_p): Delete.
2349         * config/i386/i386.md: Use find_constant_src instead of
2350         constant_pool_reference_p/avoid_constant_pool_reference pairs.
2351
2352 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2353
2354         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
2355         * c-cppbuiltin.c (c_cpp_builtins): Define them.
2356
2357 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
2358
2359         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
2360         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
2361         (arm_elf_asm_constructor): Use it.
2362         (arm_elf_asm_destructor): New function.
2363
2364 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
2365
2366         * jump.c (mark_jump_label): Treat SEQUENCE specially.
2367
2368 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
2369
2370         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
2371
2372 2007-03-19  Andrew Haley  <aph@redhat.com>
2373
2374         PR tree-optimization/31264
2375         * tree-vrp.c (register_edge_assert_for_1): Don't look though
2376         VIEW_CONVERT_EXPRs.
2377
2378 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
2379
2380         PR rtl-optimization/30907
2381         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
2382         (fwprop_init): Always call loop_optimizer_initialize.
2383         (fwprop_done): Always call loop_optimizer_finalize.
2384         (fwprop): We always have loop info now.
2385         (gate_fwprop_addr): Remove.
2386         (pass_fwprop_addr): Use gate_fwprop as gate.
2387
2388         PR rtl-optimization/30841
2389         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
2390         df_chain_alloc): Call df_reorganize_refs unconditionally.
2391         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
2392         refs_organized to refs_organized_size.
2393         (df_ref_create_structure): Use refs_organized_size instead of
2394         bitmap_size if refs had been organized, and keep refs_organized_size
2395         up-to-date.
2396         * df.h (struct df_ref_info): Change refs_organized to
2397         refs_organized_size.
2398         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
2399         bitmap_size.
2400
2401 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
2402
2403         * except.c (output_function_exception_table): Do not reference the
2404         EH personality routine for functions that do not require an
2405         exception table.
2406
2407 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
2408
2409         PR c/30762
2410         * c-typeck.c (convert_for_assignment): Call comptypes for
2411         RECORD_TYPE or UNION_TYPE.
2412
2413         PR inline-asm/30505
2414         * reload1.c (reload): Do invalid ASM checking after
2415         cleanup_subreg_operands.
2416
2417 2007-03-19  Jeff Law  <law@redhat.com>
2418
2419         * tree-cfg.c (find_taken_edge): Tighten conditions for
2420         optimizing computed gotos.
2421
2422 2007-03-19  Michael Matz  <matz@suse.de>
2423
2424         * builtins.c (expand_builtin_sync_operation,
2425         expand_builtin_compare_and_swap,
2426         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
2427         correctly.
2428
2429         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
2430         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
2431         for operand 3.
2432
2433 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2434
2435         * doc/tm.texi: Add brackets around the return type of
2436         TARGET_SECONDARY_RELOAD.
2437
2438 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2439         Richard Guenther  <rguenther@suse.de>
2440
2441         PR tree-optimization/31254
2442         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
2443         Use handled_component_p () where appropriate.  Continue
2444         propagating into the rhs if we propagated into an INDIRECT_REF
2445         on the lhs.
2446
2447 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2448
2449         * config/s390/s390.md (op_type attribute): RRR instruction type added.
2450         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
2451         (xde, xdee): Mode attributes adjusted to support DFP modes.
2452         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
2453         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
2454         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
2455         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
2456         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
2457         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2458         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
2459         numbers.
2460         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
2461         "movsf"): Insn definitions removed.
2462         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
2463         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
2464         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
2465         definitions added.
2466         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
2467         "reload_in<mode>", "reload_out<mode>"): Expander added.
2468         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
2469         Expander removed.
2470
2471 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2472
2473         * config/s390/s390.md: Only non-functional changes.  Renamed
2474         FPR mode macro to BFP all over the file.
2475
2476 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2477
2478         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
2479         (op_type attribute): RRF instruction type added.
2480         (fT0): New mode attribute.
2481         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2482         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
2483         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
2484         no secondary memory is needed when moving DFmode values between GPRs
2485         and FPRs.
2486
2487 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2488
2489         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
2490         inverted and documentation adjusted.
2491         ("mhard-dfp", "msoft-dfp"): New options.
2492         * config/s390/s390.c (s390_handle_arch_option): New architecture
2493         switch: z9-ec.
2494         (override_options): Sanity checks for the new options added.
2495         * config.gcc: New architecture switch: z9-ec.
2496         * config/s390/s390.h (processor_flags): PF_DFP added.
2497         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
2498         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
2499         when the bit is NOT set so remove it from the defaults.
2500
2501 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2502
2503         * genemit.c (main): Print include statement for dfp.h.
2504         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
2505         is not available.
2506
2507 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2508
2509         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
2510
2511 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
2512
2513         PR target/31022
2514         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
2515         instead of PATTERN.
2516
2517 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2518
2519         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
2520         attr_length_call, output_call, output_indirect_call): Cleanup
2521         formatting of targetm calls.
2522
2523 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2524
2525         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2526
2527 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2528
2529         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
2530         reservation, bypass and anti-bypass descriptions for these instructions.
2531         Update move patterns.
2532         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
2533         TYPE_FPSTORE.
2534
2535 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
2536
2537         * tree-vect-transform.c (get_initial_def_for_induction): Replace
2538         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
2539         (get_initial_def_for_reduction): Likewise.
2540
2541 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
2542
2543         Fix PR tree-optimization/29922
2544         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
2545         (get_representative): Removed.
2546         (value_dies_in_block_x): Update for rvuse removal.
2547         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
2548         (compute_antic_aux): Handle when PHI nodes appear in
2549         non-single-successors.
2550         (dump_bitmap_of_names): Removed.
2551         (compute_antic_safe): Renamed and removed rvuse calculation.
2552         Calculate only antic safe.
2553         (insert_into_preds_of_block): Remove assert.
2554         (execute_pre): Update for renamed functions.
2555         (defer_or_phi_translate_block): New function.
2556
2557 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2558
2559         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
2560         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
2561         typos.
2562         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
2563         Follow spelling conventions.
2564
2565         * tree-data-ref.h: Remove the prototype for analyze_array.
2566
2567 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
2568
2569         PR tree-optimization/31041
2570         * tree-vect-transform.c (get_initial_def_for_induction): Call
2571         force_gimple_operand.
2572
2573 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
2574
2575         * ipa-type-escape.c (look_for_casts) : Revert code to use
2576         handled_component_p due to ada test a-numaux.adb.
2577
2578 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2579
2580         * final.c (final_scan_insn): Alter the condition of a
2581         conditional trap if we have nonstandard CC.
2582
2583 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2584
2585         * configure.ac: Remove excess quoting from asm line 0 test.
2586         * configure: Rebuilt.
2587
2588 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2589
2590         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
2591         * c-common.c (convert_and_check): Move warning logic to...
2592         (warnings_for_convert_and_check): ...here. Define.
2593         * c-common.h (warnings_for_convert_and_check): Declare.
2594
2595 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2596
2597         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
2598         (output_call): Likewise.
2599
2600 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2601
2602         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
2603
2604 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2605
2606         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
2607
2608 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
2609
2610         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
2611         opteron, athlon-64 and athlon-fx processor_alias_table entries.
2612
2613 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
2614
2615         PR tree-optimization/31183
2616         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2617         Use double_int instead of unsigned int for representing access_strides.
2618         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
2619
2620 2007-03-16  Richard Guenther  <rguenther@suse.de>
2621
2622         PR tree-optimization/31146
2623         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
2624         to allow recursion of forward_propagate_addr_expr.
2625         (forward_propagate_addr_into_variable_array_index): Likewise.
2626         (forward_propagate_addr_expr): Likewise.
2627         (tree_ssa_forward_propagate_single_use_vars): Likewise.
2628         (forward_propagate_addr_expr_1): Recurse on simple copies
2629         instead of propagating into them.  Do so for useless conversions
2630         as well.
2631         (forward_propagate_addr_expr): Clean up unused statements after
2632         recursion.
2633
2634 2007-03-16  Richard Guenther  <rguenther@suse.de>
2635
2636         * builtins.c (expand_builtin_cexpi): Use the right argument
2637         for the expansion via cexp.
2638
2639 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2640
2641         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
2642         * configure: Rebuilt.
2643
2644 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2645
2646         PR debug/29906
2647         * dwarf2out.c (force_type_die): Adjust comment.
2648         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
2649
2650 2007-03-15  DJ Delorie  <dj@redhat.com>
2651
2652         * config/frv/predicates.md (minmax_operator): Don't check operands
2653         here.
2654
2655 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2656
2657         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
2658         Update constant estimates of number of iterations.
2659         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
2660         argument renamed to "realistic".
2661         (compute_estimated_nb_iterations): Removed.
2662         (record_niter_bound): New function.
2663         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
2664         call record_nonwrapping_iv with upper = false.
2665         (infer_loop_bounds_from_signedness): Pass upper argument to
2666         record_nonwrapping_iv.
2667         (estimate_numbers_of_iterations_loop): Do not call
2668         compute_estimated_nb_iterations.  Record estimate based on profile
2669         information.  Initialize the constant estimates of number of
2670         iterations.
2671         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
2672         estimates.
2673         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
2674         number of iterations is too small.
2675         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
2676         (EST_NOT_AVAILABLE): Removed.
2677         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
2678         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
2679         fields.
2680
2681 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2682
2683         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
2684         Handle NE_EXPR guards.
2685
2686 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2687
2688         PR c++/24924
2689         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
2690         Set also -pedantic-errors by default for the  preprocessor unless
2691         -fpermissive is given.
2692
2693 2007-03-15  Richard Guenther  <rguenther@suse.de>
2694
2695         PR middle-end/29719
2696         PR middle-end/31161
2697         * builtins.c (expand_builtin_cexpi): As a fallback if we
2698         don't have builtins for sincos or cexp create a function
2699         declaration for cexp and expand to a call to that.
2700         (expand_builtin_int_roundingfn): Always fall
2701         back to floor/ceil and its variants even if they may be
2702         not available.
2703
2704 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
2705
2706         PR middle-end/31159
2707         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
2708         jump tables, move the call to delete_dead_jumptables from here...
2709         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
2710         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
2711         don't allow merging of blocks that try_redirect_by_replacing_jump
2712         also does not handle when not optimizing.
2713
2714 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2715             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2716
2717         * config/i386/i386.md (x86_sahf_1): Correctly handle
2718         HAVE_AS_IX86_SAHF.
2719
2720 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2721
2722         PR target/31167
2723         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
2724         x86_64_general_operand as operand[2] predicate.  Remove "iF"
2725         from operand constraints and use "e" constraint instead.
2726         (*subti3_1, *subti3_1 splitter): Ditto.
2727         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
2728         operand[1] predicate.
2729
2730 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
2731
2732         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
2733         arrays, multiply the access strides by the size of the sub-array.
2734         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
2735
2736 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2737
2738         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
2739         the configured assembler supports the sahf mnemonic.
2740         * configure: Regenerate.
2741         * config.in: Regenerate.
2742
2743         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
2744         emit "sahf" or ".byte\t0x9e" as asm template.
2745
2746 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
2747
2748         PR 31018
2749         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
2750         option to replace hard coded TARGET_xxx in md file.
2751         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
2752         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2753         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
2754         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
2755         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
2756         (X86_TUNE_NOT_VECTORMODE): Ditto.
2757         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
2758         (TUNE_AVOID_VECTOR_DECODE): Ditto.
2759         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2760         (TUNE_SLOW_IMUL_IMM8): Ditto.
2761         (TUNE_MOVE_M1_VIA_OR): Ditto.
2762         (TUNE_NOT_UNPAIRABLE): Ditto.
2763         (TUNE_NOT_VECTORMODE): Ditto.
2764
2765         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
2766         options.
2767
2768         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
2769         tuning options instead of hard coded TARGET_xxx.
2770         (fix ssemode peephole2's): Ditto.
2771         (imul peephole2's): Ditto.
2772         (movsi_or): Ditto.
2773         (movdi_or_rex64): Ditto.
2774         (move peephole2): Ditto.
2775         (not peephole2's): Ditto.
2776
2777 2007-03-14  Dirk Mueller  <dmueller@suse.de>
2778
2779         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
2780         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
2781         * c-parser.c (c_parser_if_body): Always add an empty statement in case
2782         of empty body.
2783         * c-parser.c (c_parser_do_statement): Warn about empty body in
2784         do/while statement.
2785         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
2786         * doc/invoke.texi (-Wempty-body): Update documentation.
2787
2788 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2789
2790         PR c/21438
2791         * c-common.h (warn_for_div_by_zero): Declare.
2792         * c-common.c (warn_for_div_by_zero): Define.
2793         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
2794         warning.
2795
2796 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2797
2798         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
2799         to PREFIX and STANDARD_PREFIX.
2800
2801 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2802             Phil Edwards  <phil@codesourcery.com>
2803
2804         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
2805         (__gthread_once_t): Remove busy field for RTPs.
2806         (__GTHREAD_ONCE_INIT): Update accordingly.
2807
2808 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2809
2810         * doc/invoke.texi: Document VxWorks options.
2811
2812 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2813
2814         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
2815
2816 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
2817
2818         PR tree-optimization/30590
2819         * tree-nrv.c (tree_nrv): Check for the partial update of the
2820         return value.
2821
2822 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2823
2824         * flags.h (flag_random_seed): Remove declaration, in favor of...
2825         * toplev.h (get_random_seed, set_random_seed): ... these.
2826         * tree.c (get_file_function_name): Use the former.
2827         * opts.c (common_handle_option): Use the latter.
2828         * toplev.c
2829
2830 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
2831
2832         PR middle-end/31127
2833         * cse.c (cse_find_path): Do not bail out if a basic block that
2834         we already visited now becomes part of a path that starts at a
2835         different basic block.  Just disallow this, to make sure we
2836         visit each basic block at most once.
2837
2838 2007-03-13  Jan Hubicka  <jh@suse.cz>
2839
2840         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
2841         when profile esitmate is present, calls with very low frequency are
2842         cold.
2843
2844 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
2845
2846         PR tree-optimization/30730
2847         PR tree-optimization/26900
2848         * tree-ssa-loop-niter.c: Include gmp.h.
2849         (bounds): New type.
2850         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
2851         split_to_var_and_offset, determine_value_range,
2852         bound_difference_of_offsetted_base, refine_bounds_using_guard,
2853         bound_difference, bounds_add, bounds_negate,
2854         number_of_iterations_ne_max, dump_affine_iv): New functions.
2855         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
2856         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
2857         difference of initial and final value of control iv to validate
2858         results.
2859         (number_of_iterations_cond): Add loop parameter.  Determine bounds
2860         on the difference of the extremes of the control iv.  Add dumps.
2861         (expand_simple_operations): Handle phi nodes.
2862         (simplify_using_initial_conditions): Do not record used conditions.
2863         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
2864         Do not set additional_info.
2865         (implies_nonnegative_p, implies_ge_p): Removed.
2866         (derive_constant_upper_bound): Do not use parameter `additional'.
2867         (record_estimate): Parameter `additional' removed.  Parameter
2868         `i_bound' added.  Do not call derive_constant_upper_bound.
2869         (record_nonwrapping_iv): Use derive_constant_upper_bound to
2870         bound the number of iterations estimate.
2871         (estimate_numbers_of_iterations_loop): Pass the estimate from
2872         the number of iterations analysis to record_estimate.
2873         * tree.h (multiple_of_p): Declare.
2874         * tree-scalar-evolution.c (expression_expensive_p): Removed.
2875         (scev_const_prop): Do not check expression_expensive_p.
2876         * fold-const.c (multiple_of_p): Exported.
2877         * double-int.c (double_int_mask): Exported.
2878         * double-int.h (double_int_mask): Declare.
2879         * tree-flow.h (struct tree_niter_desc): Removed additional_info
2880         field.  Added max field.
2881
2882 2007-03-13  David Taylor  <taylor@candd.org>
2883
2884         PR driver/12448:
2885         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
2886         default -MQ.
2887
2888 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2889
2890         PR target/31123
2891         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
2892         two unamed patterns.
2893
2894 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
2895
2896         * config/i386/i386.opt (mcx16, msahf): New options.
2897         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
2898         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
2899
2900         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
2901         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
2902         Output -mcx16 and -msahf options when corresponding bit is set.
2903
2904         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
2905         and -msahf options.
2906
2907 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2908
2909         * configure.ac: Test for assembler tolerance to # 0 "".
2910         * configure, config.in: Rebuilt.
2911         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
2912
2913 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
2914
2915         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
2916
2917         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
2918         (handle_syscall): Handle direct system calls.
2919         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
2920
2921 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2922
2923         * doc/invoke.texi: Fix cpp.info cross-reference.
2924         * doc/passes.texi: Fix gcc.info cross-reference.
2925
2926 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
2927
2928         PR tree-optimization/30835
2929         * lambda-code.c (can_convert_to_perfect_nest): Check whether
2930         bb_for_stmt is not NULL before accessing it.
2931
2932 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
2933
2934         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
2935         some multilibs.
2936
2937 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2938
2939         PR 30635
2940         * doc/install.texi: Document --enable-stage1-languages
2941
2942 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
2943
2944         * tree-pass.h (pass_into_cfg_layout_mode,
2945         pass_outof_cfg_layout_mode): Declare.
2946         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
2947         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
2948         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
2949         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
2950
2951 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
2952
2953         * c-decl.c (warn_variable_length_array): New function.
2954         Refactored from grokdeclarator to handle warn_vla
2955         and handle unnamed array case.
2956         (grokdeclarator): Refactored VLA warning case.
2957         * c.opt (Wvla): New flag.
2958         * doc/invoke.texi (Wvla): New warning.
2959
2960 2007-03-12  Richard Henderson  <rth@redhat.com>
2961
2962         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
2963         (TARGET_SECTION_TYPE_FLAGS): New.
2964
2965 2007-03-12  Richard Henderson  <rth@redhat.com>
2966
2967         * config/darwin.c (machopic_reloc_rw_mask): New.
2968         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
2969         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
2970
2971 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
2972
2973         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
2974         * cppdefault.h (cpp_PREFIX): Document.
2975         (cpp_PREFIX_len): Likewise.
2976         (cpp_EXEC_PREFIX): New variable.
2977         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
2978         * c-incpath.c (add_standard_paths): Correct logic for relocating
2979         paths within prefix.
2980
2981 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
2982
2983         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
2984         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
2985         mode macro.
2986         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
2987         fix_truncdfdi_sse using SSEMODEF mode macro.
2988         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
2989         fix_truncdfsi_sse using SSEMODEF mode macro.
2990         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
2991         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
2992
2993 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
2994
2995         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
2996         elfos.h to tm_file.
2997
2998 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
2999
3000         * tree.h : Add multiple_of_p declaration.
3001         * fold-const.c (multiple_of_p): Make multiple_of_p public.
3002         * ipa-type-escape.c (results_of_malloc): Redundant.
3003         (visited_stmts): New. Visited stmt for walk_use_def_chains.
3004         (cast_type): Extended with new members.
3005         (check_cast): Returns cast_type.
3006         (cast): New structure for data of walk_use_def_chains.
3007         (is_malloc_result, is_cast_from_non_pointer_1,
3008         is_cast_from_non_pointer,
3009         is_array_access_through_pointer_and_index): New functions.
3010         (look_for_casts): Returns cast types.
3011         (check_call): Returns void.
3012         (okay_pointer_operation): Use support of pointer plus index,
3013         pointer plus constant and allow all multiplications.
3014
3015 2007-03-11  Richard Guenther  <rguenther@suse.de>
3016
3017         PR tree-optimization/31115
3018         * tree-vrp.c (extract_range_from_binary_expr): Make sure
3019         the shift count is positive and non-anti-range for RSHIFT_EXPR.
3020         A shift count of zero is not special as with *_DIV_EXPR.
3021         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
3022         direction.
3023
3024 2007-03-11  Ian Lance Taylor  <iant@google.com>
3025
3026         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
3027         the *_DIV_EXPR codes correctly with overflow infinities.
3028
3029 2007-03-11  Ira Rosen  <irar@il.ibm.com>
3030
3031         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
3032         indicate success/failure of the analysis. Add negation to subtrahend
3033         in case of subtraction. Fail if both operands contain constants.
3034         (create_data_ref): Fail if analyze_offset fails.
3035
3036 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
3037
3038         * config/i386/i386.md (frndintxf2): Rename to ...
3039         (rintxf2): ... this. Remove expander having same name.
3040         (rintsf2, rintdf2): Implement using SSEMODEF macro.
3041         (roundsf2, rounddf2): Ditto.
3042         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
3043         (lround<mode>di2, lround<mode>si2): Ditto.
3044
3045 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
3046
3047         * lower-subreg.c: Include except.h.
3048         (decompose_multiword_subregs): Verify that the only control flow
3049         insns we can split are loads to multi-words pseudos.
3050         Handle breaking such blocks after splitting, instead of calling
3051         find_many_sub_basic_blocks.
3052
3053         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
3054         on the new basic block.  Add a lengthy comment explaining why we
3055         thought this was necessary.
3056         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
3057
3058 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
3059
3060         PR c++/30924
3061         * tree.c (walk_type_fields): Recurse into the element type of
3062         ARRAY_TYPEs if there is a pointer set.
3063
3064 2007-03-10  Dirk Mueller  <dmueller@suse.de>
3065
3066         * c-common.c (warn_logical_operator): Fix condition.
3067
3068 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
3069
3070         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
3071         quotation mark.
3072         * config/darwin.c (machopic_select_section): Remove superfluous
3073         argument in call to categorize_decl_for_section.  Remove unused
3074         variable shlib.
3075
3076 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
3077
3078         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
3079         defined.
3080         * configure: Regenerate.
3081
3082 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
3083
3084         PR target/31101
3085         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
3086         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
3087         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
3088         Add LABEL_NUSES to emitted label.
3089         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
3090         branch probability value to emitted jump insn.
3091         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
3092         Do not check life information and do not re-arrange input operands
3093         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
3094
3095 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3096
3097         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
3098         the change of decode_asm_operands.
3099
3100 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3101
3102         * mode-switching.c (create_pre_exit): Skip blockage insn.
3103
3104 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
3105
3106         * tree-pass.h (TODO_update_smt_usage): Remove.
3107         Update all users.
3108         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
3109         argument SOME.
3110         Update all users.
3111
3112 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3113
3114         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
3115         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
3116         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
3117         SOM target.
3118
3119 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
3120
3121         * gcc.c: Document %{, in big comment at top.
3122         (input_suffix_matches): Remove special handling for .s and
3123         .S.
3124         (input_spec_matches): New.
3125         (handle_braces): Handle %{,.
3126         (validate_switches): ',' indicates a value which is not a switch.
3127         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
3128         to detect assembler input.
3129         * config/i386/sol2.h (CPP_SPEC): Likewise.
3130         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
3131         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
3132         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
3133         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
3134         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
3135         -m64 causes deployment target to default to 10.5.
3136         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
3137
3138 2007-03-09  Richard Henderson  <rth@redhat.com>
3139
3140         PR target/26090
3141         * target.h (targetm.asm.out.reloc_rw_mask): New.
3142         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
3143         (TARGET_ASM_OUT): Use it.
3144         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
3145         * varasm.c (categorize_decl_for_section): Remove shlib argument;
3146         use the new reloc_rw_mask target hook instead.
3147         (default_section_type_flags_1): Merge into...
3148         (default_section_type_flags): ... here.
3149         (decl_readonly_section_1): Merge into...
3150         (decl_readonly_section): ... here.
3151         (default_elf_select_section_1): Merge into...
3152         (default_elf_select_section): ... here.
3153         (default_unique_section_1): Merge into...
3154         (default_unique_section): ... here.
3155         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
3156         (default_select_rtx_section): Use it.
3157         (default_elf_select_rtx_section): Likewise.
3158         * output.h: Update to match.
3159         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
3160         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
3161         (TARGET_ASM_RELOC_RW_MASK): New.
3162         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
3163         to categorize_decl_for_section.
3164         (x86_64_elf_unique_section): Likewise.
3165         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
3166         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
3167         (TARGET_ASM_RELOC_RW_MASK): New.
3168         * config/ia64/ia64.c (ia64_rwreloc_select_section,
3169         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
3170         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
3171         (TARGET_RWRELOC): Remove.
3172         (ia64_section_type_flags): Adjust call to default_section_type_flags.
3173         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
3174         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
3175         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
3176         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
3177         (rs6000_xcoff_select_section): Use decl_readonly_section.
3178         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
3179         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
3180         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
3181         (TARGET_SECTION_TYPE_FLAGS): Remove.
3182         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
3183
3184 2007-03-09  Roger Sayle  <roger@eyesopen.com>
3185
3186         * fold-const.c (fold_comparison): Remove compile-time evaluation of
3187         complex constant equality/inequality comparisons for here.
3188         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
3189         known at compile-time or can be simplified to a scalar comparison.
3190         (fold_relational_const): Move compile-time evaluation of complex
3191         constant equality/inequality comparisons to here.
3192
3193 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3194
3195         PR rtl-optimization/30643
3196         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
3197         dest_addr_elt.
3198         (fold_rtx): Recurse, like before 2006-11-03.
3199
3200 2007-03-09  DJ Delorie  <dj@redhat.com>
3201
3202         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
3203         m32c-pragma.o.
3204
3205 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
3206
3207         PR tree-optimization/30375
3208         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
3209         LHS of statements is not the same.
3210         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
3211
3212 2007-03-09  Chao-ying Fu  <fu@mips.com>
3213
3214         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
3215         REV 2.
3216         * doc/invoke.texi (-mdspr2): Document new option.
3217         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
3218         New unspec for DSP REV 2.
3219         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
3220         these instructions are extended in DSP REV 2.
3221         (mips-dspr2.md): Include.
3222         * config/mips/mips.opt (mdspr2): New option.
3223         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
3224         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
3225         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
3226         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
3227         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
3228         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
3229         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
3230         and 2 builtins.
3231         (bdesc_map): Add one field of unsupported_target_flags.
3232         (bdesc_arrays):  Update entries to have extra fields.  Add
3233         dsp_32only_bdesc.
3234         (mips_init_builtins): Initialize new function types.
3235         Check unsupported_target_fileds to filter out builtins.
3236         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
3237         TARGET_DSPR2.
3238         (ASM_SPEC): Pass mdspr2 to the assembler.
3239         * config/mips/mips-dspr2.md: New file.
3240
3241 2007-03-09  Sa Liu  <saliu@de.ibm.com>
3242
3243         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
3244
3245 2007-03-09  Ian Lance Taylor  <iant@google.com>
3246
3247         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
3248         argument) like -Wstrict-overflow=2.
3249         * doc/invoke.texi (Warning Options): Update documentation.
3250
3251 2007-03-09  Dirk Mueller  <dmueller@suse.de>
3252
3253         PR c++/17946
3254         * doc/invoke.texi (-Wlogical-op): Document.
3255         * common.opt (-Wlogical-op): New.
3256         * c-common.h (warn_logical_operator): Declare.
3257         * c-common.c (warn_logical_operator): Define.
3258         * c-typeck.c (parser_build_binary_op): Call
3259         warn_logical_operator.
3260
3261 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3262
3263         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
3264         * final.c (final_scan_insn): Test for non-"" file name.
3265
3266 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
3267
3268         * doc/loop.texi: Document the Omega linear constraints solver.
3269         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
3270         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
3271         omega-hash-table-size, omega-max-keys, and
3272         omega-eliminate-redundant-constraints.
3273         * tree-pass.h (pass_check_data_deps): Declared.
3274         * omega.c: New.
3275         * omega.h: New.
3276         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
3277         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
3278         pass_check_data_deps): New.
3279         * tree-data-ref.c (init_data_ref): Remove declaration.
3280         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
3281         (analyze_array): Renamed init_array_ref, move up initializations.
3282         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
3283         Removed arguments that are set to NULL.
3284         (analyze_indirect_ref): Correct indentation, correct call to
3285         init_pointer_ref.
3286         (object_analysis): Call init_array_ref instead of analyze_array.
3287         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
3288         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
3289         of DR_ACCESS_FNS_ADDR.
3290         (init_omega_eq_with_af, omega_extract_distance_vectors,
3291         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
3292         ddr_consistent_p): New.
3293         (compute_affine_dependence): Check consistency of ddrs when
3294         flag_check_data_deps is passed.
3295         (analyze_all_data_dependences): Uncomment.
3296         (tree_check_data_deps): New.
3297         * tree-data-ref.h: Include omega.h.
3298         (DR_ACCESS_FNS_ADDR): Removed.
3299         (data_dependence_relation): Add inner_loop.
3300         (DDR_INNER_LOOP): New.
3301         * common.opt (fcheck-data-deps): New.
3302         * tree-flow.h (tree_check_data_deps): Declare.
3303         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
3304         (OBJS-common): Depend on omega.o.
3305         (omega.o): Define.
3306         * passes.c (pass_check_data_deps): Scheduled.
3307         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
3308         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
3309         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
3310         PARAM_VECT_MAX_VERSION_CHECKS,
3311         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
3312
3313 2007-03-09  Richard Guenther  <rguenther@suse.de>
3314
3315         PR tree-optimization/30904
3316         PR middle-end/31058
3317         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
3318         the same way as *_DIV_EXPR.
3319
3320 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3321
3322         * recog.c (decode_asm_operands): No mixed declarations and code.
3323
3324 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3325
3326         * rtl.def (ASM_INPUT): Add location.
3327         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
3328         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
3329         (decode_asm_operands): Add loc operand.
3330         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
3331         * stmt.c (expand_asm): Rename to...
3332         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
3333         gen_rtx_ASM_INPUT_loc.
3334         (expand_asm_expr): Adjust.
3335         * recog.c (decode_asm_operands): Add loc operand.
3336         (check_asm_operands, extract_insn): Adjust.
3337         * reload1.c (maybe_fix_stack_asms): Likewise.
3338         * final.c (asm_insn_count): Likewise.
3339         (final_scan_insn): Output # line before and after asm.
3340
3341 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
3342
3343         * tree-ssa-structalias.c (variable_info): Remove
3344         finished_solution.
3345         (new_var_info): Ditto.
3346         (shared_bitmap_info_t): New structure.
3347         (shared_bitmap_table): New variable.
3348         (shared_bitmap_hash): New function.
3349         (shared_bitmap_eq): Ditto
3350         (shared_bitmap_lookup): Ditto.
3351         (shared_bitmap_add): Ditto.
3352         (merge_smts_into): Change to take bitmap directly.
3353         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
3354         (init_alias_vars): Init shared bitmap hashtable.
3355         (delete_points_to_sets): Delete shared bitmap hashtable.
3356         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
3357         is_aliased removal as a change that was still necessary was
3358         deleted.
3359
3360 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
3361
3362         * config/i386/i386.h (override_options): Conditionally disable
3363         x86_sahf for 64bit targets only.
3364
3365 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3366
3367         PR C/31072
3368         * c-decl.c (merge_decls): Don't call make_var_volatile.
3369         * varasm.c (make_var_volatile): Remove.
3370         * output.h (make_var_volatile): Remove.
3371
3372 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
3373
3374         PR tree-optimization/31085
3375         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
3376
3377 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3378
3379         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
3380         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
3381         ATTR_CONST_NOTHROW_LIST.
3382
3383         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
3384         FIX_TRUNC_EXPR.
3385
3386 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
3387
3388         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
3389
3390 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
3391
3392         PR 31013
3393         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
3394         is declared.
3395         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
3396         passed, use shared libgcc.
3397
3398 2007-03-08  Roger Sayle  <roger@eyesopen.com>
3399
3400         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
3401         instead of calling build2 with a GIMPLE_MODIFY_STMT.
3402         (honor_protect_cleanup_actions, lower_try_finally_switch):
3403         Likewise.
3404         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
3405         ifc_temp_var): Likewise.
3406         * tree-inline.c (setup_one_parameter): Likewise.
3407         * tree-mudflap.c (mf_decl_cache_locals,
3408         mf_build_check_statement_for): Likewise.
3409         * tree-nested.c (init_tmp_var, save_tmp_var,
3410         finalize_nesting_tree_1): Likewise.
3411         * tree-outof-ssa.c (insert_copy_on_edge,
3412         insert_backedge_copies): Likewise.
3413         * tree-profile.c (tree_gen_edge_profiler,
3414         tree_gen_ic_profiler): Likewise.
3415         * tree-scalar-evolution.c (scev_const_prop): Likewise.
3416         * tree-sra.c (sra_build_assignment): Likewise.
3417         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
3418         * tree-ssa-math-opts.c (insert_reciprocals,
3419         execute_cse_sincos_1): Likewise.
3420         * tree-tailcall.c (adjust_accumulator_values,
3421         adjust_return_value): Likewise.
3422         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
3423         * tree-vect-transform.c (vect_create_data_ref_ptr,
3424         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
3425         vect_create_epilog_for_reduction, vectorizable_reduction,
3426         vectorizable_call, vectorizable_conversion,
3427         vectorizable_assignment, vectorizable_operation,
3428         vectorizable_type_demotion, vect_gen_widened_results_half,
3429         vect_permute_store_chain, vectorizable_store,
3430         vect_setup_realignment, vect_permute_load_chain,
3431         vectorizable_load, vectorizable_condition,
3432         vect_create_cond_for_align_checks): Likewise.
3433         * tree-vrp.c (build_assert_expr_for): Likewise.
3434
3435 2007-03-08  Ian Lance Taylor  <iant@google.com>
3436
3437         * tree-vrp.c: Include "intl.h".
3438         (usable_range_p): New static function.
3439         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
3440         overflowed values, juts set *strict_overflow_p.
3441         (compare_values): Only return -2 if one of the operands is not a
3442         constant.
3443         (compare_ranges): Call usable_range_p.
3444         (compare_range_with_value): Likewise.
3445         (vrp_evaluate_conditional_warnv): Rename from
3446         vrp_evaluate_conditional.  Make static.  Change all callers.
3447         (vrp_evaluate_conditional): New function.
3448         (simplify_div_or_mod_using_ranges): Issue warning about reliance
3449         on signed overflow.
3450         (simplify_abs_using_ranges): Likewise.
3451         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
3452         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
3453         within_stmt parameter.
3454         * tree-ssa-propagate.c (fold_predicate_in): Update call to
3455         vrp_evaluate_conditional.
3456         * tree-ssa-threadedge.c
3457         (record_temporary_equivalences_from_stmts_at_dest): Change
3458         simplify parameter to take a second tree parameter.
3459         (simplify_control_stmt_condition): Likewise.
3460         (thread_across_edge): Likewise.
3461         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3462         (thread_across_edge): Likewise.
3463         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
3464
3465 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
3466
3467         * config/i386/i386.h (TARGET_SAHF): New define.
3468         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
3469         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
3470         (x86_sahf): New global variable.
3471         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
3472         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
3473         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
3474         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
3475         for 64-bit.
3476         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
3477         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
3478         when expanding fcomi/sahf based tests.
3479         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
3480         expanding sahf based alternative. Emit sahf based sequence when
3481         optimizing for code size.
3482         * config/i386/i386.md (x86_sahf_1): Do not disable for
3483         TARGET_64BIT, enable for TARGET_SAHF.
3484
3485 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
3486
3487         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
3488         spurious whitespace from error message.
3489
3490 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
3491
3492         PR c++/30852
3493         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
3494
3495 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
3496
3497         * c-decl.c (grokdeclarator): Disable warnings for anonymous
3498         bitfields.
3499         * tree-sra.c (instantiate_element): Propagate disabled warnings
3500         from the element itself to the created variable.
3501
3502 2007-03-07  Richard Henderson  <rth@redhat.com>
3503
3504         PR target/30848
3505         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
3506         silently fix up the stack in the case of a missing register.
3507
3508 2007-03-07  Paul Brook  <paul@codesourcery.com>
3509
3510         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
3511
3512 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
3513
3514         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
3515         New.
3516         (phase1_vrs): Use them.
3517         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
3518         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
3519         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
3520         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
3521         __gnu_Unwind_Restore_WMMXC if required.
3522         (_Unwind_VRS_Pop): Implement iWMMXt support.
3523         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
3524         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
3525         gnu_Unwind_Save_WMMXC): Define.
3526
3527 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3528
3529         * config/vxworks.h (vxworks_override_options): Declare.
3530         (VXWORKS_OVERRIDE_OPTIONS): Use it.
3531         * config/vxworks.c: Include target.h and toplev.h.
3532         (vxworks_override_options): New function.
3533         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
3534
3535 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3536
3537         * config/s390/s390.c (override_options): Don't emit an error when
3538         -mstack-size is used without providing -mstack-guard.
3539         (s390_emit_prologue): Choose stack_guard value automatically if not
3540         provided via command line.
3541         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
3542
3543 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3544
3545         * config/i386/i386.c (output_set_got): Add a GOT initialization
3546         sequence for VxWorks PIC.
3547         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
3548         around labels as well as symbols.  Use gotoff_operand instead
3549         of local_symbolic_operand.
3550         (legitimize_pic_address): Use gotoff_operand instead of
3551         local_symbolic_operand.  Use @GOT accesses for labels as
3552         well as symbols.
3553         (ix86_output_addr_diff_elt): Use PC-relative rather than
3554         GP-relative offsets for VxWorks PIC.
3555         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
3556         no_new_pseudos.  Check whether the returned register is op0.
3557         * config/i386/i386.md (tablejump): Use PC-relative rather than
3558         GP-relative offsets for VxWorks PIC.
3559         * config/i386/predicates.md (gotoff_operand): New predicate.
3560
3561 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3562
3563         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
3564         before defining.
3565         * config/vxworks-dummy.h: New file.
3566         * config/i386/i386.h: Include it.
3567
3568 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
3569
3570         * dwarf2out.c (is_inlined_entry_point): New
3571         (add_high_low_attributes): Emit DW_AT_entry_pc along with
3572         DW_AT_ranges if the first subblock is the entry point.
3573
3574 2007-03-06  David Daney  <ddaney@avtrex.com>
3575
3576         * doc/install.texi (mips-*-*): Change recommended binutils
3577         version.
3578
3579 2007-03-06  Anatoly Sokolov <aesok@post.ru>
3580
3581         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
3582         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
3583         devices.
3584         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3585         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3586
3587 2007-03-06  Jan Hubicka  <jh@suse.cz>
3588
3589         * errors.h (warning, error, fatal, internal_error): Mark as cold.
3590         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
3591         are hot.
3592         (probably_cold_bb_p): Cold functions are cold.
3593         (probably_never_executed_bb_p): Cold functions are cold.
3594         (tree_bb_level_predictions): Predict calls to cold functions as not
3595         taken.
3596         (compute_function_frequency): Check hot/cold attributes.
3597         * function.h (function_frequency): Update comments.
3598         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
3599         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
3600         (c_common_att): Add cold and hot.
3601
3602         * doc/extend.texi (hot,cold attributes): Document.
3603
3604 2007-03-06  Andrew Haley  <aph@redhat.com>
3605
3606         * function.c (expand_function_end): Move blockage to just after we
3607         emit the label for the naked return from the function.
3608
3609 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3610
3611         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
3612         before redefining.
3613
3614 2007-03-06  Jan Hubicka  <jh@suse.cz>
3615
3616         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
3617         loaded for constant large models.  Non-large 64bit PIC can do.
3618         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
3619         * cmodel.h: Add LARGE PIC.
3620         * i386.md (UNSPEC_PLTOFF): New.
3621         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
3622         needed.
3623         (*call_1_rex64): Disable for large models.
3624         (*call_1_rex64_large): New.
3625         (*call_value_1_rex64): Disable for large models.
3626         (*call_value_1_rex64_large): New.
3627         (set_rip_rex4): New.
3628         (set_got_offset_rex64): New.
3629         * predicates.md (constant_call_address_operand): For large model
3630         constant calls are not possible.
3631         * i386-protos.h (construct_plt_address): Declare.
3632         * i386.c (override_options): Accept large models.
3633         (ix86_expand_prologue): Expand large PIC GOT pointer load.
3634         (legitimate_constant_p): Add new UNSPECs.
3635         (legitimate_pic_operand_p): Likewise.
3636         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
3637         (legitimize_pic_address): Do easy RIP relative way for TLS only for
3638         non-large model.
3639         (output_pic_addr_const): Add PLTOFF.
3640         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
3641         (ix86_expand_move): Legitimize pic address when in PIC mode.
3642         (construct_plt_address): New function.
3643         (ix86_expand_call): Offload the address to register and use GOT pointer
3644         for large model.
3645         * invoke.texi (mcmodel=large): Update documentation.
3646
3647 2007-03-06  Richard Henderson  <rth@redhat.com>
3648
3649         * config/i386/i386.c (x86_use_leave, x86_push_memory,
3650         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
3651         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
3652         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
3653         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
3654         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
3655         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
3656         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
3657         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
3658         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
3659         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3660         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
3661         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3662         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3663         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
3664         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
3665         x86_schedule, x86_use_bt, x86_pad_returns,
3666         x86_use_xchgb): Merge into ...
3667         (ix86_tune_features): ... here.  New array.
3668         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3669         x86_bswap): Merge into ...
3670         (ix86_arch_features): ... here.  New array.
3671         (x86_3dnow_a): Remove.
3672         (x86_accumulate_outgoing_args): Make static.
3673         (x86_arch_always_fancy_math_387): Make static.
3674         (ix86_tune_mask, ix86_arch_mask): Move ...
3675         (override_options): ... to local variables here.  Apply the
3676         appropriate mask to each element of ix86_arch_features and
3677         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
3678         as were done in the old macros.
3679         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
3680         * config/i386/i386.h (x86_use_leave, x86_push_memory,
3681         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
3682         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
3683         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
3684         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
3685         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
3686         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
3687         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
3688         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
3689         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
3690         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3691         x86_accumulate_outgoing_args, x86_prologue_using_move,
3692         x86_epilogue_using_move, x86_decompose_lea,
3693         x86_arch_always_fancy_math_387, x86_shift1,
3694         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3695         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3696         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
3697         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3698         x86_use_incdec, x86_pad_returns, x86_bswap,
3699         x86_partial_flag_reg_stall): Remove.
3700         (enum ix86_tune_indices): New.
3701         (ix86_tune_features): New.
3702         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
3703         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
3704         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
3705         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
3706         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
3707         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
3708         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
3709         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
3710         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
3711         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
3712         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
3713         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
3714         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
3715         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
3716         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
3717         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
3718         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
3719         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
3720         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
3721         TARGET_EXT_80387_CONSTANTS): Use it.
3722         (enum ix86_arch_indices): New.
3723         (ix86_arch_features): New.
3724         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
3725         TARGET_BSWAP): Use it.
3726         (ix86_tune_mask, ix86_arch_mask): Remove.
3727
3728 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
3729
3730         PR bootstrap/31020
3731         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
3732         Define using $${sysroot_headers_suffix}.
3733         * configure: Regenerate.
3734         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
3735         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
3736         defined.
3737         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
3738         * gcc.c (print_sysroot_headers_suffix): New.
3739         (option_map): Include --print-sysroot-headers-suffix.
3740         (display_help): Mention -print-sysroot-headers-suffix.
3741         (process_command): Handle -print-sysroot-headers-suffix.
3742         (do_spec_1): Append multilib directory to include-fixed path if
3743         sysroot suffixes in use.
3744         (main): Handle -print-sysroot-headers-suffix.
3745         * Makefile.in (start.encap): Don't depend on xlimits.h
3746         (xlimits.h): Remove.
3747         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
3748         limits.h for each multilib in fixinc_list.
3749         (fixinc_list, s-fixinc_list): New.
3750         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
3751         generate them for each multilib in fixinc_list.
3752         (stmp-fixproto): Use include-fixed.  Run fixproto for each
3753         multilib in fixinc_list.
3754         (mostlyclean): Don't remove xlimits.h.
3755         (clean): Remove include-fixed.
3756         (real-install-headers-tar, real-install-headers-cpio,
3757         real-install-headers-cp): Don't copy include, only include-fixed.
3758         (install-mkheaders): Depend on fixinc_list.  Don't depend on
3759         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
3760         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
3761         SYSTEM_HEADER_DIR setting in mkheaders.conf.
3762
3763 2007-03-06  Jan Hubicka  <jh@suse.cz>
3764
3765         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
3766         NANs easilly.
3767
3768 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3769
3770         * configure.ac: Allow tm_file to contain build-directory files.
3771         * configure: Regenerate.
3772         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
3773         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
3774         * config/m68k/print-sysroot-suffix.sh: New file.
3775
3776 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3777
3778         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
3779         of pic_offset_table_rtx if reload_completed.
3780         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
3781         PIC_OFFSET_TABLE_REGNUM.
3782         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
3783         return true.
3784         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
3785         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
3786
3787 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3788
3789         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3790         functions that call eh_return.
3791
3792 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3793
3794         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3795         functions that need a constant pool.
3796
3797 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3798
3799         PR target/28181
3800         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
3801         (m68k_preferred_reload_class): Likewise.
3802         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
3803         (SECONDARY_RELOAD_CLASS): Define.
3804         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
3805         (LIMIT_RELOAD_CLASS): Delete.
3806         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
3807         registers from storing bytes.
3808         (m68k_secondary_reload_class): New function.
3809         (m68k_preferred_reload_class): Likewise.
3810
3811 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3812
3813         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
3814         leaf functions.
3815         (m68k_expand_prologue): Likewise.
3816
3817 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3818
3819         * config/m68k/m68k-protos.h (output_sibcall): Declare.
3820         (mips_expand_epilogue): Add a bool parameter.
3821         (m68k_legitimize_sibcall_address): Declare.
3822         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
3823         (m68k_expand_epilogue): Add a parameter to select between sibling
3824         and normal epilogues.  Only generate a return for the latter.
3825         (m68k_ok_for_sibcall_p): New function.
3826         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
3827         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
3828         (sibcall_value, *sibcall_value): Likewise.
3829         (*call, *call_value): Require !SIBLING_CALL_P.
3830         (epilogue): Update call to m68k_expand_epilogue.
3831         (sibcall_epilogue): New pattern.
3832         * config/m68k/predicates.md (const_call_operand): Say that this
3833         predicate applies to sibling calls too.
3834         (sibcall_operand): New predicate.
3835
3836 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3837
3838         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
3839         alternatives as movsi_cf.
3840         (movsf_cf_hard): Add commentary.
3841
3842 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
3843             Richard Sandiford  <richard@codesourcery.com>
3844
3845         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
3846         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
3847         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
3848         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
3849         as being live on exit from an interrupt function.
3850         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
3851         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
3852         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
3853         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
3854         (m68k_interrupt_function_p): Globalize.
3855         (m68k_compute_frame_layout): Remove reverse mask code.
3856         (m68k_emit_movem, m68k_set_frame_related): New functions.
3857         (m68k_output_function_prologue): Delete in favor of...
3858         (m68k_expand_prologue): ...this new function.
3859         (m68k_output_function_epilogue): Delete in favor of...
3860         (m68k_expand_epilogue): ...this new function.
3861         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
3862         functions.
3863         (print_operand): Handle %?.
3864         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
3865         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
3866         (prologue, epilogue): New patterns.
3867         (return): Turn into a define_expand.
3868         (*return): New pattern, derived from old "return" pattern.  Use rte
3869         rather than rts for interrupt functions.  Only use rtd if the pop
3870         count is nonzero.
3871         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
3872         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
3873         (link, *link, unlink, *unlink, load_got): Likewise.
3874
3875 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3876
3877         PR target/23482
3878         PR target/17114
3879         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
3880         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
3881         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
3882         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
3883         and m68k_matches_u_p.
3884         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
3885         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
3886         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
3887         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
3888         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
3889         (REG_STRICT_P): New macro.
3890         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
3891         PCREL_GENERAL_OPERAND_OK.
3892         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
3893         m68k_legitimate_base_reg_p.
3894         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
3895         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
3896         (PIC_CASE_VECTOR_ADDRESS): Update comment.
3897         * config/m68k/m68k.c (m68k_address): New structure.
3898         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
3899         (m68k_decompose_index, m68k_legitimate_constant_address_p)
3900         (m68k_jump_table_ref_p, m68k_decompose_address)
3901         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
3902         (m68k_matches_u_p): New functions.
3903         (print_operand_address): Rewrite to use m68k_decompose_index.
3904
3905 2007-03-05  David Taylor  <dtaylor@emc.com>
3906
3907         * gcc.c: Correct copyright date in --version output.
3908
3909 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3910
3911         * pa.md: In unamed move patterns, disparge copies between general
3912         and floating point registers using '?' modifier.  Don't include 'f'
3913         constraint for register preferences in DImode, SImode, HImode and
3914         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
3915         Remove constraints for copies between general and floating registers
3916         in soft-float DFmode pattern.
3917         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
3918         floating register.
3919         (movsf): Likewise.
3920
3921 2007-03-05  Mike Stump  <mrs@apple.com>
3922
3923         * c-common.c (targetcm): Add.
3924         * c-opts.c (c_common_handle_option): Handle language specific
3925         target options.
3926         * opts.c (handle_option): Verify language for target options, if
3927         any are given.
3928         * opth-gen.awk: Add CL_LANG_ALL.
3929         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
3930         (TARGETCM_INITIALIZER): Add.
3931         * target.h (struct gcc_targetcm): Add.
3932         (targetcm): Add.
3933         * targhooks.c (default_handle_c_option): Add.
3934         * targhooks.h (default_handle_c_option): Add.
3935         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
3936
3937         * config/darwin.opt (iframework): Add.
3938         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
3939         * config/darwin-c.c (handle_c_option): Add.
3940         (TARGET_HANDLE_C_OPTION): Add.
3941         (targetcm): Add.
3942         * doc/invoke.texi (Darwin Options): Add -iframework.
3943
3944 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3945
3946         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
3947         conversion.
3948
3949 2007-03-05  Ian Lance Taylor  <iant@google.com>
3950
3951         * c.opt (fgnu89-inline): New option.
3952         * c-opts.c (c_common_post_options): Set default value for
3953         flag_gnu89_inline.
3954         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
3955         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
3956         inline functions.
3957         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
3958         (grokdeclarator, start_function): Likewise.
3959         * c-cppbuiltin.c (c_cpp_builtins): Define either
3960         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
3961         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
3962         (C Dialect Options): Document -fgnu89-inline.
3963         * doc/extend.texi (Function Attributes): Explain what the
3964         gnu_inline attribute does.
3965         * doc/cpp.texi (Common Predefined Macros): Document
3966         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
3967
3968 2007-03-05  Ian Lance Taylor  <iant@google.com>
3969
3970         PR tree-optimization/31034
3971         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
3972         half-range if the other side is an overflow infinity.
3973
3974 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
3975
3976         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
3977         (bfin*-linux-uclibc*): New configuration.
3978         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
3979         defining.
3980         * config/bfin/linux.h: New file.
3981         * config/bfin/libgcc-bfin.ver: New file.
3982         * config/bfin/t-bfin-uclinux: New file.
3983         * config/bfin/t-bfin-linux: New file.
3984         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
3985         (TARGET_OS_CPP_BUILTINS): New macro.
3986
3987 2007-03-05  Richard Guenther  <rguenther@suse.de>
3988
3989         * fold-const.c (fold_binary): Remove duplicate folding
3990         of comparison of non-null ADDR_EXPR against null.
3991
3992 2007-03-05  Richard Guenther  <rguenther@suse.de>
3993             Dorit Nuzman  <dorit@il.ibm.com>
3994
3995         PR tree-optimization/26420
3996         * tree-vectorizer.c (vectorize_loops): Bail out early if there
3997         are no loops in the function.  Only print the number of
3998         vectorized loops if it is greater than zero or we are supposed
3999         to print information about unvectorized loops.
4000
4001 2007-03-05  Revital Eres  <eres@il.ibm.com>
4002
4003         * gcc.dg/var-expand1.c: New test.
4004         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
4005         when an accumulator is expanded.
4006
4007 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4008
4009         PR other/30465
4010         * c-common.c (convert_and_check): Don't give warnings for
4011         conversion if 'expr' already overflowed.
4012
4013 2007-03-04  Roger Sayle  <roger@eyesopen.com>
4014
4015         PR middle-end/30744
4016         * fold-const.c (fold_comparison): Enforce type consistency when
4017         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
4018
4019 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
4020
4021         * tree-ssa-address.c (create_mem_ref): Do not put an expression
4022         containing a cast to the base of TARGET_MEM_REF.
4023
4024 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
4025
4026         * tree.c (tree_contains_struct_check_failed): Remove spurious
4027         whitespace from error message.
4028
4029 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
4030
4031         PR target/30406
4032         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
4033         instead of precision.
4034
4035 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
4036             Nathan Sidwell  <nathan@codesourcery.com>
4037
4038         * emit-rtl.c (find_auto_inc): New.
4039         (try_split): recreate REG_INC notes,
4040         Use regular for loops rather than whiles.
4041
4042 2007-03-03  Andreas Schwab  <schwab@suse.de>
4043
4044         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
4045         * configure: Regenerate.
4046
4047 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4048
4049         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
4050         flag_rounding_math, not flag_unsafe_math_optimizations.
4051
4052         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
4053         fold_build2.
4054         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
4055         alpha_fold_vector_minmax): Likewise.
4056         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
4057         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
4058
4059 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4060
4061         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
4062         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
4063         if the lhs has side-effects.
4064         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
4065
4066 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4067
4068         * config/i386/i386.h (TUNEMASK): Remove define.
4069         (ARCHMASK): Remove define.
4070         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
4071          Use ix86_arch_mask variable instead of ARCHMASK.
4072         * config/i386/i386.c (override_options): Ditto.
4073         (standard_80387_constant_p): Ditto.
4074
4075 2007-03-02  Ian Lance Taylor  <iant@google.com>
4076
4077         Used signed infinities in VRP.
4078         * tree-vrp.c (uses_overflow_infinity): New static function.
4079         (supports_overflow_infinity): New static function.
4080         (make_overflow_infinity): New static function.
4081         (negative_overflow_infinity): New static function.
4082         (positive_overflow_infinity): New static function.
4083         (is_negative_overflow_infinity): New static function.
4084         (is_positive_overflow_infinity): New static function.
4085         (is_overflow_infinity): New static function.
4086         (overflow_infinity_range_p): New static function.
4087         (compare_values_warnv): New function split out of compare_values.
4088         (compare_value): Call it.
4089         (set_value_range_to_nonnegative): Add overflow_infinity
4090         parameter.  Change caller.
4091         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
4092         Change callers.
4093         (vrp_expr_computes_nonzero): Likewise.
4094         (compare_ranges, compare_range_with_value): Likewise.
4095         (compare_name_with_value, compare_names): Likewise.
4096         (vrp_evaluate_conditional): Likewise.
4097         (set_value_range): Handle infinity
4098         (vrp_operand_equal_p, operand_less_p): Likewise.
4099         (extract_range_from_assert): Likewise.
4100         (vrp_int_const_binop): Likewise.
4101         (extract_range_from_binary_expr): Likewise.
4102         (extract_range_from_unary_expr): Likewise.
4103         (extract_range_from_comparison): Likewise.
4104         (extract_range_from_expr): Likewise.
4105         (dump_value_range): Likewise.
4106         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
4107         (test_for_singularity): Likewise.
4108         (vrp_int_const_binop): Remove inline qualifier.
4109         (adjust_range_with_scev): Add comment.
4110         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
4111
4112 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
4113
4114         * tree-ssa-structalias.c (could_have_pointers): Tidy.
4115         (get_constraint_for): Likewise.
4116         (do_structure_copy): Likewise.
4117         (find_func_aliases): Fix references to MODIFY_EXPR.
4118         (intra_create_variable_infos): Tidy.
4119         * tree-ssa-operands.c (add_virtual_operand): Add argument
4120         IS_CALL_SITE.
4121         When adding members of alias sets, if IS_CALL_SITE is true and
4122         the symbol is not call-clobbered, skip it.
4123         Adjust all callers.
4124
4125 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4126
4127         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
4128         entry by means of emit_insn_at_entry.
4129
4130 2007-03-02  Richard Henderson  <rth@redhat.com>
4131
4132         * expr.h (promoted_input_arg): Remove decl.
4133         * function.c (promoted_input_arg): Merge into ...
4134         * combine.c (setup_incoming_promotions): ... only caller.
4135         Rearrange to avoid double loop.
4136
4137 2007-03-02  Ben Elliston  <bje@au.ibm.com>
4138             Peter Bergner  <bergner@vnet.ibm.com>
4139             Janis Johnson  <janis187@us.ibm.com>
4140
4141         * config/rs6000/dfp.md: New file.
4142         * config/rs6000/rs6000.md: Include dfp.md.
4143         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
4144         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
4145         and TDmode decimal float modes in FP registers.
4146         (num_insns_constant): Likewise.
4147         (rs6000_legitimate_offset_address_p): Likewise.
4148         (rs6000_legitimize_address): Likewise.
4149         (rs6000_legitimize_reload_address): Likewise.
4150         (rs6000_legitimate_address): Likewise.
4151         (rs6000_emit_move): Likewise.
4152         (function_arg_boundary): Likewise.
4153         (function_arg_advance): Likewise.
4154         (rs6000_darwin64_record_arg_recurse): Likewise.
4155         (function_arg): Likewise.
4156         (rs6000_gimplify_va_arg): Likewise.
4157         (rs6000_split_multireg_move): Likewise.
4158         (rs6000_output_function_epilogue): Likewise.
4159         (rs6000_output_function_epilogue): Likewise.
4160         (rs6000_register_move_cost): Likewise.
4161         (rs6000_function_value): Likewise.
4162         (rs6000_libcall_value): Likewise.
4163
4164 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
4165
4166         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
4167
4168 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
4169
4170         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
4171         Use $MULTIDIR to choose between the kernel and RTP headers,
4172         and use $WIND_BASE and $WIND_USR to locate them.
4173
4174 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4175
4176         * config/i386/i386.c (override_options): Put initialization of
4177         ix86_tune_mask and ix86_arch_mask to the correct place.
4178
4179 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4180             Michael Meissner  <michael.meissner@amd.com>
4181
4182         PR target/31019
4183         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
4184         (ARCHMASK): Define.
4185         (TARGET_CMOVE): Use ARCHMASK.
4186         (TARGET_CMPXCHG): Ditto.
4187         (TARGET_CMPXCHG8B): Ditto.
4188         (TARGET_XADD): Ditto.
4189         (TARGET_BSWAP): Ditto.
4190         * config/i386/i386.c (ix86_tune_mask): New global variable.
4191         (ix86_arch_mask): Ditto.
4192         (override_options): Initialize ix86_tune_mask and
4193         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
4194         target_flags.
4195
4196 2007-03-02  Ben Elliston  <bje@au.ibm.com>
4197
4198         PR 30992
4199         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
4200
4201 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
4202
4203         * target.h (init_dwarf_reg_sizes_extra): New target hook.
4204         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
4205         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
4206         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
4207         hook.
4208         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
4209         rs6000_init_dwarf_reg_sizes_extra): New.
4210         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
4211         SPE register high parts.
4212
4213 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
4214
4215         * Makefile.in: Add install-pdf target as
4216         copied from automake v1.10 rules.
4217         * configure.ac: Add install-pdf to target list.
4218         * configure: Regenerate.
4219
4220 2007-03-01  Paul Brook  <paul@codesourcery.com>
4221
4222         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
4223         modes to LDRD for DImode.
4224         (output_move_double): Fixup out of range ldrd/strd.
4225         (vfp_secondary_reload_class): Rename...
4226         (coproc_secondary_reload_class): ... to this.  Add wb argument.
4227         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
4228         coproc_secondary_reload_class for CLASS_IWMMXT.
4229         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
4230         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
4231
4232 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
4233
4234         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
4235         factor by the estimated number of iterations.
4236         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
4237         prefetch latency.
4238
4239         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
4240         decode_caches_intel, detect_caches_intel): New functions.
4241         (host_detect_local_cpu): Use detect_caches_amd and
4242         detect_caches_intel.
4243
4244 2007-03-01  Richard Henderson  <rth@redhat.com>
4245
4246         * expr.c (emit_move_complex_push): Export.
4247         (emit_move_complex_parts): Split out from ...
4248         (emit_move_complex): ... here.
4249         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
4250         * config/i386/i386.md (movcdi): New.
4251
4252 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
4253
4254         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
4255         size of mode1 to check for tieable modes in MMX case.
4256
4257 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
4258
4259         * Makefile.in (rtlanal.o): Depend on tree.h.
4260         * rtl.h (offset_within_section_p, split_const): Declare.
4261         * rtlanal.c: Include tree.h.
4262         (offset_within_block_p): New function, taken from
4263         mips_offset_within_object_p.
4264         (split_const): New function, taken from mips_split_const.
4265         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
4266         Declare.
4267         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
4268         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
4269         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
4270         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
4271         (m68k_illegitimate_symbolic_constant_p): New function.
4272         * config/m68k/m68k.md (movsi): Remove misleading predicates.
4273         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
4274         symbolic constant that might be outside the symbol's section,
4275         move the symbol first and then add the offset.
4276         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
4277         Override.
4278         * config/mips/mips.c (mips_split_const): Delete.
4279         (mips_offset_within_object_p): Delete.
4280         (mips_symbolic_constant_p): Use offset_within_section_p and
4281         split_const instead of mips_offset_within_object_p and
4282         mips_split_const.
4283         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
4284         (mips_legitimize_const_move, print_operand_reloc)
4285         (mips_dangerous_for_la25_p): Use split_const instead of
4286         mips_split_const.
4287
4288 2007-02-28  Eric Christopher  <echristo@apple.com>
4289
4290         * Makefile.in (install-include-dir): Don't rm -rf include.
4291
4292 2007-02-28  Richard Guenther  <rguenther@suse.de>
4293
4294         PR middle-end/30364
4295         * fold-const.c (fold_binary): Do not associate expressions
4296         with more than one variable for integer types that do not wrap.
4297
4298 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
4299
4300         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
4301         Delete, and replace with...
4302         (fold_builtin_call_array): This.  Update callers to use it.
4303         * fold-const.c (fold_build_call_list): Delete, and replace with...
4304         (fold_build_call_array): This.
4305         (fold_build_call_list_initializer): Delete, and replace with...
4306         (fold_build_call_array_initializer): This.
4307         * tree.h: Update declarations to reflect above changes.
4308
4309         * c-typeck.c (build_function_call): Store converted arguments
4310         in a stack-allocated array instead of building a list.
4311         (convert_arguments): Store arguments in the array passed in as an
4312         argument, and return the actual number of arguments.
4313         * c-format.c: (check_function_format): Pass arguments in an
4314         array instead of a list.
4315         * c-common.c (check_function_nonnull): Likewise.
4316         (check_function_sentinel): Likewise.
4317         (check_function_arguments): Likewise.
4318         * c-common.h: Update declarations to reflect above changes.
4319
4320 2007-02-28  Jan Hubicka  <jh@suse.cz>
4321
4322         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
4323         PRED_NEGATIVE_RETURN): Update outcomes.
4324
4325 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
4326
4327         * calls.c (emit_library_call_value_1): Handle partial registers
4328         correctly when building up CALL_INSN_FUNCTION_USAGE.
4329
4330 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4331
4332         * pa/predicates.md (move_src_operand): Allow zero for mode.
4333         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
4334         move pattern.
4335
4336 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
4337
4338         PR target/30970
4339         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
4340         *movv2df_internal): Enable pattern only for valid operand
4341         combinations.
4342         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
4343         tie only 128bit modes. For MMX registers, tie only 64bit modes.
4344
4345 2007-02-27  Mike Stump  <mrs@apple.com>
4346
4347         * config/darwin-crt3.c: Avoid compilation when compiling for a
4348         kext multilib.
4349
4350 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
4351
4352         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
4353         FIXED_INCLUDE_DIR.
4354         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
4355         for fixed headers and limits.h.
4356         (install-include-dir, install-headers-tar, install-headers-cpio,
4357         install-headers-cp, real-install-headers-tar,
4358         real-install-headers-cpio, real-install-headers-cp): Handle
4359         include-fixed as well as include.
4360         (install-mkheaders): Don't install files that go only in include
4361         not include-fixed.
4362         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
4363         from GCC_INCLUDE_DIR.
4364         * gcc.c (process_command): Remove special -BstageN/ handling.
4365         (do_spec_1): Add include-fixed directories.
4366
4367 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4368
4369         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
4370         _smulsi3_highpart.
4371         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
4372         New functions.
4373         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
4374         patterns.
4375
4376 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
4377
4378         * c-common.c (get_priority): Add check for
4379         SUPPORTS_INIT_PRIORITY.
4380
4381 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4382
4383         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
4384
4385         * config/bfin/bfin.c: Include "cfglayout.h".
4386         (MAX_LSETUP_DISTANCE): New macro.
4387         (struct loop_info): New members incoming, incoming_src and
4388         incoming_dest.  Delete member predecessor.
4389         (length_for_loop): New function.
4390         (bfin_optimize_loop): Handle more different loop structures.
4391         (bfin_discover_loop): Rework detection of predecessor blocks by
4392         examining incoming edges.
4393         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
4394         bfin_reorg_loops.
4395         (bfin_reorder_loops): New function.
4396         (bfin_reorg_loops): Use these three new functions.
4397
4398         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
4399         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
4400         (CONSTRAINT_LEN): Add entry for 'q'.
4401         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
4402         Add 'q' constraints.
4403         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
4404         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
4405
4406         * config/bfin/bfin.md (add_with_carry): New pattern.
4407         (s_or_u, su_optab, su_modifier): New code macros/attrs.
4408         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
4409         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
4410         support unsigned multiplies too.  Removed incorrect commutativity from
4411         operand 1 constraint where appropriate.
4412         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
4413         patterns.
4414         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
4415         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
4416         New patterns.
4417         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
4418         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
4419         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
4420         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
4421         usmulhisi_hh_huh): New patterns.
4422
4423         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
4424         lshifthi3): Fix output template to use half reg for operand 2.
4425
4426         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
4427         instead of R2.
4428
4429         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
4430
4431 2007-02-27  Andreas Schwab  <schwab@suse.de>
4432
4433         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
4434
4435 2007-02-27  Jan Hubicka  <jh@suse.cz>
4436
4437         * predict.c (last_basic_block_p): Remove.
4438         (tree_estimate_probability): Update return heuristic for commonized
4439         return blocks.
4440
4441 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4442
4443         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
4444
4445 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4446
4447         * doc/include/gcc-common.texi (versionsubtitle): New macro.
4448         * doc/cpp.texi: Standardize title page.
4449         * doc/cppinternals.texi: Likewise.
4450         * doc/gcc.texi: Standardize title page, remove version number
4451         from copyright page.
4452         * doc/gccint.texi: Likewise.
4453         * doc/install.texi: Standardize title page, add table of
4454         contents.
4455
4456 2007-02-26  Jan Hubicka  <jh@suse.cz>
4457
4458         * predict.def: Set outcomes according to more recent results.
4459         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
4460         Remove dead predictors.
4461         * predict.c (return_prediction): Fix pasto.
4462
4463 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4464
4465         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
4466         change; avoid a memory leak when returning early.
4467
4468 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
4469
4470         * c-decl.c (static_ctors): Move to c-common.c.
4471         (static_dtors): Likewise.
4472         (finish_function): Use c_record_cdtor_fn.
4473         (build_cdtor): Move to c-common.c.
4474         (c_write_global_declarations): Use c_build_cdtor_fns.
4475         * c-common.h (static_ctors): Declare.
4476         (static_dtors): Likewise.
4477         (c_record_cdtor_fn): Likewise.
4478         (c_build_cdtor_fns): Likewise.
4479         * c-common.c (static_ctors): New variable.
4480         (static_dtors): Likewise.
4481         (c_record_cdtor_fn): New function.
4482         (build_cdtor): Move from c-decl.c
4483         (c_build_cdtor_fns): New function.
4484
4485         * output.h (assemble_addr_to_section): Declare.
4486         (get_cdtor_priority_section): Likewise.
4487         * varasm.c (assemble_addr_to_section): New function.
4488         (get_cdtor_priority_section): Likewise.
4489         (default_named_section_asm_out_destructor): Use them.
4490         (destor_dtor_section_asm_out_destructor): Likewise.
4491         (default_named_section_asm_out_constructor): Likewise.
4492         (default_ctor_section_asm_out_constructor): Likewise.
4493         * config.gcc (*-*-vxworks*): Include vxworks.o.
4494         * config/t-vxworks (vxworks.o): New target.
4495         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
4496         (TARGET_ASM_CONSTRUCTOR): Define.
4497         (TARGET_ASM_DESTRUCTOR): Likewise.
4498         (vxworks_asm_out_constructor): Declare.
4499         (vxworks_asm_out_destructor): Likewise.
4500
4501         * c-common.c (get_priority): Check that we have not just an
4502         INTEGER_CST, but an integer constant with integeral type.
4503
4504 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
4505
4506         PR tree-optimization/30938
4507         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
4508         use &dt[nargs-1] instead of &dt[nargs] in the call to
4509         vect_is_simple_use().
4510
4511 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
4512
4513         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
4514         from register elimination as PRE_MODIFY / POST_MODIFY increments.
4515         Do not attempt to handle MEM inside auto-inc expressions.
4516         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
4517         of a register modified by an auto-inc expression.  However, do handle
4518         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
4519         (elimination_effects): Prohibit elimination of a register modified
4520         by an auto-inc expression.  Disable register elimination rules whose
4521         target register is modified by an auto-inc expression with variable
4522         increment.
4523
4524 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
4525
4526         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
4527         off-by-one error.
4528         (array_at_struct_end_p): New function.
4529         (idx_infer_loop_bounds): Use it.
4530         (estimate_numbers_of_iterations_loop): Export.
4531         * predict.c (predict_loops): Use estimated_loop_iterations_int.
4532         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
4533         (tree_estimate_probability): Call record_loop_exits.
4534         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
4535         (estimated_loop_iterations, estimated_loop_iterations_int,
4536         estimated_loop_iterations_tree): New functions.
4537         (analyze_siv_subscript_cst_affine,
4538         compute_overlap_steps_for_affine_1_2,
4539         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
4540         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
4541         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
4542         (PRED_LOOP_ITERATIONS_GUESSED): New.
4543         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
4544         * cfgloop.h (estimate_numbers_of_iterations_loop,
4545         estimated_loop_iterations_int): Declare.
4546
4547 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
4548
4549         * doc/extend.texi: Document optional priority argument to
4550         constructors and destructors.
4551         * tree.c (init_priority_for_decl): Adjust GTY markers.
4552         (init_ttree): Use priority-info hash functions for
4553         init_priority_for_decl.
4554         (tree_map_eq): Rename to ...
4555         (tree_map_base_eq): ... this.
4556         (tree_map_marked_p): Rename to ...
4557         (tree_map_base_marked_p): ... this.
4558         (tree_map_base_hash): New function.
4559         (decl_init_priority_lookup): Rework.
4560         (decl_fini_priority_lookup): New function.
4561         (decl_priority_info): New function.
4562         (decl_init_priority_insert): Use it.
4563         (decl_fini_priority_insert): Likewise.
4564         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
4565         hierarchy.
4566         (decl_restrict_base_insert): Likewise.
4567         (decl_debug_expr_insert): Likewise.
4568         (decl_value_expr_lookup): Likewise.
4569         (decl_value_expr_insert): Likewise.
4570         * tree.h (priority_type): New type.
4571         (decl_init_priority_lookup): Use priority_type.
4572         (decl_fini_priority_lookup): New function.
4573         (decl_init_priority_insert): Use priority_type.
4574         (decl_fini_priority_insert): New function.
4575         (DECL_HAS_INIT_PRIORITY): Tweak comments.
4576         (DECL_INIT_PRIORITY): Likewise.
4577         (SET_DECL_INIT_PRIORITY): Add comment.
4578         (DECL_FINI_PRIORITY): New macro.
4579         (SET_DECL_FINI_PRIORITY): Likewise.
4580         (DEFAULT_INIT_PRIORITY): Document.
4581         (MAX_INIT_PRIORITY): Likewise.
4582         (MAX_RESERVED_INIT_PRIORITY): Likewise.
4583         (tree_map_base): New type.
4584         (tree_map_base_eq): New function.
4585         (tree_map_base_hash): Likewise.
4586         (tree_map_base_marked_p): Likewise.
4587         (tree_map): Inherit from tree_map_base.
4588         (tree_map_eq): Make it a macro.
4589         (tree_map_marked_p): Likewise.
4590         (tree_int_map): Inherit from tree_map_base.
4591         (tree_int_map_eq): Make it a macro.
4592         (tree_int_map_hash): Likewise.
4593         (tree_int_map_marked_p): Likewise.
4594         (tree_priority_map): New type.
4595         (tree_priority_map_eq): New macro.
4596         (tree_priority_map_hash): Likewise.
4597         (tree_priority_map_marked_p): Likewise.
4598         * varasm.c (emults_decl): Adjust for refactoring of tree_map
4599         hierarchy.
4600         (emutls_common_1): Likewise.
4601         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
4602         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
4603         of tree_map hierarchy.
4604         * tree-cfg.c (move_stmt_r): Likewise.
4605         (new_label_mapper): Likewise.
4606         * c-tree.h (c_expand_body): Move to ...
4607         * c-common.h (c_expand_body): ... here.
4608         * c-decl.c (c_expand_body): Move to ...
4609         * c-common.c (c_expand_body): ... here.
4610         (c_common_attribute_table): Allow 1 argument for the constructor
4611         and destructor attributes.
4612         (get_priority): New function.
4613         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
4614         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
4615
4616 2007-02-24  Jan Hubicka  <jh@suse.cz>
4617
4618         PR middle-end/30509
4619         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
4620
4621 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4622             Jan Hubicka  <jh@suse.cz>
4623
4624         PR target/30778
4625         * i386.c (counter_mode): New function.
4626         (expand_set_or_movmem_via_loop): Use it.
4627         (expand_movmem_epilogue): Likewise; fix pasto.
4628         (ix86_expand_movmem): Do emit guard even for constant counts.
4629         (ix86_expand_setmem): Likewise.
4630
4631 2007-02-25  Nick Clifton  <nickc@redhat.com>
4632
4633         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
4634         (JUMP_TABLES_IN_TEXT_SECTION): Define.
4635
4636 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4637
4638         PR target/30770
4639         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
4640         count argument with 0x10, not with 0x16.
4641         (expand_setmem_epilogue): Ditto.
4642
4643 2007-02-24  Mike Stump  <mrs@apple.com>
4644
4645         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
4646         symbols.
4647
4648 2007-02-24  Richard Guenther  <rguenther@suse.de>
4649
4650         PR middle-end/30951
4651         * fold-const.c (fold_binary): Fold x +- CST op x for
4652         EQ_EXPR and NE_EXPR.
4653
4654 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4655
4656         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
4657
4658 2007-02-24  Jan Hubicka  <jh@suse.cz>
4659
4660         * cgraphunit.c (decide_is_function_needed): Honor
4661         -fkeep-inline-functions.
4662
4663 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4664
4665         * builtins.c (fold_builtin_modf): New.
4666         (fold_builtin_2): Use it.
4667
4668 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
4669
4670         * loop-iv.c (implies_p): Detect additional cases where A implies B.
4671         (determine_max_iter): Take additional LOOP arg; all callers changed.
4672         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
4673         one using simplifications.
4674         (simplify_using_initial_values): Return if the expression becomes
4675         invalid due to altered regs.
4676
4677 2007-02-23  DJ Delorie  <dj@redhat.com>
4678
4679         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
4680
4681 2007-02-23  Mike Stump  <mrs@apple.com>
4682
4683         * tlink.c (scan_linker_output): Parse linker messages from
4684         darwin9's linker better.
4685
4686 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
4687
4688         PR debug/29614
4689         * varpool.c (varpool_assemble_pending_decls):  Set
4690         varpool_last_needed_node to null.
4691
4692 2007-02-23  DJ Delorie  <dj@redhat.com>
4693
4694         * config/i386/i386.c (ix86_data_alignment): Don't specify an
4695         alignment bigger than the object file can handle.
4696
4697 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
4698
4699         PR target/30825
4700         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
4701         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
4702         (*movsf_1): Penalize MMX moves.
4703
4704 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
4705
4706         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
4707         2^32-1 or more times unless flag_unsafe_loop_optimizations.
4708
4709         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
4710
4711 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4712
4713         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
4714         (fold_builtin_1): Use them.
4715         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
4716         BUILT_IN_SIGNIFICAND.
4717
4718 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
4719
4720         * config/i386/i386.c (bdesc_1arg): Initialize
4721         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
4722         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
4723         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
4724         and IX86_BUILTIN_MOVSLDUP.
4725
4726 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
4727
4728         PR rtl-optimization/30841
4729         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
4730
4731 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4732
4733         * builtins.c (fold_builtin_frexp): New.
4734         (fold_builtin_2): Use it.
4735
4736 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
4737
4738         * doc/invoke.texi (Spec Files): Document getenv spec function.
4739
4740         * gcc.c (getenv_spec_function): New function.
4741         (static_spec_functions): Add it.
4742         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
4743         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
4744         header files.
4745
4746 2007-02-22  Michael Matz  <matz@suse.de
4747
4748         PR c++/29433
4749         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
4750         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
4751
4752 2007-02-22  Ian Lance Taylor  <iant@google.com>
4753
4754         PR debug/30898
4755         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
4756         (mem_loc_descriptor): Call it.
4757
4758 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
4759             Ira Rosen  <irar@il.ibm.com>
4760
4761         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
4762
4763 2007-02-22  Ira Rosen  <irar@il.ibm.com>
4764
4765         PR tree-optimization/30843
4766         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
4767         stores only after all the group is vectorized.
4768
4769 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
4770
4771         PR tree-optimization/30858
4772         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
4773         in the reduction cycle have a single use in the loop.
4774         * tree-vectorizer.h (relevant): Add documentation.
4775
4776 2007-02-20  Mike Stump  <mrs@apple.com>
4777
4778         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
4779         * configure: Regenerate.
4780
4781 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4782
4783         Change the defaults of some parameters and options.
4784         * config/spu/spu-protos.h (spu_optimization_options): Declare.
4785         * config/spu/spu.c (spu_optimization_options): Add.
4786         (spu_override_options): Change params in spu_optimization_options.
4787         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
4788
4789         Register 127 is only 16 byte aligned when used as a frame pointer.
4790         * config/spu/spu-protos.h (spu_init_expanders): Declare.
4791         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
4792         HARD_FRAME_POINTER_REGNUM.
4793         (spu_legitimate_address):  Use regno_aligned_for_reload.
4794         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
4795         aligned when frame_pointer_needed is true.
4796         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
4797         to 8 bits.
4798         * config/spu/spu.h (INIT_EXPANDERS): Define.
4799
4800         Make sure shift and rotate instructions have valid immediate operands.
4801         * config/spu/predicates.md (spu_shift_operand): Remove.
4802         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
4803         * config/spu/constraints.md (W, O): Extend range.
4804         * config/spu/spu.md (umask, nmask): Define.
4805         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
4806         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
4807         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
4808         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
4809         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
4810         (lshr<mode>3_reg):  Fix rtl description.
4811
4812         Make sure mulhisi immediate operands are valid.
4813         * config/spu/predicates.md (imm_K_operand): Add.
4814         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
4815
4816         Generate constants using fsmbi and andi.
4817         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
4818         (print_operand, spu_split_immediate, classify_immediate,
4819         fsmbi_const_p): Handle IC_FSMBI2.
4820
4821         Correctly handle a CONST_VECTOR containing symbols.
4822         * config/spu/spu.c (print_operand): Handle HIGH correctly.
4823         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
4824         (immediate_load_p): Allow symbols that use 2 instructions to create.
4825         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
4826         with symbols when flag_pic is set.
4827         (const_vector_immediate_p): New.
4828         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
4829         accept a CONST_VECTOR with symbols.
4830         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
4831         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
4832         correctly.
4833         * config/spu/spu.md (high, low): Delete.
4834         (low_<mode>): Define.
4835
4836         Remove INTRmode and INTR_REGNUM, which didn't work.
4837         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
4838         of INTR_REGNUM.
4839         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
4840         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
4841         peephole2 pattern): Don't use INTR or 131.
4842         (movintrcc): Delete.
4843         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
4844         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
4845         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
4846         (UNSPEC_SET_INTR): Add.
4847         * config/spu/spu-modes.def (INTR): Remove.
4848
4849         More accurate warnings about run-time relocations.
4850         * config/spu/spu.c (reloc_diagnostic): Test in_section.
4851
4852         Correctly warn about immediate arguments to specific intrinsics.
4853         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
4854         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
4855         the instruction predicate.
4856
4857         Fix tree check errors with latest update.
4858         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
4859         CALL_EXPR_ARG.
4860         (spu_expand_builtin): Use CALL_EXPR_FN.
4861
4862         Add missing specific intrinsics.
4863         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
4864         si_bislede.
4865         * config/spu/spu_internals.h: Ditto.
4866
4867         Fix incorrect operand modifiers.
4868         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
4869         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
4870
4871         Optimize one case of zero_extend of a vec_select.
4872         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
4873
4874         Accept any immediate for hbr.
4875         * config/spu/spu.md (hbr):  Change s constraints to i.
4876
4877 2007-02-21  Paul Brook  <paul@codesourcery.com>
4878
4879         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
4880         condexec_count when skipping USE and CLOBBER.
4881
4882 2007-02-21  Nick Clifton  <nickc@redhat.com>
4883
4884         * common.opt (Warray-bounds): Add Warning attribute.
4885         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
4886         Likewise.
4887         (fsized-zeroes): Add Optimization attribute.
4888         (fsplit-wide-types, ftree-scev-cprop): Likewise.
4889         * c.opt (Wc++0x-compat): Add Warning attribute.
4890
4891 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
4892
4893         PR middle-end/30761
4894         * reload1.c (eliminate_regs_in_insn): In the single_set special
4895         case, attempt to re-recognize the insn before falling back to
4896         having reload fix it up.
4897
4898 2007-02-20  Eric Christopher  <echristo@gmail.com>
4899
4900         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
4901         Rewrite accordingly.
4902         (frv_read_iacc_argument): Ditto.
4903         (frv_expand_set_builtin): Take a call instead of arglist, update for
4904         above changes.
4905         (frv_expand_unop_builtin): Ditto.
4906         (frv_expand_binop_builtin): Ditto.
4907         (frv_expand_cut_builtin): Ditto.
4908         (frv_expand_binopimm_builtin): Ditto.
4909         (frv_expand_voidbinop_builtin): Ditto.
4910         (frv_expand_int_void2arg): Ditto.
4911         (frv_expand_prefetches): Ditto.
4912         (frv_expand_voidtriop_builtin): Ditto.
4913         (frv_expand_voidaccop_builtin): Ditto.
4914         (frv_expand_load_builtin): Ditto.
4915         (frv_expand_store_builtin): Ditto.
4916         (frv_expand_mdpackh_builtin): Ditto.
4917         (frv_expand_mclracc_builtin): Ditto.
4918         (frv_expand_mrdacc_builtin): Ditto.
4919         (frv_expand_mwtacc_builtin): Ditto.
4920         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
4921         calls for above.
4922
4923 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
4924
4925         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
4926         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
4927         cmpb instruction.
4928         (HAVE_GAS_DFP): Check for assembler support of decimal floating
4929         point instructions.
4930         * configure: Regenerate.
4931         * config.in: Regenerate.
4932         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
4933         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
4934         masks to power6 and power6x and to POWERPC_MASKS.
4935         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
4936         _ARCH_PWR6.
4937         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
4938         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
4939         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
4940         Access PROTOTYPE as variable, not mask.
4941
4942 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
4943
4944         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
4945         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
4946         * combine.c (adjust_for_new_dest): Use it.
4947         * postreload.c (reload_combine): Likewise.
4948
4949 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
4950
4951         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
4952         notes on an insn with multiple sets, even if single_set returns
4953         non-NULL for that insn.
4954
4955 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4956
4957         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
4958         scalbn and scalbln.
4959
4960 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
4961
4962         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
4963         if user didn't pass it.
4964         * config/i386/darwin.h (CC1_SPEC): Likewise.
4965         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
4966         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
4967         -mmacosx-version-min.
4968
4969 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4970             Uros Bizjak  <ubizjak@gmail.com>
4971
4972         * optabs.h (enum optab_index): Add new OTI_scalb.
4973         (scalb_optab): Define corresponding macro.
4974         * optabs.c (init_optabs): Initialize scalb_optab.
4975         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
4976         patterns.
4977         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
4978         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
4979         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
4980         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
4981         flag_unsafe_math_optimizations is set.
4982
4983         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
4984         to implement scalbf, scalb and scalbl built-ins as inline x87
4985         intrinsics.
4986
4987 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4988             DJ Delorie <dj@redhat.com>
4989
4990         PR other/30824
4991         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
4992         (diagnostic_report_diagnostic): ... here, and turn them into real
4993         errors. If warnings are inhibited, no need to do anything.
4994
4995 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
4996
4997         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
4998         better code generation.
4999
5000 2007-02-20  Ben Elliston  <bje@au.ibm.com>
5001
5002         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
5003
5004 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
5005
5006         * config/alpha/alpha.c, config/alpha/alpha.md,
5007         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
5008         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
5009         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
5010         config/arm/lib1funcs.asm: Follow spelling conventions.
5011
5012         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
5013         config/fr30/fr30.md, config/i386/i386.h,
5014         config/iq2000/iq2000.h, config/iq2000/predicates.md,
5015         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
5016         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
5017         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
5018         config/rs6000/altivec.md, config/rs6000/rs6000.c,
5019         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
5020         config/sparc/sparc.c, config/sparc/sparc.h,
5021         config/sparc/sparc.md, config/spu/constraints.md,
5022         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
5023         conventions.
5024
5025 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
5026
5027         PR target/29943
5028         * varasm.c (use_blocks_for_decl_p): Return false for decls with
5029         alias attribute.
5030
5031 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
5032
5033         * doc/invoke.texi (-ftree-lrs): Remove.
5034
5035 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
5036
5037         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
5038         NULL.
5039
5040 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
5041
5042         * config/ia64/ia64.c (ia64_expand_builtin): Use the
5043         new CALL_EXPR_FN macro for retrieving the function
5044         declaration of the input expression.
5045
5046 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5047
5048         * c.opt (Waddress): New.
5049         * common.opt (Walways-true): Delete.
5050         (Wstring-literal-comparison): Delete.
5051         * doc/invoke.texi (Warning Options): Delete -Walways-true and
5052         -Wstring-literal-comparison. Add -Waddress.
5053         (Waddress): New.
5054         (Walways-true): Delete.
5055         (Wstring-literal-comparison): Delete.
5056         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
5057         consistently instead of -Walways-true in example.
5058         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
5059         * c-typeck.c (parser_build_binary_op): Replace
5060         -Wstring-literal-comparison and -Walways-true with -Waddress.
5061         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
5062         with -Waddress.
5063
5064 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
5065
5066         * tree-cfg.c (dump_function_to_file): Be prepared for functions
5067         without DECL_STRUCT_FUNCTION initialized.
5068
5069 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
5070
5071         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
5072         due to calls to functions taking pointers as parameters.
5073
5074 2007-02-19  Richard Henderson  <rth@redhat.com>
5075
5076         PR debug/29558
5077         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
5078         in memory.
5079
5080 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
5081
5082         * config/s390/s390.c (s390_call_saved_register_used,
5083         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
5084         accessed to the new scheme.
5085
5086 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
5087
5088         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
5089         (cris_print_index, cris_print_operand, cris_print_operand_address)
5090         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
5091         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
5092         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
5093         GET_CODE () == xxx.
5094         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
5095         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
5096         GO_IF_LEGITIMATE_ADDRESS): Ditto.
5097         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
5098         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
5099         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
5100         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
5101         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
5102         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
5103         (uminsi3, call, call_value): Ditto.
5104         (define_split: indir_to_reg_split, unnamed): Ditto.
5105
5106 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
5107
5108         PR tree-optimization/30975
5109         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
5110         wrong assert.
5111
5112 2007-02-18  Eric Christopher  <echristo@gmail.com>
5113
5114         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
5115         Remove use of arglist.
5116         (mips_expand_builtin): Remove use of arglist, pass in expr.
5117         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
5118         (mips_expand_builtin_movtf): Ditto.
5119         (mips_expand_builtin_compare): Ditto.
5120
5121 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
5122
5123         * tree-sra.c (sra_build_assignment): Replace assertion
5124         checking with a comment explaining why it can't be done.
5125
5126 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
5127
5128         PR middle-end/30833
5129         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
5130         during CALL_EXPR representation conversion.
5131         * tree-ssa-propagate.c (set_rhs): Likewise.
5132
5133 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
5134
5135         * tree-sra.c (sra_build_assignment): Disable assertion checking
5136         for now.
5137
5138 2007-02-18  Roger Sayle  <roger@eyesopen.com>
5139
5140         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
5141         instead of calling build2 with a GIMPLE_MODIFY_STMT.
5142         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
5143         Likewise.
5144         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
5145         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
5146         gimplify_init_ctor_eval_range, gimple_push_cleanup,
5147         gimplify_omp_for, gimplify_omp_atomic_pipeline,
5148         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
5149         force_gimple_operand): Likewise.
5150         * ipa-cp.c (constant_val_insert): Likewise.
5151         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
5152         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
5153         perfect_nestify): Likewise.
5154         * langhooks.c (lhd_omp_assignment): Likewise.
5155         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
5156         lower_copyprivate_clauses, lower_send_clauses,
5157         lower_send_shared_vars, expand_parallel_call,
5158         expand_omp_for_generic, expand_omp_for_static_nochunk,
5159         expand_omp_for_static_chunk, expand_omp_sections,
5160         lower_omp_single_copy, lower_omp_for_lastprivate,
5161         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
5162         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
5163         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
5164         Likewise.
5165
5166 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
5167
5168         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
5169         config/sh/sh.md: Follow spelling conventions.
5170
5171         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
5172         config/frv/predicates.md: Follow spelling conventions.
5173
5174         * config/m68k/linux-unwind.h: Fix a comment typo.
5175         * target.h: Follow spelling conventions.
5176
5177 2007-02-18  Roger Sayle  <roger@eyesopen.com>
5178
5179         PR rtl-optimization/28173
5180         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
5181         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
5182         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
5183         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
5184         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
5185
5186 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5187
5188         * builtins.c (fold_builtin_load_exponent): New.
5189         (fold_builtin_2): Use it.
5190
5191 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
5192
5193         PR rtl-optimization/30773
5194         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
5195         if we fail to attach a REG_EQUIV note.
5196
5197 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
5198             Roger Sayle  <roger@eyesopen.com>
5199
5200         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
5201
5202 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
5203
5204         * calls.c (initialize_argument_information): Pass original EXP
5205         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
5206         code to split complex arguments here, as part of initializing the
5207         ARGS array.
5208         (expand_call): Remove code that builds a list of arguments and
5209         inserts implicit arguments into it.  Instead, just count how many
5210         implicit arguments there will be so we can determine the size of
5211         the ARGS array, and let initialize_argument_information do the work.
5212         (split_complex_values): Delete unused function.
5213
5214 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
5215
5216         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
5217
5218 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
5219
5220         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
5221         for arg pointer based indexed addressing.
5222
5223 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
5224
5225         * config/ia64/ia64.h, config/ia64/ia64.md,
5226         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
5227         spelling conventions.
5228
5229 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5230
5231         * config/m68k/m68k.c (split_di): New.
5232         * config/m68k/m68k-protos.h: Declare split_di.
5233         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
5234           Improve predicate handling and split constant shifts.
5235
5236 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5237
5238         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
5239         parameter for register bitfield operations, general predicates
5240         cleanup
5241
5242 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5243
5244         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
5245         * config/m68k/linux-unwind.h: New file.
5246
5247 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
5248
5249         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
5250         config/i386/athlon.md, config/ia64/ia64.md,
5251         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
5252         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
5253         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
5254         tree-ssa-loop-niter.c, tree-vect-analyze.c,
5255         tree-vect-transform.c: Fix comment typos.
5256
5257 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
5258
5259         * sched-deps.c (find_insn_list): Remove.
5260         * sched-int.h: Remove the prototype for find_insn_list.
5261
5262 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
5263
5264         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
5265         to linker.
5266         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
5267         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
5268         darwin_rs6000_override_options.
5269         (C_COMMON_OVERRIDE_OPTIONS): Expect
5270         darwin_macosx_version_min to be non-NULL always.
5271         (TARGET_C99_FUNCTIONS): Likewise.
5272         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
5273         (DARWIN_MINVERSION_SPEC): New.
5274         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
5275         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
5276         to cc1*.
5277         (DARWIN_MINVERSION_SPEC): New.
5278         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
5279         value.
5280         * config/darwin-c.c (darwin_cpp_builtins): Expect
5281         darwin_macosx_version_min to be non-NULL always.
5282
5283         * config/rs6000/rs6000.c: Clean up trailing whitespace.
5284
5285 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
5286
5287         * config/i386/i386.h (x86_use_xchgb): New.
5288         (TARGET_USE_XCHGB): New macro.
5289         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
5290         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
5291         Split after reload into bswaphi for shifts of 8.
5292         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
5293         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
5294         or when optimizing for size.
5295
5296 2007-02-16  Richard Guenther  <rguenther@suse.de>
5297             Christian Bruel  <christian.bruel@st.com>
5298
5299         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
5300         DECLs but prefer SSA_NAMEs over DECLs.
5301
5302 2007-02-16  Richard Guenther  <rguenther@suse.de>
5303
5304         * tree-flow-inline.h (single_imm_use_p): Remove.
5305         (zero_imm_uses_p): Likewise.
5306         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
5307         instead of single_imm_use_p.
5308         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
5309         zero_imm_uses_p.
5310
5311 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5312
5313         PR other/27843
5314         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
5315         nested double- and backquotes.
5316
5317 2007-02-15  Roger Sayle  <roger@eyesopen.com>
5318
5319         PR middle-end/30391
5320         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
5321         should be unreachable.
5322         (build2_stat): Allow construction of MODIFY_EXPR at any time.
5323         For the time being redirect GIMPLE_MODIFY_STMT to the new
5324         (renamed) build_gimple_modify_stmt_stat.
5325         (build2_gimple_stat): Rename to...
5326         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
5327         Always build a GIMPLE_MODIFY_STMT node.
5328         * tree.h (build2_gimple, build2_gimple_stat): Delete.
5329         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
5330         declarations.
5331
5332         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
5333         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
5334         * tree-complex.c (set_component_ssa_name, expand_complex_move,
5335         expand_complex_div_wide): Likewise.
5336         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
5337         * tree-ssa-loop-im.c (schedule_sm): Likewise.
5338         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
5339         * tree-ssa-loop-manip.c (create_iv): Likewise.
5340         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
5341         abs_replacement): Likewise.
5342         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
5343         realify_fake_stores): Likewise.
5344
5345         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
5346         node rather than a GIMPLE_MODIFY_STMT node.
5347         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
5348         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
5349         Likewise.
5350         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
5351         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
5352         GIMPLE_MODIFY_STMT.
5353
5354 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5355
5356         PR middle-end/30433
5357         * fold-const.c (fold_comparison): Add back the
5358         folding of constant complex comparisions.
5359
5360 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5361
5362         PR middle-end/30729
5363         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
5364         effects unknown to this function, return early.
5365
5366 2007-02-15  Ian Lance Taylor  <iant@google.com>
5367
5368         * lower-subreg.c (move_eh_region_note): New static function.
5369         (resolve_simple_move): Call it.
5370         (decompose_multiword_subregs): Track blocks for which we resolve a
5371         simple move which is also a control flow insn.  Pass them to
5372         find_many_sub_basic_blocks.
5373         (pass_lower_subreg): Add TODO_verify_flow.
5374         (pass_lower_subreg2): Likewise.
5375
5376 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5377             Brooks Moses  <brooks.moses@codesourcery.com>
5378             Lee Millward  <lee.millward@codesourcery.com>
5379
5380         * tree.h (enum tree_code_class): Add tcc_vl_exp.
5381         (VL_EXP_CLASS_P): New.
5382         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
5383         TREE_CODE_LENGTH.
5384         (TREE_OPERAND_CHECK_CODE): Likewise.
5385         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
5386         (TREE_RTL_OPERAND_CHECK): Likewise.
5387         (tree_operand_check_failed): Make second parameter the whole tree
5388         instead of its code.  Fixed callers.
5389         (VL_EXP_CHECK): New.
5390         (TREE_OPERAND_LENGTH): New.
5391         (VL_EXP_OPERAND_LENGTH): New.
5392         (CALL_EXPR_FN): New.
5393         (CALL_EXPR_STATIC_CHAIN): New.
5394         (CALL_EXPR_ARGS): New.
5395         (CALL_EXPR_ARG): New.
5396         (call_expr_nargs): New.
5397         (CALL_EXPR_ARGP): New.
5398         (build_nt_call_list): Declare.
5399         (build_vl_exp_stat): Declare.
5400         (build_vl_exp): New.
5401         (build_call_list): Declare.
5402         (build_call_nary): Declare.
5403         (build_call_valist): Declare.
5404         (build_call_array): Declare.
5405         (call_expr_arg): Declare.
5406         (call_expr_argp): Declare.
5407         (call_expr_arglist): Declare.
5408         (fold_build_call_list): Declare.
5409         (fold_build_call_list_initializer): Declare.
5410         (fold_call_expr): Declare to replace fold_builtin.
5411         (fold_builtin_fputs): Update to agree with modified definition.
5412         (fold_builtin_strcpy): Likewise.
5413         (fold_builtin_strncpy): Likewise.
5414         (fold_builtin_memory_chk): Likewise.
5415         (fold_builtin_stxcpy_chk): Likewise.
5416         (fold_builtin_strncpy_chk): Likewise.
5417         (fold_builtin_next_arg): Likewise.
5418         (fold_build_call_expr): Declare.
5419         (fold_builtin_call_list): Declare.
5420         (fold_builtin_call_valist): Declare.
5421         (build_call_expr): Declare.
5422         (validate_arglist): Update to agree with modified definition.
5423         (tree_operand_length): New.
5424         (call_expr_arg_iterator): New.
5425         (init_call_expr_arg_iterator): New.
5426         (next_call_expr_arg): New.
5427         (first_call_expr_arg): New.
5428         (more_call_expr_args_p): New.
5429         (FOR_EACH_CALL_EXPR_ARG): New.
5430
5431         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
5432         and tcc_gimple_stmt.
5433         (tree_code_size): Update documentation.  Use sizeof (tree) rather
5434         than sizeof (char *).
5435         (tree_size): Likewise.  Add case for tcc_vl_exp.
5436         (tree_node_structure): Add case for tcc_vl_exp.
5437         (contains_placeholder_p): Likewise.
5438         (substitute_in_expr): Likewise.
5439         (substitute_placeholder_in_expr): Likewise.
5440         (stabilize_reference_1): Likewise.
5441         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
5442         to diagnose breakage of this interface for constructing CALL_EXPRs.
5443         (build_nt): Add similar assertion here.
5444         (build_nt_call_list): New.
5445         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
5446         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
5447         TREE_CODE_LENGTH.
5448         (get_callee_fndecl): Use new CALL_EXPR accessors.
5449         (tree_operand_check_failed): Change parameters to pass entire node
5450         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
5451         (process_call_operands): New.
5452         (build_vl_exp_stat): New.
5453         (build_call_list): New.
5454         (build_call_nary): New.
5455         (build_call_valist): New.
5456         (build_call_array): New.
5457         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5458         (call_expr_arglist): New.
5459
5460         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
5461         tcc_vl_exp instead of a fixed-size tcc_expression.
5462
5463         * doc/c-tree.texi (CALL_EXPR): Document new representation and
5464         accessors for CALL_EXPRs.
5465         (AGGR_INIT_EXPR): Likewise.
5466
5467 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5468             Brooks Moses  <brooks.moses@codesourcery.com>
5469             Lee Millward  <lee.millward@codesourcery.com>
5470
5471         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
5472         (expand_builtin_nonlocal_goto): Change parameter to be entire
5473         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
5474         (expand_builtin_prefetch): Likewise.
5475         (expand_builtin_classify_type): Likewise.
5476         (mathfn_built_in): Return NULL_TREE instead of 0.
5477         (expand_errno_check): Use new CALL_EXPR accessors.
5478         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
5479         Return NULL_RTX instead of 0.
5480         (expand_builtin_mathfn_2): Likewise.
5481         (expand_builtin_mathfn_3): Likewise.
5482         (expand_builtin_interclass_mathfn): Likewise.
5483         (expand_builtin_sincos): Likewise.
5484         (expand_builtin_cexpi): Likewise.
5485         (expand_builtin_int_roundingfn): Likewise.
5486         (expand_builtin_int_roundingfn_2): Likewise.
5487         (expand_builtin_pow): Likewise.
5488         (expand_builtin_powi): Likewise.
5489         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
5490         of arglist, fixing callers appropriately.  Use new CALL_EXPR
5491         accessors and constructors.  Return NULL_RTX instead of 0.
5492         (expand_builtin_strstr): Likewise.
5493         (expand_builtin_strchr): Likewise.
5494         (expand_builtin_strrchr): Likewise.
5495         (expand_builtin_strpbrk): Likewise.
5496         (expand_builtin_memcpy): Likewise.
5497         (expand_builtin_mempcpy): Likewise.
5498         (expand_builtin_mempcpy_args): New.
5499         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
5500         (expand_builtin_memmove_args): New.
5501         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
5502         (expand_movstr): Likewise.
5503         (expand_builtin_strcpy): Likewise.
5504         (expand_builtin_strcpy_args): New.
5505         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
5506         (expand_builtin_strncpy): Likewise.
5507         (expand_builtin_memset): Likewise.
5508         (expand_builtin_memset_args): New.
5509         (expand_builtin_bzero): Similarly to expand_builtin_memset.
5510         (expand_builtin_memcmp): Likewise.
5511         (expand_builtin_strcmp): Likewise.
5512         (expand_builtin_strncmp): Likewise.
5513         (expand_builtin_strcat): Likewise.
5514         (expand_builtin_strncat): Likewise.
5515         (expand_builtin_strspn): Likewise.
5516         (expand_builtin_strcspn): Likewise.
5517         (expand_builtin_args_info): Likewise.
5518         (expand_builtin_va_start): Likewise.
5519         (gimplify_va_arg_expr): Likewise.
5520         (expand_builtin_va_end): Likewise.
5521         (expand_builtin_va_copy): Likewise.
5522         (expand_builtin_frame_address): Likewise.
5523         (expand_builtin_alloca): Likewise.
5524         (expand_builtin_bswap): Likewise.
5525         (expand_builtin_unop): Likewise.
5526         (expand_builtin_fputs): Likewise.
5527         (expand_builtin_expect): Likewise.
5528         (expand_builtin_fabs): Likewise.
5529         (expand_builtin_copysign): Likewise.
5530         (expand_builtin_printf): Likewise.
5531         (expand_builtin_fprintf): Likewise.
5532         (expand_builtin_sprintf): Likewise.
5533         (expand_builtin_init_trampoline): Likewise.
5534         (expand_builtin_signbit): Likewise.
5535         (expand_builtin_fork_or_exec): Likewise.
5536         (expand_builtin_sync_operation): Likewise.
5537         (expand_builtin_compare_and_swap): Likewise.
5538         (expand_builtin_lock_test_and_set): Likewise.
5539         (expand_builtin_lock_release): Likewise.
5540         (expand_builtin): Likewise.
5541         (builtin_mathfn_code): Likewise.
5542
5543         (fold_builtin_constant_p): Pass call arguments individually instead
5544         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5545         accessors and constructors.  Return NULL_TREE instead of 0.
5546         (fold_builtin_expect): Likewise.
5547         (fold_builtin_classify_type): Likewise.
5548         (fold_builtin_strlen): Likewise.
5549         (fold_builtin_nan): Likewise.
5550         (integer_valued_real_p): Likewise.
5551         (fold_trunc_transparent_mathfn): Likewise.
5552         (fold_fixed_mathfn): Likewise.
5553         (fold_builtin_cabs): Likewise.
5554         (fold_builtin_sqrt): Likewise.
5555         (fold_builtin_cbrt): Likewise.
5556         (fold_builtin_cos): Likewise.
5557         (fold_builtin_cosh): Likewise.
5558         (fold_builtin_tan): Likewise.
5559         (fold_builtin_sincos): Likewise.
5560         (fold_builtin_cexp): Likewise.
5561         (fold_builtin_trunc): Likewise.
5562         (fold_builtin_floor): Likewise.
5563         (fold_builtin_ceil): Likewise.
5564         (fold_builtin_round): Likewise.
5565         (fold_builtin_int_roundingfn): Likewise.
5566         (fold_builtin_bitop): Likewise.
5567         (fold_builtin_bswap): Likewise.
5568         (fold_builtin_logarithm): Likewise.
5569         (fold_builtin_hypot): Likewise.
5570         (fold_builtin_pow): Likewise.
5571         (fold_builtin_powi): Likewise.
5572         (fold_builtin_exponent): Likewise.
5573         (fold_builtin_memset): Likewise.
5574         (fold_builtin_bzero): Likewise.
5575         (fold_builtin_memory_op): Likewise.
5576         (fold_builtin_bcopy): Deleted; call site changed to invoke
5577         fold_builtin_memory_op directly.
5578         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
5579         (fold_builtin_strncpy): Likewise.
5580         (fold_builtin_memcmp): Likewise.
5581         (fold_builtin_strcmp): Likewise.
5582         (fold_builtin_strncmp): Likewise.
5583         (fold_builtin_signbit): Likewise.
5584         (fold_builtin_copysign): Likewise.
5585         (fold_builtin_isascii): Likewise.
5586         (fold_builtin_toascii): Likewise.
5587         (fold_builtin_isdigit): Likewise.
5588         (fold_builtin_fabs): Likewise.
5589         (fold_builtin_abs): Likewise.
5590         (fold_builtin_fmin_fmax): Likewise.
5591         (fold_builtin_carg): Likewise.
5592         (fold_builtin_classify): Likewise.
5593         (fold_builtin_unordered_cmp): Likewise.
5594
5595         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
5596         New functions split out from fold_builtin_1.
5597         (fold_builtin_n): New.
5598         (fold_builtin_varargs): New.
5599         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
5600         instead.
5601         (fold_call_expr): New.
5602         (build_function_call_expr): Rewrite to use new helper function.
5603         (fold_builtin_call_list): New.
5604         (build_call_expr): New.
5605         (fold_builtin_call_valist): New.
5606         (rewrite_call_expr): New.
5607         (validate_arg): New.
5608         (validate_arglist): Change parameter to be entire CALL_EXPR instead
5609         of an arglist.  Change return type to bool.  Use new CALL_EXPR
5610         accessors.
5611
5612         (fold_builtin_strstr):  Pass call arguments individually instead
5613         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5614         accessors and constructors.  Return NULL_TREE instead of 0.
5615         (fold_builtin_strchr): Likewise.
5616         (fold_builtin_strrchr): Likewise.
5617         (fold_builtin_strpbrk): Likewise.
5618         (fold_builtin_strcat): Likewise.
5619         (fold_builtin_strncat): Likewise.
5620         (fold_builtin_strspn): Likewise.
5621         (fold_builtin_strcspn): Likewise.
5622         (fold_builtin_fputs): Likewise.
5623         (fold_builtin_next_arg): Likewise.
5624         (fold_builtin_sprintf): Likewise.
5625
5626         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
5627         NULL_RTX instead of 0.
5628         (expand_builtin_memory_chk): Likewise.
5629         (maybe_emit_chk_warning): Likewise.
5630         (maybe_emit_sprintf_chk_warning): Likewise.
5631
5632         (fold_builtin_object_size): Pass call arguments individually instead
5633         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5634         accessors and constructors.  Return NULL_TREE instead of 0.
5635         (fold_builtin_memory_chk): Likewise.
5636         (fold_builtin_stxcpy_chk): Likewise.
5637         (fold_builtin_strncpy_chk): Likewise.
5638         (fold_builtin_strcat_chk): Likewise.
5639         (fold_builtin_strcat_chk): Likewise.
5640         (fold_builtin_strncat_chk): Likewise.
5641         (fold_builtin_sprintf_chk): Likewise.
5642         (fold_builtin_snprintf_chk): Likewise.
5643         (fold_builtin_printf): Likewise.
5644         (fold_builtin_vprintf): Likewise.
5645
5646         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
5647         constructors.
5648         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
5649         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5650         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
5651         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
5652         (fold_unary): Likewise.
5653         (fold_binary): Likewise.
5654         (fold_ternary): Remove CALL_EXPR case, since they are no longer
5655         ternary expressions.
5656         (fold): Add logic for tcc_vl_exp.
5657         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
5658         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5659         (fold_build3_stat): Add assertion to flag broken interface for
5660         constructing CALL_EXPRs.
5661         (fold_build_call_list): New.
5662         (fold_build_call_list_initializer): New.
5663         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
5664         constructors.
5665         (fold_strip_sign_ops): Likewise.
5666
5667 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5668             Brooks Moses  <brooks.moses@codesourcery.com>
5669             Lee Millward  <lee.millward@codesourcery.com>
5670
5671         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
5672         accessors and dump arguments explicitly.
5673
5674         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
5675         TREE_CODE_LENGTH.
5676         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
5677         explicitly.
5678         (print_call_name): Use new CALL_EXPR accessors.
5679
5680         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
5681         CALL_EXPR arguments explicitly instead of as a list.  Use
5682         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5683
5684         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
5685         (vrp_visit_stmt): Likewise.
5686
5687         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
5688         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
5689         TREE_CODE_LENGTH.
5690         (force_move_till_expr): Likewise.
5691
5692         * targhooks.c (default_external_stack_protect_fail): Use
5693         build_call_expr instead of build_function_call_expr.
5694         (default_hidden_stack_protect_fail): Likewise.
5695
5696         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
5697         build the call.
5698
5699         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
5700         and walk arguments explicitly.
5701
5702         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
5703         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5704         (expand_simple_operations): Likewise.
5705         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
5706
5707         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
5708         of TREE_CODE_LENGTH.
5709         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
5710
5711         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
5712         instead of TREE_CODE_LENGTH.
5713
5714         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
5715         (tree_ic_transform): Likewise.
5716         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
5717         parameter instead of arglist.  Fix callers.
5718         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
5719         (tree_stringops_transform): Likewise.
5720         (tree_indirect_call_to_profile): Likewise.
5721         (tree_stringops_values_to_profile): Likewise.
5722
5723         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
5724         (eliminate_tail_call): Likewise.
5725
5726         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
5727
5728         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
5729         Use TREE_OPERAND_LENGTH and generalize to handle any number of
5730         operands.
5731         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
5732
5733         * omp-low.c (build_omp_barrier): Use build_call_expr.
5734         (lower_rec_input_clauses): Likewise.
5735         (lower_reduction_clauses): Likewise.
5736         (expand_parallel_call): Likewise.
5737         (maybe_catch_exception): Likewise.
5738         (expand_omp_for_generic): Likewise.
5739         (expand_omp_for_static_nochunk): Likewise.
5740         (expand_omp_sections): Likewise.
5741         (lower_omp_single_simple): Likewise.
5742         (lower_omp_single_copy): Likewise.
5743         (lower_omp_master): Likewise.
5744         (lower_omp_ordered): Likewise.
5745         (lower_omp_critical): Likewise.
5746
5747         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
5748         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
5749
5750         * tree-gimple.c (is_gimple_call_addr): Fix doc.
5751         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
5752         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
5753
5754         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
5755         and generalize to handle any number of operands.
5756         (chrec_contains_undetermined): Likewise.
5757         (tree_contains_chrecs): Likewise.
5758         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
5759
5760         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
5761
5762         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
5763         fold_call_expr instead of fold_builtin.
5764         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
5765         match declarations there.
5766         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
5767         updates.
5768
5769         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
5770         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5771
5772         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
5773         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
5774
5775         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
5776         accessors.
5777
5778         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
5779         (execute_cse_sincos): Use new CALL_EXPR accessors.
5780
5781         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
5782
5783         * gimple-low.c (lower_function_body): Use build_call_expr.
5784         (lower_builtin_setjmp): Likewise.
5785
5786         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
5787         (set_storage_via_libcall): Likewise.
5788         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
5789         instead of TREE_CODE_LENGTH.
5790         (expand_expr_real_1): Use new CALL_EXPR accessors.
5791
5792         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
5793         generalize to handle any number of operands.
5794         (TB_parent_eq): Likewise.
5795
5796         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
5797         (strip_builtin_expect): Likewise.
5798
5799         * function.c (gimplify_parameters): Use build_call_expr.
5800
5801         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
5802         instead of TREE_CODE_LENGTH.
5803
5804         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
5805         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
5806
5807         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
5808         iterators.
5809
5810         * gimplify.c (build_stack_save_restore): Use build_call_expr.
5811         (gimplify_decl_expr): Likewise.
5812         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
5813         Use new CALL_EXPR iterators.
5814         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
5815         (gimplify_modify_expr_to_memset): Likewise.
5816         (gimplify_variable_sized_compare): Likewise.
5817         (gimplify_omp_atomic_fetch_op): Likewise.
5818         (gimplify_omp_atomic_pipeline): Likewise.
5819         (gimplify_omp_atomic_mutex): Likewise.
5820         (gimplify_function_tree): Likewise.
5821
5822         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
5823         (call_expr_flags): Likewise.
5824         (expand_call): Likewise.
5825
5826         * except.c (expand_builtin_eh_return_data_regno): Pass entire
5827         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
5828         accessors.
5829
5830         * coverage.c (create_coverage): Use build_call_expr.
5831
5832         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
5833         (temp_call_expr_obstack): New.
5834         (pool_copy_list): Delete.
5835         (temp_copy_call_expr): New.
5836         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
5837         CALL_EXPR accessors.  Get rid of special goo for copying argument
5838         lists and use temp_copy_call_expr instead.
5839         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
5840         CALL_EXPR accessors.
5841         (create_expression_by_pieces): Likewise.  Use build_call_array
5842         to construct the result instead of fold_build3.
5843         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
5844         dealing with argument lists.
5845         (init_pre): Remove references to expression_node_pool and
5846         list_node_pool.  Init temp_call_expr_obstack instead.
5847         (fini_pre): Remove references to expression_node_pool and
5848         list_node_pool.
5849
5850         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
5851         and walk arguments explicitly instead of as a list.
5852
5853         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
5854         (mx_register_decls): Likewise.
5855         (mudflap_register_call): Likewise.
5856         (mudflap_finish_file): Likewise.
5857
5858         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
5859         (ipa_callsite_compute_param): Likewise.
5860
5861         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
5862         accessors and constructor.
5863
5864         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
5865         accessors and constructor.
5866         (convert_tramp_reference): Likewise.
5867         (convert_call_expr): Likewise.
5868         (finalize_nesting_tree_1): Likewise.
5869
5870         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
5871         accessors.
5872
5873         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
5874
5875         * tree-inline.c (initialize_inlined_parameters): Pass entire
5876         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
5877         accessors.
5878         (estimate_num_insns_1): Use new CALL_EXPR accessors.
5879         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
5880
5881         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
5882         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5883         (vectorizable_reduction): Likewise.
5884         (vectorizable_call): Use new CALL_EXPR iterators.
5885         (vectorizable_conversion): Use build_call_expr.
5886         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
5887         (vect_gen_widened_results_half): Use build_call_expr.
5888         (vect_setup_realignment): Likewise.
5889         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
5890
5891         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
5892         (pass_through_call): Likewise.
5893         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
5894         fold_builtin.
5895
5896         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
5897         (tree_gen_pow2_profiler): Likewise.
5898         (tree_gen_one_value_profiler): Likewise.
5899         (tree_gen_ic_func_profiler): Likewise.
5900         (tree_gen_average_profiler): Likewise.
5901         (tree_gen_ior_profiler): Likewise.
5902
5903         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
5904         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
5905         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5906
5907         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
5908         of TREE_CODE_LENGTH.
5909
5910         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
5911         of TREE_CODE_LENGTH.
5912
5913         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
5914         constructor.
5915         (convert_to_integer): Likewise.
5916
5917         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
5918         accessors.
5919
5920 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5921             Brooks Moses  <brooks.moses@codesourcery.com>
5922             Lee Millward  <lee.millward@codesourcery.com>
5923
5924         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
5925         accessors.
5926         * config/frv/frv.c (frv_expand_builtin): Likewise.
5927         * config/s390/s390.c (s390_expand_builtin): Likewise.
5928
5929         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
5930         (sparc_expand_builtin): Use new CALL_EXPR accessors.
5931
5932         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
5933         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
5934         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
5935         (ix86_expand_store_builtin): Likewise.
5936         (ix86_expand_unop_builtin): Likewise.
5937         (ix86_expand_unop1_builtin): Likewise.
5938         (ix86_expand_sse_compare): Likewise.
5939         (ix86_expand_sse_comi): Likewise.
5940         (ix86_expand_vec_init_builtin): Likewise.
5941         (ix86_expand_vec_ext_builtin): Likewise.
5942         (ix86_expand_vec_set_builtin): Likewise.
5943         (ix86_expand_builtin): Use new CALL_EXPR accessors.
5944
5945         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
5946         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
5947
5948         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
5949         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5950         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
5951
5952         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
5953         build_call_expr.
5954         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
5955         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
5956         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5957         (altivec_expand_abs_builtin): Likewise.
5958         (rs6000_expand_binop_builtin): Likewise.
5959         (altivec_expand_predicate_builtin): Likewise.
5960         (altivec_expand_lv_builtin): Likewise.
5961         (spe_expand_stv_builtin): Likewise.
5962         (altivec_expand_stv_builtin): Likewise.
5963         (rs6000_expand_ternop_builtin): Likewise.
5964         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
5965         (altivec_expand_st_builtin): Likewise.
5966         (altivec_expand_dst_builtin): Likewise.
5967         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
5968         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5969         (altivec_expand_vec_set_builtin): Likewise.
5970         (altivec_expand_vec_ext_builtin): Likewise.
5971         (altivec_expand_builtin): Use new CALL_EXPR accessors.
5972         (spe_expand_builtin): Likewise.
5973         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
5974         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5975         (spe_expand_evsel_builtin): Likewise.
5976         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
5977         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
5978
5979         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
5980         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5981         (arm_expand_unop_builtin): Likewise.
5982         (arm_expand_builtin): Use new CALL_EXPR accessors.
5983
5984         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
5985         accessors.
5986
5987         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
5988         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5989         (bfin_expand_unop_builtin): Likewise.
5990         (bfin_expand_builtin): Use new CALL_EXPR accessors.
5991
5992 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5993             Brooks Moses  <brooks.moses@codesourcery.com>
5994             Lee Millward  <lee.millward@codesourcery.com>
5995
5996         * c-semantics.c (build_stmt): Add internal diagnostic check.
5997
5998         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
5999         accessors.  Print arguments explicitly instead of as a list.
6000
6001         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
6002
6003         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
6004         (c_finish_omp_flish): Likewise.
6005
6006         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
6007         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
6008         instead of TREE_CODE_LENGTH.
6009         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
6010         (c_warn_unused_result): Likewise.
6011
6012 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6013
6014         PR c/26494
6015         * doc/invoke.texi (Warning Options): Remove
6016         -Werror-implicit-function-declaration.
6017         (Wimplicit-function-declaration): Update description.
6018         * opts.c (common_handle_option): Move handling of -Werror=* to...
6019         (enable_warning_as_error): ...here.
6020         * opts.h (enable_warning_as_error): Declare.
6021         * c-decl.c (implicit_decl_warning): Unless
6022         -Wno-implicit-function-declaration is given, emit a pedwarn if
6023         -std=c99 or emit a warning if -Wimplicit-function-declaration.
6024         * c.opt (Wimplicit-function-declaration): Replace
6025         mesg_implicit_function_declaration with
6026         warn_implicit_function_declaration.
6027         * c-opts.c (c_common_handle_option):
6028         -Werror-implicit-function-declaration is exactly equal as
6029         -Werror=implicit-function-declaration.
6030         (set_Wimplicit): Replace mesg_implicit_function_declaration with
6031         warn_implicit_function_declaration.
6032         (c_common_post_options): -Wimplict-function-declaration is enabled
6033         by default by -std=c99, otherwise is disabled by default.
6034         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
6035
6036 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
6037
6038         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
6039         DECL on the rhs to a DECL on the lhs for debug info purposes if the
6040         former is ignored but not the latter.
6041
6042 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
6043
6044         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
6045         is made and the reference doesn't use the alias set of its type,
6046         do not create the temporary using that type.
6047
6048 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
6049
6050         * jump.c: Remove prototypes for delete_computation and
6051         delete_prior_computation.
6052
6053 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
6054
6055         * jump.c (get_label_after): Delete.
6056         (get_label_before, delete_computation, delete_jump,
6057         delete_prior_computation, follow_jumps): Move...
6058         * reorg.c (delete_computation, delete_prior_computation): ... here...
6059         (get_label_before, delete_jump): ... making these static ...
6060         (follow_jumps): ... and simplifying this since it only runs after
6061         reload.
6062         * rtl.h (get_label_after, get_label_before, delete_jump,
6063         follow_jumps): Delete prototypes.
6064
6065 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
6066
6067         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
6068
6069 2007-02-15  Nick Clifton  <nickc@redhat.com>
6070
6071         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
6072         order to prevent it from being munged by the target.
6073
6074 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
6075
6076         * config/i386/i386.md: Remove misleading comment.
6077
6078 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6079
6080         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
6081         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
6082         invalid patterns.
6083
6084 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6085
6086         * tree-sra.c (instantiate_missing_elements): Canonicalize
6087         bit-field types.
6088         (sra_build_assignment): New.
6089         (generate_copy_inout, generate_element_copy,
6090         generate_element_zero, generate_one_element_init): Use it.
6091
6092 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6093
6094         * tree-sra.c (instantiate_missing_elements): Canonicalize
6095         bit-field types.
6096         (sra_build_assignment): New.
6097         (generate_copy_inout, generate_element_copy,
6098         generate_element_zero, generate_one_element_init): Use it.
6099
6100 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6101
6102         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
6103         limbo die nodes.
6104
6105 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
6106
6107         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
6108         types as aggregates not scalars.
6109         * function.c (assign_stack_temp_for_type): Likewise.
6110
6111 2007-02-14  Roger Sayle  <roger@eyesopen.com>
6112             Zdenek Dvorak  <dvorakz@suse.cz>
6113
6114         * tree-dump.c (dump_switch_p_1): Require exact match of the option
6115         name.
6116
6117 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
6118
6119         * passes.c (next_pass_1): Clear the next field of the copied
6120         pass structure.
6121
6122 2007-02-14  Richard Henderson  <rth@redhat.com>
6123
6124         * tree-sra.c (early_sra): New.
6125         (decl_can_be_decomposed_p): Deny va_list if early_sra.
6126         (tree_sra_early, pass_sra_early): New.
6127         * tree-pass.h (pass_sra_early): Declare.
6128         * passes.c (init_optimization_passes): Use it.
6129
6130 2007-02-14  Richard Guenther  <rguenther@suse.de>
6131
6132         * flags.h (issue_strict_overflow_warning): Convert to a macro.
6133
6134 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
6135
6136          PR tree-optimization/30771
6137         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
6138         also phi nodes.
6139         (vect_analyze_operations): Induction phis can now be marked as
6140         used_in_loop.
6141         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
6142         Update documentation accordingly.
6143
6144 2007-02-14  Nick Clifton  <nickc@redhat.com>
6145
6146         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
6147         most 3 arguments are supported.
6148         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
6149
6150 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
6151
6152         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
6153         Ensure dst->current is valid.
6154
6155 2007-02-13  Paul Brook  <paul@codesourcery.com>
6156
6157         * config.gcc: Add arm*-*-uclinux-*eabi.
6158         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
6159         (SUBTARGET_EXTRA_LINK_SPEC): Define.
6160         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
6161         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
6162         (LINK_SPEC): Define.
6163         (LIB_SPEC): Define.
6164         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
6165         register.
6166         * config/arm/uclinux-eabi.h: New file.
6167         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
6168         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
6169         based targets.
6170
6171 2007-02-13  Ian Lance Taylor  <iant@google.com>
6172
6173         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
6174         * flags.h (warn_strict_overflow): Declare.
6175         (enum warn_strict_overflow_code): Define.
6176         (issue_strict_overflow_warning): New static inline function.
6177         * opts.c (warn_strict_overflow): New variable.
6178         (common_handle_option): Handle OPT_Wstrict_overflow and
6179         OPT_Wstrict_overflow_.
6180         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
6181         OPT_Wall.
6182         * fold-const.c: Include intl.h.
6183         (fold_deferring_overflow_warnings): New static variable.
6184         (fold_deferred_overflow_warning): New static variable.
6185         (fold_deferred_overflow_code): New static variable.
6186         (fold_defer_overflow_warnings): New function.
6187         (fold_undefer_overflow_warnings): New function.
6188         (fold_undefer_and_ignore_overflow_warnings): New function.
6189         (fold_deferring_overflow_warnings_p): New function.
6190         (fold_overflow_warning): New static function.
6191         (make_range): Add strict_overflow_p parameter.  Change all
6192         callers.
6193         (extract_muldiv, extract_muldiv_1): Likewise.
6194         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
6195         tree_expr_nonnegative_p.
6196         (fold_negate_expr): Call fold_overflow_warning.
6197         (fold_range_test): Likewise.
6198         (fold_comparison): Likewise.
6199         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
6200         instead of tree_expr_nonnegative_p.
6201         (tree_expr_nonnegative_warnv_p): Rename from
6202         tree_expr_nonnegative_p, add strict_overflow_p parameter.
6203         (tree_expr_nonnegative_p): New function.
6204         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
6205         strict_overflow_p parameter.
6206         (tree_expr_nonzero_p): New function.
6207         * passes.c (verify_interpass_invariants): New static function.
6208         (execute_one_pass): Call it.
6209         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
6210         warnings.
6211         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
6212         (estimate_numbers_of_iterations): Likewise.
6213         (scev_probably_wraps_p): Likewise.
6214         * tree-ssa-ccp.c: Include "toplev.h".
6215         (evaluate_stmt): Defer fold overflow warnings until we know we are
6216         going to optimize.
6217         (struct fold_stmt_r_data): Add stmt field.
6218         (fold_stmt_r): Defer fold overflow warnings until we know we
6219         optimized.
6220         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
6221         (fold_stmt_inplace): Likewise.
6222         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
6223         (cleanup_control_expr_graph): Defer fold overflow warnings until
6224         we know we are going to optimize.
6225         * tree-cfg.c (fold_cond_expr_cond): Likewise.
6226         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
6227         Likewise.
6228         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
6229         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
6230         * tree-ssa-loop-manip.c (create_iv): Likewise.
6231         * c-typeck.c (build_conditional_expr): Likewise.
6232         (build_binary_op): Likewise.
6233         * tree-vrp.c (vrp_expr_computes_nonzero): Call
6234         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
6235         (extract_range_from_unary_expr): Likewise.
6236         * simplify-rtx.c (simplify_const_relational_operation): Warn when
6237         assuming that signed overflow does not occur.
6238         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
6239         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
6240         (fold_defer_overflow_warnings): Declare.
6241         (fold_undefer_overflow_warnings): Declare.
6242         (fold_undefer_and_ignore_overflow_warnings): Declare.
6243         (fold_deferring_overflow_warnings_p): Declare.
6244         (tree_expr_nonzero_warnv_p): Declare.
6245         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
6246         of warning options.
6247         (Warning Options): Document -Wstrict-overflow.
6248         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
6249         (tree-ssa-ccp.o): Likewise.
6250         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
6251         (fold-const.o): Depend on intl.h.
6252
6253 2007-02-13  Ian Lance Taylor  <iant@google.com>
6254
6255         PR middle-end/30751
6256         * lower-subreg.c (resolve_simple_move): Decompose subregs in
6257         addresses.
6258
6259 2007-02-13  Stuart Hastings  <stuart@apple.com>
6260
6261         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
6262
6263 2007-02-13  Richard Henderson  <rth@redhat.com>
6264
6265         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
6266         handled_component_p before looking for the indirect_ref.
6267
6268 2007-02-13  Richard Henderson  <rth@redhat.com>
6269
6270         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
6271         remove flags clobber.
6272         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
6273         (bswaphi_lowpart): New.
6274         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
6275         remove TARGET_BSWAP test.  Delete expander of the same name.
6276
6277         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
6278         (expand_unop): Use them.
6279
6280 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
6281
6282         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
6283         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
6284         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
6285         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
6286         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
6287         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
6288         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
6289         assembler dialect choice from asm templates.
6290
6291 2007-02-12  Richard Henderson  <rth@redhat.com>
6292
6293         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
6294         (fixuns_trunc<SSEMODEF>si2): Use it.
6295         * config/i386/sse.md (vec_setv4sf_0): Export.
6296         * config/i386/i386.c (ix86_build_const_vector): Export.
6297         (ix86_split_convert_uns_si_sse): Rename from
6298         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
6299         * config/i386/i386-protos.h: Update.
6300
6301 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6302
6303         PR c/29521
6304         * c-typeck.c (c_finish_return): Improve warning message.
6305
6306 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6307
6308         * alias.c (find_symbolic_term): Delete unused function.
6309
6310 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
6311
6312         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
6313         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
6314         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
6315
6316 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
6317
6318         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
6319         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
6320         the function, temporarily point the debug interface to the null one.
6321
6322 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
6323
6324         * dwarf2out.c (round_up_to_align): New static function.
6325         (field_byte_offset): Use it to round the offset.
6326
6327 2007-02-12  Richard Henderson  <rth@redhat.com>
6328
6329         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
6330         (inswl_const): Export.
6331
6332 2007-02-12  Richard Henderson  <rth@redhat.com>
6333
6334         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
6335         result mode of the libcall, convert back to outmode.
6336
6337 2007-02-12  Roger Sayle  <roger@eyesopen.com>
6338
6339         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
6340         (bswapdi2): New define_expand to implement 32-bit implementation.
6341
6342 2007-02-12  Nick Clifton  <nickc@redhat.com>
6343
6344         * doc/invoke.texi (Overall Options): Document --help=.
6345         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
6346         (cc1_options): Pass --help= on to cc1.
6347         (display_help): Add description of --help=.
6348         (process_command): Add code to handle --help=.  Allow translated
6349         --help and --target-help switches to be passed on to compiler
6350         sub-process.
6351         (main): Remove unused if statement.
6352         * opts.c (columns): Remove.
6353         (LEFT_COLUMN): Define.
6354         (wrap_help): Add columns argument.
6355         (print_filtered_help): Change parameters to be an include bitmask,
6356         an exclude bitmask, an any bitmask and the column width.  Move the
6357         code to display the params list here.  Add code to display the
6358         status of options rather than their descriptions if the quiet flag
6359         is not active.
6360         (print_specific_help): Change parameters to be an include bitmask,
6361         an exclude bitmask and an any bitmask.  Move code to look up the
6362         column width here.  Decide upon the title for an options listing.
6363         (common_handle_options): Add code to handle --help=.  Adapt code
6364         for --help and --target-help to use the revised form of the
6365         print_specific_help function.
6366         (print_help): Delete.
6367         (print_param_help): Delete.
6368         (print_switch): Delete.
6369         * opts.h (cl_lang_count): Add prototype.
6370         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
6371         CL_MAX_OPTION_CLASS): New defines.
6372         * optc-gen.awk: Add construction of cl_lang_count.
6373         * c.opt: Add Warning attribute to warning options and Optimization
6374         attribute to optimization options.
6375         * common.opt: Likewise.
6376         Add --help=.
6377         Add -fhelp and -ftarget-help as aliases for the transformed --help
6378         and --target-help options.
6379         * opt-functions.awk: Add code to handle Warning and Optimization
6380         attributes.
6381
6382 2007-02-12  Richard Henderson  <rth@redhat.com>
6383
6384         * config/alpha/constraints.md: New file.
6385         * config/alpha/alpha.c: Include tm-constrs.h.
6386         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
6387         alpha_extra_constraint): Remove.
6388         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
6389         * config/alpha/alpha-protos.h: Update.
6390         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
6391         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
6392         (EXTRA_CONSTRAINT): Remove.
6393         * config/alpha/alpha.md: Include constraints.md.
6394         (adddi splitter): Use satisfies_constraint_*.
6395         * config/alpha/predicates.md (add_operand): Likewise.
6396         (sext_add_operand, addition_operation): Likewise.
6397
6398 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
6399
6400         PR tree-optimization/29145
6401         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
6402         in our handling of restrict qualified pointers.
6403
6404 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6405
6406         PR middle-end/7651
6407         * doc/invoke.texi (Wunused-value): Update description.
6408         (Wextra): Delete item.
6409         * opts.c (set_Wextra): Don't use the value of Wextra to set the
6410         value of Wunused-value.
6411         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
6412         (c_finish_stmt_expr): Don't check extra_warnings.
6413         (emit_side_effect_warnings): The caller is responsible to check
6414         warn_unused_value.
6415
6416 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6417             Matt Thomas  <matt@3am-software.com>
6418
6419         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
6420
6421 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6422
6423         * simplify-rtx.c (simplify_relational_operation_1): Optimize
6424         comparisons of POPCOUNT against zero.
6425         (simplify_const_relational_operation): Likewise.
6426
6427 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6428
6429         * doc/invoke.texi (Wextra): Delete outdated paragraph.
6430
6431 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6432
6433         * dwarf2out.c (root_type): Delete unused function.
6434
6435 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6436
6437         * genattrtab.c (contained_in_p): Delete unused function.
6438         (write_expr_attr_cache): Likewise.
6439
6440 2007-02-11  Jan Hubicka  <jh@suse.cz>
6441
6442         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
6443         previous patch.
6444
6445 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
6446
6447         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
6448         to add the REG_EQ* note.
6449         * see.c (see_merge_one_use_extension): Likewise.
6450         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
6451         turn REG_EQUAL notes into REG_EQUIV notes if the target
6452         register may have more than one set.
6453         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
6454         * gcse.c (try_replace_reg): Likewise.
6455         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
6456         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
6457         more than one REG_EQUIV note.
6458         * reload1.c (gen_reload): Use set_unique_reg_note.
6459
6460 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
6461
6462         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
6463         (ix86_builtin_conversion): New function.
6464
6465 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
6466
6467         PR target/29487
6468         * tree.h (DECL_REPLACEABLE_P): New macro.
6469         * except.c (set_nothrow_function_flags): Likewise.
6470
6471 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
6472             Ira Rosen  <irar@il.ibm.com>
6473             Dorit Nuzman  <dorit@il.ibm.com>
6474
6475         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
6476         * targhooks.c (default_builtin_vectorized_conversion): New.
6477         * targhooks.h (default_builtin_vectorized_function): New declaration.
6478         * target.h (struct vectorize): Add builtin_conversion field.
6479         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
6480         stmt_vec_info_type value.
6481         (vectorizable_conversion): New declaration.
6482         * tree-vect-analyze.c (vect_analyze_operations): Add
6483         vectorizable_conversion call.
6484         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
6485         * tree-vect-transform.c (vectorizable_conversion): New function.
6486         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
6487         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
6488         mode.
6489         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
6490         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
6491         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
6492         or ALTIVEC_BUILTIN_VCFSX.
6493
6494 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6495
6496         PR target/30634
6497         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
6498         CONST_DOUBLE and operand 0 is a hard register.
6499         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
6500         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
6501         is a hard floating-point register.
6502
6503 2007-02-10  Richard Henderson  <rth@redhat.com>
6504             Jakub Jelinek  <jakub@redhat.com>
6505             Alexandre Oliva  <aoliva@redhat.com>
6506
6507         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
6508         * builtin-types.def (BT_WORD): Make unsigned.
6509         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
6510         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
6511         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
6512         * c-decl.c (grokdeclarator): Don't error if !have_tls.
6513         * c-parser.c (c_parser_omp_threadprivate): Likewise.
6514         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
6515         emulated tls.
6516         * expr.c (emutls_var_address): New.
6517         (expand_expr_real_1): Expand emulated tls.
6518         (expand_expr_addr_expr_1): Likewise.
6519         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
6520         * output.h (emutls_finish): Declare.
6521         * toplev.c (compile_file): Call it.
6522         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
6523         address before wrapping in CONST.
6524         * varasm.c (emutls_htab, emutls_object_type): New.
6525         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
6526         (get_emutls_object_name, get_emutls_object_type): New.
6527         (get_emutls_init_templ_addr, emutls_decl): New.
6528         (emutls_common_1, emutls_finish): New.
6529         (assemble_variable): When emulating tls, swap decls; generate
6530         constructor for the emutls objects.
6531         (do_assemble_alias): When emulating tls, swap decl and target name.
6532         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
6533         for emulated tls.
6534         * varpool.c (decide_is_variable_needed): Look at force_output.
6535         Recurse for emulated tls.
6536         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
6537         with decide_is_variable_needed.
6538         * emutls.c: New file.
6539         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
6540         tls_object for real tls.
6541
6542 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6543
6544         PR rtl-optimization/29599
6545         * reload1.c (eliminate_regs_in_insn): Take the destination
6546         mode into account when computing the offset.
6547
6548 2007-02-09  Stuart Hastings  <stuart@apple.com>
6549             Richard Henderson  <rth@redhat.com>
6550
6551         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6552         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6553         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
6554         fixuns_truncdfhi2): New.
6555         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
6556         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
6557         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
6558         (floatunssidf2): Allow nonimmediate source.
6559         * gcc/config/i386/sse.md (movdi_to_sse): New.
6560         (vec_concatv2di): Drop '*'.
6561         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
6562         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6563         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
6564         New.
6565         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
6566         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6567         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
6568         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
6569         (ix86_build_signbit_mask): Fix decl of v, refactor to call
6570         ix86_build_const_vector.
6571         (x86_emit_floatuns): Rewrite.
6572
6573 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6574
6575         * genautomata.c (longest_path_length): Delete unused function.
6576         (struct state): Delete unused longest_path_length.
6577         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
6578         (get_free_state): Delete unused.
6579
6580 2007-02-09  Jan Hubicka  <jh@suse.cz>
6581
6582         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
6583         * doc/invoke.texi (inline-unit-growth): Update default value.
6584
6585         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
6586         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
6587         (rebuild_cgraph_edges): Likewise.
6588         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
6589         (dump_cgraph_node): Dump frequencies.
6590         (cgraph_clone_edge): Add frequency scales.
6591         (cgraph_clone_node): Add freuqnecy.
6592         * cgraph.h (cgraph_edge): Add freuqnecy argument.
6593         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
6594         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
6595         * tree-pass.h (TODO_rebuild_frequencies): New constant.
6596         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
6597         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
6598         (save_inline_function_body): Likewise.
6599         * ipa-inline.c: inluce rtl.h
6600         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
6601         (cgraph_edge_badness): Use frequencies.
6602         (cgraph_decide_recursive_inlining): Update clonning.
6603         (cgraph_decide_inlining_of_small_function): Dump frequency.
6604         * predict.c (estimate_bb_frequencies): Export.
6605         * predict.h (estimate_bb_frequencies): Declare.
6606         * tree-inline.c (copy_bb): Watch overflows.
6607         (expand_call_inline): Update call of cgraph_create_edge.
6608         (optimize_inline_calls): Use TODO flags to update frequnecies.
6609         * passes.h: Include predict.h
6610         (init_optimization_passes): Move profile ahead.
6611         (execute_function_todo): Handle TODO_rebuild_frequencies.
6612
6613 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6614
6615         * config/alpha/alpha.c (emit_insxl): Force the first operand of
6616         the insbl or inswl pattern into a register.
6617
6618 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6619
6620         * config/ia64/ia64.md (bswapdi2): New define_insn.
6621
6622 2007-02-09  Richard Henderson  <rth@redhat.com>
6623
6624         * config/i386/constraints.md (Ym): New constraint.
6625         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
6626         (movdi_1_rex64): Split sse and xmm general register moves from
6627         memory move alternatives.  Use conditional register constraints.
6628         (movsf_1, movdf_integer): Likewise.
6629         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
6630         (movdf_integer_rex64): New.
6631         (pushsf_rex64): Fix output constraints.
6632         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
6633         (sse2_stored): Likewise.
6634         (sse2_storeq_rex64): New.
6635         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
6636         amd and not generic.
6637         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
6638         for optimize_size.  Remove SF/DFmode hack.
6639
6640 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6641
6642         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
6643         (bit_SSE4a): New.
6644
6645 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
6646             Richard Sandiford  <richard@codesourcery.com>
6647
6648         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
6649         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
6650         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
6651         m68k/t-mlib to tmake_file.
6652         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
6653         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
6654         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
6655         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
6656         variable is not empty, add t-$m68k_arch_family to tmake_file.
6657         Add t-mlibs to tmake_file.
6658         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
6659         * config/m68k/t-cf: New file.
6660         * config/m68k/t-m68k: Likewise.
6661         * config/m68k/t-mlibs: Likewise.
6662         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6663         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6664         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6665         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6666         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
6667         Delete.
6668         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
6669         (INSTALL_LIBGCC): Delete.
6670         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6671         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6672         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6673         (M68K_MLIB_CPU): Define.
6674         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6675         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6676         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
6677
6678 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
6679             Richard Guenther  <rguenther@suse.de>
6680
6681         PR middle-end/23361
6682         * fold-const.c (fold_comparison): Handle obfuscated comparisons
6683         against INT_MIN/INT_MAX.
6684         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
6685         file if a loop is removed.
6686
6687 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
6688
6689         * calls.c (store_one_arg): Pass correct alignment to
6690         emit_push_insn for non-BLKmode values.
6691         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
6692         unaligned stack slot via a suitably aligned slot.
6693
6694 2007-02-08  DJ Delorie  <dj@redhat.com>
6695
6696         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
6697         warnings.
6698         (legal_subregs): Use unsigned char, make const.
6699         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
6700
6701 2007-02-08  Paul Brook  <paul@codesourcery.com>
6702
6703         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
6704         special interworking needed.
6705
6706 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
6707
6708         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
6709         conditional to __SSE2__.
6710         (Entries below should have been added to first ChangeLog
6711         entry for amdfam10 dated 2007-02-05)
6712         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
6713         defined.
6714         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
6715         defined.
6716         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
6717         defined.
6718
6719 2007-02-08  DJ Delorie  <dj@redhat.com>
6720
6721         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
6722         * config/m32c/m32c.c (legal_subregs): New.
6723         (m32c_illegal_subreg_p): New.
6724         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
6725         unsupported subregs of hard regs.
6726
6727 2007-02-08  Jan Hubicka  <jh@suse.cz>
6728
6729         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
6730         the same one; always update histograms.
6731
6732 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
6733
6734         * passes.c (init_optimization_passes): Tidy comment.
6735
6736 2007-02-08  Roger Sayle  <roger@eyesopen.com>
6737
6738         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
6739         strip zero_extend, bswap and rotates from POCOUNT's argument.
6740         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
6741         zero_extend and rotates from PARITY's argument.
6742         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
6743         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
6744         of an integer constant at compile-time.
6745
6746 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
6747
6748         PR 30562
6749         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
6750         Update all users.
6751         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
6752         users.
6753         (init_alias_info):
6754         * tree-ssa-live.c (remove_unused_locals): Do not remove
6755         TREE_ADDRESSABLE variables.
6756         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
6757         * tree-ssa-operands.c (add_virtual_operand): Remove argument
6758         FOR_CLOBBER.  Update all users.
6759         If VAR has an associated alias set, add a virtual operand for
6760         it if no alias is found to conflict with the memory reference.
6761
6762 2007-02-07  Jan Hubicka  <jh@suse.cz>
6763             Robert Kidd <rkidd@crhc.uiuc.edu>
6764
6765         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
6766
6767 2007-02-07  Ian Lance Taylor  <iant@google.com>
6768
6769         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
6770
6771 2007-02-07  Roger Sayle  <roger@eyesopen.com>
6772
6773         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
6774         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
6775         tablejumpdi, movsi_to_cr_one): Remove constraints from
6776         define_expand's match_operands.
6777
6778 2007-02-07  Roger Sayle  <roger@eyesopen.com>
6779
6780         * global.c (compute_regsets): Move declatation of "i" inside of
6781         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
6782
6783 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
6784
6785         PR c++/30703
6786         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
6787         of INDIRECT_REF <RESULT_DECL>.
6788
6789         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
6790
6791 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
6792             Kaz Kojima  <kkojima@gcc.gnu.org>
6793
6794         PR target/29746
6795         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
6796         properly.
6797         (sh_initialize_trampoline): Add parentheses to avoid a warning.
6798
6799 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
6800
6801         * doc/loop.texi: Document possibility not to perform disambiguation
6802         of loops with multiple latches.
6803         * cfgloopmanip.c (alp_enum_p): Removed.
6804         (add_loop): Handle subloops.  Use get_loop_body_with_size.
6805         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
6806         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
6807         the new forwarder block.
6808         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
6809         Handle the case latch is NULL.
6810         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
6811         when marking loop exits.
6812         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
6813         be modified.
6814         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
6815         disambiguate_loops_with_multiple_latches.
6816         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
6817         before fix_loop_structure.
6818         * cfgloop.c: Include pointer-set.h and output.h.
6819         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
6820         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
6821         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
6822         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
6823         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
6824         disambiguate_multiple_latches, get_loop_body_with_size,
6825         disambiguate_loops_with_multiple_latches): New functions.
6826         (flow_loop_dump): Dump multiple latch edges.
6827         (flow_loop_nodes_find): Handle loops with multiple latches.
6828         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
6829         (glb_enum_p): Modified.
6830         (get_loop_body): Use get_loop_body_with_size.
6831         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
6832         (AVOID_CFG_MODIFICATIONS): New constant.
6833         (disambiguate_loops_with_multiple_latches, add_loop,
6834         get_loop_body_with_size): Declare.
6835         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
6836
6837 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
6838
6839         PR inline-asm/28686
6840         * global.c (compute_regsets): New function.
6841         (global_alloc): Refactored ELIMINABLE_REGSET
6842         and NO_GLOBAL_ALLOC_REGS computation out.
6843         (rest_of_handle_global_alloc): Call compute_regsets()
6844         for non-optimizing case.
6845
6846 2007-02-06  Richard Henderson  <rth@redhat.com>
6847
6848         * config/i386/constraints.md (Y2): Rename from Y.
6849         (Yi): New constraint.
6850         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
6851         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
6852         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
6853         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
6854         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
6855         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
6856         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
6857         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
6858         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
6859         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
6860         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
6861         vec_extractv2si_1): Change Y constraints to Y2.
6862         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
6863         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
6864         Change Y constraints to Y2.
6865         (sse2_loadld): Change Y constraints to x.
6866
6867 2007-02-06  Roger Sayle  <roger@eyesopen.com>
6868
6869         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
6870         (parity<mode>2): New define_expand using rs6000_emit_parity.
6871         * config/rs6000/rs6000.c (rs6000_emit_popcount,
6872         rs6000_emit_parity): New functions.
6873         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
6874         rs6000_emit_parity): Prototype here.
6875
6876 2007-02-06  Ian Lance Taylor  <iant@google.com>
6877
6878         * lower-subreg.c (simple_move_operand): Reject CONST.
6879         (resolve_clobber): Call validate_change rather than directly
6880         assigning to XEXP (pat, 0).
6881
6882 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
6883
6884         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
6885         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
6886         (tree-cfg.o): Remove hashtab.h dependency.
6887
6888         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
6889         (struct ivopts_data): Change niters to pointer_map_t.
6890         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
6891         (niter_for_exit): Create pointer_map on demand.  Change for
6892         pointer_map API.
6893         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
6894         (free_loop_data): Destroy data->niters if created and reset field.
6895         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
6896         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
6897
6898         * tree-ssa-reassoc.c: Include pointer-set.h.
6899         (bb_rank): Change to long *.
6900         (operand_rank): Change to pointer_map_t.
6901         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
6902         (insert_operand_rank): Accept long.
6903         (operand_entry_hash, operand_entry_eq): Remove.
6904         (get_rank): Return long.  Adjust for changes above.
6905         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
6906         and operand_rank.
6907         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
6908
6909         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
6910         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
6911         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
6912         is not NULL.
6913         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
6914         directly since it cannot be NULL.
6915         (get_vi_for_tree): Rewrite for pointer_map API.
6916         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
6917         (init_alias_vars): Create vi_for_tree as pointer_map.
6918         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
6919
6920         * tree-cfg.c: Don't include hashtab.h.
6921         (edge_to_cases): Declare as pointer_map.
6922         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
6923         Delete.
6924         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
6925         (start_recording_case_labels): Create edge_to_cases as pointer_map.
6926         (end_recoding_case_labels): Cleanup edge_to_cases manually before
6927         destroying it.
6928         (record_switch_edge): Delete.
6929         (get_cases_for_edge): Adjust for pointer_map API, inline
6930         record_switch_edge (rewritten for new API), remove goto.
6931
6932 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
6933
6934         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
6935         * tree-nested.c: Include pointer-set.h.
6936         (var_map_elt, var_map_eq, var_map_hash): Delete.
6937         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
6938         to pointer_map_t's.
6939         (nesting_info_bitmap_obstack): New.
6940         (lookup_field_for_decl): Adjust for pointer_map API.
6941         (lookup_tramp_for_decl): Adjust for pointer_map API.
6942         (get_nonlocal_debug_decl): Adjust for pointer_map API.
6943         (get_local_debug_decl): Adjust for pointer_map API.
6944         (convert_nl_goto_reference): Adjust for pointer_map API.
6945         (convert_nl_goto_receiver): Adjust for pointer_map API.
6946         (create_nesting_tree): Create outside GGC space.  Create bitmap on
6947         the new obstack.  Create field_map and var_map as pointer_maps.
6948         (free_nesting_tree): Adjust for changes to create_nesting_tree.
6949         (root): Delete.
6950         (lower_nested_functions): Move root here, no need to NULL it.
6951         Initialize and release the obstack.
6952
6953 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
6954
6955         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
6956         Remove prototypes and make them non-static.
6957         (struct tree_int_map): Remove.
6958         * tree.h (struct tree_int_map): Move here, turning TO into an
6959         unsigned int.
6960         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
6961
6962         * tree.h (TREE_COMPLEXITY): Remove.
6963         (struct tree_exp): Remove complexity field.
6964         * tree.c (build1_stat): Don't set it.
6965
6966 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
6967             Victor Kaplansky  <victork@il.ibm.com>
6968
6969         * tree-vectorizer.c (vect_is_simple_use): Support induction.
6970         (vect_is_simple_reduction): Support reduction with induction as
6971         one of the operands.
6972         (vect_is_simple_iv_evolution): Fix formatting.
6973         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
6974         formatting.  Don't mark induction phis for vectorization.
6975         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
6976         * tree-vect-transform.c (get_initial_def_for_induction): New function.
6977         (vect_get_vec_def_for_operand): Support induction.
6978         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
6979         induction case.
6980         (vectorizable_reduction): Support reduction with induction as one of
6981         the operands.
6982         (vectorizable_type_demotion): Use def-type of stmt argument rather
6983         than dummy def-type.
6984
6985         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
6986         flag_tree_scev_cprop.
6987         * common.opt (tree-scev-cprop): New flag.
6988
6989         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
6990         call to vect_get_new_vect_var.
6991
6992 2007-02-06  Ira Rosen  <irar@il.ibm.com>
6993
6994         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
6995         vectype is not NULL.
6996         (vect_pattern_recog_1): Likewise.
6997
6998 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6999
7000         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
7001         (fold_negate_expr): Likewise.
7002
7003 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
7004
7005         PR debug/30189
7006         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
7007         even if cv-qualification is the same.
7008
7009 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
7010
7011         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
7012         __enable_execute_stack on completion.
7013
7014 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7015
7016         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
7017         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
7018         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
7019         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
7020         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
7021         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
7022         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
7023         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
7024
7025 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7026
7027         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
7028         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
7029         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
7030         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
7031         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
7032         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
7033         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
7034         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
7035         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
7036         umuldi3_highpart_rex64, umulsi3_highpart_insn,
7037         umulsi3_highpart_zext, smuldi3_highpart_rex64,
7038         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
7039         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
7040         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
7041         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
7042         sqrtextenddfxf2_i387): Added amdfam10_decode.
7043
7044         * config/i386/athlon.md (athlon_idirect_amdfam10,
7045         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
7046         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
7047         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
7048         athlon_ivector_store_amdfam10): New define_insn_reservation.
7049         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
7050         amdfam10.
7051
7052 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7053
7054         * config/i386/athlon.md (athlon_call_amdfam10,
7055         athlon_pop_amdfam10, athlon_lea_amdfam10): New
7056         define_insn_reservation.
7057         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
7058         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
7059         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
7060
7061 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7062
7063         * config/i386/athlon.md (athlon_sseld_amdfam10,
7064         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
7065         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
7066
7067 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7068
7069         * config/i386/athlon.md (athlon_sseins_amdfam10): New
7070         define_insn_reservation.
7071         * config/i386/i386.md (sseins): Added sseins to define_attr type
7072         and define_attr unit.
7073         * config/i386/sse.md: Set type attribute to sseins for insertq
7074         and insertqi.
7075
7076 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7077
7078         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
7079         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
7080         ssecomi_load_amdfam10, ssecomi_amdfam10,
7081         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
7082         define_insn_reservation.
7083         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
7084
7085 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7086
7087         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
7088         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
7089         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
7090         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
7091         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
7092         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
7093         define_insn_reservation.
7094
7095         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
7096         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
7097         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
7098         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
7099         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
7100
7101 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7102
7103         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
7104         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
7105         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
7106         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
7107         athlon_ssemul_load_k8): Added amdfam10.
7108
7109 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7110
7111         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
7112         (x86_sse_unaligned_move_optimal): New variable.
7113
7114         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
7115         m_AMDFAM10.
7116         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
7117         for unaligned vector SSE double/single precision loads for AMDFAM10.
7118
7119 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7120
7121         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
7122         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
7123         Define TARGET_CPU_DEFAULT_amdfam10.
7124         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
7125         (processor_type): Add PROCESSOR_AMDFAM10.
7126
7127         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
7128         processor_type in config/i386/i386.h.
7129         Enable imul peepholes for TARGET_AMDFAM10.
7130
7131         * config.gcc: Add support for --with-cpu option for amdfam10.
7132
7133         * config/i386/i386.c (amdfam10_cost): New variable.
7134         (m_AMDFAM10): New macro.
7135         (m_ATHLON_K8_AMDFAM10): New macro.
7136         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
7137         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
7138         x86_promote_QImode, x86_integer_DFmode_moves,
7139         x86_partial_reg_dependency, x86_memory_mismatch_stall,
7140         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
7141         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
7142         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
7143         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
7144         Enable/disable for amdfam10.
7145         (override_options): Add amdfam10_cost to processor_target_table.
7146         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
7147         processor_alias_table.
7148         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
7149         (ix86_adjust_cost): Add code for amdfam10.
7150
7151 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7152
7153         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
7154         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
7155         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
7156         * config/i386/i386.h: Add builtin definition for SSE4A.
7157         * config/i386/i386.md: Add support for ABM instructions
7158         (popcnt and lzcnt).
7159         * config/i386/sse.md: Add support for SSE4A instructions
7160         (movntss, movntsd, extrq, insertq).
7161         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
7162         Add -march=amdfam10 flag.
7163         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
7164         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
7165         and amdfam10.
7166         * doc/extend.texi: Add documentation for SSE4A builtins.
7167
7168 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
7169
7170         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
7171
7172 2007-02-05  Richard Guenther  <rguenther@suse.de>
7173
7174         * tree-vectorizer.h (vectorizable_function): Add argument type
7175         argument, change return type.
7176         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
7177         * tree-vect-transform.c (vectorizable_function): Handle extra
7178         argument, return vectorized function decl.
7179         (build_vectorized_function_call): Remove.
7180         (vectorizable_call): Handle calls with result and argument types
7181         differing.  Handle loop vectorization factor correctly.
7182         * targhooks.c (default_builtin_vectorized_function): Adjust for
7183         extra argument.
7184         * targhooks.h (default_builtin_vectorized_function): Likewise.
7185         * target.h (builtin_vectorized_function): Add argument type
7186         argument.
7187         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
7188         extra argument, allow vectorizing of lrintf.
7189         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
7190         documentation of target hook.
7191
7192 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
7193
7194         PR target/30665
7195         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
7196         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
7197         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
7198
7199 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7200
7201         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
7202         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
7203         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
7204         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
7205         before canonicalizing sincos to cexpi.
7206         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
7207
7208 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7209
7210         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
7211         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
7212         (alpha_init_builtins): Use alpha_add_builtins to process tables.
7213
7214 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7215
7216         * mips-tfile.c (initialize_init_file): Correct endianness test.
7217
7218 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
7219
7220         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
7221         the 'y' constraint.
7222
7223 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
7224
7225         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
7226         saves in a PARALLEL before the register assignments.
7227
7228 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
7229
7230         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
7231         DWARF_FRAME_RETURN_COLUMN to be a general register.
7232         * dwarf2out.c (init_return_column_size): New function, split from...
7233         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
7234         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
7235         to be nongeneral registers.
7236         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
7237         integer registers.
7238         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
7239         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
7240
7241 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
7242
7243         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
7244
7245 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
7246
7247         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
7248         (remove_path): Use can_remove_branch_p and remove_branch instead
7249         of loop_delete_branch_edge.
7250         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
7251         (tree_transform_and_unroll_loop): Remove dead branches immediately.
7252         Update profile using scale_dominated_blocks_in_loop.
7253         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
7254         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
7255         (can_remove_branch_p, remove_branch): Declare.
7256         * tree-cfg.c (tree_can_remove_branch_p): New function.
7257         (tree_cfg_hooks): Add tree_can_remove_branch_p.
7258         * cfgrtl.c (rtl_can_remove_branch_p): New function.
7259         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
7260
7261 2007-02-05  Jan Hubicka  <jh@suse.cz>
7262
7263         PR middle-end/30696
7264         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
7265         nodes in cgraph, don't remove offline copy of the function.
7266
7267 2007-02-04  Jan Hubicka  <jh@suse.cz>
7268
7269         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
7270         vectors might cause maybe_lookup_element_for_expr to be called
7271         on non-sra-candidate.
7272
7273 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7274
7275         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
7276         config/bfin/bfin.md, config/bfin/predicates.md: Follow
7277         spelling conventions.
7278
7279 2007-02-04  Richard Guenther  <rguenther@suse.de>
7280
7281         PR middle-end/30636
7282         * fold-const.c (try_move_mult_to_index): Make sure to not
7283         overflow one dimension of a multi-dimensional array access.
7284
7285 2007-02-04  Jan Hubicka  <jh@suse.cz>
7286
7287         * passes.c (init_optimization_passes): Reindent.
7288
7289 2007-02-04  Jan Hubicka  <jh@suse.cz>
7290             Eric Botcazou  <ebotcazou@adacore.com>
7291
7292         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
7293         (execute_fixup_cfg): Break out the abnormal goto code.
7294         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
7295         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
7296         (optimize_inline_calls): Call make_nonlocal_label_edges.
7297
7298 2007-02-04  Jan Hubicka  <jh@suse.cz>
7299
7300         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
7301         true when something was changed.
7302         (rename_ssa_copies): When something was changed, do
7303         TODO_remove_unused_locals.
7304         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
7305         add TODO_remove_unused_locals when instruction was removed.
7306
7307 2007-02-04  Jan Hubicka  <jh@suse.cz>
7308
7309         * ipa-inline.c (try_inline): Improve debug output; work on already
7310         inline edges too.
7311         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
7312         call try_inline for already inlined edges too when flattening;
7313         inline also functions that make callee growth but overall unit size
7314         reduce.
7315
7316 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7317
7318         * config/m32c/bitops.md, config/m32c/jump.md,
7319         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
7320         config/m32r/m32r.h, config/m32r/m32r.md,
7321         config/m32r/predicates.md, config/m68hc11/larith.asm,
7322         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
7323         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
7324         config/mips/mips-protos.h, config/mips/mips.c,
7325         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
7326         config/mn10300/mn10300.h, config/mn10300/predicates.md,
7327         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
7328         spelling conventions.
7329
7330         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
7331         Follow spelling conventions.
7332
7333 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
7334
7335         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
7336         warn about C++0x compatibility.
7337
7338 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7339
7340         * config/h8300/h8300.c, config/h8300/h8300.h,
7341         config/h8300/h8300.md: Follow spelling conventions.
7342
7343 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
7344
7345         PR middle-end/30667
7346         * combine.c (try_combine): Do not substitute source operand
7347         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
7348
7349 2007-02-03  Jan Hubicka  <jh@suse.cz>
7350
7351         PR gcov-profile/30650
7352         * value-prof.c (stringop_block_profile): Fix handling of size counter;
7353         do not divide by zero for never executed counters.
7354         (tree_find_values_to_profile): Fix counters.
7355         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
7356
7357 2007-02-03  Ian Lance Taylor  <iant@google.com>
7358
7359         * lower-subreg.c (simple_move_operand): New static function,
7360         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
7361         operands.
7362         (simple_move): Call simple_move_operand.
7363         (find_decomposable_subregs): Add special handling of MEMs.
7364         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
7365         meaning of return value.  If we see a hard register, test whether
7366         it can store a word_mode value.  Change all callers.
7367
7368 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7369
7370         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
7371         ftrapv insns and expanders.
7372         (subdi3): Change define_expand operand 1 to arith11_operand, and
7373         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
7374         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
7375         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
7376         respectively.
7377
7378         PR middle-end/30174
7379         * varasm.c (notice_global_symbol): Treat global objects as weak when
7380         flag_shlib is true.
7381
7382 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7383
7384         * emit-rtl.c (dconstpi): Delete.
7385         (dconstsqrt2): New.
7386         (init_emit_once): Delete dconstpi and init dconstsqrt2.
7387         * real.h (dconstpi): Delete.
7388         (dconstsqrt2): New.
7389         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
7390         (fold_builtin_hypot): Likewise.
7391
7392 2007-02-03  Tom Tromey  <tromey@redhat.com>
7393
7394         PR driver/30246
7395         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
7396         -gcoff3, -gxcoff3, -gvms3 implies -dD.
7397
7398 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
7399
7400         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
7401         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
7402         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
7403         config/rs6000/cell.md, config/rs6000/darwin.h,
7404         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
7405         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
7406         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
7407         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
7408         typos.  Follow spelling conventions.
7409         * doc/invoke.texi: Follow spelling conventions.
7410
7411 2007-02-03  Roger Sayle  <roger@eyesopen.com>
7412
7413         * simplify-rtx.c (simplify_relational_operation_1): Implement some
7414         canonicalization transformations that attempt to simplify integer
7415         constant comparisons to become comparisons against zero.
7416
7417 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7418
7419         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
7420         fabs(x)*sqrt(2).
7421         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
7422         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
7423
7424 2007-02-02  Mike Stump  <mrs@apple.com>
7425
7426         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
7427         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
7428         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
7429         generate a branch island.
7430
7431 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
7432
7433         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
7434         (xtensa_legitimate_address_p): New.
7435         (xtensa_legitimize_address): New.
7436         (xtensa_output_addr_const_extra): New.
7437         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
7438         (BASE_REG_P): New.
7439         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
7440         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
7441         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
7442         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
7443         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
7444         (xtensa_legitimize_address): New.
7445         (xtensa_output_addr_const_extra): New.
7446
7447 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
7448
7449         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
7450
7451 2007-02-02  Ian Lance Taylor  <iant@google.com>
7452
7453         * expmed.c (expand_divmod): Add comment.
7454
7455 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
7456
7457         * emit-rtl.c (renumber_insns): Remove.
7458         * flags.h: Remove the extern for flag_renumber_insns.
7459         * rtl.h: Remove the prototype for renumber_insns.
7460         * toplev.c (flag_renumber_insns): Remove.
7461
7462 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
7463
7464         Revert for x86 darwin:
7465         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
7466
7467         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
7468         code before the following patch under TARGET_MACHO.
7469         (ix86_function_value_regno_p): Likewise.
7470
7471 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7472
7473         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
7474         COMPLEX_EXPR.
7475
7476 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7477
7478         PR target/29682
7479         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
7480         general or fp registers.  Add comments.
7481         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
7482
7483 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
7484
7485         * pointer-set.c (insert_aux): Only return insertion slot.
7486         (pointer_set_insert): Adjust.
7487         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
7488         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
7489         pointer_map_traverse): New.
7490         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
7491         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
7492         pointer_map_contains, pointer_map_traverse): Declare.
7493
7494 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
7495
7496         PR middle-end/30473
7497         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
7498         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
7499
7500 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7501
7502         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
7503
7504         (struct _dep): New type.
7505         (dep_t): New typedef.
7506         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
7507         (DEP_STATUS): New access macro.  The macro with the same name was
7508         renamed to DEP_LINK_STATUS.
7509         (dep_init): Declare function
7510
7511         (struct _dep_link): New type.
7512         (dep_link_t): New typedef.
7513         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
7514         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
7515         (DEP_LINK_STATUS): New macro.
7516         (debug_dep_links): New debug function.
7517
7518         (struct _deps_list): New type.
7519         (deps_list_t): New typedef.
7520         (DEPS_LIST_FIRST): New access macro.
7521         (FOR_EACH_DEP_LINK): New cycle macro.
7522         (create_deps_list, free_deps_list, delete_deps_list): Declare
7523         functions.
7524         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
7525         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7526         (copy_deps_list_change_con): Ditto.
7527
7528         (move_dep_link): Declare function.
7529
7530         (struct _dep_node): New type.
7531         (dep_node_t): New typedef.
7532         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
7533
7534         (struct haifa_insn_data.back_deps): New field to hold backward
7535         dependencies of the insn.
7536         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
7537         to deps_list_t.
7538         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
7539         Change its type to deps_list_t.
7540         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
7541         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
7542         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
7543
7544         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
7545
7546         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
7547
7548         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
7549         all callers.
7550         (dep_cost): Declare.
7551
7552         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
7553         (ds_to_dk, dk_to_ds): New functions.
7554
7555         (init_dep_1): New static function.
7556         (init_dep): New function.
7557         (copy_dep): New static function.
7558
7559         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
7560         functions.
7561         (detach_dep_link): New static function.
7562         (move_dep_link): New function.
7563
7564         (dep_links_consistent_p, dump_dep_links): New static functions.
7565         (debug_dep_links): New debugging function.
7566
7567         (deps_obstack, dl_obstack, dn_obstack): New static variables.
7568
7569         (alloc_deps_list, init_deps_list): New static functions.
7570         (create_deps_list): New function.
7571         (clear_deps_list): New static function.
7572         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
7573         (deps_list_consistent_p, dump_deps_list): New static functions.
7574         (debug_deps_list): New function.
7575         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
7576         functions.
7577         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
7578
7579         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
7580         use new scheduler dependencies lists.
7581         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
7582         (sched_analyze): Ditto.  Initialize dependencies lists.
7583         (add_forw_dep, compute_forward_dependences): Update to use new
7584         scheduler dependencies lists.
7585
7586         (init_dependency_caches): Init deps_obstack.
7587         (free_dependency_caches): Free deps_obstack.
7588
7589         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
7590         new scheduler dependencies lists.
7591         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
7592         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7593
7594         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
7595         Update to use new scheduler dependencies lists.
7596         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
7597         (debug_dependencies): Ditto.
7598         (schedule_region): Update comments.
7599
7600         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
7601         scheduler dependencies lists.
7602         (schedule_ebb): Update comments.
7603
7604         * rtl.def (DEPS_LIST): Remove.
7605
7606         * lists.c (unused_deps_list): Remove.
7607         (free_list): Update assertions.
7608
7609         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
7610         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7611
7612         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
7613         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7614
7615         * haifa-sched.c (comments): Update.
7616         (insn_cost1): Remove.  Inline the code into insn_cost ().
7617         (insn_cost): Update to use new scheduler dependencies lists.  Move
7618         processing of the dependency cost to dep_cost ().
7619         (dep_cost): New function.  Use it instead of insn_cost () when
7620         evaluating cost of the dependency.  Use compatible interface to
7621         interact with the target.
7622         (priority): Update to use new scheduler dependencies lists.
7623         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
7624         with greater number of insns that depend on the insn.
7625         (schedule_insn): Update to use new scheduler dependencies lists.  Add
7626         code to free backward dependencies lists.  Inline and optimize code
7627         from resolve_dep () - see PR28071.
7628         (ok_for_early_queue_removal): Update to use new scheduler dependencies
7629         lists.  Update call to targetm.sched.is_costly_dependence hook.
7630
7631         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
7632         scheduler dependencies lists.
7633
7634         (resolve_dep): Remove.  Move the logic to schedule_insn ().
7635         (init_h_i_d): Initialize dependencies lists.
7636
7637         (process_insn_depend_be_in_spec): Rename to
7638         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
7639         dependencies lists.
7640         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
7641         Update to use new scheduler dependencies lists.
7642         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
7643
7644         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
7645         new scheduler dependencies lists.
7646         (build_intra_loop_deps): Ditto.
7647
7648         * target.h (struct _dep): Declare to use in
7649         gcc_target.sched.is_costly_dependence.
7650         (struct gcc_target.sched.adjust_cost): Fix typo.
7651         (struct gcc_target.sched.is_costly_dependence): Change signature to use
7652         single dep_t parameter instead of an equivalent triad.
7653         (struct gcc_target.sched.adjust_cost_2): Remove.
7654
7655         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
7656
7657         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
7658
7659         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
7660         documentation.
7661         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
7662
7663         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
7664         (REG_DEP_TRUE): Document.
7665
7666         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
7667         Change signature to correspond to the targetm.sched.adjust_cost hook.
7668         Update use in TARGET_SCHED_ADJUST_COST_2.
7669         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
7670         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
7671         new scheduler dependencies lists.
7672         (ia64_gen_check): Ditto.
7673
7674         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
7675         dependencies lists.
7676
7677         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
7678         signature to correspond to the targetm.sched.is_costly_dependence hook.
7679         (is_costly_group): Update to use new scheduler dependencies lists.
7680
7681         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
7682         instead of INSN_COST () macro.
7683
7684 2007-02-01  Ian Lance Taylor  <iant@google.com>
7685
7686         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
7687
7688 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
7689
7690         * pa.md (tp_load): Correct mfctl instruction syntax.
7691
7692 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
7693
7694         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
7695         altivec_padding_size calculation on AIX.  Improve comment, add
7696         assert to verify that it's right.
7697
7698         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
7699         64-bit.
7700
7701 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
7702
7703         PR inline-asm/28686
7704         * global.c (global_alloc): Add mising initialization of
7705         ELIMINABLE_REGSET.
7706
7707 2007-02-01  Roger Sayle  <roger@eyesopen.com>
7708
7709         * alias.c (init_alias_analysis): Correct whitespace.
7710         * bb-reorder.c (fix_edges_for_rarely_executed_code,
7711         partition_hot_cold_basic_blocks): Likewise.
7712         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
7713         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
7714         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
7715         fold_builtin_snprintf_chk, fold_builtin_printf,
7716         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
7717         do_mpfr_arg3, do_mpfr_sincos): Likewise.
7718         * cfgcleanup.c (cleanup_cfg): Likewise.
7719         * cfgexpand.c (tree_expand_cfg): Likewise.
7720         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
7721         * function.c (get_next_funcdef_no): Likewise.
7722         * gengtype.c (main): Likewise.
7723         * genmodes.c (main): Likewise.
7724         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
7725         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
7726         * ifcvt.c (noce_emit_move_insn): Likewise.
7727         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
7728         Likewise.
7729         * stor-layout.c (get_best_mode): Likewise.
7730         * tree-ssa-loop-niter.c (get_val_for): Likewise.
7731         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
7732         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
7733         perform_var_substitution, solve_graph): Likewise.
7734         * tree-vrp.c (vrp_finalize): Likewise.
7735
7736 2007-02-01  Ian Lance Taylor  <iant@google.com>
7737
7738         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
7739         high part of a paradoxical subreg, return a constant zero.
7740
7741 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
7742
7743         * toplev.c (lang_dependent_init): Call init_set_costs.
7744         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
7745
7746 2007-02-01  Richard Guenther  <rguenther@suse.de>
7747
7748         PR middle-end/30656
7749         * fold-const.c (fold_negate_expr): Allow negating a
7750         constant if overflow does not change.
7751
7752 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7753
7754         * doc/c-tree.texi (Expression trees): Improve markup.
7755         * doc/tm.texi (Register Classes, Addressing Modes)
7756         (Floating Point): Fix spacing after abbreviations.  Fix some
7757         typos.
7758
7759 2007-02-01  Ben Elliston  <bje@au.ibm.com>
7760
7761         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
7762         * doc/contrib.texi: Likewise.
7763         * doc/install.texi: Likewise.
7764
7765 2007-01-31  Richard Henderson  <rth@redhat.com>
7766             Ian Lance Taylor  <iant@google.com>
7767
7768         * lower-subreg.c: New file.
7769         * rtl.def (CONCATN): Define.
7770         * passes.c (init_optimization_passes): Add pass_lower_subreg and
7771         pass_lower_subreg2.
7772         * emit-rtl.c (update_reg_offset): New static function, broken out
7773         of gen_rtx_REG_offset.
7774         (gen_rtx_REG_offset): Call update_reg_offset.
7775         (gen_reg_rtx_offset): New function.
7776         * regclass.c: Revert patch of 2006-03-05, restoring
7777         reg_scan_update.
7778         (clear_reg_info_regno): New function.
7779         * dwarf2out.c (concatn_loc_descriptor): New static function.
7780         (loc_descriptor): Handle CONCATN.
7781         * common.opt (fsplit_wide_types): New option.
7782         * opts.c (decode_options): Set flag_split_wide_types when
7783         optimizing.
7784         * timevar.def (TV_LOWER_SUBREG): Define.
7785         * rtl.h (gen_reg_rtx_offset): Declare.
7786         (reg_scan_update): Declare.
7787         * regs.h (clear_reg_info_regno): Declare.
7788         * tree-pass.h (pass_lower_subreg): Declare.
7789         (pass_lower_subreg2): Declare.
7790         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
7791         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
7792         -fsplit-wide-types.
7793         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
7794         * Makefile.in (OBJS-common): Add lower-subreg.o.
7795         (lower-subreg.o): New target.
7796
7797 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7798
7799         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
7800
7801 2007-01-31  Anatoly Sokolov <aesok@post.ru>
7802
7803         PR target/19087
7804         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
7805
7806 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7807
7808         PR middle-end/29335
7809         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
7810
7811 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
7812
7813         * cfgloop.h: Include vec-prim.h.
7814         (enum li_flags): Remove LI_ONLY_OLD.
7815         (loop_iterator): Changed.
7816         (fel_next, fel_init): Iterate over loop tree.
7817         (FOR_EACH_LOOP_BREAK): New macro.
7818         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
7819         FOR_EACH_LOOP.
7820         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
7821         * modulo-sched.c (sms_schedule): Ditto.
7822         * tree-vectorizer.c (vectorize_loops): Ditto.
7823         * doc/loop.texi: Update information on loop numbering and behavior of
7824         FOR_EACH_LOOP wrto new loops.
7825         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
7826         add_to_evolution_1): Test nestedness of loops instead of comparing
7827         their numbers.
7828         * tree-chrec.c (chrec_fold_plus_poly_poly,
7829         chrec_fold_multiply_poly_poly, chrec_evaluate,
7830         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
7831         reset_evolution_in_loop): Ditto.
7832         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
7833
7834 2007-01-31  Dirk Mueller  <dmueller@suse.de>
7835
7836         * c-common.c (warn_about_parentheses): Separate warning about
7837         un-parenthized sequence of comparison operators from the one
7838         which is supposed to warn about x <= y <= z.
7839
7840 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
7841
7842         * optabs.h (enum optab_index): Add new OTI_isinf.
7843         (isinf_optab): Define corresponding macro.
7844         * optabs.c (init_optabs): Initialize isinf_optab.
7845         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
7846         patterns.
7847         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
7848         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
7849         using isinf_optab.
7850         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
7851         expand_builtin_interclass_mathfn.
7852         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
7853         * config/i386/i386.md (UNSPEC_FXAM): New constant.
7854         (fxam<mode>2_i387): New insn pattern.
7855         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
7856         built-in functions as x87 inline asm.
7857
7858 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7859
7860         * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
7861
7862 2007-01-30  Eric Christopher  <echristo@apple.com>
7863
7864         * config.gcc: Add geode.
7865
7866 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7867
7868         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
7869         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
7870         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
7871         value-prof.c: Fix comment typos.
7872
7873 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7874
7875         PR c++/24745
7876         * doc/invoke.texi (Wpointer-arith): Document warning.
7877
7878 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
7879
7880         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
7881         the list of discrepancies from the draft TR.
7882
7883 2007-01-30  Dirk Mueller  <dmueller@suse.de>
7884
7885         PR c++/30601
7886         * doc/invoke.texi (-Wreturn-type): Update description to
7887         match new behavior.
7888
7889 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
7890
7891         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
7892
7893 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
7894
7895         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
7896         to handle optabs that operate on floating point input argument and
7897         output to integer output.
7898         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
7899         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
7900         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
7901         expand_builtin_interclass_mathfn ().
7902         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
7903         (ilogbsi2): Remove.
7904         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
7905         ilogbl built-in functions as x87 intrinsics.
7906
7907 2007-01-30  Richard Guenther  <rguenther@suse.de>
7908
7909         PR middle-end/27657
7910         * dwarf2out.c (reference_to_unused): Query varpool if the
7911         variable was output.
7912
7913 2007-01-30  Richard Guenther  <rguenther@suse.de>
7914
7915         PR middle-end/30313
7916         * passes.c (execute_one_pass): Reset in_gimple_form to not
7917         confuse non-unit-at-a-time mode.
7918
7919 2007-01-29  Roger Sayle  <roger@eyesopen.com>
7920             Richard Guenther  <rguenther@suse.de>
7921
7922         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
7923         avoid undefined behaviour on overflow.  Use force_fit_type_double
7924         to construct the constant with the specified TREE_OVERFLOW.
7925
7926 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
7927
7928         * config/dfp-bit.c: Add parameterized support for fp exceptions.
7929         * config/dfp-bit.h: Ditto.
7930
7931 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7932
7933         * c-decl.c (pop_scope): Replace warnings with call to
7934         warn_for_unused_label.
7935         * c-common.h (warn_for_unused_label): Declare.
7936         * c-common.c (warn_for_unused_label): Define.
7937
7938 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7939
7940         * tree-optimize.c (update_inlined_to_pointers): Delete unused
7941         function.
7942
7943 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
7944
7945         * Makefile.in (USER_H): Remove decfloat.h.
7946         * ginclude/decfloat.h: Delete, moving contents to ...
7947         * ginclude/float.h: Add support for decimal floating point,
7948         guarded by __STDC_WANT_DEC_FP__.
7949
7950 2007-01-29  Mike Stump  <mrs@apple.com>
7951
7952         * doc/gccint.texi (Top): Rename Loop Representation to Loop
7953         Analysis and Representation to resolve case insensitive conflict.
7954         * doc/loop.texi (Loop Analysis and Representation): Likewise.
7955
7956 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
7957
7958         * tree.h (struct tree_memory_tag): Add aliases member.
7959         (MTAG_ALIASES): New macro.
7960         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
7961         (add_may_alias): Remove pointer-set. Update for may_aliases being
7962         a bitmap.
7963         (mark_aliases_call_clobbered): Update for may_aliases being a
7964         bitmap.
7965         (compute_tag_properties): Ditto.
7966         (create_partition_for): Ditto.
7967         (compute_memory_partitions): Ditto.
7968         (dump_may_aliases_for): Ditto.
7969         (is_aliased_with): Ditto.
7970         (add_may_alias_for_new_tag): Ditto.
7971         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
7972         (compute_is_aliased): New function.
7973         (compute_may_aliases): Call compute_is_aliased).
7974         (init_alias_info): Initialize alias_bitmap_obstack.
7975         (union_alias_set_into): New function.
7976         (compute_flow_sensitive_aliasing): Use union_aliases_into.
7977         (have_common_aliases_p): Rewrite to take two bitmaps and use
7978         intersection.
7979         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
7980         Update for bitmaps.
7981         (finalize_ref_all_pointers): Update for add_may_alias changes.
7982         (new_type_alias): Ditto.
7983         * tree-flow-inline.h (may_aliases): Return a bitmap.
7984         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
7985         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
7986         may_aliases being a bitmap.
7987         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
7988         may_aliases now returns a bitmap.
7989         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
7990         being a bitmap.
7991         * tree-ssa-operands.c (add_virtual_operand): Update for
7992         may_aliases being a bitmap.
7993
7994 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
7995
7996         PR tree-optimization/30630
7997         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
7998         variable as changed.
7999
8000 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
8001
8002         PR c++/28266
8003         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
8004         expanded only once even if an error occurs.
8005
8006 2007-01-29  Ben Elliston  <bje@au.ibm.com>
8007
8008         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
8009         (__gcov_average_profiler): Likewise.
8010         (__gcov_ior_profiler): Likewise.
8011         (__gcov_merge_ior): Likewise.
8012
8013 2007-01-28  Jan Hubicka  <jh@suse.cz>
8014
8015         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
8016         * value-prof.c (stringop_block_profile): Likewise.
8017
8018 2007-01-28  Jan Hubicka  <jh@suse.cz>
8019
8020         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
8021         variant handling histograms; add wrapper.
8022         (clear_storage_via_libcall): Export.
8023         (emit_block_move_hints): Break out from ...; add histograms.
8024         (emit_block_move): ... this one.
8025         (clear_storage_hints): Break out from ...; add histograms.
8026         (clear_storage): ... this one.
8027         (set_storage_via_memset): Handle histogram.
8028         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
8029         (clear_storage_hints, clear_storage_via_libcall): Declare.
8030         (set_storage_via_setmem): Update prototype.
8031         * doc/md.texi (movmem, setmem): Document new arguments.
8032
8033         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
8034         new histograms.
8035         (stringop_block_profile): New global function.
8036         (tree_stringops_values_to_profile): Profile block size and alignment.
8037         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
8038         HIST_TYPE_IOR.
8039         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
8040         (stringop_block_profile): Declare.
8041         * builtins.c: Include value-prof.h.
8042         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
8043         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
8044         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
8045         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
8046         * profile.c (instrument_values): Add new counters.
8047         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
8048         calls.
8049         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
8050         (tree_init_edge_profiler): Build new profilers.
8051         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
8052         (pass_tree_profile): Add dump.
8053         (tree_profile_hooks): Update.
8054         * Makefile.in (LIBGCOV): Add new constants.
8055         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
8056         __gcov_ior_profiler): New.
8057         * i386.md (movmem/setmem expanders): Add new optional arguments.
8058
8059 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
8060
8061         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
8062
8063 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
8064
8065         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
8066         (tree_unswitch_single_loop): Pass eni_size_weights to
8067         tree_num_loop_insns.
8068         * tree-ssa-loop-manip.c: Include tree-inline.h.
8069         (can_unroll_loop_p): Pass eni_size_weights to
8070         tree_num_loop_insns.
8071         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
8072         Pass eni_size_weights to estimate_num_insns.
8073         * tree.h (init_inline_once): Export.
8074         * toplev.c (backend_init): Call init_inline_once.
8075         * cgraphunit.c (cgraph_process_new_functions,
8076         cgraph_analyze_function): Pass eni_inlining_weights to
8077         estimate_num_insns.
8078         * ipa-inline.c (compute_inline_parameters): Ditto.
8079         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
8080         to estimate_num_insns.
8081         (try_unroll_loop_completely): Pass eni_size_weights to
8082         tree_num_loop_insns.
8083         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
8084         ot estimate_num_insns.
8085         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
8086         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
8087         * tree-inline.c (eni_inlining_weights, eni_size_weights,
8088         eni_time_weights): New variables.
8089         (init_inline_once): Initialize them.
8090         (struct eni_data): Mew.
8091         (estimate_num_insns_1, estimate_num_insns): Use weights.
8092         * tree-inline.h (struct eni_weights_d): New.
8093         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
8094         (estimate_num_insns): Declaration changed.
8095         * cfgloop.h (tree_num_loop_insns): Declaration changed.
8096         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
8097         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
8098
8099 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
8100
8101         * tree-data-ref.c (conflict_fn): Assert that the number of affine
8102         relations in the conflict function is valid.
8103
8104 2007-01-27  Ian Lance Taylor  <iant@google.com>
8105
8106         * common.opt: Add fstrict-overflow.
8107         * opts.c (decode_options): Set flag_strict_overflow if -O2.
8108         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
8109         (TYPE_OVERFLOW_UNDEFINED): Define.
8110         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
8111         Replace all uses.
8112         * tree.h (TYPE_TRAP_SIGNED): Don't define.
8113         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
8114         (fold_negate_expr): Likewise.
8115         (make_range): Likewise.
8116         (extract_muldiv_1): Likewise.
8117         (maybe_canonicalize_comparison): Likewise.
8118         (fold_comparison): Likewise.
8119         (fold_binary): Likewise.
8120         (tree_expr_nonnegative_p): Likewise.
8121         (tree_expr_nonzero_p): Likewise.
8122         * tree-vrp.c (compare_values): Likewise.
8123         (extract_range_from_binary_expr): Likewise.
8124         (extract_range_from_unary_expr): Likewise.
8125         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
8126         Likewise.
8127         (nowrap_type_p): Likewise.
8128         * tree-scalar-evolution.c (simple_iv): Likewise.
8129         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
8130         (build_range_check): Likewise.
8131         (extract_muldiv_1): Likewise.
8132         (fold_comparison): Likewise.
8133         * tree-vrp.c (vrp_int_const_binop): Likewise.
8134         (extract_range_from_unary_expr): Likewise.
8135         * convert.c (convert_to_integer): Likewise.
8136         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
8137         (fold_comparison): Likewise.
8138         (fold_binary): Likewise.
8139         * optabs.c (optab_for_tree_code): Likewise.
8140         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
8141         * simplify-rtx.c (simplify_const_relational_operation): Check
8142         flag_strict_overflow and flag_trapv.
8143         (simplify_const_relational_operation): Likewise.
8144         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
8145         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
8146         -fstrict-overflow.
8147
8148 2007-01-27  Roger Sayle  <roger@eyesopen.com>
8149
8150         * tree.c (tree_fold_gcd): Delete.
8151         * tree.h (tree_fold_gcd): Remove prototype.
8152         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
8153         test whether one constant integer is a multiple of another.  Instead
8154         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
8155         * fold-const.c (multiple_of_p):  We've determined both TOP and
8156         BOTTOM are integer constants so we can call int_const_binop directly
8157         instead of the more generic const_binop.
8158
8159 2007-01-27  Roger Sayle  <roger@eyesopen.com>
8160
8161         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
8162         1*X check that the constant hasn't overflowed, to preserve the
8163         TREE_OVERFLOW bit.
8164         (round_up): Provide an efficient implementation when rouding-up an
8165         INTEGER_CST to a power-of-two.
8166
8167 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8168
8169         * doc/sourcebuild.texi: Add comma for clarity.
8170         * doc/extend.texi: Fix some typos.
8171         * doc/passes.texi: Likewise.
8172         * doc/cppinternals.texi: Likewise.
8173         * doc/c-tree.texi: Likewise.
8174         * doc/tree-ssa.texi: Likewise.
8175         * doc/install.texi: Likewise.
8176
8177 2007-01-27  Jan Hubicka  <jh@suse.cz>
8178
8179         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
8180         (pass_sra): Do not require alias information.
8181         * passes.c (init_optimization_passes): Add SRA
8182
8183 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
8184
8185         * tracer.c (rest_of_handle_tracer): We already cleaned
8186         up the CFG in tracer() so don't do it here again.
8187         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
8188         cleanup_cfg here, either.  And don't call renumber_insns.
8189
8190         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
8191         and BB_HEAD are in the insn stream here.  Instead make sure
8192         that BB_INSN is valid on all insns.  Also, do check here that
8193         there are no pending branch predictions...
8194         (rtl_verify_flow_info): ...instead of doing it here.  Checks
8195         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
8196         here.
8197
8198 2007-01-26  Roger Sayle  <roger@eyesopen.com>
8199
8200         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
8201         function to simplify/factorize operand order canonicalization.
8202         (ix86_fixup_binary_operands): Reorganize using the above function.
8203         (ix86_binary_operator_ok): Likewise.
8204
8205 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
8206
8207         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
8208         file scope from optimize_attrs.
8209         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
8210         up search.
8211         (optimize_attrs): Clear insn_code_values after freeing it.
8212
8213 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
8214
8215         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
8216         a parts.base assignment.
8217
8218 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
8219
8220         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
8221         (compute_subscript_distance, initialize_data_dependence_relation,
8222         finalize_ddr_dependent, analyze_ziv_subscript,
8223         analyze_siv_subscript_cst_affine,
8224         compute_overlap_steps_for_affine_univar,
8225         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
8226         analyze_siv_subscript, analyze_miv_subscript,
8227         analyze_overlapping_iterations, subscript_dependence_tester_1,
8228         compute_self_dependence, free_dependence_relation): Work
8229         with affine_fn instead of chrecs.
8230         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
8231         common_affine_function, affine_function_base,
8232         affine_function_constant_p, affine_fn_op, affine_fn_plus,
8233         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
8234         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
8235         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
8236         (all_chrecs_equal_p): Removed.
8237         * tree-data-ref.h (affine_fn, conflict_function): New types.
8238         (struct subscript): Change type of conflicting_iterations_in_a
8239         and conflicting_iterations_in_b.
8240
8241 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
8242
8243         PR other/30182
8244         * config/pa/pa.h (TARGET_HPUX_11): New.
8245         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
8246         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
8247
8248 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
8249         Richard Guenther  <rguenther@suse.de>
8250
8251         * tree-ssa-structalias.c (solve_graph): Handle case
8252         we merged the variable to another.
8253
8254 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8255
8256         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
8257         functions.
8258
8259         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
8260         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
8261
8262 2007-01-25  DJ Delorie  <dj@redhat.com>
8263
8264         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
8265         allow changes to modes which don't fit in those registers.
8266
8267         * reload1.c (choose_reload_regs): Check for invalid subregs before
8268         computing their locations, not after.
8269
8270 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
8271
8272         PR 25127
8273         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
8274         save Altivec registers in an eh_return function.
8275         (compute_vrsave_mask): Likewise.
8276         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
8277         for saving Altivec registers.
8278         (rs6000_emit_prologue): Don't allocate stack twice in
8279         eh_return function.  Correct expected value of altivec_save_offset
8280         when using save_world.  Describe save of R0 to stack when using
8281         save_world.  Describe stack pointer adjustment when using
8282         save_world.  Remove duplicated eh_return parameter register saving.
8283         Update sp_offset variable after save_world.
8284         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
8285         darwin-world.asm.
8286         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
8287         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
8288         implies Altivec.
8289
8290 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
8291
8292         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
8293
8294 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
8295
8296         PR other/30182
8297         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
8298         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
8299
8300 2007-01-25  Richard Guenther  <rguenther@suse.de>
8301
8302         * doc/invoke.texi (-Wcoverage-mismatch): Document.
8303         * common.opt (-Wcoverage-mismatch): New warning option.
8304         * coverage.c (get_coverage_counts): Ignore coverage mismatch
8305         if -Wcoverage-mismatch is given.
8306
8307 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
8308
8309         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
8310         (ipcp_driver): Change to static definition.
8311         Add dumping of the ifunctions.
8312         (constant_val_insert): Remove unused parameter. Support for SSA.
8313         (ipcp_propagate_const): Support for SSA.
8314         (ipcp_profile_bb_print): Print only analyzed nodes.
8315         (ipcp_replace_map_create): Remove support for Fortran constant
8316         for now.
8317         * ipa-prop.c (ipa_method_modify_stmt,
8318         ipa_callsite_compute_param): Support for SSA.
8319         * ipa-prop.h (ipcp_driver): Remove declaration.
8320         (IS_VALID_TREE_MAP_INDEX): Add define.
8321
8322 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
8323
8324         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
8325
8326 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8327
8328         PR middle-end/30447
8329         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
8330         constant argument to cabs and do it without checking for
8331         -funsafe-math-optimizations.
8332
8333 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
8334
8335         * c-common.h (RID_FIRST_CXX0X): New.
8336         (RID_LAST_CXX0X): New.
8337         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
8338         by -Wall.
8339         * c.opt (Wc++0x-compat): New.
8340         * doc/invoke.texi (-Wc++0x-compat): Document.
8341
8342 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8343
8344         * builtins.c (fold_builtin_carg): New.
8345         (fold_builtin_1): Use it.
8346
8347 2007-01-24  Jan Hubicka  <jh@suse.cz>
8348
8349         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
8350
8351         * ipa-inline.c (initial_insns, max_insns): Delete.
8352         (compute_max_insns): New function.
8353         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
8354         of insns as base for code growth.
8355         (cgraph_decide_inlining): Make initial_insns local; do not compute
8356         max_insns.
8357         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
8358         * doc/invoke.texi (inline-unit-growth): Update docs.
8359
8360 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
8361
8362         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
8363         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
8364         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
8365         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
8366         for CPUs that have PTA_CX16 set.
8367
8368         PR middle-end/27416
8369         * gimplify.c (omp_check_private): New function.
8370         (gimplify_scan_omp_clauses): Use it for
8371         firstprivate/lastprivate/reduction.
8372
8373         PR middle-end/30494
8374         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
8375         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
8376
8377         PR middle-end/30421
8378         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
8379         If lower_lastprivate_clauses emits some statements, append them
8380         to dlist rather than body_p and to body_p append an initializer.
8381         (lower_omp_for): Adjust caller.
8382
8383 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
8384
8385         * target.h (globalize_decl_name): New.
8386         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
8387         * output.h (default_globalize_decl_name): New.
8388         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
8389         globalize_label.
8390         (globalize_decl): Ditto.
8391         (default_globalize_decl_name): New.
8392         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
8393         (ia64_handle_version_id_attribute): New.
8394         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
8395         (ia64_asm_output_external): Use globalize_decl_name instead
8396         of globalize_label.
8397         * doc/extend.texi (version_id): New pragma.
8398         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
8399
8400 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8401
8402         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
8403         _uleb128_t and _Unwind_SWord with _sleb128_t.
8404         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
8405         uw_frame_state_for, uw_update_context_1): Likewise.
8406         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
8407         * unwind-pe.h (read_uleb128, read_sleb128,
8408         read_encoded_value_with_base): Likewise.
8409         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
8410
8411 2007-01-24  Richard Guenther  <rguenther@suse.de>
8412
8413         * builtins.c (expand_builtin_cexpi): Get the fndecl
8414         for cexp in the correct way.
8415
8416 2007-01-24  Jan Hubicka  <jh@suse.cz>
8417
8418         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
8419
8420 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8421
8422         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
8423         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
8424         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
8425         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
8426         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
8427         __SIZEOF_PTRDIFF_T__.
8428         * doc/cpp.texi: Documentation for the new builtin macros added.
8429
8430 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
8431
8432         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
8433         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
8434         instead of operands[2] to avoid access past the end of array.
8435
8436 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
8437
8438         * reload1.c (emit_reload_insns): Pass the reload register
8439         for a non-spill output reload through forget_old_reloads_1.
8440
8441 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
8442
8443         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
8444         _SOFT_DOUBLE if doubles use software floating-point.
8445         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
8446         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8447         * config/rs6000/darwin-ldouble.c: Also compile functions for
8448         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
8449         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8450         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
8451         commented-out long double override.
8452         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
8453         * config/rs6000/eabispe.h: Likewise.
8454         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
8455         long double for non-SPE.
8456         (rs6000_handle_option): Likewise.
8457         (invalid_e500_subreg): Disallow more subregs involding DImode,
8458         DFmode, TImode or TFmode.
8459         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
8460         E500 double.
8461         (legitimate_lo_sum_address_p): Also check for TFmode for E500
8462         double.
8463         (rs6000_legitimize_address): Also handle TFmode for E500 double.
8464         (rs6000_legitimize_reload_address): Also handle TFmode for E500
8465         double.
8466         (rs6000_legitimate_address): Also check for TFmode for E500
8467         double.
8468         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
8469         (spe_build_register_parallel): Handle TFmode and TCmode.
8470         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
8471         double.
8472         (function_arg): Handle TFmode and TCmode for E500 double.
8473         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
8474         in general.
8475         (print_operand): Handle TFmode and TImode for %y.
8476         (rs6000_generate_compare): Handle TFmode comparisons for E500
8477         double.
8478         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
8479         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
8480         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
8481         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
8482         TFmode for E500 double.
8483         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
8484         (floatsidf2): Enable for E500 double.
8485         (movtf_softfloat): Use rs6000_nonimmediate_operand.
8486         (extenddftf2): Change to extenddftf2_fprs.
8487         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
8488         depending on TARGET_E500_DOUBLE.
8489         (extendsftf2): Enable for E500 double.
8490         (trunctfdf2): Enable for E500 double.
8491         (trunctfsf2): Change to trunctfsf2_fprs.
8492         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
8493         depending on TARGET_E500_DOUBLE.
8494         (floatsitf2): Enable for E500 double.
8495         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
8496         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
8497         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
8498         (negtf2): Change to negtf2_internal.
8499         (negtf2): New expander.
8500         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
8501         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
8502         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
8503         (movdi_internal32): Use rs6000_nonimmediate_operand.
8504         (unnamed splitter): Likewise.
8505         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
8506         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
8507         (SPE64TF, DITI): New mode macros.
8508         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
8509         modes.
8510         (frob_tf_ti): New.
8511         (frob_<mode>_di_2): New.
8512         (frob_tf_di_8_2): New.
8513         (frob_di_df): Change to frob_di_<mode>; allow more modes.
8514         (frob_ti_tf): New.
8515         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
8516         more modes.
8517         (frob_ti_<mode>_8_2): New.
8518         (frob_ti_tf_2): New.
8519         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
8520         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
8521         TFmode.
8522         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
8523         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
8524         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
8525         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
8526         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
8527         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
8528         tsttflt_gp): New.
8529
8530 2007-01-23  Ian Lance Taylor  <iant@google.com>
8531
8532         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
8533         insn-*.o first.
8534         (OBJS-archive): Reformat, alphabetize.
8535         (OBJS): Change out_object_file to OBJS-md.
8536
8537 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
8538
8539         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
8540         JUMP_P and CALL_P predicates where applicable.
8541         * config/i386/i386.c: Ditto.
8542         * config/i386/i386.md: Ditto.
8543         * config/i386/mmx.md: Ditto.
8544         * config/i386/predicates.md: Ditto.
8545
8546 2007-01-22  Andreas Schwab  <schwab@suse.de>
8547
8548         * config/m68k/m68k.h: Fix comment.
8549
8550 2007-01-22  Jan Hubicka  <jh@suse.cz>
8551
8552         * passes.c (init_optimization_passes): Do not rerun
8553         pass_early_warn_uninitialized.
8554
8555 2007-01-22  Richard Guenther  <rguenther@suse.de>
8556
8557         PR tree-optimization/30038
8558         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
8559         function.
8560         (execute_cse_sincos_1): Likewise.
8561         (execute_cse_sincos): Likewise.
8562         (gate_cse_sincos): Likewise.
8563         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
8564         the cexpi() canonicalization of sincos().
8565         * tree-pass.h (pass_cse_sincos): Declare.
8566         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
8567
8568 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
8569
8570         PR rtl-optimization/29329
8571         * combine.c (replaced_rhs_insn): Rename to i2mod.
8572         (replaced_rhs_value): Rename to i2mod_new_rhs.
8573         (i2mod_old_rhs): New global variable.
8574         (combine_instructions): Adjust for above change.  Save a copy of
8575         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
8576         note are substituted in the second instruction.
8577         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
8578         ditch the note if it pertains to the second eliminated register
8579         and this register is mentioned in i2mod_old_rhs.
8580
8581         Revert:
8582         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
8583
8584         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
8585         the insn to which the note was originally attached.
8586
8587 2007-01-21  Jan Hubicka  <jh@suse.cz>
8588
8589         * ipa-inline.c (inlining_mode): Comment, move up.
8590         (cgraph_decide_inlining_incrementally): Do not perform inlining
8591         itself; fix handling of flattening of self recursive functions.
8592         (cgraph_find_cycles): Remove.
8593         (cgraph_flatten_node): Remove.
8594         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
8595         (try_inline): New function.
8596         (cgraph_early_inlining): Update call of
8597         cgraph_decide_inlining_incrementally.  Apply inlining here.
8598         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
8599
8600 2007-01-21  Dirk Mueller  <dmueller@suse.de>
8601
8602         PR bootstrap/30511
8603         * tree-vrp.c (check_array_bounds): do not warn
8604         about ADDR_EXPR's of ARRAY_REF's which are immediately
8605         used in binary expressions.
8606
8607 2007-01-21  Ira Rosen  <irar@il.ibm.com>
8608
8609         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
8610         read_write_dep and macros for its access.
8611         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
8612         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
8613         argument, call vect_check_interleaving for every independent pair of
8614         data-refs. Mark loads that access the same memory location as a store
8615         in the loop.
8616         (vect_check_dependences): Remove.
8617         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
8618         call, fix the call to vect_analyze_data_ref_dependence.
8619         (vect_analyze_data_ref_access): For statements that access the same
8620         data-ref, check that they are not stores; for loads, check that there
8621         is no store that access the same location.
8622
8623 2007-01-20  Roger Sayle  <roger@eyesopen.com>
8624             Joseph Myers  <joseph@codesourcery.com>
8625
8626         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
8627         (-fdump-rtl-stack): Likewise.
8628         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
8629         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
8630         (-mpt-fixed): Use @minus{} for minus sign.
8631         (Using Precompiled Headers): Fix under/overfull hbox.
8632
8633 2007-01-20  Jan Hubicka  <jh@suse.cz>
8634
8635         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
8636         place within annotation.
8637
8638 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8639
8640         * pa.c (output_move_double): Change array size of xoperands to 4.
8641
8642 2007-01-20  Jan Hubicka  <jh@suse.cz>
8643
8644         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
8645         as temporary.
8646
8647 2007-01-19  Ian Lance Taylor  <iant@google.com>
8648
8649         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
8650         constant to unsigned HOST_WIDE_INT before negating.
8651
8652 2007-01-19  Ian Lance Taylor  <iant@google.com>
8653
8654         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
8655         to unsigned.
8656         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
8657         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8658         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
8659         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
8660         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8661         (realloc_vdef, realloc_vuse): Change second parameter to
8662         unsigned.
8663         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
8664         fields to unsigned.
8665         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
8666         unsigned. Change x and lim locals to unsigned.
8667         (realloc_vdef, realloc_vuse): Change num_elem parameter to
8668         unsigned.
8669         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
8670         (copy_virtual_operands): Change i and n locals to unsigned.
8671
8672 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8673
8674         PR middle-end/29335
8675         * builtins.c (fold_builtin_1): Handle builtin fdim.
8676
8677 2007-01-20  Jan Hubicka  <jh@suse.cz>
8678
8679         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
8680         * tree-ssa-structalias.c (compute_points_to_sets): Do call
8681         init_alias_heapvars.
8682         (init_alias_heapvars): Initialize only when not already initialized.
8683         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
8684
8685 2007-01-19  Roger Sayle  <roger@eyesopen.com>
8686
8687         * common.opt (fsigned-zeros): New command line option.
8688         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
8689         of flag_unsafe_math_optimizations.
8690         * opts.c (set_fast_math_flags): The -ffast-math command line option
8691         implies -fno-signed-zeros.
8692         (fast_math_flags_set_p): Likewise.
8693
8694         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
8695         the documentation of -ffast-math appropriately.  Wrap long lines.
8696
8697 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
8698
8699         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
8700         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
8701
8702 2007-01-19  Tomas Bily  <tbily@suse.cz>
8703
8704         * cgraphunit.c (cgraph_finalize_function): Updating of pid
8705         * tree-profile.c:
8706         (tree_init_ic_make_global_vars): New function
8707         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
8708         (tree_gen_ic_profiler): New function
8709         (tree_gen_ic_func_profiler): New function
8710         (tree_profiling): Added calling of tree_gen_ic_func_profiler
8711         (tree_profile_hooks): Added hook for indirec/virtual calls
8712         * value-prof.c (tree_find_values_to_profile): New case for
8713         indirect calls
8714         (tree_values_to_profile): Call for determining indirect/virtual
8715         counters
8716         (tree_indirect_call_to_profile): New function
8717         (tree_ic_transform): New function
8718         (tree_ic): New function
8719         (find_func_by_pid): New function
8720         (init_pid_map): New function
8721         (tree_value_profile_transformations): Added check for
8722         indirect/virtual call transformation
8723         * value-prof.h (enum hist_type): New counter type for
8724         indirect/virtual calls
8725         (profile_hooks): Added new hook for profiling indirect/virtual
8726         calls
8727         * profile.c (instrument_values): New case for indirect/virtual
8728         call added
8729         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
8730         (GCOV_COUNTER_V_INDIR): New counter type
8731         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
8732         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
8733         call added
8734         * cgraph.c: Definition of cgraph_max_pid
8735         (cgraph_create_node): Default init of pid attribute
8736         * cgraph.h: Declaration of cgraph_max_pid
8737         (struct cgraph_node): Added pid attribute
8738         * libgcov.c (__gcov_indirect_call_profiler): New function
8739         (__gcov_one_value_profiler_body): New function
8740         (__gcov_one_value_profiler): Body was moved to
8741         __gcov_one_value_profiler_body and calls it
8742
8743 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
8744
8745         * doc/gty.texi (Options): Document the mark_hook option to GTY.
8746         * gengtype.c (write_types_data, write_func_for_structure,
8747         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
8748         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
8749         (walk_type, write_func_for_structure): Generate the mark_hook if
8750         needed.
8751
8752 2007-01-19  Jan Hubicka  <jh@suse.cz>
8753
8754         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
8755         'early' argument take inlining mode argument specifying whether to
8756         inline for size/speeed or all functions; add support for flattening;
8757         improve dumpting.
8758         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
8759
8760 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8761
8762         PR c++/17947
8763         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
8764         the name of the declared identifier.
8765
8766 2007-01-19  Dirk Mueller  <dmueller@suse.de>
8767
8768         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
8769         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
8770         duplicate evaluation.
8771
8772 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
8773
8774         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
8775         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
8776         to XFMode, use acosxf2 and truncate result to requested mode.
8777         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
8778         (asin<mode>2): Similarly, with asin expanders.
8779         (*fscalexf4_i387): Rename from *fscalexf4.
8780         (expNcorexf3): New expander.
8781         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
8782         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
8783         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
8784         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
8785         patterns for SSE math.
8786         (exp10<mode>2): Similarly, with exp10 expanders.
8787         (exp2<mode>2): Similarly, with exp2 expanders.
8788         (expm1<mode>2): Similarly, with expm1 expanders.
8789         (ldexp<mode>3): Similarly, with ldexp expanders.
8790         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
8791         Use gen_truncxf<mode>2_i387_noop to truncate result.
8792
8793 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8794
8795         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
8796         for ColdFire targets.
8797
8798 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
8799             Richard Sandiford  <richard@codesourcery.com>
8800
8801         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
8802         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
8803         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
8804         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
8805         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
8806         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
8807
8808 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8809
8810         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
8811         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
8812         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
8813         (*adddi_dilshr32_cf): New pattern.
8814         (adddi3, subdi3): Remove first alternatives.
8815
8816 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8817
8818         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
8819         implemented using move.l, do not use its cc result for floating-point
8820         comparisons.
8821
8822 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8823
8824         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
8825         from accepting 's' constraints if flag_pic.
8826
8827 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8828
8829         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
8830         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
8831         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
8832         condition from TARGET_68881 to TARGET_HARD_FLOAT.
8833
8834 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
8835
8836         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
8837         ColdFire alternatives.
8838         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
8839         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
8840         architectures that support ff1 instruction.
8841
8842 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8843             Julian Brown  <julian@codesourcery.com>
8844
8845         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
8846         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
8847         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
8848         Add commentary.
8849
8850 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8851
8852         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
8853         and return a bool.
8854         (output_move_const_into_data_reg, output_move_simode_const): Delete.
8855         * config/m68k/m68k.c (const_method, const_int_cost): Take a
8856         HOST_WIDE_INT instead of an rtx.
8857         (m68k_rtx_costs): Update call accordingly.
8858         (output_move_const_into_data_reg): Likewise.  Fix formatting.
8859         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
8860         Return a bool.
8861         (output_move_simode_const): Update calls after above changes.
8862         Rework to use automatic variables and predicates like MEM_P.
8863         * config/m68k/m68k.md (pushexthisi_const): Update call to
8864         valid_mov3q_const.
8865
8866 2007-01-19  Dirk Mueller  <dmueller@suse.de>
8867
8868         * tree-ssa-alias.c (perform_var_substitution): Fix typo
8869         in dump_flags test.
8870
8871 2007-01-19  Richard Guenther  <rguenther@suse.de>
8872
8873         * builtins.c (expand_builtin_cexpi): Fall back to expanding
8874         via cexp in case sincos is not available.
8875
8876 2007-01-19  Richard Guenther  <rguenther@suse.de>
8877
8878         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
8879         * defaults.h (TARGET_HAS_SINCOS): Default to off.
8880         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
8881         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
8882         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
8883         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
8884         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
8885         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
8886
8887 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
8888
8889         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
8890         New insn patterns.
8891         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
8892         (atan2xf3): Directly generate RTL pattern.
8893         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
8894         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
8895         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8896         disable patterns for SSE math.
8897         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
8898         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
8899         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8900         disable patterns for SSE math.
8901
8902 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
8903
8904         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
8905
8906 2007-01-18  Roger Sayle  <roger@eyesopen.com>
8907
8908         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
8909         VIEW_CONVERT_EXPR to the same type as it's operand.
8910
8911 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
8912
8913         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
8914         configured for long double 128.
8915
8916 2007-01-18  Mike Stump  <mrs@apple.com>
8917
8918         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
8919         error.
8920
8921 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
8922
8923         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
8924         type correct.
8925
8926 2007-01-18  Jan Hubicka  <jh@suse.cz>
8927
8928         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
8929         greater than NUM_VOP_FREE_BUCKETS.
8930
8931 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
8932
8933         * tree-ssa-structalias.c: Update comments.
8934         (ptabitmap_obstack): Removed.
8935         (pta_obstack): New.
8936         (oldpta_obstack): Ditto.
8937         (stats): Add a few members.
8938         (struct variable_info): Remove node, complex, address_taken, and
8939         indirect_target members. Add oldsolution member.
8940         (new_var_info): Do not initialize removed members.
8941         (constraint_expr_type): Remove INCLUDES.
8942         (constraint_graph): Add size, implicit_preds, rep,
8943         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
8944         (FIRST_REF_NODE): New macro.
8945         (LAST_REF_NODE): Ditto.
8946         (FIRST_ADDR_NODE): Ditto.
8947         (find): New function.
8948         (unite): Ditto.
8949         (dump_constraint): Do not handle INCLUDES.
8950         (insert_into_complex): Do not insert duplicate constraints.
8951         (condense_varmap_nodes): Renamed and rewritten into ...
8952         (merge_node_constraints): This. Also fix bug in handling of
8953         offseted copy constraints.
8954         (clear_edges_for_node): No longer need to deal with preds at all,
8955         or removing associated preds/succs.
8956         (merge_graph_nodes): Deal with indirect_cycles.
8957         Don't deal with predecessors.
8958         (add_implicit_graph_edge): New function.
8959         (add_pred_graph_edge): Ditto.
8960         (add_graph_edge): Don't deal with predecessors.
8961         (build_constraint_graph): Removed.
8962         (build_pred_graph): New function.
8963         (build_succ_graph): Ditto.
8964         (struct scc_info): Removed in_component. Added roots, dfs, and
8965         node_mapping. Remove visited_index, unification_queue.
8966         (scc_visit): Deal with union-find we do now.
8967         Deal with cycles with REF nodes.
8968         (collapse_nodes): Renamed and rewritten to ...
8969         (unify_nodes): This.
8970         (process_unification_queue): Removed.
8971         (topo_visit): Cleanup
8972         (do_da_constraint): Use find.
8973         (do_sd_constraint): Ditto.
8974         (do_ds_constraint): Ditto.
8975         (do_complex_constraint): Ditto.
8976         (init_scc_info): Update for removed and added members.
8977         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
8978         (find_indirect_cycles): This.
8979         (equivalence_class): New variable.
8980         (label_visit): New function.
8981         (perform_variable_substitution): Rewritten.
8982         (free_var_substitution_info): New function.
8983         (find_equivalent_node): Ditto.
8984         (move_complex_constraints): Ditto.
8985         (eliminate_indirect_cycles): Ditto.
8986         (solve_graph): Only propagate changed bits.
8987         Use indirect cycle elimination.
8988         Use find.
8989         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
8990         (tree_id_eq): Renamed to ...
8991         (tree_vi_eq): This. Update for member change
8992         (insert_id_for_tree): Renamed and rewritten to ...
8993         (insert_vi_for_tree): This.
8994         (lookup_id_for_tree): Renamed and rewritten to ...
8995         (lookup_vi_for_tree): This.
8996         (get_id_for_tree): Renamed and rewritten to ...
8997         (get_vi_for_tree): Ditto.
8998         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
8999         (process_constraint): Don't handle INCLUDES.
9000         Remove special ADDRESSOF case.
9001         (find_func_aliases): Rewrite to use vi functions instead of id
9002         ones.
9003         (create_function_info_for): Ditto.
9004         (create_variable_info_for): Ditto.
9005         (intra_create_variable_infos): Ditto.
9006         (merge_smts_into): Ditto.
9007         (find_what_p_points_to): Ditto.
9008         (init_base_vars): Ditto.
9009         (init_alias_vars): Ditto.
9010         (remove_preds_and_fake_succs): New function.
9011         (dump_sa_points_to_info): Dump new stats.
9012         (dump_solution_for_var): Use find.
9013         (set_used_smts): Fix formatting.
9014         (compute_points_to_sets): Updated for new functions.
9015         (ipa_pta_execute): Ditto.
9016
9017 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9018             Richard Sandiford  <richard@codesourcery.com>
9019
9020         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
9021         parallels.
9022         * calls.c (expand_call): If the return value is a PARALLEL,
9023         extract its first member.
9024         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
9025         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
9026         use FUNCTION_EXTRA_EPILOGUE.
9027         (m68k_function_value): Return a PARALLEL if the return value
9028         is of a pointer type.
9029         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
9030         (FUNCTION_EXTRA_EPILOGUE): Remove.
9031         * config/m68k/m68k.md (D0_REG): New constant.
9032
9033 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9034
9035         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
9036         output a NOP for empty epilogues.
9037
9038 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9039
9040         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
9041         before function.  Extend register save check to include all
9042         registers, not just integer ones.
9043
9044 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9045
9046         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
9047         (m68k_use_return_insn): ...this.
9048         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
9049         * config/m68k/m68k.c (use_return_insn): Rename to...
9050         (m68k_use_return_insn): ...this.
9051         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
9052         of USE_RETURN_INSN.
9053
9054 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9055
9056         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
9057         nearest even, fix denormal rounding overflow.
9058
9059 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9060
9061         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
9062         f%$smove and f%$move.
9063         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
9064         (extendsfdf2_cf): Use fdmove instead of f%&move.
9065         (truncdfsf2_cf): Use fsmove instead of f%$smove.
9066         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
9067
9068 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9069
9070         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
9071         GPR<-GPR moves.
9072
9073 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9074
9075         * real.h (real_format): Add a canonical_nan_lsbs_set field.
9076         (coldfire_single_format): Declare.
9077         (coldfire_double_format): Likewise.
9078         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
9079         of qnan_msb_set to determine the lower bits of a canonical
9080         NaN significand.
9081         (encode_ieee_double): Likewise.
9082         (encode_ieee_quad): Likewise.
9083         (ieee_single_format): Initialize canonical_nan_lsbs_set.
9084         (mips_single_format): Likewise.
9085         (ieee_double_format): Likewise.
9086         (mips_double_format): Likewise.
9087         (ieee_extended_motorola_format): Likewise.
9088         (ieee_extended_intel_96_format): Likewise.
9089         (ieee_extended_intel_128_format): Likewise.
9090         (ieee_extended_intel_96_round_53_format): Likewise.
9091         (ibm_extended_format): Likewise.
9092         (mips_extended_format): Likewise.
9093         (ieee_quad_format): Likewise.
9094         (mips_quad_format): Likewise.
9095         (vax_f_format): Likewise.
9096         (vax_d_format): Likewise.
9097         (vax_g_format): Likewise.
9098         (i370_single_format): Likewise.
9099         (i370_double_format): Likewise.
9100         (decimal_single_format): Likewise.
9101         (decimal_double_format): Likewise.
9102         (decimal_quad_format): Likewise.
9103         (c4x_single_format): Likewise.
9104         (c4x_extended_format): Likewise.
9105         (real_internal_format): Likewise.
9106         (coldfire_single_format): New real_format.
9107         (coldfire_double_format): Likewise.
9108         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
9109         canonical_nan_lsbs_set.
9110         (pdp11_d_format): Likewise.
9111         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
9112         if TARGET_COLDFIRE_CPU.
9113
9114 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9115
9116         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
9117         (output_call, m68k_legitimize_call_address): Declare.
9118         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
9119         parenthesees.  Add support for a 'W' constraint.
9120         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
9121         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
9122         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
9123         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
9124         variables.
9125         (override_options): Initialize them.  Do not set flag_no_function_cse
9126         for TARGET_ID_SHARED_LIBRARY.
9127         (m68k_output_pic_call): Delete.
9128         (m68k_legitimize_call_address): New function.
9129         (print_operand): Remove the %o prefix.  Handle the %p prefix.
9130         (output_call): New function.
9131         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
9132         target address from the GOT if symbolic jumps are not allowed.
9133         * config/m68k/m68k.md (call, general_operand): Do not set
9134         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
9135         Merge separate flag_pic and !flag_pic define_insns into...
9136         (*call, *call_value): ...these new patterns.  Match the address
9137         rather than the containing MEM and require it to be a call_operand.
9138         Use output_call to generate the asm template.
9139         * config/m68k/predicates.md (const_call_operand): New predicate.
9140         (call_operand): Likewise.
9141
9142 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9143
9144         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
9145         (STACK_GROWS_DOWNWARD): Define to 1.
9146         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
9147         comments, emphasizing that these values are only defaults.
9148         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
9149         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
9150
9151 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9152
9153         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
9154
9155 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9156             Richard Sandiford  <richard@codesourcery.com>
9157
9158         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
9159         (FP_REGNO_P): New macros.
9160         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
9161         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
9162         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
9163         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
9164
9165 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9166
9167         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9168         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
9169         to $tmake_file.
9170         * config/m68k/t-floatlib: New file, extracting common code from...
9171         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
9172         * config/m68k/t-uclinux: Here.
9173         * config/m68k/fpgnulib.c: Do not compile extendeed precision
9174         routines on ColdFire targets.
9175
9176 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9177
9178         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9179         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
9180         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
9181         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
9182         explicitly set MOTOROLA to 1.
9183         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
9184
9185 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9186             Nathan Sidwell  <nathan@codesourcery.com>
9187
9188         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
9189         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
9190         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
9191         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
9192         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
9193         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
9194         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
9195         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
9196         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
9197         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
9198         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
9199         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
9200         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
9201         (DBX_REGISTER_NUMBER): Delete.
9202         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
9203         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
9204         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
9205
9206 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9207
9208         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
9209         * config/flat.h: New file.
9210         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
9211         OBJECT_FORMAT_FLAT.
9212         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
9213         indirect references for -msep-data or -mid-shared-library.
9214         Do not use PC-relative code addresses either.
9215         * config/m68k/m68k.c (override_options): Restrict -fPIC error
9216         to -mpcrel.
9217         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
9218         for shared libraries and crt1.o for executables.  Use crti.o and
9219         crtbegin.o.
9220         (ENDFILE_SPEC): Use crtend.o and crtn.o.
9221         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
9222         Do not add -elf2flt or -shared-lib-id options here.
9223         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
9224         Pass -shared-lib-id if -mid-shared-library, taking the library
9225         identifier from -mshared-library-id if given, otherwise
9226         defaulting to 0.
9227         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
9228         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
9229         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
9230         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
9231         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
9232         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
9233         and crtend.o.
9234         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
9235         jump sequence for ISA A and ISA A+.
9236         (PICJUMP): Likewise.
9237
9238 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9239
9240         * config.gcc (m68k-*-uclinux*): Base the port on the common
9241         and m68k GNU/Linux files rather than on the generic ELF ones.
9242         * config/m68k/uclinux.h (TARGET_VERSION): Override.
9243         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
9244
9245 2007-01-18  Julian Brown  <julian@codesourcery.com>
9246             Richard Sandiford  <richard@codesourcery.com>
9247
9248         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
9249         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
9250         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
9251         before redefining.
9252         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
9253         80 unconditionally.
9254         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
9255
9256 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9257
9258         * doc/install.texi: Document m68k-uclinuxoldabi.
9259         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
9260         * config/m68k/uclinux-oldabi.h: New file, copied from
9261         config/m68k/uclinux.h.
9262
9263 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
9264
9265         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
9266         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
9267         (m32r_compute_frame_size): Use unsigned for regno.
9268         (m32r_reload_lr): Use gen_frame_mem.
9269         (pop): New.
9270         (m32r_output_function_epilogue): Don't output the function epilogue
9271         textually here.
9272         (m32r_expand_epilogue): New.
9273         (direct_return): Return false if the function has the interrupt
9274         attribute.
9275         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
9276         * config/m32r/m32r.md (epilogue): New expander.
9277         (return_lr, return_rte): New insns.
9278         (return): Make it expander.
9279         (return_normal): New expander.
9280
9281 2007-01-18  Josh Conner  <jconner@apple.com>
9282
9283         PR target/30485
9284         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
9285         support for UNLE, UNLT, UNGE, and UNGT.
9286
9287 2007-01-18  Jan Hubicka  <jh@suse.cz>
9288
9289         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
9290         * tree-tailcall (add_virtual_phis): Likewise.
9291         (optimize_tail_call): Return TODOs.
9292         (execute_tail_calls): Return TODOs.
9293         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
9294         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
9295         changed.
9296         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
9297         Cleanup cfg using TODO.
9298         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
9299         * passes.c (execute_function_todo): When cleanup did something, remove
9300         unused locals.
9301         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
9302         (make_edges): Don't cleanup_cfg.
9303
9304 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
9305
9306         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
9307         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
9308         operate on the top of stack.
9309         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
9310         register handling of instructions that output to the second
9311         stack slot.
9312         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
9313         (move_for_stack_reg): Special-case check for dead destination
9314         stack slot for constant load of 1.0 inside UNSPEC_TAN.
9315
9316         * config/i386/i386.md (UNSPEC_TAN): New constant.
9317         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
9318         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
9319         to correctly model move of constant 1.0 to top stack slot.
9320         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
9321         (unnamed peephole2 pattern): Remove corresponding peephole2
9322         pattern that optimizes tan insn and loading of constant 1.0.
9323         (tanxf2): Use fptanxf4_i387.
9324         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
9325         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
9326         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
9327         disable patterns for SSE math.
9328         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
9329         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
9330
9331 2007-01-18  Dirk Mueller  <dmueller@suse.de>
9332             Richard Guenther <rguenther@suse.de>
9333
9334         PR diagnostic/8268
9335         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
9336         * common.opt (Warray-bounds): Add new warning option.
9337         * c-opts.c (c_common_handle_option): Define -Warray-bounds
9338         if -Wall is given.
9339         * Makefile.in: make tree-vrp.o depend on toplev.h
9340         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
9341         is enabled.
9342         (check_array_refs, check_array_bounds, check_array_ref): New.
9343
9344 2007-01-18  Jan Hubicka  <jh@suse.cz>
9345
9346         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
9347         (execute_ssa_ccp): Return flags conditionally.
9348         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
9349         changed.
9350         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
9351
9352 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
9353
9354         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
9355         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
9356
9357         * Makefile.c (GTFILES): Add cfglayout.h.
9358         * gengtype.c (open_base_files): Likewise.
9359         * cfglayout.c (cfg_layout_function_footer,
9360         cfg_layout_function_header) Reindent to make gengtype happy.
9361         * cfglayout.h (cfg_layout_function_footer,
9362         cfg_layout_function_header): Add GTY(()) marker.
9363
9364         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
9365
9366 2007-01-18  Ben Elliston  <bje@au.ibm.com>
9367
9368         * genautomata.c (write_automata): Include xstrerror output in the
9369         error message if writing the DFA description file fails.
9370
9371 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
9372
9373         * config/mips/mips-protos.h (mips_output_external): Make it
9374         return void.
9375         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
9376         * config/mips/mips.c (irix_output_external_libcall): Likewise.
9377         (extern_list): Likewise.
9378         (extern_head): Likewise.
9379         (TARGET_ASM_FILE_END): Likewise.
9380         (mips_file_end): Likewise.
9381         (mips_output_external): Rewritten.
9382
9383 2007-01-18  Ben Elliston  <bje@au.ibm.com>
9384
9385         * genpreds.c (write_insn_preds_c): Only write out the function
9386         body for regclass_for_constraint if we have register constraints.
9387
9388 2007-01-17  Tom Tromey  <tromey@redhat.com>
9389
9390         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
9391         * doc/install.texi (Testing): Use sourceware.org.
9392         (Binaries): Likewise.
9393         (Specific): Likewise.
9394         * doc/contrib.texi (Contributors): Use sourceware.org.
9395
9396 2007-01-17  Anatoly Sokolov <aesok@post.ru>
9397
9398         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
9399         (AVR_ENHANCED): Rename to ...
9400         (AVR_HAVE_MUL): ... new.
9401         (avr_enhanced_p): Rename to ...
9402         (avr_have_mul_p): ... new.
9403         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
9404         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
9405         * config/avr/avr.c (avr_enhanced_p): Rename to ...
9406         (avr_have_mul_p): ... new.
9407         (base_arch_s): Rename 'enhanced' to 'have_mul'.
9408         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
9409         'avr_enhanced_p' and 'enhanced'.
9410         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
9411         AVR_HAVE_MUL instead of AVR_ENHANCED.
9412         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
9413         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
9414         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
9415         instead of AVR_ENHANCED.
9416         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
9417         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
9418         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
9419
9420 2007-01-17  Ian Lance Taylor  <iant@google.com>
9421
9422         * vec.h (VEC_reserve_exact): Define.
9423         (vec_gc_p_reserve_exact): Declare.
9424         (vec_gc_o_reserve_exact): Declare.
9425         (vec_heap_p_reserve_exact): Declare.
9426         (vec_heap_o_reserve_exact): Declare.
9427         (VEC_OP (T,A,reserve_exact)): New static inline function, three
9428         versions.
9429         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
9430         negative parameter.
9431         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
9432         (VEC_OP (T,A,copy)) [all versions]: Likewise.
9433         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
9434         * vec.c (calculate_allocation): Add exact parameter.  Change all
9435         callers.
9436         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
9437         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
9438         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
9439         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
9440         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
9441         (vec_heap_p_reserve_exact): New function.
9442         (vec_heap_o_reserve_exact): New function.
9443
9444 2007-01-17  Jan Hubicka  <jh@suse.cz>
9445
9446         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
9447
9448 2007-01-17  Eric Christopher  <echristo@apple.com>
9449
9450         * config.gcc: Support core2 processor.
9451
9452 2007-01-16  Jan Hubicka  <jh@suse.cz>
9453
9454         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
9455         the names, just unlink the chain so we don't crash on dangling pointers
9456         to dead SSA names.
9457
9458 2007-01-16  Jan Hubicka  <jh@suse.cz>
9459
9460         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
9461         * tree-pass.h: Reorder to make IPA passes appear toegher.
9462         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
9463         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
9464         parameters, do not call early inliner.
9465         * ipa-inline.c: Update comments.  Include tree-flow.h
9466         (cgraph_decide_inlining): Do not compute inlining parameters.
9467         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
9468         be called with function context set up.
9469         (pass_ipa_inline): Remove unreachable functions before pass.
9470         (cgraph_early_inlining): Simplify assuming to be called from the
9471         PM as local pass.
9472         (pass_early_inline): New pass.
9473         (cgraph_gate_ipa_early_inlining): New gate.
9474         (pass_ipa_early_inline): Turn into simple wrapper.
9475         (compute_inline_parameters): New function.
9476         (gate_inline_passes): New gate.
9477         (pass_inline_parameters): New pass.
9478         (apply_inline): Move here from tree-optimize.c
9479         (pass_apply_inline): New pass.
9480         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
9481         transforming.
9482         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
9483         doing them by hand.
9484         (tree_function_versioning): Do not allocate dummy struct function.
9485         * tree-inline.h (optimize_inline_calls): Update prototype.
9486         * tree-optimize.c (execute_fixup_cfg): Export.
9487         (pass_fixup_cfg): Remove
9488         (tree_rest_of_compilation): Do not apply inlines.
9489         * tree-flow.h (execute_fixup_cfg): Declare.
9490         * Makefile.in (gt-passes.c): New.
9491         * passes.c: Include gt-passes.h
9492         (init_optimization_passes): New passes.
9493         (nnodes, order): New static vars.
9494         (do_per_function_toporder): New function.
9495         (execute_one_pass): Dump current pass here.
9496         (execute_ipa_pass_list): Don't dump current pass here.
9497
9498 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
9499
9500         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
9501         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
9502
9503 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
9504
9505         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
9506         (strong_alias): Define.
9507         (__gcc_qmul): Provide non-FMA for soft-float.
9508         (__gcc_qdiv): Same.
9509         (__gcc_qneg): New.
9510         (__gcc_qeq): New.
9511         (__gcc_qle): New.
9512         (__gcc_qge): New.
9513         (__gcc_qunord): New.
9514         (__gcc_stoq): New.
9515         (__gcc_dtoq): New.
9516         (__gcc_qtos): New.
9517         (__gcc_qtod): New.
9518         (__gcc_qtoi): New.
9519         (__gcc_qtou): New.
9520         (__gcc_itoq): New.
9521         (__gcc_utoq): New.
9522         (fmsub): New.
9523         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
9524         soft-float functions.
9525         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
9526         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
9527         about long double soft float.
9528
9529 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
9530             Tehila Meyzels  <tehila@il.ibm.com>
9531
9532         * tree-vectorizer.h (is_pattern_stmt_p): New.
9533         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
9534         formatting (tabs instead of spaces). Cleanup and clarify setting
9535         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
9536         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
9537         (vectorizable_type_demotion): Check that types are integral.
9538         (vectorizable_type_promotion): Likewise.
9539         (vectorizable_store): Fix typo.  Eliminate new-line at end of
9540         comments.
9541
9542 2007-01-16  Jan Hubicka  <jh@suse.cz>
9543
9544         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
9545         cgraph edges too.
9546
9547 2007-01-15  Eric Christopher  <echristo@apple.com>
9548
9549         * ifcvt.c: Include vec.h, vecprim.h.
9550         (check_cond_move_block): New argument regs.
9551         Reorganize. Add registers used to regs.
9552         (cond_move_process_if_block): Use regs set above as
9553         loop bounds.
9554
9555 2007-01-15  Eric Christopher  <echristo@apple.com>
9556
9557         * config/darwin.h: Update copyright.
9558         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
9559         (LINK_COMMAND_SPEC): Add -u.
9560         (LINK_SPEC): Fix umbrella for above.
9561
9562 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
9563
9564         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
9565         glibc CVS.
9566
9567 2007-01-15  Tom Tromey  <tromey@redhat.com>
9568
9569         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
9570         * doc/install.texi (Testing): Don't mention jacks.
9571         (Configuration): Document --enable-java-maintainer-mode.  Move
9572         --with-java-home to libgcj-specific section.  Document
9573         --with-ecj-jar.
9574         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
9575
9576 2007-01-15  Jan Hubicka  <jh@suse.cz>
9577
9578         * tree-ssa-dce.c (DCE_TODOs): New.
9579         (propagate_necessity): Return if something changed.
9580         (eliminate_unnecessary_stmts): Likewise.
9581         (perform_tree_ssa_dce): Return TODO flags when needed.
9582         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
9583
9584 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
9585
9586         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
9587         (fyl2x_extend<mode>xf3_i387): New insn pattern.
9588         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
9589         patterns using X87MODEF12 mode macro.  Extend operand 1
9590         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
9591         (log10<mode>2): Ditto.
9592         (log2<mode>2): Ditto.
9593         (log1p<mode>2): Ditto.
9594         (logb<mode>2): Ditto.
9595         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
9596         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
9597         (*fxtractxf3_i387): Rename from *fxtractxf3.
9598         (fxtract_extend<mode>xf3_i387): New insn pattern.
9599         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
9600         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
9601         and gen_fyl2xxf3_i387().
9602
9603 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
9604
9605         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
9606         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
9607         get_loop_exit_edges.  Changed return type to bool.
9608         * cfgloop.h (fix_loop_placement): Declaration removed.
9609
9610 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
9611
9612         * param.h (MIN_VECT_LOOP_BOUND): New.
9613         * params.def (MIN_VECT_LOOP_BOUND): New.
9614         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
9615         argument - minimum threshold for number of iterations.
9616         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
9617         argument to declaration.
9618         * tree-vect-analyze.c (vect_analyze_operations): Check value of
9619         MIN_VECT_LOOP_BOUND.
9620         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
9621         slpeel_tree_peel_loop_to_edge with additional argument.
9622         (vect_do_peeling_for_alignment): Likewise.
9623         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
9624
9625 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
9626
9627         PR target/30413
9628         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
9629         operands of size 1.
9630
9631 2007-01-14  Jan Hubicka  <jh@suse.cz>
9632
9633         * tree-dfa.c (remove_referenced_var): New function.
9634         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
9635         prune referenced vars list too.
9636         * tree-flow.h (remove_referenced_var): Declare.
9637
9638 2007-01-14  Jan Hubicka  <jh@suse.cz>
9639
9640         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
9641         separately.
9642         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
9643         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
9644         * except.h (verify_eh_throw_table_statements): Kill prototype.
9645         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
9646         into call exrepssions.
9647         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
9648         eh trhow verifier.
9649         * tree-cfg.c: Include pointer-set.h.
9650         (verify_node_sharing): Work on pointer set.
9651         (verify_eh_throw_stmt_node): New.
9652         (verify_stmts): Use pointers sets, verify throw_stmt.
9653
9654 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
9655
9656         * ipa-reference.c (analyze_function): Consider also addresses taken
9657         in phi nodes.
9658
9659 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9660
9661         * c-typeck.c (null_pointer_constant_p): Replace use of
9662         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9663         (build_c_cast): Likewise.
9664
9665 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9666
9667         * tree.h (force_fit_type_double): Remove unused final argument.
9668         * c-common.c (constant_expression_warning): Replace use of
9669         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9670         (convert_and_check): Likewise.
9671         (shorten_compare): Update call to force_fit_type_double.
9672         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
9673         * convert.c (convert_to_pointer): Update call to
9674         force_fit_type_double.
9675         * fold-const.c (force_fit_type_double): Remove overflowed_const
9676         argument.
9677         (int_const_binop, fold_convert_const_int_from_int,
9678         fold_convert_const_int_from_real, fold_div_compare,
9679         fold_sign_changed_comparison, fold_unary, fold_negate_const,
9680         fold_abs_const, fold_not_const): Remove the final argument from
9681         calls to force_fit_type_double.
9682
9683 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9684
9685         * configure.ac: Set insn to "nop" for spu-*-* also.
9686         * configure: Regenerate.
9687
9688 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
9689
9690         * builtins.def : Add BUILT_IN_FREE.
9691
9692 2007-01-12  Jan Hubicka  <jh@suse.cz>
9693
9694         PR tree-optimization/30443
9695         * tree-inline.c (tree_function_versioning): Do not optimize when
9696         cloning for inlining.
9697
9698 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
9699
9700         * doc/loop.texi: Document recording of loop exits.
9701         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
9702         (update_single_exits_after_duplication,
9703         update_single_exit_for_duplicated_loop,
9704         update_single_exit_for_duplicated_loops): Removed.
9705         (duplicate_loop_to_header_edge): Do not call
9706         update_single_exits_after_duplication and
9707         update_single_exit_for_duplicated_loops.
9708         (loop_version): Do not update single_exit information.
9709         (fix_loop_structure): Use record_loop_exits instead of
9710         mark_single_exit_loops.
9711         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
9712         the lists of loop exits.
9713         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
9714         split_edge, merge_blocks): Update the lists of loop exits.
9715         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
9716         loop_optimizer_init.
9717         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
9718         of mark_single_exit_loops.
9719         (loop_optimizer_finalize): Call release_recorded_exits.
9720         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
9721         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
9722         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
9723         update single exit information.
9724         * lambda-code.c (perfect_nestify): Ditto.
9725         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
9726         (mark_single_exit_loops): Removed.
9727         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
9728         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
9729         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
9730         functions.
9731         (get_loop_exit_edges, single_exit): Use recorded exit lists.
9732         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
9733         (verify_loop_structure): Verify consistency of the exit lists.
9734         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
9735         (set_single_exit): Removed.
9736         * cfgloop.h (struct loop_exit): New function.
9737         (struct loop): single_exit_ field replaced by exits field.
9738         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
9739         (struct loops): Added exits hash.
9740         (mark_single_exit_loops, set_single_exit): Declaration removed.
9741         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
9742
9743 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9744
9745         * doc/invoke.texi: Avoid use of @headitem.
9746
9747 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9748
9749         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
9750
9751 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9752
9753         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
9754         list of targets.
9755
9756 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9757             Richard Sandiford  <richard@codesourcery.com>
9758
9759         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
9760         * config/m68k/m68k.opt: Resort options.
9761         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
9762
9763 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9764             Richard Sandiford  <richard@codesourcery.com>
9765
9766         * doc/invoke.texi: Document the macros that are defined by
9767         m68k's -mtune and -mhard-float options.
9768         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
9769         (m68k_cpp_cpu_family): Likewise.
9770         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
9771         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
9772         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
9773         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
9774         (m68k_cpp_cpu_family): Likewise.
9775
9776 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9777
9778         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
9779         macros besides mc68000 as tuning macros.  Use a switch statement
9780         to set them and mcpu32.
9781
9782 2007-01-12  Julian Brown  <julian@codesourcery.com>
9783
9784         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
9785         (TARGET_68040_ONLY): Rename to...
9786         (TARGET_68040): ...this.
9787         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
9788         * config/m68k/m68k.md: Likewise.
9789
9790 2007-01-12  Julian Brown  <julian@codesourcery.com>
9791             Nathan Sidwell  <nathan@codesourcery.com>
9792             Richard Sandiford  <richard@codesourcery.com>
9793
9794         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
9795         the -mcpu= argument associated with the --with-cpu setting.
9796         Define M68K_DEFAULT_TUNE to the default -mtune= option,
9797         if different from the one implied by the -mcpu setting.
9798         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
9799         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
9800         * doc/invoke.texi: Mention ColdFire in the introduction to the
9801         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
9802         -mno-div and -mhard-float options.  Make -m68881 a synonym for
9803         -mhard-float.  Document the previously-undocumented -m5206e,
9804         -m528x, -m5307 and -m5407 options.  Tweak the existing option
9805         documentation for consistency.
9806         * doc/install.texi: Mention new --with-cpu arguments.
9807         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
9808         default CPU if neither -mcpu nor -march are specified.
9809         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
9810         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
9811         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
9812         using m68k_tune to decide between families that implement the
9813         same ISA.  Use m68k_tune to set __mcfv4e__.
9814         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
9815         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
9816         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
9817         (FL_ISA_C, FL_ISA_MMU): New macros.
9818         (MASK_COLDFIRE): Delete.
9819         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
9820         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
9821         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
9822         (TARGET_HARD_FLOAT): Do not define here.
9823         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
9824         (TUNE_68000): New macro.
9825         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
9826         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
9827         (TUNE_CFV2): Redefine in terms of m68k_tune.
9828         (uarch_type, target_device, fpu_type): New enums.
9829         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
9830         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
9831         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
9832         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
9833         (FL_FOR_isa_c): New macros.
9834         (m68k_isa): New enum.
9835         (m68k_target_selection): New structure.
9836         (all_devices, all_isas, all_microarchs): New tables.
9837         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
9838         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
9839         (MASK_ALL_CPU_BITS): Delete.
9840         (m68k_find_selection): New function.
9841         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
9842         Map the legacy target options to a combination of the new ones.
9843         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
9844         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
9845         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
9846         settings.
9847         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
9848         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
9849         properties.
9850         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
9851         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
9852         * config/m68k/m68k-devices.def: New file.
9853
9854 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9855             Nathan Sidwell  <nathan@codesourcery.com>
9856
9857         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
9858         (SUBTARGET_EXTRA_SPECS): New macros.
9859         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
9860         use %(asm_cpu_spec) instead.
9861         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
9862         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
9863         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
9864         (EXTRA_SPECS): Rename to...
9865         (SUBTARGET_EXTRA_SPECS): ...this.
9866
9867 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9868             Richard Sandiford  <richard@codesourcery.com>
9869             Julian Brown  <julian@codesourcery.com>
9870
9871         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9872         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
9873         to the configuration's default CPU.
9874         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
9875         Remove default masks.
9876         (m680[012]0-*-*): Set the default with_cpu to the first part of
9877         the target name.
9878         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
9879         (m68k*-*-linux): Extend the --with-cpu handling to...
9880         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
9881         and m68010.  Don't set target_cpu_default2.
9882         * doc/install.texi: Document --with-cpu for m68k.
9883         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
9884         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
9885         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
9886         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
9887         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
9888         (ASM_SPEC): Remove use of %(asm_cpu_default).
9889         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
9890         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
9891         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
9892         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
9893         __HAVE_FPU__ if TARGET_HARD_FLOAT.
9894         (TARGET_DEFAULT): Delete.
9895         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
9896         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
9897         (CPP_CPU_SPEC): Delete.
9898         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
9899         the appropriate string.
9900         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
9901         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
9902         (ASM_SPEC): Don't use %(asm_default_spec).
9903         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
9904         TARGET_DEFAULT and add MASK_68881.
9905         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
9906
9907 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9908
9909         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
9910         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
9911         MASK_68010 alongside MASK_68020.
9912         * doc/invoke.texi: Document -m68010.
9913         * config/m68k/m68k.opt (m68010): New.
9914         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
9915         if TUNE_68010.
9916         (TUNE_68010): New macro.
9917         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
9918         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
9919         (M68K_CPU_m68332): Add MASK_68010.
9920         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
9921         fallback definition.
9922         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
9923         defines.
9924         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
9925         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
9926         to all entries that use MASK_68020.
9927         (output_move_simode_const, output_move_himode, output_move_qimode)
9928         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
9929         instead of TARGET_68020 to select clr behavior.  Remove comment
9930         about there being no TARGET_68010.
9931         * config/m68k/m68k.md: Likewise throughout.
9932
9933 2007-01-12  Julian Brown  <julian@codesourcery.com>
9934
9935         * config/m68k/m68k.h (TARGET_ISAB): New macro.
9936         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
9937         * config/m68k/m68k.md: Likewise.
9938
9939 2007-01-12  Julian Brown  <julian@codesourcery.com>
9940
9941         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
9942         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
9943
9944 2007-01-12  Julian Brown  <julian@codesourcery.com>
9945
9946         * config/m68k/m68k.h (TUNE_68040_60): New macro.
9947         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
9948         * config/m68k/m68k.md: Likewise.
9949
9950 2007-01-12  Julian Brown  <julian@codesourcery.com>
9951             Richard Sandiford  <richard@codesourcery.com>
9952
9953         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
9954         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
9955         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
9956         TARGET_CPU32.
9957         (TARGET_CPU32): Rename to...
9958         (TUNE_CPU32): ...this.
9959         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
9960         (TUNE_CFV2): New macros.
9961         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
9962         remove conditions that are implied by TARGET_68020.
9963         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
9964         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
9965         (m68k_output_function_epilogue): Likewise.
9966         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
9967         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
9968         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
9969         non-68000 timings.  Refactor multiplication and division costs.
9970         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
9971         TUNE_CPU32 instead of TARGET_CPU32.
9972         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
9973         and TUNE_68060 instead of TARGET_68060.
9974         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
9975         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
9976         TARGET_CPU32.
9977         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
9978         && !TARGET_COLDFIRE" to choose between moveq and clr.
9979         Likewise in the unnamed movsf pattern.
9980         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
9981         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
9982         ashiftrt pattern.
9983
9984 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9985
9986         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
9987         of tabbing before backslashes.
9988
9989 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9990
9991         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
9992         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
9993         (ASM_OUTPUT_INTERNAL_LABEL): Define.
9994
9995 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
9996
9997         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
9998         find_interesting_uses_cond.
9999         (find_interesting_uses_cond): Use extract_cond_operands.
10000         (rewrite_use_compare): Use extract_cond_operands and
10001         force_gimple_operand_bsi.  Do not call update_stmt.
10002         (determine_use_iv_cost_condition): Use extract_cond_operands.
10003         Return cheaper of using original bound and changing the exit bound.
10004
10005 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
10006
10007         PR tree-optimization/29516
10008         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
10009         most_expensive_mult_to_index, addr_to_parts,
10010         create_mem_ref, maybe_fold_tmr): Make the type of
10011         fields of TARGET_MEM_REF sizetype.
10012         (move_fixed_address_to_symbol, move_pointer_to_base):
10013         New functions.
10014         * tree.def (TARGET_MEM_REF): Add comment on types of
10015         the operands.
10016
10017 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
10018
10019         * c-common.c (vector_types_convertible_p): Treat opaque types as
10020         always convertible if they have the same size, but not otherwise.
10021
10022 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
10023
10024         * ifcvt.c (struct noce_if_info): Add comments to the fields.
10025         Remove the b_unconditional field.
10026         (noce_try_sign_mask): Do not look at b_unconditional.
10027         (noce_process_if_block): Do not use merge_if_blocks.  Update
10028         the CFG here.  Do not set b_unconditional.
10029         (cond_move_process_if_block): Likewise.
10030         (find_cond_trap): Likewise.
10031         (check_cond_move_block): Require simple jump insns at the end
10032         of the basic block.
10033
10034 2007-01-11  Jan Hubicka  <jh@suse.cz>
10035
10036         PR tree-optimization/1046
10037         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
10038         when alias info is not ready.
10039         (pass_tail_recursion): Do not require aliasing.
10040         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
10041         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
10042         * tree-ssa-copy.c (pass_copy_prop): Likewise.
10043         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
10044         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
10045         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
10046         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
10047         before inlining.
10048         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
10049         When aliasing is not build, mark statement as volatile.
10050
10051 2007-01-11  Tom Tromey  <tromey@redhat.com>
10052
10053         PR preprocessor/15185, PR preprocessor/20989:
10054         * doc/cppopts.texi <-MT>: Update description of algorithm for
10055         computing default target.
10056         <-M, -MD>: Reword "basename" text.
10057
10058 2007-01-11  Roger Sayle  <roger@eyesopen.com>
10059
10060         * builtins.c (expand_builtin_pow, expand_builtin_powi,
10061         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
10062         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
10063         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
10064         fold_builtin_bswap, real_constp, fold_builtin_pow,
10065         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
10066         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
10067         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
10068         * convert.c (convert_to_pointer): Likewise.
10069         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
10070         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
10071         const_binop, fold_convert_const_int_from_int,
10072         fold_convert_const_int_from_real,
10073         fold_convert_const_real_from_real, sign_bit_p,
10074         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
10075         fold_sign_changed_comparison, fold_unary, fold_comparison,
10076         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
10077         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
10078         * print-tree.c (print_node_brief, print_node): Likewise.
10079         * stor-layout.c (place_field, layout_type): Likewise.
10080         * tree-chrec.c (keep_cast): Likewise.
10081         * tree.c (build_vector, build_real, build_real_from_int_cst,
10082         build_complex): Likewise.
10083
10084 2007-01-11  Roger Sayle  <roger@eyesopen.com>
10085
10086         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
10087         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
10088
10089 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
10090
10091         * configure.ac (strict1_warn): Rename to strict_warn.
10092         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
10093         cc_set_by_configure, quoted_cc_set_by_configure,
10094         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
10095         all_boot_languages, all_stagestuff): Remove.
10096         (target_list): Remove bootstrap targets.
10097         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
10098         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
10099         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
10100         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
10101         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
10102         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
10103         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
10104         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
10105         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
10106         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
10107         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
10108         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
10109         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
10110         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
10111         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
10112         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
10113         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
10114         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
10115         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
10116         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
10117         (mostlyclean): Adjust.
10118         (clean, distclean): Don't mention bootstrap stuff.
10119         * configure: Regenerate.
10120         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
10121         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
10122         treelang/config-lang.in (stagestuff): Remove.
10123         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
10124         stageprofile, stagefeedback, stagestuff): Remove mention.
10125
10126 2007-01-11  Nick Clifton  <nickc@redhat.com>
10127
10128         * config/mcore/predicates.md (mcore_general_movesrc_operand):
10129         Accept CONSTs.
10130         (mcore_general_movdst_operand): Do not accept CONST_INTs.
10131         (mcore_arith_K_S_operand): Run the test for the S constraint not
10132         the test for the M constraint.
10133         (mcore_addsub_operand): Do not accept integer values that are
10134         larger than 32 bits.
10135         * config/mcore/mcore.md: Remove unused constraints from split.
10136         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
10137         (addsi3): Likewise.
10138         (allocate_stack): Likewise.
10139         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
10140         operands to 32 bits.
10141         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
10142         INTVAL.
10143         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
10144         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
10145         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
10146         mcore_output_bclri, mcore_output_andn, output_inline_const,
10147         mcore_output_move, mcore_output_movedouble): Likewise.
10148         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
10149         (output_inline_const): Likewise.
10150         (output_inline_const): Fix format strings used in sprintf
10151         statements.
10152         * config/mcore/mcore-protos.h: Update prototypes for changed
10153         functions in mcore.c.
10154         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
10155         HOST_WIDE_INT and not int.
10156         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
10157         CONST_OK_FOR_N): Likewise.
10158         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
10159         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
10160         an INTVAL.
10161
10162 2007-01-10  Jan Hubicka  <jh@suse.cz>
10163
10164         * tree-vrp.c (remove_range_assertions): Release defs.
10165         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
10166         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
10167
10168 2007-01-10  Paul Brook  <paul@codesourcery.com>
10169
10170         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
10171         * config/arm/arm.md (mulsi3subsi): New insn.
10172
10173 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
10174
10175         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
10176         (tree_transform_and_unroll_loop): New.
10177         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
10178         Declare.
10179
10180 2007-01-10  Robert Kennedy <jimbob@google.com>
10181
10182         * fold-const.c (fold_comparison): Fold comparisons like (x *
10183         1000 < 0) to (x < 0).
10184
10185 2007-01-10  Ian Lance Taylor  <iant@google.com>
10186
10187         * tree-pretty-print.c (dump_generic_node): Print parentheses when
10188         operands have the same priority.
10189
10190 2007-01-10  Tom Tromey  <tromey@redhat.com>
10191
10192         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
10193         (fold_binary): Likewise.
10194         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
10195         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
10196         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
10197         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
10198         * langhooks.h (struct lang_hooks): Removed field
10199         'can_use_bit_fields_p'.
10200
10201 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
10202
10203         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
10204
10205 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
10206
10207         * function.c (get_last_funcdef_no): New function.
10208         * function.h (get_last_funcdef_no): Declare.
10209         * tree-inline.c (initialize_cfun): Add initialization.
10210         (tree_function_versioning): Cleanup.
10211
10212 2007-01-10  Jan Hubicka  <jh@suse.cz>
10213
10214         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
10215         PHIs.
10216
10217 2007-01-10  Sa Liu  <saliu@de.ibm.com>
10218             Ben Elliston  <bje@au.ibm.com>
10219
10220         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
10221         for SAVE_NONLOCAL and Pmode for any other save level.
10222         * spu-protos.h (spu_restore_stack_block): Declare.
10223         * spu.md (save_stack_block): Remove.
10224         (restore_stack_block): Call spu_restore_stack_block.
10225         * spu.c (spu_restore_stack_block): New function.
10226         (spu_expand_epilogue): Remove old comment.
10227
10228 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
10229
10230         PR tree-optimization/30322
10231         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
10232         (cand_value_at): Return the value as aff_tree.
10233         (may_eliminate_iv): Convert the bound from aff_tree to tree.
10234         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
10235         aff_combination_mult): New functions.
10236         (aff_combination_add): Use aff_combination_add_cst.
10237         (aff_combination_convert): Allow conversions to a wider type.
10238         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
10239         * tree-affine.h (aff_combination_mult): Declare.
10240
10241 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
10242
10243         * doc/tm.texi: Update documentation to reflect reality of exec
10244         and start file search behaviours. Update copyright year.
10245         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
10246         header file directories.
10247
10248 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
10249
10250         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
10251         (*cosxf2): Rename to cosxf2_i387.
10252         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
10253         using X87MODEF12 mode macro. Rename patterns to
10254         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
10255         for SSE math.
10256         (*cosdf2, *cossf2): Ditto.
10257         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
10258         to match extended input operands.
10259         (sincos<mode>3): New expander.
10260         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
10261         insn patterns and corresponding splitters.
10262
10263 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
10264
10265         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
10266         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
10267
10268 2007-01-09  Nicolas Pitre  <nico@cam.org>
10269
10270         PR target/30173
10271         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
10272
10273 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
10274
10275         * target.h (struct gcc_target): New field library_rtti_comdat.
10276         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
10277         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
10278         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
10279         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
10280
10281 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
10282
10283         * doc/invoke.texi (Optimize Options): Correct description of -O0.
10284
10285 2007-01-08  Richard Guenther  <rguenther@suse.de>
10286
10287         * tree.h (force_fit_type_double): Export.
10288         (force_fit_type): Remove.
10289         * fold-const.c (force_fit_type_double): New function.
10290         (force_fit_type): Remove.
10291         (int_const_binop): Use it.
10292         (fold_convert_const_int_from_int): Likewise.
10293         (fold_convert_const_int_from_real): Likewise.
10294         (fold_div_compare): Likewise.
10295         (fold_sign_changed_comparison): Likewise.
10296         (fold_unary): Likewise.
10297         (fold_negate_const): Likewise.
10298         (fold_abs_const): Likewise.
10299         (fold_not_const): Likewise.
10300         * c-common.c (shorten_compare): Use force_fit_type_double.
10301         * convert.c (convert_to_pointer): Likewise.
10302
10303 2007-01-08  Richard Guenther  <rguenther@suse.de>
10304
10305         * tree.h (build_int_cst_wide_type): Export.
10306         * tree.c (build_int_cst_wide_type): New function.
10307         (build_int_cst_wide): Fix comment.
10308         * builtins.c (fold_builtin_object_size): Use build_int_cst
10309         to build -1 or 0 of the correct type.  Use fit_double_type
10310         to check for overflow.
10311         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
10312         to build the mask.
10313         (decode_field_reference): Likewise.
10314         (all_ones_mask_p): Likewise.
10315         (native_interpret_int): Use build_int_cst_wide_type.
10316         (fold_binary): Use build_int_cst_type to build an all-ones
10317         value.
10318         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
10319
10320 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
10321
10322         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
10323
10324 2007-01-09  Ben Elliston  <bje@au.ibm.com>
10325
10326         * genautomata.c (STATS_OPTION): New option.
10327         (stats_flag): New flag.
10328         (gen_automata_option): Handle it.
10329         (initiate_automaton_gen): Ditto.
10330         (write_automata): Output statistics only if stats_flag is
10331         set. Likewise, output time statistics only if time_flag is set.
10332         * doc/md.texi (Processor pipeline description): Document new flag.
10333
10334 2007-01-08  Richard Guenther  <rguenther@suse.de>
10335
10336         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
10337         * tree.c (build_int_cst_type): Likewise.
10338         (size_in_bytes): Don't call force_fit_type on the result.
10339         (int_fits_type_p): Use fit_double_type.
10340         * fold-const.c (fit_double_type): New function.
10341         (force_fit_type): Use it.
10342         * tree.h (fit_double_type): Export.
10343
10344 2007-01-08  Jan Hubicka  <jh@suse.cz>
10345
10346         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
10347         * ipa.c (function_and_variable_visibility): Fix return type.
10348
10349 2007-01-08  Richard Guenther  <rguenther@suse.de>
10350
10351         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
10352         of offset to build the index.
10353         * tree-pretty-print.c (dump_generic_node): Don't build negated
10354         const just for printing.
10355         * c-pretty-print.c (pp_c_integer_constant): Likewise.
10356         * builtins.c (fold_builtin_int_roundingfn): Check if result
10357         fits the type by using force_fit_type and comparing the result.
10358         * predict.c (predict_loops): Use compare_tree_int for comparison.
10359         * tree.c (build_int_cst): Fall back to integer_type_node for
10360         NULL_TREE type.
10361         (build_int_cst_wide): Assert type is non-null.
10362
10363 2007-01-08  Roberto Costa  <roberto.costa@st.com>
10364
10365         * tree-vrp.c (extract_range_from_cond_expr): New.
10366         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
10367         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
10368         as expressions.
10369         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
10370         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
10371         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
10372         used as expressions.
10373         * tree-object-size.c (cond_expr_object_size): New.
10374         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
10375
10376 2007-01-08  Jan Hubicka  <jh@suse.cz>
10377
10378         * tree-ssa-forwprop.c (forward_propagate_into_cond,
10379         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
10380         statement.
10381
10382 2007-01-08  Richard Guenther  <rguenther@suse.de>
10383
10384         PR tree-optimization/23603
10385         * tree-vrp.c (set_value_range_to_truthvalue): New function.
10386         (extract_range_from_binary): Fall back to truthvalue instead of
10387         varying for TRUTH_*_EXPR.
10388         (extract_range_from_comparison): Fall back to truthvalue instead of
10389         varying.
10390         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
10391         if all visited PHI values were constant.
10392
10393 2007-01-08  Jan Hubicka  <jh@suse.cz>
10394
10395         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
10396         (cgraph_analyze_function): break out from ...
10397         (cgraph_finalize_compilation_unit): ... here.
10398         (cgraph_expand_function): Remove forgoten commented out line.
10399         (cgraph_optimize): Analyze functions.
10400
10401 2007-01-08  Jan Hubicka  <jh@suse.cz>
10402
10403         * tree-pas.h (TODO_remove_function): New flag.
10404         (TODO_update*): Renumber.
10405         (pass_ipa_increase_alignment,
10406         pass_ipa_function_and_variable_visibility): New passes.
10407         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
10408         (cgraph_function_and_variable_visibility): Move to ipa.c
10409         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
10410         cgraph_increase_alignment.
10411         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
10412         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
10413         calling tree-inline.
10414         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
10415         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
10416         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
10417         (gate_increase_alignment): New function.
10418         (pass_ipa_increase_alignment): New pass.
10419         * ipa.c: Inline tree-pass.h and timevar.h
10420         (function_and_variable_visibility): Move here from cgraphunit.c
10421         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
10422         * passes.c (init_optimization_passes): Add the two new passes.
10423         (execute_todo): Handle cgraph_remove_functions.
10424
10425 2007-01-08  Nick Clifton  <nickc@redhat.com>
10426
10427         * config/frv/predicates.md (reg_or_0_operand): Accept
10428         CONST_DOUBLEs.
10429
10430 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
10431
10432         * config/bfin/rtems.h, config/bfin/t-rtems: New.
10433         * config.gcc: Add bfin*-rtems*.
10434
10435 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10436
10437         * c.opt: Add -flax-vector-conversions.
10438         * c-typeck.c (convert_for_assignment): Pass flag to
10439         vector_types_convertible_p to allow emission of note.
10440         (digest_init): Likewise.
10441         * c-opts.c: Handle -flax-vector-conversions.
10442         * c-common.c (flag_lax_vector_conversions): New.
10443         (vector_types_convertible_p): Unless -flax-vector conversions
10444         has been passed, disallow conversions between vectors with
10445         differing numbers of subparts and/or element types.  If such
10446         a conversion is disallowed, possibly emit a note on the first
10447         occasion only to inform the user of -flax-vector-conversions.
10448         The new last argument specifies this.
10449         * c-common.h (flag_lax_vector_conversions): New.
10450         (vector_types_convertible_p): Add extra argument.
10451         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
10452         char_type_node for V*QI type vectors.
10453         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
10454         Update to satisfy new typechecking rules.
10455         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
10456         C and C++ variants.
10457         * doc/invoke.texi (C Dialect Options): Document
10458         -flax-vector-conversions.
10459
10460 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10461
10462         PR tree-optimization/29877
10463         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
10464         a register variable on the RHS to not be replaceable.
10465
10466 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
10467         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
10468         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
10469         const_simm15, const_pow2, const_npow2): Added.
10470         * config/score/misc.md (insv, extv, extzv, movmemsi,
10471         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
10472         * config/score/score.c (score_address_cost, score_select_cc_mode):
10473         Added.
10474         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
10475         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
10476         Update score_print_operand.
10477         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
10478         Adjust register allocate order and update some macro define.
10479         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
10480         mdx_block_move_straight, mdx_block_move_loop_head,
10481         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
10482         mdx_block_move): Added.
10483         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
10484         mdp_limm): Updated and fix some bug and typo.
10485         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
10486         (movsf, movdf, doloop_end): Added.
10487
10488 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
10489
10490         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
10491         config/arm/thumb2.md: Fix comment typos.
10492         * doc/extend.texi: Fix a typo.
10493
10494 2007-01-07  Eric Christopher  <echristo@apple.com>
10495
10496         * configure.ac: Check for __stack_chk_fail for darwin.
10497         * configure: Regenerate.
10498
10499 2007-01-07  Richard Guenther  <rguenther@suse.de>
10500
10501         * tree-vrp.c (extract_range_from_assert): CSE calls to
10502         compare_values where possible.
10503         (extract_range_from_unary_expr): Likewise.
10504
10505 2007-01-07  Anatoly Sokolov <aesok@post.ru>
10506
10507         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
10508         * config/avr/avr.c (call_insn_operand): Delete function.
10509         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
10510         instead of register number. Use predicates.
10511         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
10512         call_insn_operand): Add.
10513
10514 2007-01-06  Jan Hubicka  <jh@suse.cz>
10515
10516         * tree-pass.h (pass_build_cgraph_edges): Declare.
10517         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
10518         (visited_nodes): Remove.
10519         (cgraph_create_edges): Move to cgraphbuild.c; rename to
10520         build_cgrpah_edges; make visited_nodes local.
10521         (cgraph_process_new_functions): DO not call initialize_inline_failed.
10522         (record_references_in_initializer): Move to cgraphbuild.c
10523         (initialize_inline_failed, rebuild_cgraph_edges,
10524         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
10525         (verify_cgraph_node): Make visited_nodes local.
10526         (cgraph_analyze_function): Do not call cgraph_create_edges and
10527         initialize_inline_failed.
10528         (cgraph_expand_function): Do not call cgraph_lower_function;
10529         assert that function is already lowered.
10530         * Makefile.in (cgraphbuild.o): New.
10531         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
10532         at the end of lowering passes.
10533
10534 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
10535
10536         * ifcvt.c (cond_move_convert_if_block): New function, code
10537         factored out from...
10538         (cond_move_process_if_block): ...here.  Call the new function
10539         on the THEN and ELSE blocks.
10540         (merge_if_block): Do not copy global_live_at_end, merge_blocks
10541         already takes care of this.
10542
10543 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10544
10545         PR c/19978
10546         * tree.h (TREE_OVERFLOW_P): New.
10547         * c-typeck.c (parser_build_unary_op): Warn only if result
10548         overflowed and operands did not.
10549         (parser_build_binary_op): Likewise.
10550         (convert_for_assignment): Remove redundant overflow_warning.
10551         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
10552
10553 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10554
10555         * c-typeck.c (store_init_value): Split over two lines to follow
10556         the GNU coding style.
10557
10558 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
10559
10560         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
10561         __GXX_EXPERIMENTAL_CXX0X__.
10562         * doc/cpp.texi: Same.
10563
10564 2007-01-05  Richard Guenther  <rguenther@suse.de>
10565
10566         PR middle-end/27826
10567         * tree.c (get_narrower): Do not construct COMPONENT_REFs
10568         with mismatched types.  Instead explicitly build a
10569         conversion NOP_EXPR.
10570
10571 2007-01-05  Ian Lance Taylor  <iant@google.com>
10572
10573         * c-common.c (decl_with_nonnull_addr_p): New function.
10574         (c_common_truthvalue_conversion): Call it.
10575         * c-typeck.c (build_binary_op): Likewise.
10576         * c-common.h (decl_with_nonnull_addr_p): Declare.
10577
10578 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
10579
10580         PR c/30360
10581         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
10582         denom against 0.0.
10583
10584 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
10585
10586         * doc/install.texi (Final install): Document the fact that
10587         the GNAT runtime should not be stripped.
10588
10589 2007-01-04  Jan Hubicka  <jh@suse.cz>
10590
10591         * tree-inline.c (fold_marked_statements): Update operand caches
10592         and EH after folding
10593
10594 2007-01-04  Ian Lance Taylor  <iant@google.com>
10595
10596         * c-common.c (check_function_nonnull): Whitespace fix.
10597
10598 2007-01-04  Jan Hubicka  <jh@suse.cz>
10599
10600         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
10601         comitted older version of patch.
10602         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
10603         function, celanup cfg and collect garbage.
10604
10605 2007-01-04  Mike Stump  <mrs@apple.com>
10606
10607         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
10608         (clean): Likewise.
10609
10610 2007-01-04  Eric Christopher  <echristo@apple.com>
10611
10612         * libgcc2.c (__bswapsi2): Use SItype.
10613         (__bswapdi2): Use DItype.
10614         * libgcc2.h: Update for above.
10615
10616 2007-01-04  Paul Brook  <paul@codesourcery.com>
10617
10618         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
10619         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
10620         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
10621         umulsidi3, umulsidi3adddi, smulsi3_highpart,
10622         umulsi3_highpart): Make conditional on !arm_arch6.
10623         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
10624         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
10625         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
10626         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
10627         umulsi3_highpart_v6): New insns.
10628
10629 2007-01-04  Roger Sayle  <roger@eyesopen.com>
10630
10631         * fold-const.c (fold_convert): When casting an expression to void,
10632         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
10633         have a type.  Instead of attempting to build a NOP_EXPR, return
10634         these "special" trees directly.
10635
10636 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
10637
10638         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
10639         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
10640         rs6000_cost->fp not 0 as adjustment for outer NEG.
10641
10642 2007-01-04  Jan Hubicka  <jh@suse.cz>
10643
10644         * cgraph.c (cgraph_release_function_body): New function.
10645         (cgraph_remove_node): Use it.
10646         * cgraph.h (cgraph_release_function_body): Declare.
10647         * cgraphunit.c (cgraph_expand_function): Use it.
10648         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
10649         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
10650         is initialized and while compilation of other function is running.
10651         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
10652         statement CFG annotations from here to ...
10653         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
10654
10655 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
10656
10657         * cfgloop.h (enum li_flags): Make the constants powers of two.
10658
10659 2007-01-04  Jan Hubicka  <jh@suse.cz>
10660
10661         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
10662         set.
10663         (fold_marked_statements): New function.
10664         (optimize_inline_calls, tree_function_versioning): Fold new statements.
10665         * tree-inline.h (copy_body_data): Add statements_to_fold.
10666
10667 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
10668
10669         * config.gcc: Mention libgcc/config.host.
10670         * Makefile.in: Update comments mentioning libgcc.
10671         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
10672         (all.cross, start.encap, rest.encap, rest.cross): Update
10673         dependencies for libgcc move.
10674         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
10675         (clean-target, clean-target-libgcc): Delete.
10676         (srcdirify, GCC_EXTRA_PARTS): New macros.
10677         (libgcc-support, libgcc.mvars): New rules.
10678         (distclean): Remove mention of mklibgcc.
10679         (install): Don't reference INSTALL_LIBGCC.
10680         (install-common): Don't reference EXTRA_PARTS.
10681         (install-libgcc, install-multilib): Delete rules.
10682         * mklibgcc.in: Delete file.
10683         * doc/configfiles.texi: Don't mention mklibgcc.
10684
10685         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
10686         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
10687         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
10688         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
10689         (mklibgcc, ldblspecs): Likewise.
10690
10691         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
10692         (posixpre.def): Use $(T).
10693         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
10694         (SHLIB_SRC, SHLIB_INSTALL): Delete.
10695         (SHLIB_LINK): Make dummy.
10696         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
10697
10698         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
10699
10700         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
10701         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
10702         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
10703         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
10704
10705         * configure.ac (all_outputs): Remove mklibgcc.
10706         * configure: Regenerated.
10707
10708 2007-01-03  Josh Conner  <jconner@apple.com>
10709
10710         PR middle-end/29683
10711         * calls.c (compute_argument_addresses): Set stack and stack_slot
10712         for partial args, too.
10713         (store_one_arg): Use locate.size.constant for the size when
10714         generating a save_area.
10715
10716 2007-01-03  Robert Kennedy <jimbob@google.com>
10717
10718         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
10719         whose definitions are deleted due to basic block merging.
10720
10721 2007-01-03  Paul Brook  <paul@codesourcery.com>
10722
10723         PR target/16634
10724         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
10725         functions.
10726         (use_return_insn): Return 0 for Thumb interrupt functions.
10727         (print_multi_reg): Add rfe argument for IRQ returns.
10728         (arm_output_epilogue): Pop interrupt return address directly into PC.
10729         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
10730
10731 2007-01-03  Paul Brook  <paul@codesourcery.com>
10732
10733         Merge from sourcerygxx-4_1.
10734         * config/arm/thumb2.md: New file.
10735         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
10736         Thumb-2.
10737         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
10738         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
10739         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
10740         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
10741         tables.
10742         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
10743         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
10744         comptibility.
10745         * config/arm/ieee754-sf.S: Ditto.
10746         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
10747         (thumb1_base_register_rtx_p): ... to this.
10748         (thumb_index_register_rtx_p): Rename...
10749         (thumb1_index_register_rtx_p): ... to this.
10750         (thumb_output_function_prologue): Rename...
10751         (thumb1_output_function_prologue): ... to this.
10752         (thumb_legitimate_address_p): Rename...
10753         (thumb1_legitimate_address_p): ... to this.
10754         (thumb_rtx_costs): Rename...
10755         (thumb1_rtx_costs): ... to this.
10756         (thumb_compute_save_reg_mask): Rename...
10757         (thumb1_compute_save_reg_mask): ... to this.
10758         (thumb_final_prescan_insn): Rename...
10759         (thumb1_final_prescan_insn): ... to this.
10760         (thumb_expand_epilogue): Rename...
10761         (thumb1_expand_epilogue): ... to this.
10762         (arm_unwind_emit_stm): Rename...
10763         (arm_unwind_emit_sequence): ... to this.
10764         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
10765         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
10766         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
10767         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
10768         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
10769         thumb2_output_casesi): New functions.
10770         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
10771         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
10772         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
10773         THUMB2_WORK_REGS): Define.
10774         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
10775         arm_condexec_mask, arm_condexec_masklen)): New variables.
10776         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
10777         (arm_override_options): Check new CPU capabilities.
10778         Set new architecture flag variables.
10779         (arm_isr_value): Handle v7m interrupt functions.
10780         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
10781         Thumb-2.
10782         (const_ok_for_arm): Handle Thumb-2 constants.
10783         (arm_gen_constant): Ditto.  Use movw when available.
10784         (arm_function_ok_for_sibcall): Return false for v7m interrupt
10785         functions.
10786         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
10787         (thumb_find_work_register, arm_load_pic_register,
10788         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
10789         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
10790         print_multi_reg, output_mov_long_double_fpa_from_arm,
10791         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
10792         output_mov_double_fpa_from_arm, output_move_double,
10793         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
10794         output_return_instruction, arm_output_function_prologue,
10795         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
10796         arm_output_mi_thunk, thumb_set_return_address): Ditto.
10797         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
10798         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
10799         (arithmetic_instr, shift_op): Use arm_shift_nmem.
10800         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
10801         '!' and 'L'.
10802         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
10803         (thumb_expand_prologue): Use thumb_set_frame_pointer.
10804         (arm_file_start): Output directive for unified syntax.
10805         (arm_unwind_emit_set): Handle stack alignment instruction.
10806         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
10807         Add v6t2, v7, v7a, v7r and v7m.
10808         (RETLDM): Add Thumb-2 code.
10809         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
10810         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
10811         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
10812         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
10813         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
10814         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
10815         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
10816         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
10817         ADJUST_INSN_LENGTH): Define.
10818         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
10819         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
10820         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
10821         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
10822         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
10823         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
10824         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
10825         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
10826         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
10827         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
10828         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
10829         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
10830         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
10831         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
10832         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
10833         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
10834         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
10835         cortex-m3.
10836         * config/arm/arm-tune.md: Regenerate.
10837         * config/arm/arm-protos.h: Update prototypes.
10838         * config/arm/vfp.md: Enable patterns for Thumb-2.
10839         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
10840         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
10841         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
10842         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
10843         * config/arm/libunwind.S: Add Thumb-2 code.
10844         * config/arm/constraints.md: Update include Thumb-2.
10845         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
10846         * config/arm/ieee754-df.S: Ditto.
10847         * config/arm/bpabi.S: Ditto.
10848         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
10849         * config/arm/predicates.md (low_register_operand,
10850         low_reg_or_int_operand, thumb_16bit_operator): New.
10851         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
10852         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
10853         * config/arm/t-arm-elf: Add armv7 multilib.
10854         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
10855         Include thumb2.md.
10856         (UNSPEC_STACK_ALIGN, ce_count): New.
10857         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
10858         arm_zero_extendsidi2, arm_zero_extendqidi2): New
10859         insns/expanders.
10860         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
10861         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
10862         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
10863         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
10864         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
10865         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
10866         insns.
10867         * doc/extend.texi: Document ARMv7-M interrupt functions.
10868         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
10869
10870 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
10871
10872         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
10873         (struct _Unwind_Context): Rename args_size to flags, remove
10874         signal_frame field, add a new args_size field and version field.
10875         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
10876         _Unwind_IsExtendedContext): New inline functions.
10877         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
10878         Assume by_value array is only present if _Unwind_IsExtendedContext.
10879         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
10880         _Unwind_IsSignalFrame.
10881         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
10882         (uw_update_context_1): Use _Unwind_SetSignalFrame.
10883         (uw_init_context_1): Initialize context->flags to
10884         EXTENDED_CONTEXT_BIT.
10885         * config/rs6000/linux-unwind.h (frob_update_context): Use
10886         _Unwind_SetSignalFrame.
10887
10888 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10889
10890         PR middle-end/30353
10891         * gimplify.c (gimplify_modify_expr_complex_part): Move below
10892         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
10893         the value.
10894
10895 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
10896
10897         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
10898         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
10899         RET, AT_SP): Remove.
10900         * config/i386/i386.md (*sse_prologue_save_insn): Use return
10901         instead of RET.
10902
10903         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10904         * cfgbuild.c (find_basic_blocks): Likewise.
10905         * cfgrtl.c (rtl_create_basic_block): Likewise.
10906         * function.c (temp_slots_at_level): Likewise.
10907         * reg-stack.c (stack_regs_mentioned): Likewise.
10908         * regclass.c (allocate_reg_info): Likewise.
10909         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10910         set_bb_for_stmt, move_block_to_fn): Likewise.
10911         * tree-complex.c (tree_lower_complex): Likewise.
10912         * vec.h (VEC_safe_grow_cleared): New.
10913
10914         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
10915
10916 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
10917
10918         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
10919         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
10920         to loop_version.
10921         * cfgloopmanip.c (scale_loop_frequencies): Export.
10922         (loopify): Scale the frequencies by prescribed coefficients.
10923         (set_zero_probability): New function.
10924         (duplicate_loop_to_header_edge): Improve updating of frequencies.
10925         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
10926         and frequencies according to arguments.
10927         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
10928         correctly.
10929         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
10930         * modulo-sched.c (sms_schedule): Set probabilities for entering
10931         versioned loop correctly.
10932         * tree-vect-transform.c (vect_transform_loop): Ditto.
10933         * cfgloop.h (loopify, loop_version): Declaration changed.
10934         (scale_loop_frequencies): Declared.
10935
10936 2007-01-02  Jan Hubicka  <jh@suse.cz>
10937
10938         * cgraph.c: Include tree-flow.h
10939         (cgraph_add_new-function): Handle IPA_SSA mode; execute
10940         early_local_passes.
10941         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
10942         * tree-pass.h (pass_all_early_optimizations): Declare.
10943         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
10944         early_local_passes.
10945         (cgraph_analyze_function): Do early_local_passes.
10946         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
10947         Do not add referenced vars.
10948         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
10949         SSA form.
10950         (gate_all_early_local_passes): New gate.
10951         (pass_early_local_passes): Use new gate.
10952         (execute_early_local_optimizations): New functions.
10953         (gate_all_early_optimizations): New gate.
10954         (pass_all_early_optimizations): New pass.
10955         (execute_free_datastructures): Free SSA only when initialized.
10956         (gate_init_datastructures): Init only when optimizing.
10957         (tree_lowering_passes): Do early local passes when called late.
10958         * tree-profile.c (do_tree_profiling): Don't profile functions added
10959         late.
10960         (do_early_tree_profiling, pass_early_tree_profile): Kill.
10961         * tree-cfg.c (update_modified_stmts): Do not update when operands are
10962         not active.
10963         * passes.c (init_optimizations_passes): Reorder so we go into SSA
10964         during early_local_passes.
10965         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
10966
10967
10968 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
10969
10970         * Makefile.in: Update copyright year.
10971
10972 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
10973
10974         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
10975         in $(lang_checks) and check-consistency targets.
10976
10977 2007-01-02  Jan Hubicka  <jh@suse.cz>
10978
10979         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
10980         Do not add referenced vars.
10981         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
10982         are not active.
10983         * passes.c (init_optimization_passes): Put mudflap_2 after
10984         free_datastructures.
10985
10986 2007-01-02  Jan Hubicka  <jh@suse.cz>
10987
10988         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
10989         Set NOTHROW flag on call statements proved to be nothrow.
10990         Update statement of local calls so new pure/const functions are
10991         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
10992         goto receivers.
10993         (tree_rest_of_compilation): Register hooks and initialize bitmap
10994         early. Do not set after_inlining flag.
10995
10996 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
10997
10998         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
10999         HOST_BITS_PER_LONGLONG
11000
11001 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
11002
11003         PR c/19977
11004         * c-typeck.c (store_init_value): Don't emit pedantic overflow
11005         warning for non-static initializers.
11006
11007 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
11008
11009         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
11010         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
11011         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
11012         Always use set_unique_reg_note to add REG_EQUAL notes.
11013
11014 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
11015
11016         Revert:
11017         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
11018
11019         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
11020         * cfgbuild.c (find_basic_blocks): Likewise.
11021         * cfgrtl.c (rtl_create_basic_block): Likewise.
11022         * function.c (temp_slots_at_level): Likewise.
11023         * reg-stack.c (stack_regs_mentioned): Likewise.
11024         * regclass.c (allocate_reg_info): Likewise.
11025         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
11026         set_bb_for_stmt, move_block_to_fn): Likewise.
11027         * tree-complex.c (tree_lower_complex): Likewise.
11028         * vec.h (VEC_safe_grow_cleared): New.
11029
11030 2007-01-02  Ian Lance Taylor  <iant@google.com>
11031
11032         * c-common.c (c_common_truthvalue_conversion): When warning about
11033         using an assignment as a truth value, set TREE_NO_WARNING.
11034
11035 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11036
11037         PR middle-end/7651
11038         * c.opt (Wold-style-declaration): New.
11039         * doc/invoke.texi (C-only Warning Options): New.
11040         (Wold-style-declaration): Document it.
11041         (Wextra): Enabled by -Wextra.
11042         * c-opts.c (c_common_post_options): Enabled by -Wextra.
11043         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
11044         -Wold-style-declaration.
11045
11046 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
11047
11048         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
11049         * cfgbuild.c (find_basic_blocks): Likewise.
11050         * cfgrtl.c (rtl_create_basic_block): Likewise.
11051         * function.c (temp_slots_at_level): Likewise.
11052         * reg-stack.c (stack_regs_mentioned): Likewise.
11053         * regclass.c (allocate_reg_info): Likewise.
11054         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
11055         set_bb_for_stmt, move_block_to_fn): Likewise.
11056         * tree-complex.c (tree_lower_complex): Likewise.
11057         * vec.h (VEC_safe_grow_cleared): New.
11058
11059 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
11060
11061         * c-common.c (c_common_nodes_and_builtins): Since variants of
11062         void_type_node get built before it is given a name, we need to
11063         give those variants the name, too.
11064         (complete_array_type): We need to work with the canonical main
11065         type of the array, from which we will build the qualified version.
11066         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
11067         * print-tree.c (print_node): Display canonical type information
11068         for each type.
11069         * stor-layout.c (layout_type): When we don't know the
11070         alignment of a type for which we're building an array, we end up
11071         guessing wrong, so make the type require structural equality.
11072         * tree.c (make_node_stat): When we build a new type, it is its
11073         own canonical type.
11074         (build_type_attribute_qual_variant): When building an attribute
11075         variant, its canonical type is the non-attribute variant. However,
11076         if the attributes are target-dependent and they differ, we need to
11077         use structural equality checks for this type.
11078         (build_qualified_type): A qualified type is not equivalent to its
11079         unqualified variant; set the canonical type appropriately.
11080         (build_distinct_type_copy): When building a distinct type from
11081         another type, the new type is its own canonical type.
11082         (build_variant_type_copy): When building a new type variant, we
11083         assume that it is equivalent to the original type.
11084         (build_pointer_type_for_mode): When building a pointer type, also
11085         build a canonical type pointer.
11086         (build_reference_type_for_mode): When building a reference type,
11087         also build a canonical type reference.
11088         (build_index_type): When we can't hash an index type (e.g.,
11089         because its maximum value is negative), the index type requires
11090         structural equality tests.
11091         (build_array_type): Build the canonical form of an array type.
11092         (build_function_type): Function types require structural equality,
11093         because they contain default arguments, attributes, etc.
11094         (build_method_type_directly): Ditto for method types.
11095         (build_offset_type): Build the canonical offset type.
11096         (build_complex_type): Build the canonical vector type.
11097         (make_vector_type): Build the canonical vector type.
11098         * tree.h (TYPE_CANONICAL): New.
11099         (TYPE_STRUCTURAL_EQUALITY_P): New.
11100         (SET_TYPE_STRUCTURAL_EQUALITY): New.
11101         (struct tree_type): Added "canonical" field.
11102         * params.h (VERIFY_CANONICAL_TYPES): New.
11103         * doc/c-tree.texi (TYPE_CANONICAL): Document.
11104         (TYPE_STRUCTURAL_EQUALITY_P): Document.
11105         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
11106         * doc/invoke.texi (verify-canonical-types): Document --param
11107         parameter for verifying canonical types.
11108
11109 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11110
11111         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
11112         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
11113         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
11114         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
11115         tm_file.
11116         * config/rs6000/e500.h: New.
11117         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
11118         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
11119         Remove.
11120         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
11121         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
11122         TARGET_E500_DOUBLE): Remove.
11123         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
11124         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
11125         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
11126         * config/rs6000/rs6000.c (rs6000_override_options): Use
11127         CHECK_E500_OPTIONS.
11128
11129 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11130
11131         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
11132         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
11133         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
11134         rs6000_emit_cmove): Don't check TARGET_E500.
11135         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
11136         sordered): Don't check TARGET_E500.
11137
11138 2007-01-01  Eric Christopher  <echristo@apple.com>
11139
11140         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
11141         HARD_REGISTER_NUM_P.
11142
11143 2007-01-01  Roger Sayle  <roger@eyesopen.com>
11144
11145         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
11146         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
11147         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
11148         eq/ne Y".
11149
11150 2007-01-01  Mike Stump  <mrs@apple.com>
11151
11152         * configure.ac: Remove support for building with Apple's gcc-3.1.
11153
11154 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11155
11156         PR middle-end/30311
11157         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
11158         REG is a hard register.  Do not modify REG before calling
11159         subreg_nregs.
11160         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
11161         multiple of the size of YMODE for certain lowpart cases.
11162
11163 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11164
11165         PR middle-end/30253
11166         * gimplify (voidify_wrapper_expr): Update for
11167         GIMPLE_MODIFY_STMT.
11168
11169 2007-01-01  Andreas Schwab  <schwab@suse.de>
11170
11171         PR target/29166
11172         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
11173         save of BR0 in extra_spill_size instead of spill_size.
11174         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
11175         area.
11176         (ia64_expand_epilogue): Restore BR0 from its new location.
11177
11178 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11179
11180         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
11181         Use a temporary variable if the left hand side is not a gimple
11182         register.
11183
11184 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11185
11186         * gimplify.c (gimplify_return_expr): Make the temporary variable
11187         for the return expression, a gimple register variable.
11188
11189 2007-01-01  Jan Hubicka  <jh@suse.cz>
11190
11191         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
11192         INSN_LIST.
11193
11194 2007-01-01  Mike Stump  <mrs@apple.com>
11195
11196         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
11197         .literal16.
11198         * config/darwin.c (machopic_select_rtx_section): Use
11199         HAVE_GAS_LITERAL16.
11200         (darwin_mergeable_constant_section): Likewise.
11201         * configure: Regenerate.
11202         * config.in: Regenerate.
11203
11204 2007-01-01  Jan Hubicka  <jh@suse.cz>
11205             Andrew Pinski  <pinskia@gmail.com>
11206
11207         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
11208         before starting IPA passes.