OSDN Git Service

* tree-vect-transform.c (get_initial_def_for_reduction): Clean away
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
2
3         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
4         the unused code for reduction without adjust-in-epilog to simplify the
5         function.
6
7 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
8
9         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
10         (S390_TDC_NEGATIVE_ZERO): New constant.
11         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
12         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
13         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
14         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
15         (S390_TDC_POSITIVE_INFINITY): New constant.
16         (S390_TDC_NEGATIVE_INFINITY): New constant.
17         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
18         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
19         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
20         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
21         (S390_TDC_INFINITY): New constant.
22         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
23         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
24         optimization for UNSPEC_CCZ_TO_INT.
25         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
26         ("*ccz_to_int"): New insn.
27         ("isinf<mode>2"): New insn.
28         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
29         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
30         (UNSPEC_CCZ_TO_INT): New constant.
31
32 2007-04-18  Richard Guenther  <rguenther@suse.de>
33
34         PR tree-optimization/19431
35         PR tree-optimization/21463
36         * tree-pass.h (pass_phiprop): Declare.
37         * passes.c (init_optimization_passes): New phiprop pass.
38         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
39         (phivn_valid_p): New helper function.
40         (phiprop_insert_phi): Likewise.
41         (propagate_with_phi): Likewise.
42         (tree_ssa_phiprop): New propagator propagating loads
43         through phi nodes if profitable.
44
45 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
46
47         * tree-vect-analyze.c (process_use): New function.
48         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
49         Check phis in all bbs.
50         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
51         assert.
52
53 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
54
55         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
56         we use REG_EQUAL.
57
58 2007-04-17  Anatoly Sokolov <aesok@post.ru>
59
60         PR target/30483
61         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
62         error().
63
64 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
65
66         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
67         on "0".
68         (sse_vmmulv4sf3): Likewise.
69         (sse2_vmaddv2df3): Likewise.
70         (sse2_vmmulv2df3): Likewise.
71
72 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
73
74         PR rtl-optimization/31360
75         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
76         (target_reg_cost): New.
77         (init_set_costs): Initialize target_reg_cost.  Add comments
78         regarding the rationale of the costs.
79         (global_cost_for_size): Renamed to...
80         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
81         of register pressure.
82         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
83         estimate_reg_pressure_cost.  Add number of ivs.
84         (determine_set_costs): Dump target_reg_cost.
85         * loop-invariant.c (gain_for_invariant):  Use
86         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
87         (best_gain_for_invariant, find_invariants_to_move): Remove
88         n_inv_uses.
89         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
90         (target_reg_cost): Declare.
91         (global_cost_for_size): Declaration removed.
92         (estimate_reg_pressure_cost): Declare.
93
94 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
95
96         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
97         regnos into even/odd register pairs.
98         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
99         TDmode similar to the other floating point modes.
100         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
101         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
102         define_expand's.
103         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
104         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
105         (movdd_hardfloat64): Use TARGET_MFPGPR.
106
107 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
108
109         * reload1.c (delete_output_reload): Don't count output in n_inherited.
110
111         Revert
112         2005-01-05  Richard Henderson  <rth@redhat.com>
113         PR rtl-opt/10692
114         * reload1.c (do_input_reload): Restrict the optimization deleteing
115         a previous output reload to RELOAD_FOR_INPUT.
116
117 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
118
119         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
120         induc_vec_info_type.
121         (vectorizable_induction): New function declaration.
122         * tree-vect-transform.c (get_initial_def_for_induction): No need to
123         check if already vectorized.  Find first place in BB where new stmts
124         can be inserted.  Takes only one argument.
125         (vectorizable_induction): New function.
126         (vect_transform_stmt): Add case for induc_vec_info_type to call
127         vectorizable_induction.
128         (vect_transform_loop): Consider phis for vectorization.
129         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
130         condition.
131         (analyze_operations): Call vectorizable_induction when analyzing phis.  
132         Fix comment.
133         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
134         (vect_mark_relevant): Include phis in relevance analysis.
135         (vect_mark_stmts_to_be_vectorize): Likewise.
136         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
137
138 2007-04-16  Lawrence Crowl  <crowl@google.com>
139
140         * doc/invoke.texi (Debugging Options): Add documentation for the
141         -femit-struct-debug options -femit-struct-debug-baseonly,
142         -femit-struct-debug-reduced, and
143         -femit-struct-debug-detailed[=...].
144
145         * c-opts.c (c_common_handle_option): Add
146         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
147         and OPT_femit_struct_debug_detailed_.
148         * c.opt: Add specifications for
149         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
150         and -femit-struct-debug-detailed[=...].
151         * opts.c (set_struct_debug_option): Parse the
152         -femit-struct-debug-... options.
153         * opts.c (matches_main_base, main_input_basename,
154         main_input_baselength, base_of_path, matches_main_base): Add
155         variables and functions to compare header base name to compilation
156         unit base name.
157         * opts.c (should_emit_struct_debug): Add to determine to emit a
158         structure based on the option.
159         (dump_struct_debug) Also disabled function to debug this
160         function.
161         * opts.c (handle_options): Save the base name of the
162         compilation unit.
163
164         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
165         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
166         This hook indicates if a type is generic.  Set it by default
167         to "never generic".
168         * langhooks.h (struct lang_hooks_for_types): Add a new hook
169         to determine if a struct type is generic or not.
170         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
171         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
172         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
173         with live C++ hook.
174
175         * flags.h (enum debug_info_usage): Add an enumeration to describe
176         a program's use of a structure type.
177         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
178         to indicate the program's usage of the type.  Filter structs based
179         on the -femit-struct-debug-... specification.
180         (gen_type_die): Split into two routines, gen_type_die and
181         gen_type_die_with_usage.  gen_type_die is now a wrapper
182         that assumes direct usage.
183         (gen_type_die_with_usage): Replace calls to gen_type_die
184         with gen_type_die_with_usage adding the program usage of
185         the referenced type.
186         (dwarf2out_imported_module_or_decl): Suppress struct debug
187         information using should_emit_struct_debug when appropriate.
188
189 2007-04-16  Ian Lance Taylor  <iant@google.com>
190
191         PR tree-optimization/31522
192         * tree-vrp.c (vr_phi_edge_counts): New static variable.
193         (vrp_initialize): Allocate vr_phi_edge_counts.
194         (vrp_visit_phi_node): Don't push to infinity if we saw a new
195         executable edge.  Drop test for all constants.
196         (vrp_finalize): Free vrp_phi_edge_counts.
197
198         * doc/cpp.texi (Common Predefined Macros): Clarify description of
199         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
200
201         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
202         predecessors at head rather than tail.
203
204 2007-04-16  Matthias Klose  <doko@debian.org>
205
206         * gcc/config/alpha/linux.h (CPP_SPEC): Define.
207         * gcc/config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
208
209 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
210
211         * function.h: Remove sequence_stack extern declaration.
212
213 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
214
215         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
216         TARGET_FIDOA.
217         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
218         defined.
219
220 2007-04-16  Anatoly Sokolov <aesok@post.ru>
221
222         * config/avr/avr.c (avr_arch_types): Rearranging  array.
223         (enum avr_arch): Add.
224         (avr_mcu_types): Use avr_arch enumeration constants instead of 
225         numbers.
226         * config/avr/avr.h (LINK_SPEC): Simplify.
227
228 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
229
230         * config/m68k/m68k.c (m68k_libcall_value,
231         m68k_function_value): Use macros for register names more.
232
233         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
234         instead.
235         (M68K_REGNAME): Use A6_REG.
236         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
237
238 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
239
240         PR middle-end/28071
241         * sched-int.h (struct deps): Split field 'pending_lists_length' into
242         'pending_read_list_length' and 'pending_write_list_length'.  Update
243         comment.
244         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
245         to handle two length counters instead of one.  Update all uses.
246         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
247         two length counters instead of one.
248         * sched-rgn.c (propagate_deps): Update to handle two length counters
249         instead of one.
250
251 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
252
253         PR target/31582
254         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
255         copy of source, pass it to ix86_expand_vector_set and return
256         it as target.
257
258 2007-04-16  David Ung  <davidu@mips.com>
259             Joseph Myers  <joseph@codesourcery.com>
260
261         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
262         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
263         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
264         Add 74K processor information.
265         * config/mips/mips.md: Include 74k.md.
266         (cpu): Add 74kc,74kf,74kx.
267         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
268         * config/mips/74k.md: New.
269         * doc/invoke.texi (MIPS Options): Document 74K support.
270
271 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
272
273         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
274         vectorizable_* functions.
275         * tree-vect-transform.c (vectorizable_call): Add check for
276         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
277         (vectorizable_store): likewise.
278         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
279         Add comments.
280         (vectorizable_operation, vectorizable_type_demotion): Likewise.
281         (vectorizable_type_promotion, vectorizable_load): Likewise.
282         (vectorizable_live_operation, vectorizable_condition): Likewise.
283         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
284         STMT_VINFO_LIVE_P.
285         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
286
287 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
288
289         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
290         register numbers more.
291         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
292         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
293         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
294         FUNCTION_VALUE_REGNO_P): Likewise.
295         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
296         STATIC_CHAIN_REGNUM): Likewise.
297         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
298         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
299         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
300         * config/m68k/m68k.md (FP_REG): New.
301
302 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
303
304         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
305         alignment on fido.
306
307 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
308
309         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
310         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
311         comment typos.
312
313 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
314
315         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
316         cold loops.
317
318 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
319
320         PR c/31520
321         * c-decl.c (finish_decl): Grab the type of the decl after the call
322         to store_init_value.
323
324 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
325
326         * common.opt (fforward-propagate): Fix "Optimization" annotation.
327
328 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
329
330         PR c++/25874
331         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
332         post dominators and cleanup cfg before returning.
333
334 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
335
336         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
337         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
338
339 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
340
341         * config.gcc: Recognize fido.
342         * config/m68k/m68k-devices.def (fidoa): New.
343         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
344         __mfido__.
345         (FL_FIDOA, TARGET_FIDOA): New.
346         * config/m68k/m68k.opt (mfidoa): New.
347
348 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
349
350         PR middle-end/31322
351         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
352         when a personality function is used.
353
354 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
355
356         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
357
358 2007-04-13  Mike Stump  <mrs@apple.com>
359
360         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
361         we can...
362         * config/darwin.opt (fapple-kext): Make C++ only.
363         * config/darwin.c (darwin_override_options): Remove code to ensure
364         -fapple-kext is given for C++ only.
365
366 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
367
368         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
369         * config/mips/mips.c (override_options): Call
370         SUBTARGET_OVERRIDE_OPTIONS, if defined.
371
372 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
373
374         * config/i386/i386.opt (msvr3-shlib): Removed.
375
376         * doc/invoke.texi: Remove -msvr3-shlib.
377
378 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
379
380         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
381         with "popcnt" instruction.
382
383 2007-04-13  Richard Guenther  <rguenther@suse.de>
384
385         PR tree-optimization/21258
386         * tree-vrp.c (compare_case_labels): New helper.
387         (find_switch_asserts): New function.
388         (find_assert_locations): Call it for SWITCH_EXPRs.
389
390 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
391
392         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
393         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
394         check is now implied in X87_FLOAT_MODE_P.
395         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
396         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
397         (fix_trunc<mode>_i386_fisttp): Ditto.
398         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
399         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
400         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
401         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
402         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
403         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
404         (unnamed_splitters): Ditto.
405         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
406         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
407         FIRST_SSE_REG for local functions when SSE math is enabled or
408         for functions with sseregparm attribute.
409         (standard_80387_constant_p): Return -1 if mode is not
410         X87_FLOAT_MODE_P.
411         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
412         (ix86_expand_compare): Ditto.
413         (ix86_expand_carry_flag_compare): Ditto.
414         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
415         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
416         DECIMAL_FLOAT_MODE_P.
417         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
418         of SCALAR_FLOAT_MODE_P.
419         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
420         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
421         checks before FLOAT_MODE_P.
422         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
423         before FLOAT_MODE_P.
424         [DIV]: Ditto.
425         [NEG]: Ditto.
426         [ABS]: Ditto.
427         [SQRT]: Ditto.
428         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
429
430 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
431             Charles Wilson  <libtool@cwilson.fastmail.fm>
432
433         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
434         (libgcc.mvars): Don't depend on them.
435         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
436         * exec-tool.in: New.
437
438 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
439
440         * doc/invoke.text (--help): Document --help=common.
441
442 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
443
444         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
445
446 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
447
448         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
449         * genemit.c (main): Emit #include "integrate.h".
450         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
451         (LOADGP_RTP): New mips_loadgp_style.
452         * config/mips/mips.h: Include config/vxworks-dummy.h.
453         (TARGET_RTP_PIC): New macro.
454         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
455         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
456         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
457         for TARGET_RTP_PIC.
458         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
459         -mvxworks-pic when using -mrtp and a PIC option.
460         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
461         for RTP PIC.
462         (mips_symbolic_constant_p, mips_symbolic_address_p)
463         (mips_symbol_insns): Handle SYMBOL_HALF.
464         (override_options): Warn about -G and -mrtp being used together.
465         Initialize mips_lo_relocs[SYMBOL_HALF].
466         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
467         (mips_emit_loadgp): Handle LOADGP_RTP.
468         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
469         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
470         (tablejump): Handle function-relative case table entries if
471         TARGET_RTP_PIC.
472         * config/mips/predicates.md (symbol_ref_operand): New predicate.
473
474 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
475
476         * config/mips/mips.md (load_call<mode>): Allow any general register.
477         destination.
478         (sibcall_value_internal, sibcall_value_multiple_internal)
479         (call_value_internal, call_value_split, call_value_multiple_internal)
480         (call_value_multiple_split): Remove constraints from operand 0.
481
482 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
483
484         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
485         rather than loadgp_noshared.
486         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
487         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
488         gen_loadgp.
489         * config/mips/mips.md (loadgp): Rename to...
490         (loadgp_newabi): ...this.
491         (loadgp_noshared): Rename to...
492         (loadgp_absolute): ...this.
493
494 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
495
496         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
497         false for locally-binding symbols.
498         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
499
500 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
501
502         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
503         (SYMBOL_GOT_PAGE_OFST): ...this.
504         (SYMBOL_GOT_GLOBAL): Rename to...
505         (SYMBOL_GOT_DISP): ...this.
506         (SYMBOL_GOTOFF_GLOBAL): Rename to...
507         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
508         * config/mips/mips.c (mips_global_symbol_p): New function.
509         (mips_symbol_binds_local_p): Likewise.
510         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
511         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
512         and mips_symbol_binds_local_p.
513         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
514         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
515         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
516         SYMBOL_GOTOFF_DISP.
517         (mips_ok_for_lazy_binding_p): New function.
518         (mips_load_call_address, mips_expand_call): Use it.
519         (mips_dangerous_for_la25_p): Likewise.
520         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
521         (*got_disp<mode>): Use got_disp_operand instead of
522         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
523         SYMBOL_GOTOFF_GLOBAL.
524         (*got_page<mode>): Use got_page_ofst_operand instead of
525         local_got_operand.
526         * config/mips/predicates.md (const_call_insn_operand): Use
527         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
528         (global_got_operand): Rename to...
529         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
530         SYMBOL_GOT_GLOBAL.
531         (local_got_operand): Rename to...
532         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
533         of SYMBOL_GOT_LOCAL.
534
535 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
536
537         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
538         TARGET_CALL_CLOBBERED_GP.
539         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
540         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
541         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
542         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
543         of TARGET_ABICALLS && !TARGET_NEWABI.
544         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
545         * config/mips/mips.c (mips_load_call_address): Check
546         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
547         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
548         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
549         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
550         TARGET_ABICALLS && TARGET_NEWABI.
551         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
552         TARGET_ABICALLS.
553         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
554         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
555         TARGET_ABICALLS && TARGET_NEWABI.
556         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
557         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
558         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
559         whether indirect calls must use $25.
560         (mips_extra_live_on_entry): Check TARGET_GOT instead of
561         TARGET_ABICALLS.
562         * config/mips/mips.md (jal_macro): Check flag_pic and
563         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
564         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
565         instead of TARGET_ABICALLS.
566         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
567         TARGET_ABICALLS && TARGET_OLDABI.
568         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
569         (sibcall): In the comment above the define_insn, mention
570         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
571         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
572         instead of TARGET_ABICALLS.
573
574 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
575
576         * doc/md.texi (Blackfin family constraints): Document PA and PB.
577         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
578         (MACFLAGS_MATCH_P): New macro.
579         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
580         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
581         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
582         the other MACFLAG constants.
583         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
584         (flag_machi): Tighten constraints.  Renumber some of the operands.
585         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
586         output template.
587         (flag_machi_parts_acconly): New pattern.
588         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
589         used.
590         (flag_macinit1hi): Tighten constraints.
591         (flag_mul_macv2hi_parts_acconly): New pattern.
592
593         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
594         Use a more efficient implementation.
595         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
596         inline sequences when not optimizing for size.
597
598         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
599         movhi_high2low): Delete, merge functionality into...
600         (packv2hi): ... this pattern.
601
602         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
603         * config/bfin/bfin.opt (msim): New option.
604         (mcpu=): New option.
605         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
606         (bfin_cpu_t): Typedef of enum bfin_cpu.
607         (bfin_cpu_type): New declaration.
608         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
609         -msim and -mcpu= options.
610         (LIB_SPEC): Likewise.
611         * config/bfin/bfin.c (bfin_cpu_type): Define.
612         (bfin_handle_option): Handle -mcpu= option.
613         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
614         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
615         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
616
617 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
618
619         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
620         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
621         (powerpc-wrs-vxworksae): Use ${tm_file}.
622         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
623         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
624         * config/i386/vx-common.h: New file.
625
626 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
627
628         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
629         of crt0.o%s.
630
631 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
632
633         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
634         ldxtr.
635
636 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
637
638         PR c++/31078
639         PR c++/31103
640         * c-common.c (c_build_qualified_type): Set canonical type
641         appropriately.  
642
643 2007-04-12  Richard Guenther  <rguenther@suse.de>
644
645         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
646         lower bound and element size if lower bound is not zero
647         or either of the ARRAY_REF operands is set.
648
649 2007-04-12  Richard Guenther  <rguenther@suse.de>
650
651         PR tree-optimization/24689
652         PR tree-optimization/31307
653         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
654         indices by value.
655         * gimplify.c (canonicalize_addr_expr): To be consistent with
656         gimplify_compound_lval only set operands two and three of
657         ARRAY_REFs if they are not gimple_min_invariant.  This makes
658         it never at this place.
659         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
660
661 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
662
663         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
664         null before emitting a .nsubspa directive.
665
666 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
667
668         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
669         need_to_partition_p if there are no memory statements in the
670         function.
671
672 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
673
674         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
675         (gcd_of_steps_may_divide_p): New function.
676         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
677
678 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
679
680         * reload.c (find_reloads_toplev, find_reloads_address,
681         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
682         not a pointer equality test, to decide if we need to call
683         push_reg_equiv_alt_mem.
684
685 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
686
687         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
688         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
689         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
690
691 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
692
693         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
694         vector to be positive.
695
696 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
697
698         PR 30735
699         PR 31090
700         * doc/invoke.texi: Document --params max-aliased-vops and
701         avg-aliased-vops.
702         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
703         debug_memory_partitions): Move to tree-flow.h
704         * params.h (AVG_ALIASED_VOPS): Define.
705         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
706         users.
707         (mp_info_t): Likewise.
708         (get_mem_sym_stats_for): New.
709         (set_memory_partition): Move from tree-flow-inline.h.
710         (mark_non_addressable): Only clear the set of symbols for the
711         partition if it exists.
712         (dump_memory_partitions): Move from tree-ssa-operands.c
713         (debug_memory_partitions): Likewise.
714         (need_to_partition_p): New.
715         (dump_mem_ref_stats): New.
716         (debug_mem_ref_stats): New.
717         (dump_mem_sym_stats): New.
718         (debug_mem_sym_stats): New.
719         (update_mem_sym_stats_from_stmt): New.
720         (compare_mp_info_entries): New.
721         (mp_info_cmp): Call it.
722         (sort_mp_info): Change argument to a list of mem_sym_stats_t
723         objects.
724         (get_mpt_for): Move from tree-ssa-operands.c.
725         (find_partition_for): New.
726         (create_partition_for): Remove.
727         (estimate_vop_reduction): New.
728         (update_reference_counts): New.
729         (build_mp_info): New.
730         (compute_memory_partitions): Refactor.
731         Document new heuristic.
732         Call build_mp_info, update_reference_counts,
733         find_partition_for and estimate_vop_reduction.
734         (compute_may_aliases): Populate virtual operands before
735         calling debugging dumps.
736         (delete_mem_sym_stats): New.
737         (delete_mem_ref_stats): New.
738         (init_mem_ref_stats): New.
739         (init_alias_info): Call it.
740         (maybe_create_global_var): Remove alias_info argument.
741         Get number of call sites and number of pure/const call sites
742         from gimple_mem_ref_stats().
743         (dump_alias_info): Call dump_memory_partitions first.
744         (dump_points_to_info_for): Show how many times a pointer has
745         been dereferenced.
746         * opts.c (decode_options): For -O2 set --param
747         max-aliased-vops to 500.
748         For -O3 set --param max-aliased-vops to 1000 and --param
749         avg-aliased-vops to 3.
750         * fortran/options.c (gfc_init_options): Remove assignment to
751         MAX_ALIASED_VOPS.
752         * tree-flow-inline.h (gimple_mem_ref_stats): New.
753         * tree-dfa.c (dump_variable): Dump memory reference
754         statistics.
755         Dump NO_ALIAS* settings.
756         (referenced_var_lookup): Tidy.
757         (mem_sym_stats): New.
758         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
759         and ORIG are different SSA names for a memory partition.
760         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
761         * tree-flow.h (struct mem_sym_stats_d): Define.
762         (mem_sym_stats_t): Define.
763         (struct mem_ref_stats_d): Define.
764         (struct gimple_df): Add field mem_ref_stats.
765         (enum noalias_state): Define.
766         (struct var_ann_d): Add bitfield noalias_state.
767         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
768         debug_mem_ref_stats, debug_memory_partitions,
769         debug_mem_sym_stats): Declare.
770         * tree-ssa-structalias.c (update_alias_info): Update call
771         sites, pure/const call sites and asm sites in structure
772         returned by gimple_mem_ref_stats.
773         Remove local variable IS_POTENTIAL_DEREF.
774         Increase NUM_DEREFS if the memory expression is a potential
775         dereference.
776         Call update_mem_sym_stats_from_stmt.
777         If the memory references memory, call
778         update_mem_sym_stats_from_stmt for all the direct memory
779         symbol references found.
780         (intra_create_variable_infos): Set noalias_state field for
781         pointer arguments according to the value of
782         flag_argument_noalias.
783         * tree-ssa-structalias.h (struct alias_info): Remove fields
784         num_calls_found and num_pure_const_calls_found.
785         (update_mem_sym_stats_from_stmt): Declare.
786         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
787         Set default value to 100.
788         (PARAM_AVG_ALIASED_VOPS): Define.
789
790 2007-04-11  Richard Guenther  <rguenther@suse.de>
791
792         PR middle-end/31530
793         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
794         a * -b + c as c - a * b if we honor sign dependent rounding.
795
796 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
797
798         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
799         bfin_expand_strmov.
800         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
801         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
802         variables.
803         (initialize_trampoline): Don't use old-style function definition.
804         (bfin_secondary_reload): Mark IN_P argument as unused.
805
806 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
807
808         PR tree-optimization/31343
809         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
810         (build_polynomial_chrec): Return a scalar when the evolution is zero.
811         * testsuite/gcc.dg/vect/pr31343.c: New.
812
813 2007-04-10  Eric Christopher  <echristo@apple.com>
814
815         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
816         * config/i386/i386.md (*cmpfp0): Use.
817         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
818         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
819         (fix_trunc<mode>_i386_fisttp): Ditto.
820         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
821         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
822         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
823         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
824         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
825         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
826         (unnamed_splitters): Ditto.
827         * config/i386/i386.c (output_fix_trunc): Assert that
828         we're not being passed a TFmode operand.
829
830 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
831
832         PR tree-optimization/31526
833         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
834         n_basic_blocks to find newly added blocks.
835
836 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
837
838         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
839         alternative.
840         (fix_trunc<mode>si_sse): Ditto.
841         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
842         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
843         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
844         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
845         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
846         expander using SSEMODEF mode macro.
847         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
848         expander using SSEMODEF mode macro.
849         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
850         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
851         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
852         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
853         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
854         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
855         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
856         Macroize insn using X87MODEF mode macro.
857
858 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
859
860         * config/i386/sse.md (sse2_pinsrw): Removed.
861         (sse2_pextrw): Renamed to ...
862         (*sse2_pextrw): This.
863
864 2007-04-09  Jan Hubicka  <jh@suse.cz>
865
866         PR target/27869
867         * config/i386/sse.md
868         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
869         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
870         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
871         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
872
873 2007-04-09  Jan Hubicka  <jh@suse.cz>
874
875         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
876         multiple fields of union.
877
878 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
879
880         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
881         (create_preheaders): Check that loops are available.
882         (fix_loop_structure): Clean up, improve comments.
883         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
884         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
885         state flags.
886         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
887         * predict.c (tree_estimate_probability): Do not call
888         calculate_dominance_info.  Call create_preheaders.
889         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
890         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
891         flags.
892         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
893         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
894         * tree-cfg.c (tree_split_edge): Make an assert more precise.
895         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
896         arguments.
897
898 2007-04-08  Jan Hubicka  <jh@suse.cz>
899
900         * tree.h (maybe_fold_offset_to_component_ref): Declare.
901         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
902         * fold-const.c (fold_unary): Use it.
903
904 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
905
906         * varasm.c (assemble_variable): Remove call to
907         lang_hooks.decls.prepare_assemble_variable.
908         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
909         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
910         * langhooks.h (lang_hooks_for_decls): Remove
911         prepare_assemble_variable.
912
913 2007-04-08  Mike Stump  <mrs@apple.com>
914
915         * config/i386/i386.c: Use inc/dec on Core2.
916
917 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
918
919         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
920         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
921         lhd_tree_inlining_end_inlining): Remove.
922         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
923         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
924         end_inlining hooks.
925         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
926         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
927         lhd_tree_inlining_end_inlining): Remove prototypes.
928         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
929         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
930         LANG_HOOKS_TREE_INLINING_START_INLINING,
931         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
932
933         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
934         not set it.
935
936 2007-04-08  Anatoly Sokolov <aesok@post.ru>
937
938         PR target/29932
939         * config/avr/predicates.md (io_address_operand): Delete predicate.
940         (low_io_address_operand): Don't use 'mode' argument.
941         (higth_io_address_operand): Rename ...
942         (high_io_address_operand): ... to this. Don't use 'mode' argument.
943         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
944         for above change.
945
946 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
947
948         Revert change removing staticp.
949
950 2007-04-07  Anatoly Sokolov <aesok@post.ru>
951
952         PR target/30289
953         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
954         earlyclobber.
955
956 2007-04-07  Bruce Korb  <bkorb@gnu.org>
957
958         * c.opt: Add -Wformat-contains-nul.
959         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
960           -Wformat setting.
961         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
962         the NUL byte warning.
963
964 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
965
966         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
967
968 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
969
970         * tree.c (staticp): No longer use staticp langhook.
971         * langhooks.c (lhd_staticp): Removed.
972         * langhooks.h (struct lang_hooks): Remove staticp.
973         * c-common.c (c_staticp): Remove.
974         * c-common.h (c_staticp): Ditto.
975         * langhooks-defs.h (lhd_staticp): Ditto.
976         (LHD_HOOKS_STATICP): Ditto
977         * tree.h (gcc_assert_lowered): New macro.
978
979 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
980
981         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
982         argument "reliable".
983         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
984         Add argument "reliable".  Propagate it through calls.
985         (infer_loop_bounds_from_undefined):  Derive number of iterations
986         estimates from references in blocks that do not dominate loop latch.
987         (gcov_type_to_double_int): New function.
988         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
989         and expected_loop_iterations_unbounded.
990         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
991         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
992         * tree-data-ref.c (estimated_loop_iterations): Export.
993         (get_references_in_stmt): Fix -- do not return addresses of local
994         objects.
995         * cfgloop.h (expected_loop_iterations_unbounded,
996         estimated_loop_iterations): Declare.
997
998 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
999
1000         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
1001
1002 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1003
1004         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
1005         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
1006         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
1007         Use output_387_reg_move().
1008         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
1009         expander using X87MODEF12 mode macro.
1010         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
1011         choosing register preferences.  Use output_387_reg_move().
1012         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
1013         instead of "x".  Use output_387_reg_move().
1014         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
1015         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
1016         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
1017         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
1018         Use output_387_reg_move().
1019         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
1020         mode macro.
1021         (*truncxf?f_i387 splitter): Ditto.
1022
1023 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1024
1025         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
1026         LANG_HOOKS_SAFE_FROM_P.
1027         * expr.c (safe_from_p): Remove langhook call.
1028         * langhooks.h (lang_hooks): Remove safe_from_p.
1029         (lhd_safe_from_p): Remove prototype.
1030         * langhooks.c (lhd_safe_from_p): Remove.
1031
1032 2007-04-06  Jan Hubicka  <jh@suse.cz>
1033
1034         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
1035         functions.
1036
1037 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1038
1039         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
1040         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
1041         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
1042         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
1043         alternative.
1044         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
1045         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
1046
1047 2007-04-05  Richard Henderson  <rth@redhat.com>
1048
1049         * config/alpha/alpha.c (print_operand) [+]: Remove.
1050         (alpha_end_function): Print nop if call at end of function.
1051         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
1052         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
1053         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
1054         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
1055         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
1056         the call pattern. Update peepholes to match.
1057
1058 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
1059
1060         * doc/extend.texi (Other Builtins): Add decimal float variants
1061         of signbit.
1062         * builtins.def: Ditto.
1063         * builtins.c (expand_builtin): Ditto.
1064
1065 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
1066             H.J. Lu  <hongjiu.lu@intel.com>
1067
1068         PR target/31478
1069         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
1070         of V8HImode when calling ix86_binary_operator_ok.
1071         (sse2_pmaddwd): Call ix86_binary_operator_ok.
1072         (sdot_prodv8hi): Operands 1 and 2 must be register.
1073
1074 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
1075
1076         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
1077         initialize align to silence bogus warning.
1078
1079 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
1080
1081         PR middle-end/22156
1082         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
1083         all_no_warning.
1084         (struct sra_walk_fns): Remove use_all parameter from use.
1085         (sra_hash_tree): Handle BIT_FIELD_REFs.
1086         (sra_elt_hash): Don't hash bitfld blocks.
1087         (sra_elt_eq): Skip them in parent compares as well.  Handle
1088         BIT_FIELD_REFs.
1089         (sra_walk_expr): Don't maintain or pass down use_all_p.
1090         (scan_use): Remove use_all parameter.
1091         (scalarize_use): Likewise.  Re-expand assignment to
1092         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
1093         output, and re-scalarize after output.  Don't mark anything
1094         for no warning.
1095         (scalarize_ldst): Adjust.
1096         (scalarize_walk_gimple_modify_statement): Likewise.
1097         (build_element_name_1): Handle BIT_FIELD_REFs.
1098         (instantiate_element): Don't warn for any element whose parent
1099         is used as a whole.
1100         (instantiate_missing_elements_1): Return the sra_elt.
1101         (canon_type_for_field): New.
1102         (try_instantiate_multiple_fields): New.
1103         (instantiate_missing_elemnts): Use them.
1104         (mark_no_warning): Removed.
1105         (generate_one_element_ref): Handle BIT_FIELD_REFs.
1106         (REPLDUP, sra_build_elt_assignment): New.
1107         (generate_copy_inout): Use them.
1108         (generate_element_copy): Likewise.  Handle bitfld differences.
1109         (generate_element_zero): Don't recurse for blocks.  Use
1110         sra_build_elt_assignment.
1111         (generate_one_element_int): Take elt instead of var.  Use
1112         sra_build_elt_assignment.
1113         (generate_element_init_1): Adjust.
1114         (scalarize_use, scalarize_copy): Use REPLDUP.
1115         (scalarize_ldst): Move assert before dereference.
1116         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
1117
1118 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
1119
1120         * regmove.c: Fix unused variable warnings due to previous commit.
1121
1122 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
1123
1124         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
1125         (regmove_bb_head): Remove.
1126         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
1127         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
1128         problems with fixup_match_1.
1129         Don't initialize/free regmove_bb_head.
1130
1131         (reg_is_remote_constant_p): If an insn is in the same basic block
1132         but not before INSN, consider it remote, too.
1133
1134 2007-04-05  Anatoly Sokolov <aesok@post.ru>
1135
1136         PR target/25448
1137         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
1138         DECL_ASSEMBLER_NAME, not the DECL_NAME.
1139
1140 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
1141
1142         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
1143         (CONDITIONAL_REGISTER_USAGE): Likewise.
1144
1145 2007-04-04  Richard Henderson  <rth@redhat.com>
1146
1147         * config/alpha/lib1funcs.asm: Remove unused file.
1148
1149 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1150
1151         PR other/31356
1152         * opts.c (print_specific_help): Fix --help=<language>
1153         header line.
1154         (common_handle_option): Support --help=common.
1155
1156 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1157
1158         PR other/31353
1159         * gcc.c (main): Do not run the linker if
1160         print_subprocess_help indicates that it shouldn't be
1161         run.
1162
1163 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1164
1165         PR doc/31355
1166         * doc/invoke.texi (--help=): Document <languages> value, fix
1167         formatting in tables of values.
1168
1169 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
1170
1171         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
1172         dllimport attribute of virtual methods.
1173
1174 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
1175
1176         * config/score/crti.asm: Change _bss_start to __bss_start.
1177         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
1178         (OUTGOING_REG_PARM_STACK_SPACE) update.
1179         * config/score/score.opt: add options to make backend support
1180         score5, score5u, score7 and score7d.
1181         * config/score/score.md: Likewise.
1182         * config/score/misc.md: Likewise.
1183         * config/score/mac.md: Likewise.
1184         * doc/invoke.texi: Likewise.
1185         * doc/md.texi: update constraints define.
1186
1187 2007-04-03  Richard Henderson  <rth@redhat.com>
1188
1189         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
1190         an appropriate type, use the mode instead.
1191
1192 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
1193
1194         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
1195         Set the default --with-arch setting to mips2.
1196         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
1197         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1198         (MULTILIB_OSDIRNAMES): Delete.
1199         (MULTILIB_DIRNAMES): Define.
1200         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
1201         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
1202         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
1203         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
1204         VXWORKS_OS_CPP_BUILTINS.
1205         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
1206         (MIPS_DEBUGGING_INFO): Undefine.
1207         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
1208
1209 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
1210
1211         PR middle-end/30704
1212         * fold-const.c (native_encode_real): Encode real.c provided longs
1213         as a series of 32-bit native integers.
1214         (native_interpret_real): Interpret buffer as a series of 32-bit
1215         native integers.
1216
1217 2007-04-03  Richard Guenther  <rguenther@suse.de>
1218
1219         * genpreds.c (write_insn_constraint_len): Write function
1220         optimized for CONSTRAINT_LEN implementation.
1221         (write_tm_preds_h): Output insn_constraint_len inline and
1222         use it for CONSTRAINT_LEN.
1223         (write_insn_preds_c): Don't output insn_constraint_len.
1224         * doc/md.texi (define_register_constraint): Document multi-letter
1225         constraints shall have the same length if they start with the same
1226         letter.
1227
1228 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
1229
1230         PR target/31175
1231         * config/i386/i386.md (isinf<mode>2): Expand only when
1232         TARGET_C99_FUNCTIONS is set.
1233
1234 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
1235
1236         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
1237         (x86_64-*-linux*): Ditto.
1238         * config/i386/i386.opt (mpc): New option.
1239         * config/i386/i386.c (overrride_options): Handle
1240         ix87_precision_string.
1241         * config/i386/crtprec.c: New file.
1242         * config/i386/t-crtpc: Ditto.
1243         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
1244         and -mpc80 options.
1245         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
1246         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
1247         crtprec32.o, crtprec64.o and crtprec80.o.
1248
1249         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
1250         and -mpc80 options.
1251         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
1252
1253 2007-04-02  Eric Christopher  <echristo@apple.com>
1254
1255         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
1256         limitations on darwin.
1257
1258 2007-04-02  Anatoly Sokolov <aesok@post.ru>
1259
1260         PR target/31137
1261         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
1262
1263 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1264
1265         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
1266
1267 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1268
1269         * libgcc2.h (exception_descriptor): Don't forward-declare.
1270         (__get_eh_table_language, __get_eh_table_version): Delete
1271         prototypes of long-dead functions.
1272
1273 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
1274
1275         * ebitmap.h: New file
1276         * ebitmap.c: New file
1277         * Makefile.in (ebitmap.o): New target.
1278
1279 2007-04-01  Jan Hubicka  <jh@suse.cz>
1280
1281         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
1282         before very first instruction.
1283
1284 2007-04-01  Jan Hubicka  <jh@suse.cz>
1285
1286         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
1287         waring on 64bit hosts.
1288         * bitmap.h: Fix typo in bitmap_head_def.
1289
1290 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
1291
1292         PR rtl-optimization/31391
1293         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
1294         into a DELETED_LABEL note, and the label is in an empty basic
1295         block, update BB_END as well as BB_HEAD.
1296
1297 2007-04-01  Richard Henderson  <rth@redhat.com>
1298
1299         PR tree-optimization/31169
1300         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
1301         to varying if the range is outside [0,  prec-1].
1302
1303 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
1304
1305         PR target/31388
1306         * config/mips/mips.md (load_const_gp): New insn.
1307         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
1308         the MIPS16 GP pseudo register if no_new_pseudos.
1309         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
1310
1311 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1312
1313         PR target/31364
1314         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
1315         secureplt.
1316         (call_value): Likewise.
1317
1318 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
1319             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1320
1321         PR 14737
1322         * doc/invoke.texi: (optimization options): Reword description
1323         of -ffast-math. Document its primary purpose.
1324
1325 2007-03-31  Richard Guenther  <rguenther@suse.de>
1326
1327         * omp-low.c (splay-tree.h): Include.
1328         (lookup_decl): Replace splay-tree usage by pointer-map.
1329         (maybe_lookup_decl): Likewise.
1330         (new_omp_context): Likewise.
1331         (delete_omp_context): Likewise.
1332         * gimplify.c (splay-tree.h): Include.
1333         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
1334         pointer-map.
1335         (remap_ssa_name): Likewise.
1336         (remap_decl): Likewise.
1337         (remap_type_1): Likewise.
1338         (remap_type): Likewise.
1339         (copy_body_r): Likewise.
1340         (expand_call_inline): Likewise.
1341         (clone_body): Likewise.
1342         (copy_tree_r): Likewise.
1343         (remap_save_expr): Likewise.
1344         (unsave_r): Likewise.
1345         (unsave_expr_now): Likewise.
1346         (tree_function_versioning): Likewise.
1347         (build_duplicate_type): Likewise.
1348         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
1349         (struct copy_body_data): Replace splay-tree by pointer-map.
1350         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
1351         not $(SPLAY_TREE_H).
1352         (gimplify.o): Depend on $(SPLAY_TREE_H).
1353         (omp-low.p): Likewise.
1354
1355 2007-03-31  Anatoly Sokolov <aesok@post.ru>
1356
1357         * config/avr/predicates.md (even_register_operand,
1358         odd_register_operand): New predicates.
1359         * config/avr/avr.md (movw peephole2): New.
1360         (movw_r peephole2): New.
1361
1362 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
1363
1364         * tree.h (get_signed_or_unsigned_type): New.
1365         * fold-const.c (operand_equal_for_comparison_p): Use
1366         get_signed_or_unsigned_type instead of
1367         lang_hooks.types.signed_or_unsigned_type.
1368         * expr.c (store_expr): Ditto.
1369         * langhooks.c (get_signed_or_unsigned_type): New.
1370         (lhd_signed_or_unsigned_type): New.
1371         * langhooks.h (lhd_signed_or_unsigned_type): New.
1372         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
1373
1374 2007-03-30  Richard Henderson  <rth@redhat.com>
1375
1376         * tree-ssa-loop-ivopts.c: Include target.h.
1377         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
1378         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
1379         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
1380         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
1381
1382 2007-03-30  Richard Henderson  <rth@redhat.com>
1383             Kai Tietz  <kai.tietz@onevision.com>
1384
1385         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
1386         default for 64-bit.
1387         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
1388         (TARGET_64BIT_MS_ABI): New.
1389         (DBX_REGISTER_NUMBER): Handle 64-bit.
1390         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
1391         (LONG_TYPE_SIZE): Force to 32.
1392         (REG_PARM_STACK_SPACE): New.
1393         (OUTGOING_REG_PARM_STACK_SPACE): New.
1394         (REGPARM_MAX, SSE_REGPARM_MAX): New.
1395         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1396         (STACK_BOUNDARY): Use 128 for 64-bit.
1397         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
1398         Add 64-bit implementation.
1399         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
1400         argument unused.
1401         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
1402         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
1403         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
1404         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
1405         (ix86_handle_cconv_attribute): Don't warn when ignoring if
1406         TARGET_64BIT_MS_ABI.
1407         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
1408         (ix86_pass_by_reference): Likewise.
1409         (ix86_function_value_regno_p): Likewise.
1410         (ix86_build_builtin_va_list): Likewise.
1411         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
1412         (function_arg_advance_ms_64): New.
1413         (function_arg_advance): Call it.
1414         (function_arg_ms_64): New.
1415         (function_arg): Call it.
1416         (function_value_ms_64): New.
1417         (ix86_function_value_1): Call it.
1418         (return_in_memory_ms_64): New.
1419         (ix86_return_in_memory): Call it.
1420         (setup_incoming_varargs_ms_64): New.
1421         (ix86_setup_incoming_varargs): Call it.
1422         (ix86_expand_prologue): Handle 64-bit stack probing.
1423         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
1424         (output_pic_addr_const): Likewise.
1425         (x86_this_parameter): Likewise.
1426         (x86_output_mi_thunk): Likewise.
1427         (x86_function_profiler): Likewise.
1428         (TARGET_STRICT_ARGUMENT_NAMING): New.
1429         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
1430         (TARGET_64BIT_MS_ABI): New.
1431         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
1432         * config/i386/i386.md (allocate_stack_worker): Remove.
1433         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
1434         describe the clobber of eax without a match_scratch.
1435         (allocate_stack_worker_postreload): Remove.
1436         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
1437         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
1438         (allocate_stack_worker_rex64_postreload): Remove.
1439         (allocate_stack): Handle 64-bit.
1440         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
1441         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
1442         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
1443         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
1444         (STANDARD_STARTFILE_PREFIX_1): Likewise.
1445         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
1446         * config.build (x86_64-*-mingw*): New host.
1447         * config.host (x86_64-*-mingw*): New host.
1448         * config.gcc (x86_64-*-mingw*): New target.
1449         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
1450
1451 2007-03-30  Richard Henderson  <rth@redhat.com>
1452             Kai Tietz  <kai.tietz@onevision.com>
1453
1454         * c-pragma.c (struct def_pragma_macro_value): New.
1455         (struct def_pragma_macro): New.
1456         (pushed_macro_table): New.
1457         (dpm_hash, dpm_eq): New.
1458         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
1459         (init_pragma): Install them.
1460         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1461
1462 2007-03-30  Anatoly Sokolov <aesok@post.ru>
1463
1464         * config/avr/avr.c (avr_override_options): Clear
1465         'flag_delete_null_pointer_checks'.
1466
1467 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
1468
1469         PR c++/26099
1470         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
1471         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
1472         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
1473         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
1474         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
1475         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
1476         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
1477         C++ extensions.
1478         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
1479
1480 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
1481
1482         * regmove.c: Move all of pass_stack_adjustments from here...
1483         * combine-stack-adj.c: ...to this new file.
1484         * Makefile.in: Add rules for combine-stack-adj.o.
1485
1486 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
1487
1488         PR tree-optimization/31383
1489         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
1490         to have the same length.
1491
1492 2007-03-30  Jan Hubicka  <jh@suse.cz>
1493
1494         PR middle-end/30700
1495         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
1496         availablility; add more sanity checking; ask varpool only about
1497         VAR_DECL.
1498
1499 2007-03-29  Richard Henderson  <rth@redhat.com>
1500
1501         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
1502         to decide, but __SIZEOF_LONG_LONG__.
1503
1504 2007-03-29  Richard Henderson  <rth@redhat.com>
1505
1506         * emutls.c (struct __emutls_array): New.
1507         (emutls_destroy): Use it instead of casting element 0 from void*.
1508         (__emutls_get_address): Likewise.
1509
1510 2007-03-29  Richard Henderson  <rth@redhat.com>
1511
1512         * varasm.c (initializer_constant_valid_p): Don't deny
1513         DECL_DLLIMPORT_P on functions.
1514
1515         * config/i386/cygming.h: Remove function declarations.
1516         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
1517         (ASM_OUTPUT_LABELREF): Remove.
1518         (COMMON_ASM_OP): Remove.
1519         (ASM_OUTPUT_COMMON): Remove.
1520         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
1521         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
1522         (ASM_DECLARE_FUNCTION_NAME): Likewise.
1523         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
1524         Rename from TARGET_ENCODE_SECTION_INFO.
1525         * config/i386/netware.h: Likewise.
1526         * config/i386/i386-protos.h: Update.
1527         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
1528         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
1529         (legitimate_constant_p): Reject dllimports.
1530         (dllimport_map, get_dllimport_decl): New.
1531         (legitimize_dllimport_symbol): New.
1532         (legitimize_address, ix86_expand_move): Use it.
1533         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
1534         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
1535         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
1536         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
1537         * config/i386/predicates.md (constant_call_address_operand): Only
1538         accept symbols; reject dllimport_p symbols.
1539         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
1540         i386_pe_maybe_record_exported_symbol.
1541         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
1542         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
1543         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
1544         trust the setting of DECL_DLLIMPORT_P.
1545         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
1546         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
1547         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
1548         tidy the argument scanning loop.
1549         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
1550         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
1551         (i386_pe_strip_name_encoding): Remove.
1552         (i386_pe_binds_local_p): New.
1553         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
1554         (i386_pe_output_labelref): Remove.
1555         (i386_pe_asm_output_aligned_decl_common): New.
1556         (i386_pe_maybe_record_exported_symbol): Rename from
1557         i386_pe_record_exported_symbol; check for dllexported symbols.
1558
1559 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
1560
1561         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
1562         add comment explaining why vsnprintf cannot be used.
1563
1564 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
1565
1566         PR tree-optimization/30666
1567         * tree.c (build_complex_type): When creating type names for DWARF2
1568         debug info, create TYPE_DECLs for TYPE_NAME instead of
1569         IDENTIFIER_NODEs.
1570         (build_common_tree_nodes_2): Use build_complex_type when building
1571         predefined complex types, to preserve canonical types.
1572
1573 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
1574
1575         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
1576         (noce_get_alt_condition): Look at it to determine whether to
1577         reverse the condition or not.
1578         (noce_get_condition): Substitute the truth for lies.
1579         (noce_find_if_block): Set the then_else_reversed field.
1580
1581 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
1582
1583         * config/fr30/fr30.md (movdi): Do not accept immediates as the
1584         destination of this insn.
1585         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
1586         than calling gen_rtx_SET directly.  Use r0 to hold the value of
1587         'address + 4' rather than a stack based temporary which can be
1588         mis-optimized away.
1589
1590 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1591
1592         * config/s390/s390.c (s390_secondary_input_reload_class,
1593         s390_secondary_output_reload_class): Functions removed.
1594         (s390_secondary_reload): New function.
1595         (TARGET_SECONDARY_RELOAD): Target macro defined.
1596         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
1597         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
1598         * config/s390/s390.md ("reload_outti", "reload_outdi",
1599         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
1600         "reload_out<mode>"): Expanders removed.
1601         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
1602         "reload<mode>_nonoffmem_out"): Expanders added.
1603
1604 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1605
1606         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
1607         SRC->DEST replacement failed anyway.
1608
1609 2007-03-28  Mike Stump  <mrs@apple.com>
1610
1611         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
1612         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
1613         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
1614
1615 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1616
1617         * config.gcc: Accept barcelona as a variant of amdfam10.
1618         * config/i386/i386.c (override_options): Likewise.
1619         * doc/invoke.texi: Likewise.
1620
1621 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
1622
1623         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
1624         offsets for BIT_FIELD_REF and COMPONENT_REF.
1625
1626 2007-03-28  Richard Guenther  <rguenther@suse.de>
1627
1628         * tree.c (is_global_var): Move ...
1629         * tree-flow-inline.h (is_global_var): ... here.
1630         * tree.h (is_global_var): Remove declaration.
1631
1632 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
1633
1634         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
1635         option.
1636         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
1637         * config/i386/i386.c (ix86_tune_features): Initialize new
1638         tuning option.
1639         * config/i386/predicates.md (promotable_binary_operator): Use
1640         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
1641
1642 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
1643
1644         PR target/31380
1645         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
1646
1647 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
1648
1649         * config/fr30/fr30.md (movsi_internal): Change destination
1650         constraint from m to V and add m to the end.
1651
1652 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1653
1654         * config/sh/sh.md (movsi_i): Fix type attribute.
1655
1656 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1657
1658         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
1659         (movsf_ie): Likewise.
1660
1661 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1662
1663         * config.gcc: Add sh4-300 to multilib.
1664         * config/sh/t-mlib-sh4-300: New file.
1665
1666 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1667
1668         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
1669         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
1670         fix_trunc<mode>di2.
1671         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
1672         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
1673         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
1674         "fixuns_trunctddi2"): Whitespace fix.
1675
1676 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1677
1678         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
1679         the definition of struct sh_args.
1680         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
1681         CALL_COOKIE_INT_REG_GET): Likewise.
1682
1683 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
1684
1685         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
1686         transformations are applied successfully.
1687
1688 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
1689
1690         * tree.c (tree_contains_struct): Permit 512 tree codes.
1691         * tree.h (tree_contains_struct): Ditto.
1692         (MAX_TREE_CODES): Ditto.
1693         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
1694         SPARE member to store remaining padding bits.
1695
1696 2007-03-27  Anatoly Sokolov <aesok@post.ru>
1697
1698         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
1699         architecture.
1700
1701 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
1702
1703         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
1704         * configure: Regenerate.
1705
1706         * configure: Regenerate using the correct version of autoconf.
1707
1708 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
1709
1710         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
1711         pointer regs.
1712         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
1713         regs to "__SP_L__" and "__SP_H__".
1714
1715 2007-03-27  Richard Guenther  <rguenther@suse.de>
1716
1717         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
1718         computations with it with a HOST_WIDE_INT variable.
1719
1720 2007-03-26  Mike Stump  <mrs@apple.com>
1721
1722         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
1723         objective-c-header, objective-c++-header and objc++-cpp-output
1724         support.
1725         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
1726
1727 2007-03-26  Richard Henderson  <rth@redhat.com>
1728
1729         PR target/31361
1730         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
1731         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
1732         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
1733         IX86_BUILTIN_PSRLQ128): New.
1734         (ix86_init_mmx_sse_builtins): Add them.
1735         (ix86_expand_builtin): Expand them.
1736         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
1737         operand 2 be TImode.
1738         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
1739         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
1740         _mm_srli_epi64): Mark __B const.
1741         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
1742         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
1743         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
1744         new two-vector shift builtins.
1745
1746 2007-03-26  Ian Lance Taylor  <iant@google.com>
1747
1748         PR tree-optimization/31345
1749         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
1750         [+INF, +INF(OVF)] into VARYING.
1751
1752 2007-03-26  Zack Weinberg  <zackw@panix.com>
1753
1754         * gengtype-parse.c: New file.
1755         * gengtype-yacc.y: Delete.
1756         * gengtype-lex.l: Don't include gengtype-yacc.h.
1757         Define YY_DECL and yyterminate appropriately for recursive
1758         descent parser.  yylval is now a string out-parameter to yylex.
1759         (HWS, EOID): New shorthand.
1760         (IWORD): Add a couple more types.
1761         (yylex): Add a setup stanza.  Remove the complex rules for
1762         detecting GTY'ed types and typedefs; replace with simple
1763         keyword detectors.  Adjust everything for the changed
1764         definition of yylval.  Ignore all pp-directives, not just #define.
1765         (yyerror): Delete.
1766         (parse_file): Rename yybegin; do not call yyparse.
1767         (yyend): New.
1768         * gengtype.c (xasprintf): Export again.
1769         (this_file): New.  Use everywhere __FILE__ was being used.
1770         (get_lang_bitmap): Special case types defined in gengtype.c.
1771         (do_typedef, new_structure): Suppress definition of certain types.
1772         (new_structure): Improve diagnostics of duplicate definitions.
1773         Make sure location_s is associated with input.h.
1774         (nreverse_pairs, define_location_structures): New functions.
1775         (main): Improve tagging of kludge types.  Remove old kludges
1776         for input.h types; use define_location_structures.
1777         * gengtype.h: Update prototypes.  Define token codes here.
1778         * Makefile.in: Remove all references to gengtype-yacc.
1779         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
1780         and gengtype.
1781         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
1782         add GTY((skip)) to the field that's only conditionally there.
1783         * doc/install.texi: Document that Bison is no longer required
1784         unless building treelang.
1785
1786         * gengtype.c: Don't include gtyp-gen.h.
1787         (srcdir): Declare here.
1788         (base_files, lang_dir_names): Allocate dynamically.
1789         (gt_files, num_gt_files, num_lang_dirs): New globals.
1790         (measure_input_list, read_input_line, read_input_list)
1791         (set_lang_bitmap): New functions.
1792         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
1793         simplify, relying on read_input_list to set up the bitmaps.
1794         (main): Arguments are no longer unused.  Check for correct number
1795         of command line arguments, set srcdir and srcdir_len, then call
1796         read_input_list, before doing anything else.  No need to worry
1797         about duplicates in main loop.
1798         * configure.ac: Simplify the calculation of all_gtfiles.
1799         Put language tags in there.  Don't set or substitute
1800         all_gtfiles_files_langs or all_gtfiles_files_frags.
1801         * Makefile.in: Revamp the way gengtype is invoked, now that it
1802         takes a file on its command line with a much simpler format.
1803         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
1804         (GTFILES): Remove duplicates and C source files.
1805         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
1806         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
1807         * configure: Regenerate.
1808
1809         * gengtype.h: Remove all type definitions to gengtype.c; leave
1810         only definitions of options_p, type_p, and pair_p as opaque
1811         pointers.  Update prototypes.
1812         * gengtype.c: Many type definitions moved here from gengtype.h.
1813         Consolidate type definitions at the top of the file.
1814         (xvasprintf): Delete.
1815         (xasprintf): Make static.
1816         (create_nested_pointer_option): Add 'next' parameter.
1817         (create_field_all, create_field_at): New functions.
1818         (create_field): Now a thin wrapper around create_field_all.
1819         (create_optional_field): Rename create_optional_field_ and add
1820         line argument.  Original name is now a macro which supplies
1821         __LINE__.
1822         (oprintf): Use vsnprintf directly.
1823         (close_output_files): Use fatal rather than perror/exit.
1824         (note_def_vec, note_def_vec_alloc): Use create_field_at.
1825         (main): Set progname.  Don't use exit.
1826         * gengtype-yacc.y (struct_fields): Use create_field_at.
1827         (option, optionseqopt): Delete.
1828         (optionseq): Consolidate productions from option here so we
1829         can use the first argument to create_option.
1830
1831         * gengtype-lex.l: Distinguish unions from structures in the
1832         token type.  Don't call find_structure; return the tag as a string.
1833         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
1834         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
1835         Reorganize typedef_struct production accordingly.
1836         Use create_nested_ptr_option.
1837         * gengtype.c (create_nested_ptr_option): New function.
1838         * gengtype.h: Declare it.
1839
1840         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
1841         (string_type): Don't declare.
1842         (do_scalar_typedef): Declare.
1843         (create_scalar_type): Update prototype.
1844         * gengtype.c (string_type): Make static.
1845         (scalar_nonchar, scalar_char): New.
1846         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
1847         (resolve_typedef): Use scalar_nonchar for error recovery.
1848         (create_scalar_type): Remove name_len field.  Return scalar_char
1849         or scalar_nonchar as appropriate.
1850         (adjust_field_type): Look at scalar_is_char boolean to decide whether
1851         to use string_type.
1852         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
1853         whenever possible.
1854         (main): Initialize scalar_char and scalar_nonchar before calling
1855         gen_rtx_next.
1856         * gengtype-lex.l: Adjust for removal of second argument to
1857         create_scalar_type.  Use yylval.s instead of yylval.t when
1858         returning SCALAR.
1859         * gengtype-yacc.y: Type of SCALAR is string.  Call
1860         create_scalar_type from type:SCALAR rule.  Adjust for removal of
1861         second argument to create_scalar_type.
1862
1863         * vec.h: Remove all #if IN_GENGTYPE blocks.
1864         Add comment saying that changes may require adjustments to gengtype.
1865         * gengtype.c: Don't include coretypes.h or tm.h.
1866         Add comment to inclusion of errors.h.
1867         (note_def_vec, note_def_vec_alloc): New functions.
1868         * gengtype.h: Declare new functions.
1869         * gengtype-lex.l: Don't include coretypes.h.
1870         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
1871         Delete.
1872         (update_lineno): Remove unnecessary prototype.
1873         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
1874         (VEC rule): Just return VEC_TOKEN.
1875         * gengtype-yacc.y (VEC_TOKEN): New token type.
1876         (type): Add a production for VEC(a,b).
1877         * Makefile.in: Update dependencies.
1878
1879         * gengtype-lex.l: Remove rules for parsing pointer-to-function
1880         typedefs that use the old PARAMS macro.
1881
1882         * gengtype-lex.l: Remove all rules and states relating to yacc
1883         input files.
1884         * gengtype-yacc.y: Similarly.
1885         * gengtype.c (note_yacc_type): Delete function.
1886         * gengtype.h: Update prototypes.
1887
1888 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
1889
1890         * tree-pretty-print.c (dump_generic_node): Report precision of
1891         unnamed integer types.
1892
1893 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
1894
1895         * ifcvt.c (noce_try_store_flag_constants): Don't check
1896         no_new_pseudos here.
1897         (noce_try_store_flag_constants): Don't check no_new_pseudos.
1898         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
1899         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
1900         noce_try_sign_mask): Likewise.
1901         (if_convert): Check no_new_pseudos here.
1902
1903         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
1904         Remove prototypes.
1905         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
1906         (noce_get_condition): Handle new then_else_reversed argument.
1907         (noce_init_if_info): Remove, fold into noce_find_if_block.
1908         (noce_process_if_block): Take a struct noce_if_info as the
1909         argument.  Don't set up one based on ce_if_info.  Update pointer
1910         references accordingly.
1911         (cond_move_process_if_block): Likewise.
1912         (process_if_block): Removed.
1913         (find_if_block): Removed.  Move functionality two new functions,
1914         noce_find_if_block and cond_exec_find_if_block.
1915         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
1916         blocks and the symmetric IF-ELSE-JOIN case.
1917         (cond_exec_find_if_block): Also new function mostly based on old
1918         find_if_block and process_if_block.
1919         (find_if_header): Replace find_if_block call with separately
1920         guarded calls to noce_find_if_block and cond_exec_find_if_block.
1921         (find_cond_trap): Update noce_get_condition call.
1922         (dead_or_predicable): Likewise.
1923
1924 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
1925
1926         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
1927         Remove.
1928         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
1929         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
1930         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
1931         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
1932         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
1933         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
1934         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
1935         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
1936         __builtin_ia32_psrad128 builtins.
1937
1938 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
1939
1940         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
1941         * config/i386/constraints.md
1942         (define_constraint "I"): Use IN_RANGE macro.
1943         (define_constraint "J"): Ditto.
1944         (define_constraint "K"): Ditto.
1945         (define_constraint "M"): Ditto.
1946         (define_constraint "N"): Ditto.
1947         (define_constraint "O"): Ditto.
1948         * config/i386/predicates.md
1949         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
1950         (define_predicate "const_0_to_3_operand"): Ditto.
1951         (define_predicate "const_0_to_7_operand"): Ditto.
1952         (define_predicate "const_0_to_15_operand"): Ditto.
1953         (define_predicate "const_0_to_63_operand"): Ditto.
1954         (define_predicate "const_0_to_255_operand"): Ditto.
1955         (define_predicate "const_1_to_31_operand"): Ditto.
1956         (define_predicate "const_2_to_3_operand"): Ditto.
1957         (define_predicate "const_4_to_7_operand"): Ditto.
1958
1959 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
1960
1961         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
1962         in SImode for save_world.
1963         * config/rs6000/altivec.md (save_world, restore_world): Convert to
1964         LR hard reg.
1965
1966 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
1967
1968         PR tree-optimization/30784
1969         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
1970         BIT_FIELD_REF.
1971
1972 2007-03-25  Revital Eres  <eres@il.ibm.com>
1973
1974         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
1975           Fold movement_possibility function into it.
1976
1977 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
1978
1979         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
1980         (load_macho_picbase_{si,di}): Convert to LR hard reg.
1981         (call_indirect_nonlocal_darwin64): Same.
1982         (call_nonlocal_darwin64): Same.
1983         (call_value_indirect_nonlocal_darwin64): Same.
1984         (call_value_nonlocal_darwin64): Same.
1985         (sibcall_nonlocal_darwin64): Same.
1986         (sibcall_value_nonlocal_darwin64): Same.
1987         (sibcall_symbolic_64): Same.
1988         (sibcall_value_symbolic_64): Same.
1989         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
1990         LR pseudo.
1991         (rs6000_emit_load_toc_table): Same.
1992         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
1993         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
1994         (mull_call): Same.
1995         (divss_call): Same.
1996         (divus_call): Same.
1997         (quoss_call): Same.
1998         (quous_call): Same.
1999         (load_toc_v4_pic_si): Same
2000         (load_toc_v4_PIC_1): Same.
2001         (load_toc_v4_PIC_1b): Same.
2002         (call_indirect_aix{32,64}): Same.
2003         (call_value_indirect_aix{32,64}): Same.
2004         (call): Same.
2005         (call_value): Same.
2006         (call_local{32,64}): Same.
2007         (call_value_local{32,64}): Same.
2008         (call_indirect_nonlocal_aix{32,64}): Same.
2009         (call_nonlocal_aix{32,64}): Same.
2010         (call_value_indirect_nonlocal_aix{32,64}): Same.
2011         (call_value_nonlocal_aix{32,64}): Same.
2012         (call_indirect_nonlocal_sysv<mode>): Same.
2013         (call_nonlocal_sysv<mode>): Same.
2014         (call_value_indirect_nonlocal_sysv<mode>): Same.
2015         (call_value_nonlocal_sysv<mode>): Same.
2016         (sibcall): Same.
2017         (sibcall_local{32,64}): Same.
2018         (sibcall_value_local{32,64}): Same.
2019         (sibcall_nonlocal_aix{32,64}): Same.
2020         (sibcall_value_nonlocal_aix{32,64}): Same.
2021         (sibcall_nonlocal_sysv<mode>): Same.
2022         (sibcall_value): Same.
2023         (sibcall_value_nonlocal_sysv<mode>): Same.
2024
2025 2007-03-24  Paul Brook  <paul@codesourcery.com>
2026
2027         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
2028         * config/arm/linux-eabi.h: Remove legacy syscall hack.
2029
2030 2007-03-24  Richard Henderson  <rth@redhat.com>
2031
2032         * config/ia64/constraints.md: New file.
2033         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
2034         satisfies_constraint_?.
2035         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
2036         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
2037         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
2038         ia64_output_mi_thunk): Likewise.
2039         (ia64_const_ok_for_letter_p): Remove.
2040         (ia64_const_double_ok_for_letter_p): Remove.
2041         (ia64_extra_constraint): Remove.
2042         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
2043         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
2044         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
2045         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
2046         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
2047         EXTRA_MEMORY_CONSTRAINT): Remove.
2048         * config/ia64/ia64.md: Include constriants.md.  Replace
2049         CONST_OK_FOR_? with satisfies_constraint_?.
2050
2051 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
2052             H.J. Lu  <hongjiu.lu@intel.com>
2053
2054         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
2055         DPD or BID name.
2056         (name macros): Use DPD_BID_NAME to convert names properly.
2057
2058         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
2059         decimal floating point format.
2060         (init_floating_libfuncs): Change decimal functions so that they
2061         have a "bid_" prefix if the decimal system uses the BID format,
2062         and "dpd_" prefix if the decimal system uses the DPD format.
2063         (init_interclass_conv_libfuncs): Ditto.
2064         (init_intraclass_conv_libfuncs): Ditto.
2065
2066         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
2067         using the BID format.
2068
2069         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
2070         whether we are using the BID decimal format.
2071         * configure: Regenerate.
2072
2073         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
2074         the compiler has decimal floating point enabled.  Define
2075         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
2076         instead of DPD.
2077
2078         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
2079         using the BID format.
2080
2081         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
2082         whether we are using the BID decimal format.
2083         * configure: Regenerate.
2084
2085         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
2086         the compiler has decimal floating point enabled.  Define
2087         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
2088         instead of DPD.
2089
2090         * doc/install.texi (--enable-decimal-float): Document BID and DPD
2091         options, and that it is enabled for i386/x86_64 systems.
2092
2093         * Makefile.in (enable_decimal_float): New.
2094         (DECNUMFMT): New.
2095         (DECNUMINC): Add  -I$(DECNUMFMT).
2096         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
2097         to $(DECNUMFMT) from $(DECNUM).
2098
2099         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
2100         Substitute enable_decimal_float.
2101         * configure: Regenerated.
2102
2103         PR other/30529
2104         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
2105         unsigned long.
2106
2107         * configure.ac: Enable decimal float for x86_64-*-linux*.
2108         * configure: Regenerated.
2109
2110         PR other/30530
2111         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
2112         decimal128ClearSign to flip and clear the sign bit in decimal128.
2113         (decimal_real_maxval): Set decimal128SetSign to set the sign
2114         bit in decimal128.
2115
2116 2007-03-23  Ian Lance Taylor  <iant@google.com>
2117
2118         * fold-const.c (fold_binary): Correct warning for X - c >= X.
2119
2120 2007-03-23  Ian Lance Taylor  <iant@google.com>
2121
2122         * tree-dump.c (dump_files): Correct comment.
2123
2124 2007-03-23  Ian Lance Taylor  <iant@google.com>
2125
2126         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
2127
2128 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
2129
2130         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
2131         in cfglayout mode.  Don't go into and out of cfglayout mode.
2132         Link the blocks in the order of the constructed traces.
2133         (rest_of_handle_tracer): Adjust call to tracer.
2134         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
2135         Don't go into cfglayout mode.
2136         (rtl_loop_done): Don't go out of cfglayout mode.
2137         * cfglayout.c (relink_block_chain): New function, split out from...
2138         (fixup_reorder_chain): ...here.  Remove redundant checking.
2139         (cfg_layout_finalize): Don't clear the header, footer, and aux
2140         fields here, move the code to do so to relink_block_chain.  Likewise
2141         for free_original_copy_tables.
2142         * rtl.h (tracer): Update prototype.
2143         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
2144         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
2145         mode.  Use relink_block_chain to serialize the CFG according to the
2146         new basic block order.  Move targetm.cannot_modify_jumps_p check from
2147         here...
2148         (gate_handle_reorder_blocks): ...to here.
2149         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
2150         from here...
2151         (gate_duplicate_computed_gotos): ...to here.
2152         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
2153         something always changes when going into and out of cfglayout mode.
2154         Perform an expensive cfg cleanup while going into cfglayout mode.
2155         Always update liveness information on HAVE_conditional_execution
2156         targets.  Reserialize the basic blocks and go out of cfglayout mode.
2157         * reg-stack.c: Include cfglayout.h.
2158         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
2159         the call to reorder_basic_blocks.
2160         * basic-block.h (reorder_basic_blocks): Update prototype.
2161         (relink_block_chain): New prototype.
2162         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
2163
2164 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
2165
2166         * config/mips/mips.md (type, hazard, *movdi_32bit,
2167         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
2168         *movhi_internal, *movqi_internal, *movsf_hardfloat,
2169         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
2170         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
2171         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
2172         applicable.
2173         (movcc): Change first xfer to multi.
2174         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
2175         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
2176         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
2177         config/mips/generic.md: Change reservations using "xfer" to use
2178         "mfc,mtc".
2179         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
2180         using match_operand.
2181         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
2182         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
2183         examining mode.
2184         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
2185
2186 2007-03-22  Richard Henderson  <rth@redhat.com>
2187
2188         * config/i386/i386.c: Remove unnecessary function declarations.
2189         Move targetm definition, and all related macros, to the end of
2190         the file.  Resort some functions to put definitions before uses.
2191         (ix86_attribute_table): Make static.  Move to end of file.
2192         (ix86_gimplify_va_arg): Make static.
2193
2194 2007-03-22  Richard Henderson  <rth@redhat.com>
2195
2196         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
2197         don't increase local_regparm with force_align_arg_pointer check.
2198         (ix86_function_sseregparm): Assert 32-bit.
2199         (type_has_variadic_args_p): New.
2200         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
2201         type_has_variadic_args_p.
2202         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
2203         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
2204         use memset instead.  Do maybe_vaarg check first; skip attribute
2205         tests if true; skip attribute tests for 64-bit.
2206         (construct_container): Remove TARGET_DEBUG_ARG.
2207         (function_arg_advance_32, function_arg_advance_64): Split out ...
2208         (function_arg_advance): ... from here.
2209         (function_arg_32, function_arg_64): Split out ...
2210         (function_arg): ... from here.
2211         (ix86_pass_by_reference): Tidy.
2212         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
2213         (function_value_32): New, from parts of ix86_function_value
2214         and ix86_value_regno.
2215         (function_value_64): New, from parts of ix86_function_value
2216         and ix86_libcall_value.
2217         (ix86_function_value_1): New.
2218         (ix86_function_value, ix86_libcall_value): Use it.
2219         (return_in_memory_32, return_in_memory_64): Split out ...
2220         (ix86_return_in_memory): ... from here.
2221         (ix86_struct_value_rtx): Skip for 64-bit.
2222         (ix86_libcall_value, ix86_value_regno): Remove.
2223         (setup_incoming_varargs_64): Split out ...
2224         (ix86_setup_incoming_varargs): ... from here.
2225         (ix86_va_start): Remove TARGET_DEBUG_ARG.
2226         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
2227         * config/i386/i386-protos.h (ix86_function_value): Remove.
2228         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
2229
2230 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2231
2232         PR other/23572
2233         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
2234         infinities not supported, otherwise emit warning if -Woverflow. On
2235         underflow, emit warning if -Woverflow.
2236         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
2237         and 0 otherwise.
2238         * real.h (real_from_string): Update declaration
2239
2240 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
2241             Richard Henderson  <rth@redhat.com>
2242
2243         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
2244         * calls.c (compute_argument_block_size, expand_call,
2245         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
2246         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
2247         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
2248         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
2249         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
2250         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
2251         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
2252         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
2253         Set to 1.
2254
2255 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
2256
2257         * c-incpath.c (add_sysroot_to_chain): New.
2258         (merge_include_chains): Add sysroot argument.  Call
2259         add_sysroot_to_chain if sysrooted.
2260         (register_include_chains): Update call to merge_include_chains.
2261         * doc/cppopts.texi: Document use of '=' in include directory
2262         arguments.
2263
2264 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
2265
2266         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
2267         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
2268         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
2269         insn pattern using X87MODEF12 mode macro.
2270
2271 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
2272
2273         * regmove.c (regmove_optimize): Use reg_mentioned_p
2274         instead of reg_overlap_mentioned_p for DST.
2275
2276 2007-03-21  Mike Stump  <mrs@apple.com>
2277
2278         * c.opt: Fixup for Objective-C/C++.
2279
2280 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
2281
2282         * explow.c (convert_memory_address): Fold memory reference when
2283         POINTERS_EXTEND_UNSIGNED < 0
2284
2285 2007-03-21  Richard Henderson  <rth@redhat.com>
2286
2287         PR target/31245
2288         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
2289         * config/i386/mmintrin.h (__m64): Likewise.
2290         * config/i386/xmmintrin.h (__m128): Likewise.
2291
2292 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2293
2294         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
2295         (VXWORKS_OS_CPP_BUILTINS): Define.
2296         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
2297         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
2298
2299 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2300
2301         * rtl.h (constant_pool_reference_p): Delete.
2302         (find_constant_src): Declare.
2303         * rtlanal.c (find_constant_src): New function.
2304         * simplify-rtx.c (constant_pool_reference_p): Delete.
2305         * config/i386/i386.md: Use find_constant_src instead of
2306         constant_pool_reference_p/avoid_constant_pool_reference pairs.
2307
2308 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2309
2310         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
2311         * c-cppbuiltin.c (c_cpp_builtins): Define them.
2312
2313 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
2314
2315         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
2316         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
2317         (arm_elf_asm_constructor): Use it.
2318         (arm_elf_asm_destructor): New function.
2319
2320 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
2321
2322         * jump.c (mark_jump_label): Treat SEQUENCE specially.
2323
2324 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
2325
2326         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
2327
2328 2007-03-19  Andrew Haley  <aph@redhat.com>
2329
2330         PR tree-optimization/31264
2331         * tree-vrp.c (register_edge_assert_for_1): Don't look though
2332         VIEW_CONVERT_EXPRs.
2333
2334 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
2335
2336         PR rtl-optimization/30907
2337         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
2338         (fwprop_init): Always call loop_optimizer_initialize.
2339         (fwprop_done): Always call loop_optimizer_finalize.
2340         (fwprop): We always have loop info now.
2341         (gate_fwprop_addr): Remove.
2342         (pass_fwprop_addr): Use gate_fwprop as gate.
2343
2344         PR rtl-optimization/30841
2345         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
2346         df_chain_alloc): Call df_reorganize_refs unconditionally.
2347         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
2348         refs_organized to refs_organized_size.
2349         (df_ref_create_structure): Use refs_organized_size instead of
2350         bitmap_size if refs had been organized, and keep refs_organized_size
2351         up-to-date.
2352         * df.h (struct df_ref_info): Change refs_organized to
2353         refs_organized_size.
2354         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
2355         bitmap_size.
2356
2357 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
2358
2359         * except.c (output_function_exception_table): Do not reference the
2360         EH personality routine for functions that do not require an
2361         exception table.
2362
2363 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
2364
2365         PR c/30762
2366         * c-typeck.c (convert_for_assignment): Call comptypes for
2367         RECORD_TYPE or UNION_TYPE.
2368
2369         PR inline-asm/30505
2370         * reload1.c (reload): Do invalid ASM checking after
2371         cleanup_subreg_operands.
2372
2373 2007-03-19  Jeff Law  <law@redhat.com>
2374
2375         * tree-cfg.c (find_taken_edge): Tighten conditions for
2376         optimizing computed gotos.
2377
2378 2007-03-19  Michael Matz  <matz@suse.de>
2379
2380         * builtins.c (expand_builtin_sync_operation,
2381         expand_builtin_compare_and_swap,
2382         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
2383         correctly.
2384
2385         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
2386         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
2387         for operand 3.
2388
2389 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2390
2391         * doc/tm.texi: Add brackets around the return type of
2392         TARGET_SECONDARY_RELOAD.
2393
2394 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2395         Richard Guenther  <rguenther@suse.de>
2396
2397         PR tree-optimization/31254
2398         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
2399         Use handled_component_p () where appropriate.  Continue
2400         propagating into the rhs if we propagated into an INDIRECT_REF
2401         on the lhs.
2402
2403 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2404
2405         * config/s390/s390.md (op_type attribute): RRR instruction type added.
2406         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
2407         (xde, xdee): Mode attributes adjusted to support DFP modes.
2408         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
2409         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
2410         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
2411         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
2412         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
2413         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2414         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
2415         numbers.
2416         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
2417         "movsf"): Insn definitions removed.
2418         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
2419         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
2420         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
2421         definitions added.
2422         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
2423         "reload_in<mode>", "reload_out<mode>"): Expander added.
2424         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
2425         Expander removed.
2426
2427 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2428
2429         * config/s390/s390.md: Only non-functional changes.  Renamed
2430         FPR mode macro to BFP all over the file.
2431
2432 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2433
2434         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
2435         (op_type attribute): RRF instruction type added.
2436         (fT0): New mode attribute.
2437         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2438         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
2439         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
2440         no secondary memory is needed when moving DFmode values between GPRs
2441         and FPRs.
2442
2443 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2444
2445         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
2446         inverted and documentation adjusted.
2447         ("mhard-dfp", "msoft-dfp"): New options.
2448         * config/s390/s390.c (s390_handle_arch_option): New architecture
2449         switch: z9-ec.
2450         (override_options): Sanity checks for the new options added.
2451         * config.gcc: New architecture switch: z9-ec.
2452         * config/s390/s390.h (processor_flags): PF_DFP added.
2453         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
2454         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
2455         when the bit is NOT set so remove it from the defaults.
2456
2457 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2458
2459         * genemit.c (main): Print include statement for dfp.h.
2460         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
2461         is not available.
2462
2463 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2464
2465         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
2466
2467 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
2468
2469         PR target/31022
2470         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
2471         instead of PATTERN.
2472
2473 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2474
2475         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
2476         attr_length_call, output_call, output_indirect_call): Cleanup
2477         formatting of targetm calls.
2478
2479 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2480
2481         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2482
2483 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2484
2485         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
2486         reservation, bypass and anti-bypass descriptions for these instructions.
2487         Update move patterns.
2488         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
2489         TYPE_FPSTORE.
2490
2491 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
2492
2493         * tree-vect-transform.c (get_initial_def_for_induction): Replace
2494         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
2495         (get_initial_def_for_reduction): Likewise.
2496
2497 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
2498
2499         Fix PR tree-optimization/29922
2500         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
2501         (get_representative): Removed.
2502         (value_dies_in_block_x): Update for rvuse removal.
2503         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
2504         (compute_antic_aux): Handle when PHI nodes appear in
2505         non-single-successors.
2506         (dump_bitmap_of_names): Removed.
2507         (compute_antic_safe): Renamed and removed rvuse calculation.
2508         Calculate only antic safe.
2509         (insert_into_preds_of_block): Remove assert.
2510         (execute_pre): Update for renamed functions.
2511         (defer_or_phi_translate_block): New function.
2512
2513 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2514
2515         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
2516         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
2517         typos.
2518         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
2519         Follow spelling conventions.
2520
2521         * tree-data-ref.h: Remove the prototype for analyze_array.
2522
2523 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
2524
2525         PR tree-optimization/31041
2526         * tree-vect-transform.c (get_initial_def_for_induction): Call
2527         force_gimple_operand.
2528
2529 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
2530
2531         * ipa-type-escape.c (look_for_casts) : Revert code to use
2532         handled_component_p due to ada test a-numaux.adb.
2533
2534 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2535
2536         * final.c (final_scan_insn): Alter the condition of a
2537         conditional trap if we have nonstandard CC.
2538
2539 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2540
2541         * configure.ac: Remove excess quoting from asm line 0 test.
2542         * configure: Rebuilt.
2543
2544 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2545
2546         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
2547         * c-common.c (convert_and_check): Move warning logic to...
2548         (warnings_for_convert_and_check): ...here. Define.
2549         * c-common.h (warnings_for_convert_and_check): Declare.
2550
2551 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2552
2553         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
2554         (output_call): Likewise.
2555
2556 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2557
2558         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
2559
2560 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2561
2562         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
2563
2564 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
2565
2566         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
2567         opteron, athlon-64 and athlon-fx processor_alias_table entries.
2568
2569 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
2570
2571         PR tree-optimization/31183
2572         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2573         Use double_int instead of unsigned int for representing access_strides.
2574         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
2575
2576 2007-03-16  Richard Guenther  <rguenther@suse.de>
2577
2578         PR tree-optimization/31146
2579         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
2580         to allow recursion of forward_propagate_addr_expr.
2581         (forward_propagate_addr_into_variable_array_index): Likewise.
2582         (forward_propagate_addr_expr): Likewise.
2583         (tree_ssa_forward_propagate_single_use_vars): Likewise.
2584         (forward_propagate_addr_expr_1): Recurse on simple copies
2585         instead of propagating into them.  Do so for useless conversions
2586         as well.
2587         (forward_propagate_addr_expr): Clean up unused statements after
2588         recursion.
2589
2590 2007-03-16  Richard Guenther  <rguenther@suse.de>
2591
2592         * builtins.c (expand_builtin_cexpi): Use the right argument
2593         for the expansion via cexp.
2594
2595 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2596
2597         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
2598         * configure: Rebuilt.
2599
2600 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2601
2602         PR debug/29906
2603         * dwarf2out.c (force_type_die): Adjust comment.
2604         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
2605
2606 2007-03-15  DJ Delorie  <dj@redhat.com>
2607
2608         * config/frv/predicates.md (minmax_operator): Don't check operands
2609         here.
2610
2611 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2612
2613         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
2614         Update constant estimates of number of iterations.
2615         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
2616         argument renamed to "realistic".
2617         (compute_estimated_nb_iterations): Removed.
2618         (record_niter_bound): New function.
2619         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
2620         call record_nonwrapping_iv with upper = false.
2621         (infer_loop_bounds_from_signedness): Pass upper argument to
2622         record_nonwrapping_iv.
2623         (estimate_numbers_of_iterations_loop): Do not call
2624         compute_estimated_nb_iterations.  Record estimate based on profile
2625         information.  Initialize the constant estimates of number of
2626         iterations.
2627         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
2628         estimates.
2629         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
2630         number of iterations is too small.
2631         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
2632         (EST_NOT_AVAILABLE): Removed.
2633         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
2634         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
2635         fields.
2636
2637 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2638
2639         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
2640         Handle NE_EXPR guards.
2641
2642 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2643
2644         PR c++/24924
2645         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
2646         Set also -pedantic-errors by default for the  preprocessor unless
2647         -fpermissive is given.
2648
2649 2007-03-15  Richard Guenther  <rguenther@suse.de>
2650
2651         PR middle-end/29719
2652         PR middle-end/31161
2653         * builtins.c (expand_builtin_cexpi): As a fallback if we
2654         don't have builtins for sincos or cexp create a function
2655         declaration for cexp and expand to a call to that.
2656         (expand_builtin_int_roundingfn): Always fall
2657         back to floor/ceil and its variants even if they may be
2658         not available.
2659
2660 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
2661
2662         PR middle-end/31159
2663         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
2664         jump tables, move the call to delete_dead_jumptables from here...
2665         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
2666         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
2667         don't allow merging of blocks that try_redirect_by_replacing_jump
2668         also does not handle when not optimizing.
2669
2670 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2671             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2672
2673         * config/i386/i386.md (x86_sahf_1): Correctly handle
2674         HAVE_AS_IX86_SAHF.
2675
2676 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2677
2678         PR target/31167
2679         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
2680         x86_64_general_operand as operand[2] predicate.  Remove "iF"
2681         from operand constraints and use "e" constraint instead.
2682         (*subti3_1, *subti3_1 splitter): Ditto.
2683         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
2684         operand[1] predicate.
2685
2686 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
2687
2688         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
2689         arrays, multiply the access strides by the size of the sub-array.
2690         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
2691
2692 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2693
2694         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
2695         the configured assembler supports the sahf mnemonic.
2696         * configure: Regenerate.
2697         * config.in: Regenerate.
2698
2699         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
2700         emit "sahf" or ".byte\t0x9e" as asm template.
2701
2702 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
2703
2704         PR 31018
2705         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
2706         option to replace hard coded TARGET_xxx in md file.
2707         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
2708         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2709         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
2710         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
2711         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
2712         (X86_TUNE_NOT_VECTORMODE): Ditto.
2713         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
2714         (TUNE_AVOID_VECTOR_DECODE): Ditto.
2715         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2716         (TUNE_SLOW_IMUL_IMM8): Ditto.
2717         (TUNE_MOVE_M1_VIA_OR): Ditto.
2718         (TUNE_NOT_UNPAIRABLE): Ditto.
2719         (TUNE_NOT_VECTORMODE): Ditto.
2720
2721         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
2722         options.
2723
2724         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
2725         tuning options instead of hard coded TARGET_xxx.
2726         (fix ssemode peephole2's): Ditto.
2727         (imul peephole2's): Ditto.
2728         (movsi_or): Ditto.
2729         (movdi_or_rex64): Ditto.
2730         (move peephole2): Ditto.
2731         (not peephole2's): Ditto.
2732
2733 2007-03-14  Dirk Mueller  <dmueller@suse.de>
2734
2735         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
2736         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
2737         * c-parser.c (c_parser_if_body): Always add an empty statement in case
2738         of empty body.
2739         * c-parser.c (c_parser_do_statement): Warn about empty body in
2740         do/while statement.
2741         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
2742         * doc/invoke.texi (-Wempty-body): Update documentation.
2743
2744 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2745
2746         PR c/21438
2747         * c-common.h (warn_for_div_by_zero): Declare.
2748         * c-common.c (warn_for_div_by_zero): Define.
2749         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
2750         warning.
2751
2752 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2753
2754         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
2755         to PREFIX and STANDARD_PREFIX.
2756
2757 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2758             Phil Edwards  <phil@codesourcery.com>
2759
2760         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
2761         (__gthread_once_t): Remove busy field for RTPs.
2762         (__GTHREAD_ONCE_INIT): Update accordingly.
2763
2764 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2765
2766         * doc/invoke.texi: Document VxWorks options.
2767
2768 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2769
2770         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
2771
2772 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
2773
2774         PR tree-optimization/30590
2775         * tree-nrv.c (tree_nrv): Check for the partial update of the
2776         return value.
2777
2778 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2779
2780         * flags.h (flag_random_seed): Remove declaration, in favor of...
2781         * toplev.h (get_random_seed, set_random_seed): ... these.
2782         * tree.c (get_file_function_name): Use the former.
2783         * opts.c (common_handle_option): Use the latter.
2784         * toplev.c
2785
2786 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
2787
2788         PR middle-end/31127
2789         * cse.c (cse_find_path): Do not bail out if a basic block that
2790         we already visited now becomes part of a path that starts at a
2791         different basic block.  Just disallow this, to make sure we
2792         visit each basic block at most once.
2793
2794 2007-03-13  Jan Hubicka  <jh@suse.cz>
2795
2796         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
2797         when profile esitmate is present, calls with very low frequency are
2798         cold.
2799
2800 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
2801
2802         PR tree-optimization/30730
2803         PR tree-optimization/26900
2804         * tree-ssa-loop-niter.c: Include gmp.h.
2805         (bounds): New type.
2806         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
2807         split_to_var_and_offset, determine_value_range,
2808         bound_difference_of_offsetted_base, refine_bounds_using_guard,
2809         bound_difference, bounds_add, bounds_negate,
2810         number_of_iterations_ne_max, dump_affine_iv): New functions.
2811         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
2812         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
2813         difference of initial and final value of control iv to validate
2814         results.
2815         (number_of_iterations_cond): Add loop parameter.  Determine bounds
2816         on the difference of the extremes of the control iv.  Add dumps.
2817         (expand_simple_operations): Handle phi nodes.
2818         (simplify_using_initial_conditions): Do not record used conditions.
2819         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
2820         Do not set additional_info.
2821         (implies_nonnegative_p, implies_ge_p): Removed.
2822         (derive_constant_upper_bound): Do not use parameter `additional'.
2823         (record_estimate): Parameter `additional' removed.  Parameter
2824         `i_bound' added.  Do not call derive_constant_upper_bound.
2825         (record_nonwrapping_iv): Use derive_constant_upper_bound to
2826         bound the number of iterations estimate.
2827         (estimate_numbers_of_iterations_loop): Pass the estimate from
2828         the number of iterations analysis to record_estimate.
2829         * tree.h (multiple_of_p): Declare.
2830         * tree-scalar-evolution.c (expression_expensive_p): Removed.
2831         (scev_const_prop): Do not check expression_expensive_p.
2832         * fold-const.c (multiple_of_p): Exported.
2833         * double-int.c (double_int_mask): Exported.
2834         * double-int.h (double_int_mask): Declare.
2835         * tree-flow.h (struct tree_niter_desc): Removed additional_info
2836         field.  Added max field.
2837
2838 2007-03-13  David Taylor  <taylor@candd.org>
2839
2840         PR driver/12448:
2841         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
2842         default -MQ.
2843
2844 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2845
2846         PR target/31123
2847         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
2848         two unamed patterns.
2849
2850 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
2851
2852         * config/i386/i386.opt (mcx16, msahf): New options.
2853         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
2854         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
2855
2856         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
2857         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
2858         Output -mcx16 and -msahf options when corresponding bit is set.
2859
2860         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
2861         and -msahf options.
2862
2863 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2864
2865         * configure.ac: Test for assembler tolerance to # 0 "".
2866         * configure, config.in: Rebuilt.
2867         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
2868
2869 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
2870
2871         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
2872
2873         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
2874         (handle_syscall): Handle direct system calls.
2875         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
2876
2877 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2878
2879         * doc/invoke.texi: Fix cpp.info cross-reference.
2880         * doc/passes.texi: Fix gcc.info cross-reference.
2881
2882 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
2883
2884         PR tree-optimization/30835
2885         * lambda-code.c (can_convert_to_perfect_nest): Check whether
2886         bb_for_stmt is not NULL before accessing it.
2887
2888 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
2889
2890         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
2891         some multilibs.
2892
2893 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2894
2895         PR 30635
2896         * doc/install.texi: Document --enable-stage1-languages
2897
2898 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
2899
2900         * tree-pass.h (pass_into_cfg_layout_mode,
2901         pass_outof_cfg_layout_mode): Declare.
2902         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
2903         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
2904         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
2905         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
2906
2907 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
2908
2909         * c-decl.c (warn_variable_length_array): New function.
2910         Refactored from grokdeclarator to handle warn_vla
2911         and handle unnamed array case.
2912         (grokdeclarator): Refactored VLA warning case.
2913         * c.opt (Wvla): New flag.
2914         * doc/invoke.texi (Wvla): New warning.
2915
2916 2007-03-12  Richard Henderson  <rth@redhat.com>
2917
2918         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
2919         (TARGET_SECTION_TYPE_FLAGS): New.
2920
2921 2007-03-12  Richard Henderson  <rth@redhat.com>
2922
2923         * config/darwin.c (machopic_reloc_rw_mask): New.
2924         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
2925         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
2926
2927 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
2928
2929         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
2930         * cppdefault.h (cpp_PREFIX): Document.
2931         (cpp_PREFIX_len): Likewise.
2932         (cpp_EXEC_PREFIX): New variable.
2933         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
2934         * c-incpath.c (add_standard_paths): Correct logic for relocating
2935         paths within prefix.
2936
2937 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
2938
2939         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
2940         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
2941         mode macro.
2942         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
2943         fix_truncdfdi_sse using SSEMODEF mode macro.
2944         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
2945         fix_truncdfsi_sse using SSEMODEF mode macro.
2946         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
2947         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
2948
2949 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
2950
2951         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
2952         elfos.h to tm_file.
2953
2954 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
2955
2956         * tree.h : Add multiple_of_p declaration.
2957         * fold-const.c (multiple_of_p): Make multiple_of_p public.
2958         * ipa-type-escape.c (results_of_malloc): Redundant.
2959         (visited_stmts): New. Visited stmt for walk_use_def_chains.
2960         (cast_type): Extended with new members.
2961         (check_cast): Returns cast_type.
2962         (cast): New structure for data of walk_use_def_chains.
2963         (is_malloc_result, is_cast_from_non_pointer_1,
2964         is_cast_from_non_pointer,
2965         is_array_access_through_pointer_and_index): New functions.
2966         (look_for_casts): Returns cast types.
2967         (check_call): Returns void.
2968         (okay_pointer_operation): Use support of pointer plus index,
2969         pointer plus constant and allow all multiplications.
2970
2971 2007-03-11  Richard Guenther  <rguenther@suse.de>
2972
2973         PR tree-optimization/31115
2974         * tree-vrp.c (extract_range_from_binary_expr): Make sure
2975         the shift count is positive and non-anti-range for RSHIFT_EXPR.
2976         A shift count of zero is not special as with *_DIV_EXPR.
2977         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
2978         direction.
2979
2980 2007-03-11  Ian Lance Taylor  <iant@google.com>
2981
2982         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
2983         the *_DIV_EXPR codes correctly with overflow infinities.
2984
2985 2007-03-11  Ira Rosen  <irar@il.ibm.com>
2986
2987         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
2988         indicate success/failure of the analysis. Add negation to subtrahend
2989         in case of subtraction. Fail if both operands contain constants.
2990         (create_data_ref): Fail if analyze_offset fails.
2991
2992 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
2993
2994         * config/i386/i386.md (frndintxf2): Rename to ...
2995         (rintxf2): ... this. Remove expander having same name.
2996         (rintsf2, rintdf2): Implement using SSEMODEF macro.
2997         (roundsf2, rounddf2): Ditto.
2998         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
2999         (lround<mode>di2, lround<mode>si2): Ditto.
3000
3001 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
3002
3003         * lower-subreg.c: Include except.h.
3004         (decompose_multiword_subregs): Verify that the only control flow
3005         insns we can split are loads to multi-words pseudos.
3006         Handle breaking such blocks after splitting, instead of calling
3007         find_many_sub_basic_blocks.
3008
3009         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
3010         on the new basic block.  Add a lengthy comment explaining why we
3011         thought this was necessary.
3012         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
3013
3014 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
3015
3016         PR c++/30924
3017         * tree.c (walk_type_fields): Recurse into the element type of
3018         ARRAY_TYPEs if there is a pointer set.
3019
3020 2007-03-10  Dirk Mueller  <dmueller@suse.de>
3021
3022         * c-common.c (warn_logical_operator): Fix condition.
3023
3024 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
3025
3026         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
3027         quotation mark.
3028         * config/darwin.c (machopic_select_section): Remove superfluous
3029         argument in call to categorize_decl_for_section.  Remove unused
3030         variable shlib.
3031
3032 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
3033
3034         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
3035         defined.
3036         * configure: Regenerate.
3037
3038 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
3039
3040         PR target/31101
3041         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
3042         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
3043         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
3044         Add LABEL_NUSES to emitted label.
3045         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
3046         branch probability value to emitted jump insn.
3047         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
3048         Do not check life information and do not re-arrange input operands
3049         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
3050
3051 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3052
3053         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
3054         the change of decode_asm_operands.
3055
3056 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3057
3058         * mode-switching.c (create_pre_exit): Skip blockage insn.
3059
3060 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
3061
3062         * tree-pass.h (TODO_update_smt_usage): Remove.
3063         Update all users.
3064         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
3065         argument SOME.
3066         Update all users.
3067
3068 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3069
3070         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
3071         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
3072         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
3073         SOM target.
3074
3075 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
3076
3077         * gcc.c: Document %{, in big comment at top.
3078         (input_suffix_matches): Remove special handling for .s and
3079         .S.
3080         (input_spec_matches): New.
3081         (handle_braces): Handle %{,.
3082         (validate_switches): ',' indicates a value which is not a switch.
3083         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
3084         to detect assembler input.
3085         * config/i386/sol2.h (CPP_SPEC): Likewise.
3086         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
3087         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
3088         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
3089         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
3090         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
3091         -m64 causes deployment target to default to 10.5.
3092         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
3093
3094 2007-03-09  Richard Henderson  <rth@redhat.com>
3095
3096         PR target/26090
3097         * target.h (targetm.asm.out.reloc_rw_mask): New.
3098         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
3099         (TARGET_ASM_OUT): Use it.
3100         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
3101         * varasm.c (categorize_decl_for_section): Remove shlib argument;
3102         use the new reloc_rw_mask target hook instead.
3103         (default_section_type_flags_1): Merge into...
3104         (default_section_type_flags): ... here.
3105         (decl_readonly_section_1): Merge into...
3106         (decl_readonly_section): ... here.
3107         (default_elf_select_section_1): Merge into...
3108         (default_elf_select_section): ... here.
3109         (default_unique_section_1): Merge into...
3110         (default_unique_section): ... here.
3111         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
3112         (default_select_rtx_section): Use it.
3113         (default_elf_select_rtx_section): Likewise.
3114         * output.h: Update to match.
3115         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
3116         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
3117         (TARGET_ASM_RELOC_RW_MASK): New.
3118         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
3119         to categorize_decl_for_section.
3120         (x86_64_elf_unique_section): Likewise.
3121         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
3122         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
3123         (TARGET_ASM_RELOC_RW_MASK): New.
3124         * config/ia64/ia64.c (ia64_rwreloc_select_section,
3125         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
3126         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
3127         (TARGET_RWRELOC): Remove.
3128         (ia64_section_type_flags): Adjust call to default_section_type_flags.
3129         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
3130         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
3131         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
3132         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
3133         (rs6000_xcoff_select_section): Use decl_readonly_section.
3134         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
3135         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
3136         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
3137         (TARGET_SECTION_TYPE_FLAGS): Remove.
3138         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
3139
3140 2007-03-09  Roger Sayle  <roger@eyesopen.com>
3141
3142         * fold-const.c (fold_comparison): Remove compile-time evaluation of
3143         complex constant equality/inequality comparisons for here.
3144         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
3145         known at compile-time or can be simplified to a scalar comparison.
3146         (fold_relational_const): Move compile-time evaluation of complex
3147         constant equality/inequality comparisons to here.
3148
3149 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3150
3151         PR rtl-optimization/30643
3152         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
3153         dest_addr_elt.
3154         (fold_rtx): Recurse, like before 2006-11-03.
3155
3156 2007-03-09  DJ Delorie  <dj@redhat.com>
3157
3158         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
3159         m32c-pragma.o.
3160
3161 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
3162
3163         PR tree-optimization/30375
3164         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
3165         LHS of statements is not the same.
3166         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
3167
3168 2007-03-09  Chao-ying Fu  <fu@mips.com>
3169
3170         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
3171         REV 2.
3172         * doc/invoke.texi (-mdspr2): Document new option.
3173         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
3174         New unspec for DSP REV 2.
3175         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
3176         these instructions are extended in DSP REV 2.
3177         (mips-dspr2.md): Include.
3178         * config/mips/mips.opt (mdspr2): New option.
3179         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
3180         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
3181         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
3182         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
3183         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
3184         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
3185         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
3186         and 2 builtins.
3187         (bdesc_map): Add one field of unsupported_target_flags.
3188         (bdesc_arrays):  Update entries to have extra fields.  Add
3189         dsp_32only_bdesc.
3190         (mips_init_builtins): Initialize new function types.
3191         Check unsupported_target_fileds to filter out builtins.
3192         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
3193         TARGET_DSPR2.
3194         (ASM_SPEC): Pass mdspr2 to the assembler.
3195         * config/mips/mips-dspr2.md: New file.
3196
3197 2007-03-09  Sa Liu  <saliu@de.ibm.com>
3198
3199         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
3200
3201 2007-03-09  Ian Lance Taylor  <iant@google.com>
3202
3203         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
3204         argument) like -Wstrict-overflow=2.
3205         * doc/invoke.texi (Warning Options): Update documentation.
3206
3207 2007-03-09  Dirk Mueller  <dmueller@suse.de>
3208
3209         PR c++/17946
3210         * doc/invoke.texi (-Wlogical-op): Document.
3211         * common.opt (-Wlogical-op): New.
3212         * c-common.h (warn_logical_operator): Declare.
3213         * c-common.c (warn_logical_operator): Define.
3214         * c-typeck.c (parser_build_binary_op): Call
3215         warn_logical_operator.
3216
3217 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3218
3219         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
3220         * final.c (final_scan_insn): Test for non-"" file name.
3221
3222 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
3223
3224         * doc/loop.texi: Document the Omega linear constraints solver.
3225         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
3226         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
3227         omega-hash-table-size, omega-max-keys, and
3228         omega-eliminate-redundant-constraints.
3229         * tree-pass.h (pass_check_data_deps): Declared.
3230         * omega.c: New.
3231         * omega.h: New.
3232         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
3233         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
3234         pass_check_data_deps): New.
3235         * tree-data-ref.c (init_data_ref): Remove declaration.
3236         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
3237         (analyze_array): Renamed init_array_ref, move up initializations.
3238         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
3239         Removed arguments that are set to NULL.
3240         (analyze_indirect_ref): Correct indentation, correct call to
3241         init_pointer_ref.
3242         (object_analysis): Call init_array_ref instead of analyze_array.
3243         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
3244         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
3245         of DR_ACCESS_FNS_ADDR.
3246         (init_omega_eq_with_af, omega_extract_distance_vectors,
3247         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
3248         ddr_consistent_p): New.
3249         (compute_affine_dependence): Check consistency of ddrs when
3250         flag_check_data_deps is passed.
3251         (analyze_all_data_dependences): Uncomment.
3252         (tree_check_data_deps): New.
3253         * tree-data-ref.h: Include omega.h.
3254         (DR_ACCESS_FNS_ADDR): Removed.
3255         (data_dependence_relation): Add inner_loop.
3256         (DDR_INNER_LOOP): New.
3257         * common.opt (fcheck-data-deps): New.
3258         * tree-flow.h (tree_check_data_deps): Declare.
3259         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
3260         (OBJS-common): Depend on omega.o.
3261         (omega.o): Define.
3262         * passes.c (pass_check_data_deps): Scheduled.
3263         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
3264         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
3265         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
3266         PARAM_VECT_MAX_VERSION_CHECKS,
3267         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
3268
3269 2007-03-09  Richard Guenther  <rguenther@suse.de>
3270
3271         PR tree-optimization/30904
3272         PR middle-end/31058
3273         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
3274         the same way as *_DIV_EXPR.
3275
3276 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3277
3278         * recog.c (decode_asm_operands): No mixed declarations and code.
3279
3280 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3281
3282         * rtl.def (ASM_INPUT): Add location.
3283         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
3284         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
3285         (decode_asm_operands): Add loc operand.
3286         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
3287         * stmt.c (expand_asm): Rename to...
3288         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
3289         gen_rtx_ASM_INPUT_loc.
3290         (expand_asm_expr): Adjust.
3291         * recog.c (decode_asm_operands): Add loc operand.
3292         (check_asm_operands, extract_insn): Adjust.
3293         * reload1.c (maybe_fix_stack_asms): Likewise.
3294         * final.c (asm_insn_count): Likewise.
3295         (final_scan_insn): Output # line before and after asm.
3296
3297 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
3298
3299         * tree-ssa-structalias.c (variable_info): Remove
3300         finished_solution.
3301         (new_var_info): Ditto.
3302         (shared_bitmap_info_t): New structure.
3303         (shared_bitmap_table): New variable.
3304         (shared_bitmap_hash): New function.
3305         (shared_bitmap_eq): Ditto
3306         (shared_bitmap_lookup): Ditto.
3307         (shared_bitmap_add): Ditto.
3308         (merge_smts_into): Change to take bitmap directly.
3309         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
3310         (init_alias_vars): Init shared bitmap hashtable.
3311         (delete_points_to_sets): Delete shared bitmap hashtable.
3312         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
3313         is_aliased removal as a change that was still necessary was
3314         deleted.
3315
3316 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
3317
3318         * config/i386/i386.h (override_options): Conditionally disable
3319         x86_sahf for 64bit targets only.
3320
3321 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3322
3323         PR C/31072
3324         * c-decl.c (merge_decls): Don't call make_var_volatile.
3325         * varasm.c (make_var_volatile): Remove.
3326         * output.h (make_var_volatile): Remove.
3327
3328 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
3329
3330         PR tree-optimization/31085
3331         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
3332
3333 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3334
3335         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
3336         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
3337         ATTR_CONST_NOTHROW_LIST.
3338
3339         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
3340         FIX_TRUNC_EXPR.
3341
3342 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
3343
3344         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
3345
3346 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
3347
3348         PR 31013
3349         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
3350         is declared.
3351         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
3352         passed, use shared libgcc.
3353
3354 2007-03-08  Roger Sayle  <roger@eyesopen.com>
3355
3356         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
3357         instead of calling build2 with a GIMPLE_MODIFY_STMT.
3358         (honor_protect_cleanup_actions, lower_try_finally_switch):
3359         Likewise.
3360         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
3361         ifc_temp_var): Likewise.
3362         * tree-inline.c (setup_one_parameter): Likewise.
3363         * tree-mudflap.c (mf_decl_cache_locals,
3364         mf_build_check_statement_for): Likewise.
3365         * tree-nested.c (init_tmp_var, save_tmp_var,
3366         finalize_nesting_tree_1): Likewise.
3367         * tree-outof-ssa.c (insert_copy_on_edge,
3368         insert_backedge_copies): Likewise.
3369         * tree-profile.c (tree_gen_edge_profiler,
3370         tree_gen_ic_profiler): Likewise.
3371         * tree-scalar-evolution.c (scev_const_prop): Likewise.
3372         * tree-sra.c (sra_build_assignment): Likewise.
3373         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
3374         * tree-ssa-math-opts.c (insert_reciprocals,
3375         execute_cse_sincos_1): Likewise.
3376         * tree-tailcall.c (adjust_accumulator_values,
3377         adjust_return_value): Likewise.
3378         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
3379         * tree-vect-transform.c (vect_create_data_ref_ptr,
3380         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
3381         vect_create_epilog_for_reduction, vectorizable_reduction,
3382         vectorizable_call, vectorizable_conversion,
3383         vectorizable_assignment, vectorizable_operation,
3384         vectorizable_type_demotion, vect_gen_widened_results_half,
3385         vect_permute_store_chain, vectorizable_store,
3386         vect_setup_realignment, vect_permute_load_chain,
3387         vectorizable_load, vectorizable_condition,
3388         vect_create_cond_for_align_checks): Likewise.
3389         * tree-vrp.c (build_assert_expr_for): Likewise.
3390
3391 2007-03-08  Ian Lance Taylor  <iant@google.com>
3392
3393         * tree-vrp.c: Include "intl.h".
3394         (usable_range_p): New static function.
3395         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
3396         overflowed values, juts set *strict_overflow_p.
3397         (compare_values): Only return -2 if one of the operands is not a
3398         constant.
3399         (compare_ranges): Call usable_range_p.
3400         (compare_range_with_value): Likewise.
3401         (vrp_evaluate_conditional_warnv): Rename from
3402         vrp_evaluate_conditional.  Make static.  Change all callers.
3403         (vrp_evaluate_conditional): New function.
3404         (simplify_div_or_mod_using_ranges): Issue warning about reliance
3405         on signed overflow.
3406         (simplify_abs_using_ranges): Likewise.
3407         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
3408         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
3409         within_stmt parameter.
3410         * tree-ssa-propagate.c (fold_predicate_in): Update call to
3411         vrp_evaluate_conditional.
3412         * tree-ssa-threadedge.c
3413         (record_temporary_equivalences_from_stmts_at_dest): Change
3414         simplify parameter to take a second tree parameter.
3415         (simplify_control_stmt_condition): Likewise.
3416         (thread_across_edge): Likewise.
3417         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3418         (thread_across_edge): Likewise.
3419         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
3420
3421 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
3422
3423         * config/i386/i386.h (TARGET_SAHF): New define.
3424         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
3425         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
3426         (x86_sahf): New global variable.
3427         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
3428         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
3429         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
3430         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
3431         for 64-bit.
3432         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
3433         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
3434         when expanding fcomi/sahf based tests.
3435         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
3436         expanding sahf based alternative. Emit sahf based sequence when
3437         optimizing for code size.
3438         * config/i386/i386.md (x86_sahf_1): Do not disable for
3439         TARGET_64BIT, enable for TARGET_SAHF.
3440
3441 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
3442
3443         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
3444         spurious whitespace from error message.
3445
3446 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
3447
3448         PR c++/30852
3449         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
3450
3451 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
3452
3453         * c-decl.c (grokdeclarator): Disable warnings for anonymous
3454         bitfields.
3455         * tree-sra.c (instantiate_element): Propagate disabled warnings
3456         from the element itself to the created variable.
3457
3458 2007-03-07  Richard Henderson  <rth@redhat.com>
3459
3460         PR target/30848
3461         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
3462         silently fix up the stack in the case of a missing register.
3463
3464 2007-03-07  Paul Brook  <paul@codesourcery.com>
3465
3466         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
3467
3468 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
3469
3470         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
3471         New.
3472         (phase1_vrs): Use them.
3473         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
3474         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
3475         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
3476         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
3477         __gnu_Unwind_Restore_WMMXC if required.
3478         (_Unwind_VRS_Pop): Implement iWMMXt support.
3479         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
3480         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
3481         gnu_Unwind_Save_WMMXC): Define.
3482
3483 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3484
3485         * config/vxworks.h (vxworks_override_options): Declare.
3486         (VXWORKS_OVERRIDE_OPTIONS): Use it.
3487         * config/vxworks.c: Include target.h and toplev.h.
3488         (vxworks_override_options): New function.
3489         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
3490
3491 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3492
3493         * config/s390/s390.c (override_options): Don't emit an error when
3494         -mstack-size is used without providing -mstack-guard.
3495         (s390_emit_prologue): Choose stack_guard value automatically if not
3496         provided via command line.
3497         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
3498
3499 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3500
3501         * config/i386/i386.c (output_set_got): Add a GOT initialization
3502         sequence for VxWorks PIC.
3503         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
3504         around labels as well as symbols.  Use gotoff_operand instead
3505         of local_symbolic_operand.
3506         (legitimize_pic_address): Use gotoff_operand instead of
3507         local_symbolic_operand.  Use @GOT accesses for labels as
3508         well as symbols.
3509         (ix86_output_addr_diff_elt): Use PC-relative rather than
3510         GP-relative offsets for VxWorks PIC.
3511         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
3512         no_new_pseudos.  Check whether the returned register is op0.
3513         * config/i386/i386.md (tablejump): Use PC-relative rather than
3514         GP-relative offsets for VxWorks PIC.
3515         * config/i386/predicates.md (gotoff_operand): New predicate.
3516
3517 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3518
3519         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
3520         before defining.
3521         * config/vxworks-dummy.h: New file.
3522         * config/i386/i386.h: Include it.
3523
3524 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
3525
3526         * dwarf2out.c (is_inlined_entry_point): New
3527         (add_high_low_attributes): Emit DW_AT_entry_pc along with
3528         DW_AT_ranges if the first subblock is the entry point.
3529
3530 2007-03-06  David Daney  <ddaney@avtrex.com>
3531
3532         * doc/install.texi (mips-*-*): Change recommended binutils
3533         version.
3534
3535 2007-03-06  Anatoly Sokolov <aesok@post.ru>
3536
3537         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
3538         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
3539         devices.
3540         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3541         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3542
3543 2007-03-06  Jan Hubicka  <jh@suse.cz>
3544
3545         * errors.h (warning, error, fatal, internal_error): Mark as cold.
3546         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
3547         are hot.
3548         (probably_cold_bb_p): Cold functions are cold.
3549         (probably_never_executed_bb_p): Cold functions are cold.
3550         (tree_bb_level_predictions): Predict calls to cold functions as not
3551         taken.
3552         (compute_function_frequency): Check hot/cold attributes.
3553         * function.h (function_frequency): Update comments.
3554         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
3555         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
3556         (c_common_att): Add cold and hot.
3557
3558         * doc/extend.texi (hot,cold attributes): Document.
3559
3560 2007-03-06  Andrew Haley  <aph@redhat.com>
3561
3562         * function.c (expand_function_end): Move blockage to just after we
3563         emit the label for the naked return from the function.
3564
3565 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3566
3567         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
3568         before redefining.
3569
3570 2007-03-06  Jan Hubicka  <jh@suse.cz>
3571
3572         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
3573         loaded for constant large models.  Non-large 64bit PIC can do.
3574         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
3575         * cmodel.h: Add LARGE PIC.
3576         * i386.md (UNSPEC_PLTOFF): New.
3577         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
3578         needed.
3579         (*call_1_rex64): Disable for large models.
3580         (*call_1_rex64_large): New.
3581         (*call_value_1_rex64): Disable for large models.
3582         (*call_value_1_rex64_large): New.
3583         (set_rip_rex4): New.
3584         (set_got_offset_rex64): New.
3585         * predicates.md (constant_call_address_operand): For large model
3586         constant calls are not possible.
3587         * i386-protos.h (construct_plt_address): Declare.
3588         * i386.c (override_options): Accept large models.
3589         (ix86_expand_prologue): Expand large PIC GOT pointer load.
3590         (legitimate_constant_p): Add new UNSPECs.
3591         (legitimate_pic_operand_p): Likewise.
3592         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
3593         (legitimize_pic_address): Do easy RIP relative way for TLS only for
3594         non-large model.
3595         (output_pic_addr_const): Add PLTOFF.
3596         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
3597         (ix86_expand_move): Legitimize pic address when in PIC mode.
3598         (construct_plt_address): New function.
3599         (ix86_expand_call): Offload the address to register and use GOT pointer
3600         for large model.
3601         * invoke.texi (mcmodel=large): Update documentation.
3602
3603 2007-03-06  Richard Henderson  <rth@redhat.com>
3604
3605         * config/i386/i386.c (x86_use_leave, x86_push_memory,
3606         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
3607         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
3608         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
3609         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
3610         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
3611         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
3612         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
3613         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
3614         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
3615         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3616         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
3617         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3618         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3619         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
3620         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
3621         x86_schedule, x86_use_bt, x86_pad_returns,
3622         x86_use_xchgb): Merge into ...
3623         (ix86_tune_features): ... here.  New array.
3624         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3625         x86_bswap): Merge into ...
3626         (ix86_arch_features): ... here.  New array.
3627         (x86_3dnow_a): Remove.
3628         (x86_accumulate_outgoing_args): Make static.
3629         (x86_arch_always_fancy_math_387): Make static.
3630         (ix86_tune_mask, ix86_arch_mask): Move ...
3631         (override_options): ... to local variables here.  Apply the
3632         appropriate mask to each element of ix86_arch_features and
3633         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
3634         as were done in the old macros.
3635         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
3636         * config/i386/i386.h (x86_use_leave, x86_push_memory,
3637         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
3638         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
3639         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
3640         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
3641         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
3642         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
3643         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
3644         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
3645         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
3646         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3647         x86_accumulate_outgoing_args, x86_prologue_using_move,
3648         x86_epilogue_using_move, x86_decompose_lea,
3649         x86_arch_always_fancy_math_387, x86_shift1,
3650         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3651         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3652         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
3653         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3654         x86_use_incdec, x86_pad_returns, x86_bswap,
3655         x86_partial_flag_reg_stall): Remove.
3656         (enum ix86_tune_indices): New.
3657         (ix86_tune_features): New.
3658         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
3659         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
3660         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
3661         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
3662         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
3663         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
3664         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
3665         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
3666         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
3667         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
3668         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
3669         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
3670         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
3671         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
3672         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
3673         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
3674         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
3675         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
3676         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
3677         TARGET_EXT_80387_CONSTANTS): Use it.
3678         (enum ix86_arch_indices): New.
3679         (ix86_arch_features): New.
3680         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
3681         TARGET_BSWAP): Use it.
3682         (ix86_tune_mask, ix86_arch_mask): Remove.
3683
3684 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
3685
3686         PR bootstrap/31020
3687         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
3688         Define using $${sysroot_headers_suffix}.
3689         * configure: Regenerate.
3690         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
3691         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
3692         defined.
3693         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
3694         * gcc.c (print_sysroot_headers_suffix): New.
3695         (option_map): Include --print-sysroot-headers-suffix.
3696         (display_help): Mention -print-sysroot-headers-suffix.
3697         (process_command): Handle -print-sysroot-headers-suffix.
3698         (do_spec_1): Append multilib directory to include-fixed path if
3699         sysroot suffixes in use.
3700         (main): Handle -print-sysroot-headers-suffix.
3701         * Makefile.in (start.encap): Don't depend on xlimits.h
3702         (xlimits.h): Remove.
3703         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
3704         limits.h for each multilib in fixinc_list.
3705         (fixinc_list, s-fixinc_list): New.
3706         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
3707         generate them for each multilib in fixinc_list.
3708         (stmp-fixproto): Use include-fixed.  Run fixproto for each
3709         multilib in fixinc_list.
3710         (mostlyclean): Don't remove xlimits.h.
3711         (clean): Remove include-fixed.
3712         (real-install-headers-tar, real-install-headers-cpio,
3713         real-install-headers-cp): Don't copy include, only include-fixed.
3714         (install-mkheaders): Depend on fixinc_list.  Don't depend on
3715         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
3716         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
3717         SYSTEM_HEADER_DIR setting in mkheaders.conf.
3718
3719 2007-03-06  Jan Hubicka  <jh@suse.cz>
3720
3721         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
3722         NANs easilly.
3723
3724 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3725
3726         * configure.ac: Allow tm_file to contain build-directory files.
3727         * configure: Regenerate.
3728         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
3729         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
3730         * config/m68k/print-sysroot-suffix.sh: New file.
3731
3732 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3733
3734         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
3735         of pic_offset_table_rtx if reload_completed.
3736         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
3737         PIC_OFFSET_TABLE_REGNUM.
3738         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
3739         return true.
3740         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
3741         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
3742
3743 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3744
3745         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3746         functions that call eh_return.
3747
3748 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3749
3750         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3751         functions that need a constant pool.
3752
3753 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3754
3755         PR target/28181
3756         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
3757         (m68k_preferred_reload_class): Likewise.
3758         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
3759         (SECONDARY_RELOAD_CLASS): Define.
3760         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
3761         (LIMIT_RELOAD_CLASS): Delete.
3762         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
3763         registers from storing bytes.
3764         (m68k_secondary_reload_class): New function.
3765         (m68k_preferred_reload_class): Likewise.
3766
3767 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3768
3769         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
3770         leaf functions.
3771         (m68k_expand_prologue): Likewise.
3772
3773 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3774
3775         * config/m68k/m68k-protos.h (output_sibcall): Declare.
3776         (mips_expand_epilogue): Add a bool parameter.
3777         (m68k_legitimize_sibcall_address): Declare.
3778         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
3779         (m68k_expand_epilogue): Add a parameter to select between sibling
3780         and normal epilogues.  Only generate a return for the latter.
3781         (m68k_ok_for_sibcall_p): New function.
3782         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
3783         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
3784         (sibcall_value, *sibcall_value): Likewise.
3785         (*call, *call_value): Require !SIBLING_CALL_P.
3786         (epilogue): Update call to m68k_expand_epilogue.
3787         (sibcall_epilogue): New pattern.
3788         * config/m68k/predicates.md (const_call_operand): Say that this
3789         predicate applies to sibling calls too.
3790         (sibcall_operand): New predicate.
3791
3792 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3793
3794         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
3795         alternatives as movsi_cf.
3796         (movsf_cf_hard): Add commentary.
3797
3798 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
3799             Richard Sandiford  <richard@codesourcery.com>
3800
3801         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
3802         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
3803         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
3804         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
3805         as being live on exit from an interrupt function.
3806         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
3807         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
3808         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
3809         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
3810         (m68k_interrupt_function_p): Globalize.
3811         (m68k_compute_frame_layout): Remove reverse mask code.
3812         (m68k_emit_movem, m68k_set_frame_related): New functions.
3813         (m68k_output_function_prologue): Delete in favor of...
3814         (m68k_expand_prologue): ...this new function.
3815         (m68k_output_function_epilogue): Delete in favor of...
3816         (m68k_expand_epilogue): ...this new function.
3817         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
3818         functions.
3819         (print_operand): Handle %?.
3820         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
3821         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
3822         (prologue, epilogue): New patterns.
3823         (return): Turn into a define_expand.
3824         (*return): New pattern, derived from old "return" pattern.  Use rte
3825         rather than rts for interrupt functions.  Only use rtd if the pop
3826         count is nonzero.
3827         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
3828         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
3829         (link, *link, unlink, *unlink, load_got): Likewise.
3830
3831 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3832
3833         PR target/23482
3834         PR target/17114
3835         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
3836         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
3837         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
3838         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
3839         and m68k_matches_u_p.
3840         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
3841         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
3842         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
3843         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
3844         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
3845         (REG_STRICT_P): New macro.
3846         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
3847         PCREL_GENERAL_OPERAND_OK.
3848         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
3849         m68k_legitimate_base_reg_p.
3850         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
3851         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
3852         (PIC_CASE_VECTOR_ADDRESS): Update comment.
3853         * config/m68k/m68k.c (m68k_address): New structure.
3854         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
3855         (m68k_decompose_index, m68k_legitimate_constant_address_p)
3856         (m68k_jump_table_ref_p, m68k_decompose_address)
3857         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
3858         (m68k_matches_u_p): New functions.
3859         (print_operand_address): Rewrite to use m68k_decompose_index.
3860
3861 2007-03-05  David Taylor  <dtaylor@emc.com>
3862
3863         * gcc.c: Correct copyright date in --version output.
3864
3865 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3866
3867         * pa.md: In unamed move patterns, disparge copies between general
3868         and floating point registers using '?' modifier.  Don't include 'f'
3869         constraint for register preferences in DImode, SImode, HImode and
3870         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
3871         Remove constraints for copies between general and floating registers
3872         in soft-float DFmode pattern.
3873         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
3874         floating register.
3875         (movsf): Likewise.
3876
3877 2007-03-05  Mike Stump  <mrs@apple.com>
3878
3879         * c-common.c (targetcm): Add.
3880         * c-opts.c (c_common_handle_option): Handle language specific
3881         target options.
3882         * opts.c (handle_option): Verify language for target options, if
3883         any are given.
3884         * opth-gen.awk: Add CL_LANG_ALL.
3885         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
3886         (TARGETCM_INITIALIZER): Add.
3887         * target.h (struct gcc_targetcm): Add.
3888         (targetcm): Add.
3889         * targhooks.c (default_handle_c_option): Add.
3890         * targhooks.h (default_handle_c_option): Add.
3891         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
3892
3893         * config/darwin.opt (iframework): Add.
3894         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
3895         * config/darwin-c.c (handle_c_option): Add.
3896         (TARGET_HANDLE_C_OPTION): Add.
3897         (targetcm): Add.
3898         * doc/invoke.texi (Darwin Options): Add -iframework.
3899
3900 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3901
3902         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
3903         conversion.
3904
3905 2007-03-05  Ian Lance Taylor  <iant@google.com>
3906
3907         * c.opt (fgnu89-inline): New option.
3908         * c-opts.c (c_common_post_options): Set default value for
3909         flag_gnu89_inline.
3910         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
3911         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
3912         inline functions.
3913         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
3914         (grokdeclarator, start_function): Likewise.
3915         * c-cppbuiltin.c (c_cpp_builtins): Define either
3916         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
3917         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
3918         (C Dialect Options): Document -fgnu89-inline.
3919         * doc/extend.texi (Function Attributes): Explain what the
3920         gnu_inline attribute does.
3921         * doc/cpp.texi (Common Predefined Macros): Document
3922         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
3923
3924 2007-03-05  Ian Lance Taylor  <iant@google.com>
3925
3926         PR tree-optimization/31034
3927         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
3928         half-range if the other side is an overflow infinity.
3929
3930 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
3931
3932         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
3933         (bfin*-linux-uclibc*): New configuration.
3934         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
3935         defining.
3936         * config/bfin/linux.h: New file.
3937         * config/bfin/libgcc-bfin.ver: New file.
3938         * config/bfin/t-bfin-uclinux: New file.
3939         * config/bfin/t-bfin-linux: New file.
3940         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
3941         (TARGET_OS_CPP_BUILTINS): New macro.
3942
3943 2007-03-05  Richard Guenther  <rguenther@suse.de>
3944
3945         * fold-const.c (fold_binary): Remove duplicate folding
3946         of comparison of non-null ADDR_EXPR against null.
3947
3948 2007-03-05  Richard Guenther  <rguenther@suse.de>
3949             Dorit Nuzman  <dorit@il.ibm.com>
3950
3951         PR tree-optimization/26420
3952         * tree-vectorizer.c (vectorize_loops): Bail out early if there
3953         are no loops in the function.  Only print the number of
3954         vectorized loops if it is greater than zero or we are supposed
3955         to print information about unvectorized loops.
3956
3957 2007-03-05  Revital Eres  <eres@il.ibm.com>
3958
3959         * gcc.dg/var-expand1.c: New test.
3960         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
3961         when an accumulator is expanded.
3962
3963 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3964
3965         PR other/30465
3966         * c-common.c (convert_and_check): Don't give warnings for
3967         conversion if 'expr' already overflowed.
3968
3969 2007-03-04  Roger Sayle  <roger@eyesopen.com>
3970
3971         PR middle-end/30744
3972         * fold-const.c (fold_comparison): Enforce type consistency when
3973         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
3974
3975 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
3976
3977         * tree-ssa-address.c (create_mem_ref): Do not put an expression
3978         containing a cast to the base of TARGET_MEM_REF.
3979
3980 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
3981
3982         * tree.c (tree_contains_struct_check_failed): Remove spurious
3983         whitespace from error message.
3984
3985 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
3986
3987         PR target/30406
3988         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
3989         instead of precision.
3990
3991 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
3992             Nathan Sidwell  <nathan@codesourcery.com>
3993
3994         * emit-rtl.c (find_auto_inc): New.
3995         (try_split): recreate REG_INC notes,
3996         Use regular for loops rather than whiles.
3997
3998 2007-03-03  Andreas Schwab  <schwab@suse.de>
3999
4000         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
4001         * configure: Regenerate.
4002
4003 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4004
4005         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
4006         flag_rounding_math, not flag_unsafe_math_optimizations.
4007
4008         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
4009         fold_build2.
4010         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
4011         alpha_fold_vector_minmax): Likewise.
4012         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
4013         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
4014
4015 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4016
4017         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
4018         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
4019         if the lhs has side-effects.
4020         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
4021
4022 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4023
4024         * config/i386/i386.h (TUNEMASK): Remove define.
4025         (ARCHMASK): Remove define.
4026         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
4027          Use ix86_arch_mask variable instead of ARCHMASK.
4028         * config/i386/i386.c (override_options): Ditto.
4029         (standard_80387_constant_p): Ditto.
4030
4031 2007-03-02  Ian Lance Taylor  <iant@google.com>
4032
4033         Used signed infinities in VRP.
4034         * tree-vrp.c (uses_overflow_infinity): New static function.
4035         (supports_overflow_infinity): New static function.
4036         (make_overflow_infinity): New static function.
4037         (negative_overflow_infinity): New static function.
4038         (positive_overflow_infinity): New static function.
4039         (is_negative_overflow_infinity): New static function.
4040         (is_positive_overflow_infinity): New static function.
4041         (is_overflow_infinity): New static function.
4042         (overflow_infinity_range_p): New static function.
4043         (compare_values_warnv): New function split out of compare_values.
4044         (compare_value): Call it.
4045         (set_value_range_to_nonnegative): Add overflow_infinity
4046         parameter.  Change caller.
4047         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
4048         Change callers.
4049         (vrp_expr_computes_nonzero): Likewise.
4050         (compare_ranges, compare_range_with_value): Likewise.
4051         (compare_name_with_value, compare_names): Likewise.
4052         (vrp_evaluate_conditional): Likewise.
4053         (set_value_range): Handle infinity
4054         (vrp_operand_equal_p, operand_less_p): Likewise.
4055         (extract_range_from_assert): Likewise.
4056         (vrp_int_const_binop): Likewise.
4057         (extract_range_from_binary_expr): Likewise.
4058         (extract_range_from_unary_expr): Likewise.
4059         (extract_range_from_comparison): Likewise.
4060         (extract_range_from_expr): Likewise.
4061         (dump_value_range): Likewise.
4062         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
4063         (test_for_singularity): Likewise.
4064         (vrp_int_const_binop): Remove inline qualifier.
4065         (adjust_range_with_scev): Add comment.
4066         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
4067
4068 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
4069
4070         * tree-ssa-structalias.c (could_have_pointers): Tidy.
4071         (get_constraint_for): Likewise.
4072         (do_structure_copy): Likewise.
4073         (find_func_aliases): Fix references to MODIFY_EXPR.
4074         (intra_create_variable_infos): Tidy.
4075         * tree-ssa-operands.c (add_virtual_operand): Add argument
4076         IS_CALL_SITE.
4077         When adding members of alias sets, if IS_CALL_SITE is true and
4078         the symbol is not call-clobbered, skip it.
4079         Adjust all callers.
4080
4081 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4082
4083         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
4084         entry by means of emit_insn_at_entry.
4085
4086 2007-03-02  Richard Henderson  <rth@redhat.com>
4087
4088         * expr.h (promoted_input_arg): Remove decl.
4089         * function.c (promoted_input_arg): Merge into ...
4090         * combine.c (setup_incoming_promotions): ... only caller.
4091         Rearrange to avoid double loop.
4092
4093 2007-03-02  Ben Elliston  <bje@au.ibm.com>
4094             Peter Bergner  <bergner@vnet.ibm.com>
4095             Janis Johnson  <janis187@us.ibm.com>
4096
4097         * config/rs6000/dfp.md: New file.
4098         * config/rs6000/rs6000.md: Include dfp.md.
4099         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
4100         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
4101         and TDmode decimal float modes in FP registers.
4102         (num_insns_constant): Likewise.
4103         (rs6000_legitimate_offset_address_p): Likewise.
4104         (rs6000_legitimize_address): Likewise.
4105         (rs6000_legitimize_reload_address): Likewise.
4106         (rs6000_legitimate_address): Likewise.
4107         (rs6000_emit_move): Likewise.
4108         (function_arg_boundary): Likewise.
4109         (function_arg_advance): Likewise.
4110         (rs6000_darwin64_record_arg_recurse): Likewise.
4111         (function_arg): Likewise.
4112         (rs6000_gimplify_va_arg): Likewise.
4113         (rs6000_split_multireg_move): Likewise.
4114         (rs6000_output_function_epilogue): Likewise.
4115         (rs6000_output_function_epilogue): Likewise.
4116         (rs6000_register_move_cost): Likewise.
4117         (rs6000_function_value): Likewise.
4118         (rs6000_libcall_value): Likewise.
4119
4120 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
4121
4122         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
4123
4124 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
4125
4126         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
4127         Use $MULTIDIR to choose between the kernel and RTP headers,
4128         and use $WIND_BASE and $WIND_USR to locate them.
4129
4130 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4131
4132         * config/i386/i386.c (override_options): Put initialization of
4133         ix86_tune_mask and ix86_arch_mask to the correct place.
4134
4135 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4136             Michael Meissner  <michael.meissner@amd.com>
4137
4138         PR target/31019
4139         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
4140         (ARCHMASK): Define.
4141         (TARGET_CMOVE): Use ARCHMASK.
4142         (TARGET_CMPXCHG): Ditto.
4143         (TARGET_CMPXCHG8B): Ditto.
4144         (TARGET_XADD): Ditto.
4145         (TARGET_BSWAP): Ditto.
4146         * config/i386/i386.c (ix86_tune_mask): New global variable.
4147         (ix86_arch_mask): Ditto.
4148         (override_options): Initialize ix86_tune_mask and
4149         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
4150         target_flags.
4151
4152 2007-03-02  Ben Elliston  <bje@au.ibm.com>
4153
4154         PR 30992
4155         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
4156
4157 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
4158
4159         * target.h (init_dwarf_reg_sizes_extra): New target hook.
4160         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
4161         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
4162         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
4163         hook.
4164         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
4165         rs6000_init_dwarf_reg_sizes_extra): New.
4166         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
4167         SPE register high parts.
4168
4169 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
4170
4171         * Makefile.in: Add install-pdf target as
4172         copied from automake v1.10 rules.
4173         * configure.ac: Add install-pdf to target list.
4174         * configure: Regenerate.
4175
4176 2007-03-01  Paul Brook  <paul@codesourcery.com>
4177
4178         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
4179         modes to LDRD for DImode.
4180         (output_move_double): Fixup out of range ldrd/strd.
4181         (vfp_secondary_reload_class): Rename...
4182         (coproc_secondary_reload_class): ... to this.  Add wb argument.
4183         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
4184         coproc_secondary_reload_class for CLASS_IWMMXT.
4185         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
4186         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
4187
4188 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
4189
4190         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
4191         factor by the estimated number of iterations.
4192         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
4193         prefetch latency.
4194
4195         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
4196         decode_caches_intel, detect_caches_intel): New functions.
4197         (host_detect_local_cpu): Use detect_caches_amd and
4198         detect_caches_intel.
4199
4200 2007-03-01  Richard Henderson  <rth@redhat.com>
4201
4202         * expr.c (emit_move_complex_push): Export.
4203         (emit_move_complex_parts): Split out from ...
4204         (emit_move_complex): ... here.
4205         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
4206         * config/i386/i386.md (movcdi): New.
4207
4208 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
4209
4210         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
4211         size of mode1 to check for tieable modes in MMX case.
4212
4213 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
4214
4215         * Makefile.in (rtlanal.o): Depend on tree.h.
4216         * rtl.h (offset_within_section_p, split_const): Declare.
4217         * rtlanal.c: Include tree.h.
4218         (offset_within_block_p): New function, taken from
4219         mips_offset_within_object_p.
4220         (split_const): New function, taken from mips_split_const.
4221         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
4222         Declare.
4223         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
4224         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
4225         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
4226         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
4227         (m68k_illegitimate_symbolic_constant_p): New function.
4228         * config/m68k/m68k.md (movsi): Remove misleading predicates.
4229         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
4230         symbolic constant that might be outside the symbol's section,
4231         move the symbol first and then add the offset.
4232         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
4233         Override.
4234         * config/mips/mips.c (mips_split_const): Delete.
4235         (mips_offset_within_object_p): Delete.
4236         (mips_symbolic_constant_p): Use offset_within_section_p and
4237         split_const instead of mips_offset_within_object_p and
4238         mips_split_const.
4239         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
4240         (mips_legitimize_const_move, print_operand_reloc)
4241         (mips_dangerous_for_la25_p): Use split_const instead of
4242         mips_split_const.
4243
4244 2007-02-28  Eric Christopher  <echristo@apple.com>
4245
4246         * Makefile.in (install-include-dir): Don't rm -rf include.
4247
4248 2007-02-28  Richard Guenther  <rguenther@suse.de>
4249
4250         PR middle-end/30364
4251         * fold-const.c (fold_binary): Do not associate expressions
4252         with more than one variable for integer types that do not wrap.
4253
4254 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
4255
4256         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
4257         Delete, and replace with...
4258         (fold_builtin_call_array): This.  Update callers to use it.
4259         * fold-const.c (fold_build_call_list): Delete, and replace with...
4260         (fold_build_call_array): This.
4261         (fold_build_call_list_initializer): Delete, and replace with...
4262         (fold_build_call_array_initializer): This.
4263         * tree.h: Update declarations to reflect above changes.
4264
4265         * c-typeck.c (build_function_call): Store converted arguments
4266         in a stack-allocated array instead of building a list.
4267         (convert_arguments): Store arguments in the array passed in as an
4268         argument, and return the actual number of arguments.
4269         * c-format.c: (check_function_format): Pass arguments in an
4270         array instead of a list.
4271         * c-common.c (check_function_nonnull): Likewise.
4272         (check_function_sentinel): Likewise.
4273         (check_function_arguments): Likewise.
4274         * c-common.h: Update declarations to reflect above changes.
4275
4276 2007-02-28  Jan Hubicka  <jh@suse.cz>
4277
4278         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
4279         PRED_NEGATIVE_RETURN): Update outcomes.
4280
4281 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
4282
4283         * calls.c (emit_library_call_value_1): Handle partial registers
4284         correctly when building up CALL_INSN_FUNCTION_USAGE.
4285
4286 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4287
4288         * pa/predicates.md (move_src_operand): Allow zero for mode.
4289         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
4290         move pattern.
4291
4292 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
4293
4294         PR target/30970
4295         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
4296         *movv2df_internal): Enable pattern only for valid operand
4297         combinations.
4298         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
4299         tie only 128bit modes. For MMX registers, tie only 64bit modes.
4300
4301 2007-02-27  Mike Stump  <mrs@apple.com>
4302
4303         * config/darwin-crt3.c: Avoid compilation when compiling for a
4304         kext multilib.
4305
4306 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
4307
4308         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
4309         FIXED_INCLUDE_DIR.
4310         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
4311         for fixed headers and limits.h.
4312         (install-include-dir, install-headers-tar, install-headers-cpio,
4313         install-headers-cp, real-install-headers-tar,
4314         real-install-headers-cpio, real-install-headers-cp): Handle
4315         include-fixed as well as include.
4316         (install-mkheaders): Don't install files that go only in include
4317         not include-fixed.
4318         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
4319         from GCC_INCLUDE_DIR.
4320         * gcc.c (process_command): Remove special -BstageN/ handling.
4321         (do_spec_1): Add include-fixed directories.
4322
4323 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4324
4325         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
4326         _smulsi3_highpart.
4327         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
4328         New functions.
4329         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
4330         patterns.
4331
4332 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
4333
4334         * c-common.c (get_priority): Add check for
4335         SUPPORTS_INIT_PRIORITY.
4336
4337 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4338
4339         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
4340
4341         * config/bfin/bfin.c: Include "cfglayout.h".
4342         (MAX_LSETUP_DISTANCE): New macro.
4343         (struct loop_info): New members incoming, incoming_src and
4344         incoming_dest.  Delete member predecessor.
4345         (length_for_loop): New function.
4346         (bfin_optimize_loop): Handle more different loop structures.
4347         (bfin_discover_loop): Rework detection of predecessor blocks by
4348         examining incoming edges.
4349         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
4350         bfin_reorg_loops.
4351         (bfin_reorder_loops): New function.
4352         (bfin_reorg_loops): Use these three new functions.
4353
4354         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
4355         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
4356         (CONSTRAINT_LEN): Add entry for 'q'.
4357         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
4358         Add 'q' constraints.
4359         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
4360         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
4361
4362         * config/bfin/bfin.md (add_with_carry): New pattern.
4363         (s_or_u, su_optab, su_modifier): New code macros/attrs.
4364         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
4365         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
4366         support unsigned multiplies too.  Removed incorrect commutativity from
4367         operand 1 constraint where appropriate.
4368         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
4369         patterns.
4370         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
4371         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
4372         New patterns.
4373         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
4374         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
4375         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
4376         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
4377         usmulhisi_hh_huh): New patterns.
4378
4379         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
4380         lshifthi3): Fix output template to use half reg for operand 2.
4381
4382         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
4383         instead of R2.
4384
4385         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
4386
4387 2007-02-27  Andreas Schwab  <schwab@suse.de>
4388
4389         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
4390
4391 2007-02-27  Jan Hubicka  <jh@suse.cz>
4392
4393         * predict.c (last_basic_block_p): Remove.
4394         (tree_estimate_probability): Update return heuristic for commonized
4395         return blocks.
4396
4397 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4398
4399         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
4400
4401 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4402
4403         * doc/include/gcc-common.texi (versionsubtitle): New macro.
4404         * doc/cpp.texi: Standardize title page.
4405         * doc/cppinternals.texi: Likewise.
4406         * doc/gcc.texi: Standardize title page, remove version number
4407         from copyright page.
4408         * doc/gccint.texi: Likewise.
4409         * doc/install.texi: Standardize title page, add table of
4410         contents.
4411
4412 2007-02-26  Jan Hubicka  <jh@suse.cz>
4413
4414         * predict.def: Set outcomes according to more recent results.
4415         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
4416         Remove dead predictors.
4417         * predict.c (return_prediction): Fix pasto.
4418
4419 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4420
4421         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
4422         change; avoid a memory leak when returning early.
4423
4424 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
4425
4426         * c-decl.c (static_ctors): Move to c-common.c.
4427         (static_dtors): Likewise.
4428         (finish_function): Use c_record_cdtor_fn.
4429         (build_cdtor): Move to c-common.c.
4430         (c_write_global_declarations): Use c_build_cdtor_fns.
4431         * c-common.h (static_ctors): Declare.
4432         (static_dtors): Likewise.
4433         (c_record_cdtor_fn): Likewise.
4434         (c_build_cdtor_fns): Likewise.
4435         * c-common.c (static_ctors): New variable.
4436         (static_dtors): Likewise.
4437         (c_record_cdtor_fn): New function.
4438         (build_cdtor): Move from c-decl.c
4439         (c_build_cdtor_fns): New function.
4440
4441         * output.h (assemble_addr_to_section): Declare.
4442         (get_cdtor_priority_section): Likewise.
4443         * varasm.c (assemble_addr_to_section): New function.
4444         (get_cdtor_priority_section): Likewise.
4445         (default_named_section_asm_out_destructor): Use them.
4446         (destor_dtor_section_asm_out_destructor): Likewise.
4447         (default_named_section_asm_out_constructor): Likewise.
4448         (default_ctor_section_asm_out_constructor): Likewise.
4449         * config.gcc (*-*-vxworks*): Include vxworks.o.
4450         * config/t-vxworks (vxworks.o): New target.
4451         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
4452         (TARGET_ASM_CONSTRUCTOR): Define.
4453         (TARGET_ASM_DESTRUCTOR): Likewise.
4454         (vxworks_asm_out_constructor): Declare.
4455         (vxworks_asm_out_destructor): Likewise.
4456
4457         * c-common.c (get_priority): Check that we have not just an
4458         INTEGER_CST, but an integer constant with integeral type.
4459
4460 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
4461
4462         PR tree-optimization/30938
4463         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
4464         use &dt[nargs-1] instead of &dt[nargs] in the call to
4465         vect_is_simple_use().
4466
4467 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
4468
4469         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
4470         from register elimination as PRE_MODIFY / POST_MODIFY increments.
4471         Do not attempt to handle MEM inside auto-inc expressions.
4472         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
4473         of a register modified by an auto-inc expression.  However, do handle
4474         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
4475         (elimination_effects): Prohibit elimination of a register modified
4476         by an auto-inc expression.  Disable register elimination rules whose
4477         target register is modified by an auto-inc expression with variable
4478         increment.
4479
4480 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
4481
4482         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
4483         off-by-one error.
4484         (array_at_struct_end_p): New function.
4485         (idx_infer_loop_bounds): Use it.
4486         (estimate_numbers_of_iterations_loop): Export.
4487         * predict.c (predict_loops): Use estimated_loop_iterations_int.
4488         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
4489         (tree_estimate_probability): Call record_loop_exits.
4490         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
4491         (estimated_loop_iterations, estimated_loop_iterations_int,
4492         estimated_loop_iterations_tree): New functions.
4493         (analyze_siv_subscript_cst_affine,
4494         compute_overlap_steps_for_affine_1_2,
4495         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
4496         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
4497         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
4498         (PRED_LOOP_ITERATIONS_GUESSED): New.
4499         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
4500         * cfgloop.h (estimate_numbers_of_iterations_loop,
4501         estimated_loop_iterations_int): Declare.
4502
4503 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
4504
4505         * doc/extend.texi: Document optional priority argument to
4506         constructors and destructors.
4507         * tree.c (init_priority_for_decl): Adjust GTY markers.
4508         (init_ttree): Use priority-info hash functions for
4509         init_priority_for_decl.
4510         (tree_map_eq): Rename to ...
4511         (tree_map_base_eq): ... this.
4512         (tree_map_marked_p): Rename to ...
4513         (tree_map_base_marked_p): ... this.
4514         (tree_map_base_hash): New function.
4515         (decl_init_priority_lookup): Rework.
4516         (decl_fini_priority_lookup): New function.
4517         (decl_priority_info): New function.
4518         (decl_init_priority_insert): Use it.
4519         (decl_fini_priority_insert): Likewise.
4520         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
4521         hierarchy.
4522         (decl_restrict_base_insert): Likewise.
4523         (decl_debug_expr_insert): Likewise.
4524         (decl_value_expr_lookup): Likewise.
4525         (decl_value_expr_insert): Likewise.
4526         * tree.h (priority_type): New type.
4527         (decl_init_priority_lookup): Use priority_type.
4528         (decl_fini_priority_lookup): New function.
4529         (decl_init_priority_insert): Use priority_type.
4530         (decl_fini_priority_insert): New function.
4531         (DECL_HAS_INIT_PRIORITY): Tweak comments.
4532         (DECL_INIT_PRIORITY): Likewise.
4533         (SET_DECL_INIT_PRIORITY): Add comment.
4534         (DECL_FINI_PRIORITY): New macro.
4535         (SET_DECL_FINI_PRIORITY): Likewise.
4536         (DEFAULT_INIT_PRIORITY): Document.
4537         (MAX_INIT_PRIORITY): Likewise.
4538         (MAX_RESERVED_INIT_PRIORITY): Likewise.
4539         (tree_map_base): New type.
4540         (tree_map_base_eq): New function.
4541         (tree_map_base_hash): Likewise.
4542         (tree_map_base_marked_p): Likewise.
4543         (tree_map): Inherit from tree_map_base.
4544         (tree_map_eq): Make it a macro.
4545         (tree_map_marked_p): Likewise.
4546         (tree_int_map): Inherit from tree_map_base.
4547         (tree_int_map_eq): Make it a macro.
4548         (tree_int_map_hash): Likewise.
4549         (tree_int_map_marked_p): Likewise.
4550         (tree_priority_map): New type.
4551         (tree_priority_map_eq): New macro.
4552         (tree_priority_map_hash): Likewise.
4553         (tree_priority_map_marked_p): Likewise.
4554         * varasm.c (emults_decl): Adjust for refactoring of tree_map
4555         hierarchy.
4556         (emutls_common_1): Likewise.
4557         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
4558         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
4559         of tree_map hierarchy.
4560         * tree-cfg.c (move_stmt_r): Likewise.
4561         (new_label_mapper): Likewise.
4562         * c-tree.h (c_expand_body): Move to ...
4563         * c-common.h (c_expand_body): ... here.
4564         * c-decl.c (c_expand_body): Move to ...
4565         * c-common.c (c_expand_body): ... here.
4566         (c_common_attribute_table): Allow 1 argument for the constructor
4567         and destructor attributes.
4568         (get_priority): New function.
4569         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
4570         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
4571
4572 2007-02-24  Jan Hubicka  <jh@suse.cz>
4573
4574         PR middle-end/30509
4575         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
4576
4577 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4578             Jan Hubicka  <jh@suse.cz>
4579
4580         PR target/30778
4581         * i386.c (counter_mode): New function.
4582         (expand_set_or_movmem_via_loop): Use it.
4583         (expand_movmem_epilogue): Likewise; fix pasto.
4584         (ix86_expand_movmem): Do emit guard even for constant counts.
4585         (ix86_expand_setmem): Likewise.
4586
4587 2007-02-25  Nick Clifton  <nickc@redhat.com>
4588
4589         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
4590         (JUMP_TABLES_IN_TEXT_SECTION): Define.
4591
4592 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4593
4594         PR target/30770
4595         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
4596         count argument with 0x10, not with 0x16.
4597         (expand_setmem_epilogue): Ditto.
4598
4599 2007-02-24  Mike Stump  <mrs@apple.com>
4600
4601         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
4602         symbols.
4603
4604 2007-02-24  Richard Guenther  <rguenther@suse.de>
4605
4606         PR middle-end/30951
4607         * fold-const.c (fold_binary): Fold x +- CST op x for
4608         EQ_EXPR and NE_EXPR.
4609
4610 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4611
4612         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
4613
4614 2007-02-24  Jan Hubicka  <jh@suse.cz>
4615
4616         * cgraphunit.c (decide_is_function_needed): Honor
4617         -fkeep-inline-functions.
4618
4619 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4620
4621         * builtins.c (fold_builtin_modf): New.
4622         (fold_builtin_2): Use it.
4623
4624 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
4625
4626         * loop-iv.c (implies_p): Detect additional cases where A implies B.
4627         (determine_max_iter): Take additional LOOP arg; all callers changed.
4628         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
4629         one using simplifications.
4630         (simplify_using_initial_values): Return if the expression becomes
4631         invalid due to altered regs.
4632
4633 2007-02-23  DJ Delorie  <dj@redhat.com>
4634
4635         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
4636
4637 2007-02-23  Mike Stump  <mrs@apple.com>
4638
4639         * tlink.c (scan_linker_output): Parse linker messages from
4640         darwin9's linker better.
4641
4642 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
4643
4644         PR debug/29614
4645         * varpool.c (varpool_assemble_pending_decls):  Set
4646         varpool_last_needed_node to null.
4647
4648 2007-02-23  DJ Delorie  <dj@redhat.com>
4649
4650         * config/i386/i386.c (ix86_data_alignment): Don't specify an
4651         alignment bigger than the object file can handle.
4652
4653 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
4654
4655         PR target/30825
4656         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
4657         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
4658         (*movsf_1): Penalize MMX moves.
4659
4660 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
4661
4662         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
4663         2^32-1 or more times unless flag_unsafe_loop_optimizations.
4664
4665         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
4666
4667 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4668
4669         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
4670         (fold_builtin_1): Use them.
4671         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
4672         BUILT_IN_SIGNIFICAND.
4673
4674 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
4675
4676         * config/i386/i386.c (bdesc_1arg): Initialize
4677         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
4678         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
4679         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
4680         and IX86_BUILTIN_MOVSLDUP.
4681
4682 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
4683
4684         PR rtl-optimization/30841
4685         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
4686
4687 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4688
4689         * builtins.c (fold_builtin_frexp): New.
4690         (fold_builtin_2): Use it.
4691
4692 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
4693
4694         * doc/invoke.texi (Spec Files): Document getenv spec function.
4695
4696         * gcc.c (getenv_spec_function): New function.
4697         (static_spec_functions): Add it.
4698         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
4699         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
4700         header files.
4701
4702 2007-02-22  Michael Matz  <matz@suse.de
4703
4704         PR c++/29433
4705         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
4706         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
4707
4708 2007-02-22  Ian Lance Taylor  <iant@google.com>
4709
4710         PR debug/30898
4711         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
4712         (mem_loc_descriptor): Call it.
4713
4714 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
4715             Ira Rosen  <irar@il.ibm.com>
4716
4717         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
4718
4719 2007-02-22  Ira Rosen  <irar@il.ibm.com>
4720
4721         PR tree-optimization/30843
4722         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
4723         stores only after all the group is vectorized.
4724
4725 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
4726
4727         PR tree-optimization/30858
4728         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
4729         in the reduction cycle have a single use in the loop.
4730         * tree-vectorizer.h (relevant): Add documentation.
4731
4732 2007-02-20  Mike Stump  <mrs@apple.com>
4733
4734         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
4735         * configure: Regenerate.
4736
4737 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4738
4739         Change the defaults of some parameters and options.
4740         * config/spu/spu-protos.h (spu_optimization_options): Declare.
4741         * config/spu/spu.c (spu_optimization_options): Add.
4742         (spu_override_options): Change params in spu_optimization_options.
4743         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
4744
4745         Register 127 is only 16 byte aligned when used as a frame pointer.
4746         * config/spu/spu-protos.h (spu_init_expanders): Declare.
4747         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
4748         HARD_FRAME_POINTER_REGNUM.
4749         (spu_legitimate_address):  Use regno_aligned_for_reload.
4750         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
4751         aligned when frame_pointer_needed is true.
4752         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
4753         to 8 bits.
4754         * config/spu/spu.h (INIT_EXPANDERS): Define.
4755
4756         Make sure shift and rotate instructions have valid immediate operands.
4757         * config/spu/predicates.md (spu_shift_operand): Remove.
4758         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
4759         * config/spu/constraints.md (W, O): Extend range.
4760         * config/spu/spu.md (umask, nmask): Define.
4761         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
4762         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
4763         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
4764         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
4765         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
4766         (lshr<mode>3_reg):  Fix rtl description.
4767
4768         Make sure mulhisi immediate operands are valid.
4769         * config/spu/predicates.md (imm_K_operand): Add.
4770         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
4771
4772         Generate constants using fsmbi and andi.
4773         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
4774         (print_operand, spu_split_immediate, classify_immediate,
4775         fsmbi_const_p): Handle IC_FSMBI2.
4776
4777         Correctly handle a CONST_VECTOR containing symbols.
4778         * config/spu/spu.c (print_operand): Handle HIGH correctly.
4779         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
4780         (immediate_load_p): Allow symbols that use 2 instructions to create.
4781         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
4782         with symbols when flag_pic is set.
4783         (const_vector_immediate_p): New.
4784         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
4785         accept a CONST_VECTOR with symbols.
4786         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
4787         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
4788         correctly.
4789         * config/spu/spu.md (high, low): Delete.
4790         (low_<mode>): Define.
4791
4792         Remove INTRmode and INTR_REGNUM, which didn't work.
4793         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
4794         of INTR_REGNUM.
4795         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
4796         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
4797         peephole2 pattern): Don't use INTR or 131.
4798         (movintrcc): Delete.
4799         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
4800         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
4801         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
4802         (UNSPEC_SET_INTR): Add.
4803         * config/spu/spu-modes.def (INTR): Remove.
4804
4805         More accurate warnings about run-time relocations.
4806         * config/spu/spu.c (reloc_diagnostic): Test in_section.
4807
4808         Correctly warn about immediate arguments to specific intrinsics.
4809         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
4810         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
4811         the instruction predicate.
4812
4813         Fix tree check errors with latest update.
4814         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
4815         CALL_EXPR_ARG.
4816         (spu_expand_builtin): Use CALL_EXPR_FN.
4817
4818         Add missing specific intrinsics.
4819         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
4820         si_bislede.
4821         * config/spu/spu_internals.h: Ditto.
4822
4823         Fix incorrect operand modifiers.
4824         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
4825         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
4826
4827         Optimize one case of zero_extend of a vec_select.
4828         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
4829
4830         Accept any immediate for hbr.
4831         * config/spu/spu.md (hbr):  Change s constraints to i.
4832
4833 2007-02-21  Paul Brook  <paul@codesourcery.com>
4834
4835         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
4836         condexec_count when skipping USE and CLOBBER.
4837
4838 2007-02-21  Nick Clifton  <nickc@redhat.com>
4839
4840         * common.opt (Warray-bounds): Add Warning attribute.
4841         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
4842         Likewise.
4843         (fsized-zeroes): Add Optimization attribute.
4844         (fsplit-wide-types, ftree-scev-cprop): Likewise.
4845         * c.opt (Wc++0x-compat): Add Warning attribute.
4846
4847 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
4848
4849         PR middle-end/30761
4850         * reload1.c (eliminate_regs_in_insn): In the single_set special
4851         case, attempt to re-recognize the insn before falling back to
4852         having reload fix it up.
4853
4854 2007-02-20  Eric Christopher  <echristo@gmail.com>
4855
4856         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
4857         Rewrite accordingly.
4858         (frv_read_iacc_argument): Ditto.
4859         (frv_expand_set_builtin): Take a call instead of arglist, update for
4860         above changes.
4861         (frv_expand_unop_builtin): Ditto.
4862         (frv_expand_binop_builtin): Ditto.
4863         (frv_expand_cut_builtin): Ditto.
4864         (frv_expand_binopimm_builtin): Ditto.
4865         (frv_expand_voidbinop_builtin): Ditto.
4866         (frv_expand_int_void2arg): Ditto.
4867         (frv_expand_prefetches): Ditto.
4868         (frv_expand_voidtriop_builtin): Ditto.
4869         (frv_expand_voidaccop_builtin): Ditto.
4870         (frv_expand_load_builtin): Ditto.
4871         (frv_expand_store_builtin): Ditto.
4872         (frv_expand_mdpackh_builtin): Ditto.
4873         (frv_expand_mclracc_builtin): Ditto.
4874         (frv_expand_mrdacc_builtin): Ditto.
4875         (frv_expand_mwtacc_builtin): Ditto.
4876         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
4877         calls for above.
4878
4879 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
4880
4881         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
4882         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
4883         cmpb instruction.
4884         (HAVE_GAS_DFP): Check for assembler support of decimal floating
4885         point instructions.
4886         * configure: Regenerate.
4887         * config.in: Regenerate.
4888         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
4889         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
4890         masks to power6 and power6x and to POWERPC_MASKS.
4891         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
4892         _ARCH_PWR6.
4893         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
4894         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
4895         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
4896         Access PROTOTYPE as variable, not mask.
4897
4898 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
4899
4900         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
4901         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
4902         * combine.c (adjust_for_new_dest): Use it.
4903         * postreload.c (reload_combine): Likewise.
4904
4905 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
4906
4907         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
4908         notes on an insn with multiple sets, even if single_set returns
4909         non-NULL for that insn.
4910
4911 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4912
4913         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
4914         scalbn and scalbln.
4915
4916 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
4917
4918         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
4919         if user didn't pass it.
4920         * config/i386/darwin.h (CC1_SPEC): Likewise.
4921         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
4922         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
4923         -mmacosx-version-min.
4924
4925 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4926             Uros Bizjak  <ubizjak@gmail.com>
4927
4928         * optabs.h (enum optab_index): Add new OTI_scalb.
4929         (scalb_optab): Define corresponding macro.
4930         * optabs.c (init_optabs): Initialize scalb_optab.
4931         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
4932         patterns.
4933         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
4934         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
4935         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
4936         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
4937         flag_unsafe_math_optimizations is set.
4938
4939         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
4940         to implement scalbf, scalb and scalbl built-ins as inline x87
4941         intrinsics.
4942
4943 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4944             DJ Delorie <dj@redhat.com>
4945
4946         PR other/30824
4947         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
4948         (diagnostic_report_diagnostic): ... here, and turn them into real
4949         errors. If warnings are inhibited, no need to do anything.
4950
4951 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
4952
4953         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
4954         better code generation.
4955
4956 2007-02-20  Ben Elliston  <bje@au.ibm.com>
4957
4958         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
4959
4960 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
4961
4962         * config/alpha/alpha.c, config/alpha/alpha.md,
4963         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
4964         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
4965         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
4966         config/arm/lib1funcs.asm: Follow spelling conventions.
4967
4968         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
4969         config/fr30/fr30.md, config/i386/i386.h,
4970         config/iq2000/iq2000.h, config/iq2000/predicates.md,
4971         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
4972         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
4973         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
4974         config/rs6000/altivec.md, config/rs6000/rs6000.c,
4975         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
4976         config/sparc/sparc.c, config/sparc/sparc.h,
4977         config/sparc/sparc.md, config/spu/constraints.md,
4978         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
4979         conventions.
4980
4981 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
4982
4983         PR target/29943
4984         * varasm.c (use_blocks_for_decl_p): Return false for decls with
4985         alias attribute.
4986
4987 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
4988
4989         * doc/invoke.texi (-ftree-lrs): Remove.
4990
4991 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
4992
4993         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
4994         NULL.
4995
4996 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
4997
4998         * config/ia64/ia64.c (ia64_expand_builtin): Use the
4999         new CALL_EXPR_FN macro for retrieving the function
5000         declaration of the input expression.
5001
5002 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5003
5004         * c.opt (Waddress): New.
5005         * common.opt (Walways-true): Delete.
5006         (Wstring-literal-comparison): Delete.
5007         * doc/invoke.texi (Warning Options): Delete -Walways-true and
5008         -Wstring-literal-comparison. Add -Waddress.
5009         (Waddress): New.
5010         (Walways-true): Delete.
5011         (Wstring-literal-comparison): Delete.
5012         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
5013         consistently instead of -Walways-true in example.
5014         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
5015         * c-typeck.c (parser_build_binary_op): Replace
5016         -Wstring-literal-comparison and -Walways-true with -Waddress.
5017         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
5018         with -Waddress.
5019
5020 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
5021
5022         * tree-cfg.c (dump_function_to_file): Be prepared for functions
5023         without DECL_STRUCT_FUNCTION initialized.
5024
5025 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
5026
5027         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
5028         due to calls to functions taking pointers as parameters.
5029
5030 2007-02-19  Richard Henderson  <rth@redhat.com>
5031
5032         PR debug/29558
5033         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
5034         in memory.
5035
5036 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
5037
5038         * config/s390/s390.c (s390_call_saved_register_used,
5039         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
5040         accessed to the new scheme.
5041
5042 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
5043
5044         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
5045         (cris_print_index, cris_print_operand, cris_print_operand_address)
5046         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
5047         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
5048         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
5049         GET_CODE () == xxx.
5050         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
5051         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
5052         GO_IF_LEGITIMATE_ADDRESS): Ditto.
5053         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
5054         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
5055         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
5056         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
5057         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
5058         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
5059         (uminsi3, call, call_value): Ditto.
5060         (define_split: indir_to_reg_split, unnamed): Ditto.
5061
5062 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
5063
5064         PR tree-optimization/30975
5065         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
5066         wrong assert.
5067
5068 2007-02-18  Eric Christopher  <echristo@gmail.com>
5069
5070         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
5071         Remove use of arglist.
5072         (mips_expand_builtin): Remove use of arglist, pass in expr.
5073         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
5074         (mips_expand_builtin_movtf): Ditto.
5075         (mips_expand_builtin_compare): Ditto.
5076
5077 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
5078
5079         * tree-sra.c (sra_build_assignment): Replace assertion
5080         checking with a comment explaining why it can't be done.
5081
5082 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
5083
5084         PR middle-end/30833
5085         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
5086         during CALL_EXPR representation conversion.
5087         * tree-ssa-propagate.c (set_rhs): Likewise.
5088
5089 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
5090
5091         * tree-sra.c (sra_build_assignment): Disable assertion checking
5092         for now.
5093
5094 2007-02-18  Roger Sayle  <roger@eyesopen.com>
5095
5096         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
5097         instead of calling build2 with a GIMPLE_MODIFY_STMT.
5098         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
5099         Likewise.
5100         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
5101         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
5102         gimplify_init_ctor_eval_range, gimple_push_cleanup,
5103         gimplify_omp_for, gimplify_omp_atomic_pipeline,
5104         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
5105         force_gimple_operand): Likewise.
5106         * ipa-cp.c (constant_val_insert): Likewise.
5107         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
5108         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
5109         perfect_nestify): Likewise.
5110         * langhooks.c (lhd_omp_assignment): Likewise.
5111         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
5112         lower_copyprivate_clauses, lower_send_clauses,
5113         lower_send_shared_vars, expand_parallel_call,
5114         expand_omp_for_generic, expand_omp_for_static_nochunk,
5115         expand_omp_for_static_chunk, expand_omp_sections,
5116         lower_omp_single_copy, lower_omp_for_lastprivate,
5117         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
5118         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
5119         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
5120         Likewise.
5121
5122 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
5123
5124         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
5125         config/sh/sh.md: Follow spelling conventions.
5126
5127         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
5128         config/frv/predicates.md: Follow spelling conventions.
5129
5130         * config/m68k/linux-unwind.h: Fix a comment typo.
5131         * target.h: Follow spelling conventions.
5132
5133 2007-02-18  Roger Sayle  <roger@eyesopen.com>
5134
5135         PR rtl-optimization/28173
5136         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
5137         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
5138         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
5139         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
5140         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
5141
5142 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5143
5144         * builtins.c (fold_builtin_load_exponent): New.
5145         (fold_builtin_2): Use it.
5146
5147 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
5148
5149         PR rtl-optimization/30773
5150         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
5151         if we fail to attach a REG_EQUIV note.
5152
5153 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
5154             Roger Sayle  <roger@eyesopen.com>
5155
5156         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
5157
5158 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
5159
5160         * calls.c (initialize_argument_information): Pass original EXP
5161         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
5162         code to split complex arguments here, as part of initializing the
5163         ARGS array.
5164         (expand_call): Remove code that builds a list of arguments and
5165         inserts implicit arguments into it.  Instead, just count how many
5166         implicit arguments there will be so we can determine the size of
5167         the ARGS array, and let initialize_argument_information do the work.
5168         (split_complex_values): Delete unused function.
5169
5170 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
5171
5172         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
5173
5174 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
5175
5176         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
5177         for arg pointer based indexed addressing.
5178
5179 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
5180
5181         * config/ia64/ia64.h, config/ia64/ia64.md,
5182         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
5183         spelling conventions.
5184
5185 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5186
5187         * config/m68k/m68k.c (split_di): New.
5188         * config/m68k/m68k-protos.h: Declare split_di.
5189         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
5190           Improve predicate handling and split constant shifts.
5191
5192 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5193
5194         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
5195         parameter for register bitfield operations, general predicates
5196         cleanup
5197
5198 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5199
5200         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
5201         * config/m68k/linux-unwind.h: New file.
5202
5203 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
5204
5205         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
5206         config/i386/athlon.md, config/ia64/ia64.md,
5207         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
5208         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
5209         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
5210         tree-ssa-loop-niter.c, tree-vect-analyze.c,
5211         tree-vect-transform.c: Fix comment typos.
5212
5213 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
5214
5215         * sched-deps.c (find_insn_list): Remove.
5216         * sched-int.h: Remove the prototype for find_insn_list.
5217
5218 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
5219
5220         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
5221         to linker.
5222         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
5223         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
5224         darwin_rs6000_override_options.
5225         (C_COMMON_OVERRIDE_OPTIONS): Expect
5226         darwin_macosx_version_min to be non-NULL always.
5227         (TARGET_C99_FUNCTIONS): Likewise.
5228         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
5229         (DARWIN_MINVERSION_SPEC): New.
5230         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
5231         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
5232         to cc1*.
5233         (DARWIN_MINVERSION_SPEC): New.
5234         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
5235         value.
5236         * config/darwin-c.c (darwin_cpp_builtins): Expect
5237         darwin_macosx_version_min to be non-NULL always.
5238
5239         * config/rs6000/rs6000.c: Clean up trailing whitespace.
5240
5241 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
5242
5243         * config/i386/i386.h (x86_use_xchgb): New.
5244         (TARGET_USE_XCHGB): New macro.
5245         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
5246         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
5247         Split after reload into bswaphi for shifts of 8.
5248         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
5249         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
5250         or when optimizing for size.
5251
5252 2007-02-16  Richard Guenther  <rguenther@suse.de>
5253             Christian Bruel  <christian.bruel@st.com>
5254
5255         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
5256         DECLs but prefer SSA_NAMEs over DECLs.
5257
5258 2007-02-16  Richard Guenther  <rguenther@suse.de>
5259
5260         * tree-flow-inline.h (single_imm_use_p): Remove.
5261         (zero_imm_uses_p): Likewise.
5262         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
5263         instead of single_imm_use_p.
5264         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
5265         zero_imm_uses_p.
5266
5267 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5268
5269         PR other/27843
5270         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
5271         nested double- and backquotes.
5272
5273 2007-02-15  Roger Sayle  <roger@eyesopen.com>
5274
5275         PR middle-end/30391
5276         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
5277         should be unreachable.
5278         (build2_stat): Allow construction of MODIFY_EXPR at any time.
5279         For the time being redirect GIMPLE_MODIFY_STMT to the new
5280         (renamed) build_gimple_modify_stmt_stat.
5281         (build2_gimple_stat): Rename to...
5282         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
5283         Always build a GIMPLE_MODIFY_STMT node.
5284         * tree.h (build2_gimple, build2_gimple_stat): Delete.
5285         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
5286         declarations.
5287
5288         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
5289         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
5290         * tree-complex.c (set_component_ssa_name, expand_complex_move,
5291         expand_complex_div_wide): Likewise.
5292         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
5293         * tree-ssa-loop-im.c (schedule_sm): Likewise.
5294         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
5295         * tree-ssa-loop-manip.c (create_iv): Likewise.
5296         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
5297         abs_replacement): Likewise.
5298         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
5299         realify_fake_stores): Likewise.
5300
5301         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
5302         node rather than a GIMPLE_MODIFY_STMT node.
5303         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
5304         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
5305         Likewise.
5306         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
5307         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
5308         GIMPLE_MODIFY_STMT.
5309
5310 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5311
5312         PR middle-end/30433
5313         * fold-const.c (fold_comparison): Add back the
5314         folding of constant complex comparisions.
5315
5316 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5317
5318         PR middle-end/30729
5319         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
5320         effects unknown to this function, return early.
5321
5322 2007-02-15  Ian Lance Taylor  <iant@google.com>
5323
5324         * lower-subreg.c (move_eh_region_note): New static function.
5325         (resolve_simple_move): Call it.
5326         (decompose_multiword_subregs): Track blocks for which we resolve a
5327         simple move which is also a control flow insn.  Pass them to
5328         find_many_sub_basic_blocks.
5329         (pass_lower_subreg): Add TODO_verify_flow.
5330         (pass_lower_subreg2): Likewise.
5331
5332 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5333             Brooks Moses  <brooks.moses@codesourcery.com>
5334             Lee Millward  <lee.millward@codesourcery.com>
5335
5336         * tree.h (enum tree_code_class): Add tcc_vl_exp.
5337         (VL_EXP_CLASS_P): New.
5338         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
5339         TREE_CODE_LENGTH.
5340         (TREE_OPERAND_CHECK_CODE): Likewise.
5341         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
5342         (TREE_RTL_OPERAND_CHECK): Likewise.
5343         (tree_operand_check_failed): Make second parameter the whole tree
5344         instead of its code.  Fixed callers.
5345         (VL_EXP_CHECK): New.
5346         (TREE_OPERAND_LENGTH): New.
5347         (VL_EXP_OPERAND_LENGTH): New.
5348         (CALL_EXPR_FN): New.
5349         (CALL_EXPR_STATIC_CHAIN): New.
5350         (CALL_EXPR_ARGS): New.
5351         (CALL_EXPR_ARG): New.
5352         (call_expr_nargs): New.
5353         (CALL_EXPR_ARGP): New.
5354         (build_nt_call_list): Declare.
5355         (build_vl_exp_stat): Declare.
5356         (build_vl_exp): New.
5357         (build_call_list): Declare.
5358         (build_call_nary): Declare.
5359         (build_call_valist): Declare.
5360         (build_call_array): Declare.
5361         (call_expr_arg): Declare.
5362         (call_expr_argp): Declare.
5363         (call_expr_arglist): Declare.
5364         (fold_build_call_list): Declare.
5365         (fold_build_call_list_initializer): Declare.
5366         (fold_call_expr): Declare to replace fold_builtin.
5367         (fold_builtin_fputs): Update to agree with modified definition.
5368         (fold_builtin_strcpy): Likewise.
5369         (fold_builtin_strncpy): Likewise.
5370         (fold_builtin_memory_chk): Likewise.
5371         (fold_builtin_stxcpy_chk): Likewise.
5372         (fold_builtin_strncpy_chk): Likewise.
5373         (fold_builtin_next_arg): Likewise.
5374         (fold_build_call_expr): Declare.
5375         (fold_builtin_call_list): Declare.
5376         (fold_builtin_call_valist): Declare.
5377         (build_call_expr): Declare.
5378         (validate_arglist): Update to agree with modified definition.
5379         (tree_operand_length): New.
5380         (call_expr_arg_iterator): New.
5381         (init_call_expr_arg_iterator): New.
5382         (next_call_expr_arg): New.
5383         (first_call_expr_arg): New.
5384         (more_call_expr_args_p): New.
5385         (FOR_EACH_CALL_EXPR_ARG): New.
5386
5387         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
5388         and tcc_gimple_stmt.
5389         (tree_code_size): Update documentation.  Use sizeof (tree) rather
5390         than sizeof (char *).
5391         (tree_size): Likewise.  Add case for tcc_vl_exp.
5392         (tree_node_structure): Add case for tcc_vl_exp.
5393         (contains_placeholder_p): Likewise.
5394         (substitute_in_expr): Likewise.
5395         (substitute_placeholder_in_expr): Likewise.
5396         (stabilize_reference_1): Likewise.
5397         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
5398         to diagnose breakage of this interface for constructing CALL_EXPRs.
5399         (build_nt): Add similar assertion here.
5400         (build_nt_call_list): New.
5401         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
5402         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
5403         TREE_CODE_LENGTH.
5404         (get_callee_fndecl): Use new CALL_EXPR accessors.
5405         (tree_operand_check_failed): Change parameters to pass entire node
5406         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
5407         (process_call_operands): New.
5408         (build_vl_exp_stat): New.
5409         (build_call_list): New.
5410         (build_call_nary): New.
5411         (build_call_valist): New.
5412         (build_call_array): New.
5413         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5414         (call_expr_arglist): New.
5415
5416         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
5417         tcc_vl_exp instead of a fixed-size tcc_expression.
5418
5419         * doc/c-tree.texi (CALL_EXPR): Document new representation and
5420         accessors for CALL_EXPRs.
5421         (AGGR_INIT_EXPR): Likewise.
5422
5423 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5424             Brooks Moses  <brooks.moses@codesourcery.com>
5425             Lee Millward  <lee.millward@codesourcery.com>
5426
5427         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
5428         (expand_builtin_nonlocal_goto): Change parameter to be entire
5429         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
5430         (expand_builtin_prefetch): Likewise.
5431         (expand_builtin_classify_type): Likewise.
5432         (mathfn_built_in): Return NULL_TREE instead of 0.
5433         (expand_errno_check): Use new CALL_EXPR accessors.
5434         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
5435         Return NULL_RTX instead of 0.
5436         (expand_builtin_mathfn_2): Likewise.
5437         (expand_builtin_mathfn_3): Likewise.
5438         (expand_builtin_interclass_mathfn): Likewise.
5439         (expand_builtin_sincos): Likewise.
5440         (expand_builtin_cexpi): Likewise.
5441         (expand_builtin_int_roundingfn): Likewise.
5442         (expand_builtin_int_roundingfn_2): Likewise.
5443         (expand_builtin_pow): Likewise.
5444         (expand_builtin_powi): Likewise.
5445         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
5446         of arglist, fixing callers appropriately.  Use new CALL_EXPR
5447         accessors and constructors.  Return NULL_RTX instead of 0.
5448         (expand_builtin_strstr): Likewise.
5449         (expand_builtin_strchr): Likewise.
5450         (expand_builtin_strrchr): Likewise.
5451         (expand_builtin_strpbrk): Likewise.
5452         (expand_builtin_memcpy): Likewise.
5453         (expand_builtin_mempcpy): Likewise.
5454         (expand_builtin_mempcpy_args): New.
5455         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
5456         (expand_builtin_memmove_args): New.
5457         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
5458         (expand_movstr): Likewise.
5459         (expand_builtin_strcpy): Likewise.
5460         (expand_builtin_strcpy_args): New.
5461         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
5462         (expand_builtin_strncpy): Likewise.
5463         (expand_builtin_memset): Likewise.
5464         (expand_builtin_memset_args): New.
5465         (expand_builtin_bzero): Similarly to expand_builtin_memset.
5466         (expand_builtin_memcmp): Likewise.
5467         (expand_builtin_strcmp): Likewise.
5468         (expand_builtin_strncmp): Likewise.
5469         (expand_builtin_strcat): Likewise.
5470         (expand_builtin_strncat): Likewise.
5471         (expand_builtin_strspn): Likewise.
5472         (expand_builtin_strcspn): Likewise.
5473         (expand_builtin_args_info): Likewise.
5474         (expand_builtin_va_start): Likewise.
5475         (gimplify_va_arg_expr): Likewise.
5476         (expand_builtin_va_end): Likewise.
5477         (expand_builtin_va_copy): Likewise.
5478         (expand_builtin_frame_address): Likewise.
5479         (expand_builtin_alloca): Likewise.
5480         (expand_builtin_bswap): Likewise.
5481         (expand_builtin_unop): Likewise.
5482         (expand_builtin_fputs): Likewise.
5483         (expand_builtin_expect): Likewise.
5484         (expand_builtin_fabs): Likewise.
5485         (expand_builtin_copysign): Likewise.
5486         (expand_builtin_printf): Likewise.
5487         (expand_builtin_fprintf): Likewise.
5488         (expand_builtin_sprintf): Likewise.
5489         (expand_builtin_init_trampoline): Likewise.
5490         (expand_builtin_signbit): Likewise.
5491         (expand_builtin_fork_or_exec): Likewise.
5492         (expand_builtin_sync_operation): Likewise.
5493         (expand_builtin_compare_and_swap): Likewise.
5494         (expand_builtin_lock_test_and_set): Likewise.
5495         (expand_builtin_lock_release): Likewise.
5496         (expand_builtin): Likewise.
5497         (builtin_mathfn_code): Likewise.
5498
5499         (fold_builtin_constant_p): Pass call arguments individually instead
5500         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5501         accessors and constructors.  Return NULL_TREE instead of 0.
5502         (fold_builtin_expect): Likewise.
5503         (fold_builtin_classify_type): Likewise.
5504         (fold_builtin_strlen): Likewise.
5505         (fold_builtin_nan): Likewise.
5506         (integer_valued_real_p): Likewise.
5507         (fold_trunc_transparent_mathfn): Likewise.
5508         (fold_fixed_mathfn): Likewise.
5509         (fold_builtin_cabs): Likewise.
5510         (fold_builtin_sqrt): Likewise.
5511         (fold_builtin_cbrt): Likewise.
5512         (fold_builtin_cos): Likewise.
5513         (fold_builtin_cosh): Likewise.
5514         (fold_builtin_tan): Likewise.
5515         (fold_builtin_sincos): Likewise.
5516         (fold_builtin_cexp): Likewise.
5517         (fold_builtin_trunc): Likewise.
5518         (fold_builtin_floor): Likewise.
5519         (fold_builtin_ceil): Likewise.
5520         (fold_builtin_round): Likewise.
5521         (fold_builtin_int_roundingfn): Likewise.
5522         (fold_builtin_bitop): Likewise.
5523         (fold_builtin_bswap): Likewise.
5524         (fold_builtin_logarithm): Likewise.
5525         (fold_builtin_hypot): Likewise.
5526         (fold_builtin_pow): Likewise.
5527         (fold_builtin_powi): Likewise.
5528         (fold_builtin_exponent): Likewise.
5529         (fold_builtin_memset): Likewise.
5530         (fold_builtin_bzero): Likewise.
5531         (fold_builtin_memory_op): Likewise.
5532         (fold_builtin_bcopy): Deleted; call site changed to invoke
5533         fold_builtin_memory_op directly.
5534         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
5535         (fold_builtin_strncpy): Likewise.
5536         (fold_builtin_memcmp): Likewise.
5537         (fold_builtin_strcmp): Likewise.
5538         (fold_builtin_strncmp): Likewise.
5539         (fold_builtin_signbit): Likewise.
5540         (fold_builtin_copysign): Likewise.
5541         (fold_builtin_isascii): Likewise.
5542         (fold_builtin_toascii): Likewise.
5543         (fold_builtin_isdigit): Likewise.
5544         (fold_builtin_fabs): Likewise.
5545         (fold_builtin_abs): Likewise.
5546         (fold_builtin_fmin_fmax): Likewise.
5547         (fold_builtin_carg): Likewise.
5548         (fold_builtin_classify): Likewise.
5549         (fold_builtin_unordered_cmp): Likewise.
5550
5551         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
5552         New functions split out from fold_builtin_1.
5553         (fold_builtin_n): New.
5554         (fold_builtin_varargs): New.
5555         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
5556         instead.
5557         (fold_call_expr): New.
5558         (build_function_call_expr): Rewrite to use new helper function.
5559         (fold_builtin_call_list): New.
5560         (build_call_expr): New.
5561         (fold_builtin_call_valist): New.
5562         (rewrite_call_expr): New.
5563         (validate_arg): New.
5564         (validate_arglist): Change parameter to be entire CALL_EXPR instead
5565         of an arglist.  Change return type to bool.  Use new CALL_EXPR
5566         accessors.
5567
5568         (fold_builtin_strstr):  Pass call arguments individually instead
5569         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5570         accessors and constructors.  Return NULL_TREE instead of 0.
5571         (fold_builtin_strchr): Likewise.
5572         (fold_builtin_strrchr): Likewise.
5573         (fold_builtin_strpbrk): Likewise.
5574         (fold_builtin_strcat): Likewise.
5575         (fold_builtin_strncat): Likewise.
5576         (fold_builtin_strspn): Likewise.
5577         (fold_builtin_strcspn): Likewise.
5578         (fold_builtin_fputs): Likewise.
5579         (fold_builtin_next_arg): Likewise.
5580         (fold_builtin_sprintf): Likewise.
5581
5582         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
5583         NULL_RTX instead of 0.
5584         (expand_builtin_memory_chk): Likewise.
5585         (maybe_emit_chk_warning): Likewise.
5586         (maybe_emit_sprintf_chk_warning): Likewise.
5587
5588         (fold_builtin_object_size): Pass call arguments individually instead
5589         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5590         accessors and constructors.  Return NULL_TREE instead of 0.
5591         (fold_builtin_memory_chk): Likewise.
5592         (fold_builtin_stxcpy_chk): Likewise.
5593         (fold_builtin_strncpy_chk): Likewise.
5594         (fold_builtin_strcat_chk): Likewise.
5595         (fold_builtin_strcat_chk): Likewise.
5596         (fold_builtin_strncat_chk): Likewise.
5597         (fold_builtin_sprintf_chk): Likewise.
5598         (fold_builtin_snprintf_chk): Likewise.
5599         (fold_builtin_printf): Likewise.
5600         (fold_builtin_vprintf): Likewise.
5601
5602         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
5603         constructors.
5604         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
5605         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5606         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
5607         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
5608         (fold_unary): Likewise.
5609         (fold_binary): Likewise.
5610         (fold_ternary): Remove CALL_EXPR case, since they are no longer
5611         ternary expressions.
5612         (fold): Add logic for tcc_vl_exp.
5613         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
5614         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5615         (fold_build3_stat): Add assertion to flag broken interface for
5616         constructing CALL_EXPRs.
5617         (fold_build_call_list): New.
5618         (fold_build_call_list_initializer): New.
5619         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
5620         constructors.
5621         (fold_strip_sign_ops): Likewise.
5622
5623 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5624             Brooks Moses  <brooks.moses@codesourcery.com>
5625             Lee Millward  <lee.millward@codesourcery.com>
5626
5627         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
5628         accessors and dump arguments explicitly.
5629
5630         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
5631         TREE_CODE_LENGTH.
5632         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
5633         explicitly.
5634         (print_call_name): Use new CALL_EXPR accessors.
5635
5636         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
5637         CALL_EXPR arguments explicitly instead of as a list.  Use
5638         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5639
5640         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
5641         (vrp_visit_stmt): Likewise.
5642
5643         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
5644         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
5645         TREE_CODE_LENGTH.
5646         (force_move_till_expr): Likewise.
5647
5648         * targhooks.c (default_external_stack_protect_fail): Use
5649         build_call_expr instead of build_function_call_expr.
5650         (default_hidden_stack_protect_fail): Likewise.
5651
5652         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
5653         build the call.
5654
5655         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
5656         and walk arguments explicitly.
5657
5658         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
5659         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5660         (expand_simple_operations): Likewise.
5661         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
5662
5663         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
5664         of TREE_CODE_LENGTH.
5665         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
5666
5667         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
5668         instead of TREE_CODE_LENGTH.
5669
5670         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
5671         (tree_ic_transform): Likewise.
5672         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
5673         parameter instead of arglist.  Fix callers.
5674         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
5675         (tree_stringops_transform): Likewise.
5676         (tree_indirect_call_to_profile): Likewise.
5677         (tree_stringops_values_to_profile): Likewise.
5678
5679         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
5680         (eliminate_tail_call): Likewise.
5681
5682         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
5683
5684         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
5685         Use TREE_OPERAND_LENGTH and generalize to handle any number of
5686         operands.
5687         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
5688
5689         * omp-low.c (build_omp_barrier): Use build_call_expr.
5690         (lower_rec_input_clauses): Likewise.
5691         (lower_reduction_clauses): Likewise.
5692         (expand_parallel_call): Likewise.
5693         (maybe_catch_exception): Likewise.
5694         (expand_omp_for_generic): Likewise.
5695         (expand_omp_for_static_nochunk): Likewise.
5696         (expand_omp_sections): Likewise.
5697         (lower_omp_single_simple): Likewise.
5698         (lower_omp_single_copy): Likewise.
5699         (lower_omp_master): Likewise.
5700         (lower_omp_ordered): Likewise.
5701         (lower_omp_critical): Likewise.
5702
5703         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
5704         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
5705
5706         * tree-gimple.c (is_gimple_call_addr): Fix doc.
5707         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
5708         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
5709
5710         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
5711         and generalize to handle any number of operands.
5712         (chrec_contains_undetermined): Likewise.
5713         (tree_contains_chrecs): Likewise.
5714         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
5715
5716         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
5717
5718         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
5719         fold_call_expr instead of fold_builtin.
5720         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
5721         match declarations there.
5722         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
5723         updates.
5724
5725         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
5726         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5727
5728         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
5729         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
5730
5731         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
5732         accessors.
5733
5734         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
5735         (execute_cse_sincos): Use new CALL_EXPR accessors.
5736
5737         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
5738
5739         * gimple-low.c (lower_function_body): Use build_call_expr.
5740         (lower_builtin_setjmp): Likewise.
5741
5742         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
5743         (set_storage_via_libcall): Likewise.
5744         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
5745         instead of TREE_CODE_LENGTH.
5746         (expand_expr_real_1): Use new CALL_EXPR accessors.
5747
5748         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
5749         generalize to handle any number of operands.
5750         (TB_parent_eq): Likewise.
5751
5752         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
5753         (strip_builtin_expect): Likewise.
5754
5755         * function.c (gimplify_parameters): Use build_call_expr.
5756
5757         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
5758         instead of TREE_CODE_LENGTH.
5759
5760         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
5761         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
5762
5763         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
5764         iterators.
5765
5766         * gimplify.c (build_stack_save_restore): Use build_call_expr.
5767         (gimplify_decl_expr): Likewise.
5768         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
5769         Use new CALL_EXPR iterators.
5770         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
5771         (gimplify_modify_expr_to_memset): Likewise.
5772         (gimplify_variable_sized_compare): Likewise.
5773         (gimplify_omp_atomic_fetch_op): Likewise.
5774         (gimplify_omp_atomic_pipeline): Likewise.
5775         (gimplify_omp_atomic_mutex): Likewise.
5776         (gimplify_function_tree): Likewise.
5777
5778         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
5779         (call_expr_flags): Likewise.
5780         (expand_call): Likewise.
5781
5782         * except.c (expand_builtin_eh_return_data_regno): Pass entire
5783         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
5784         accessors.
5785
5786         * coverage.c (create_coverage): Use build_call_expr.
5787
5788         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
5789         (temp_call_expr_obstack): New.
5790         (pool_copy_list): Delete.
5791         (temp_copy_call_expr): New.
5792         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
5793         CALL_EXPR accessors.  Get rid of special goo for copying argument
5794         lists and use temp_copy_call_expr instead.
5795         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
5796         CALL_EXPR accessors.
5797         (create_expression_by_pieces): Likewise.  Use build_call_array
5798         to construct the result instead of fold_build3.
5799         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
5800         dealing with argument lists.
5801         (init_pre): Remove references to expression_node_pool and
5802         list_node_pool.  Init temp_call_expr_obstack instead.
5803         (fini_pre): Remove references to expression_node_pool and
5804         list_node_pool.
5805
5806         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
5807         and walk arguments explicitly instead of as a list.
5808
5809         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
5810         (mx_register_decls): Likewise.
5811         (mudflap_register_call): Likewise.
5812         (mudflap_finish_file): Likewise.
5813
5814         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
5815         (ipa_callsite_compute_param): Likewise.
5816
5817         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
5818         accessors and constructor.
5819
5820         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
5821         accessors and constructor.
5822         (convert_tramp_reference): Likewise.
5823         (convert_call_expr): Likewise.
5824         (finalize_nesting_tree_1): Likewise.
5825
5826         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
5827         accessors.
5828
5829         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
5830
5831         * tree-inline.c (initialize_inlined_parameters): Pass entire
5832         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
5833         accessors.
5834         (estimate_num_insns_1): Use new CALL_EXPR accessors.
5835         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
5836
5837         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
5838         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5839         (vectorizable_reduction): Likewise.
5840         (vectorizable_call): Use new CALL_EXPR iterators.
5841         (vectorizable_conversion): Use build_call_expr.
5842         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
5843         (vect_gen_widened_results_half): Use build_call_expr.
5844         (vect_setup_realignment): Likewise.
5845         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
5846
5847         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
5848         (pass_through_call): Likewise.
5849         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
5850         fold_builtin.
5851
5852         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
5853         (tree_gen_pow2_profiler): Likewise.
5854         (tree_gen_one_value_profiler): Likewise.
5855         (tree_gen_ic_func_profiler): Likewise.
5856         (tree_gen_average_profiler): Likewise.
5857         (tree_gen_ior_profiler): Likewise.
5858
5859         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
5860         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
5861         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5862
5863         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
5864         of TREE_CODE_LENGTH.
5865
5866         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
5867         of TREE_CODE_LENGTH.
5868
5869         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
5870         constructor.
5871         (convert_to_integer): Likewise.
5872
5873         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
5874         accessors.
5875
5876 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5877             Brooks Moses  <brooks.moses@codesourcery.com>
5878             Lee Millward  <lee.millward@codesourcery.com>
5879
5880         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
5881         accessors.
5882         * config/frv/frv.c (frv_expand_builtin): Likewise.
5883         * config/s390/s390.c (s390_expand_builtin): Likewise.
5884
5885         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
5886         (sparc_expand_builtin): Use new CALL_EXPR accessors.
5887
5888         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
5889         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
5890         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
5891         (ix86_expand_store_builtin): Likewise.
5892         (ix86_expand_unop_builtin): Likewise.
5893         (ix86_expand_unop1_builtin): Likewise.
5894         (ix86_expand_sse_compare): Likewise.
5895         (ix86_expand_sse_comi): Likewise.
5896         (ix86_expand_vec_init_builtin): Likewise.
5897         (ix86_expand_vec_ext_builtin): Likewise.
5898         (ix86_expand_vec_set_builtin): Likewise.
5899         (ix86_expand_builtin): Use new CALL_EXPR accessors.
5900
5901         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
5902         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
5903
5904         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
5905         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5906         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
5907
5908         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
5909         build_call_expr.
5910         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
5911         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
5912         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5913         (altivec_expand_abs_builtin): Likewise.
5914         (rs6000_expand_binop_builtin): Likewise.
5915         (altivec_expand_predicate_builtin): Likewise.
5916         (altivec_expand_lv_builtin): Likewise.
5917         (spe_expand_stv_builtin): Likewise.
5918         (altivec_expand_stv_builtin): Likewise.
5919         (rs6000_expand_ternop_builtin): Likewise.
5920         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
5921         (altivec_expand_st_builtin): Likewise.
5922         (altivec_expand_dst_builtin): Likewise.
5923         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
5924         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5925         (altivec_expand_vec_set_builtin): Likewise.
5926         (altivec_expand_vec_ext_builtin): Likewise.
5927         (altivec_expand_builtin): Use new CALL_EXPR accessors.
5928         (spe_expand_builtin): Likewise.
5929         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
5930         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5931         (spe_expand_evsel_builtin): Likewise.
5932         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
5933         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
5934
5935         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
5936         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5937         (arm_expand_unop_builtin): Likewise.
5938         (arm_expand_builtin): Use new CALL_EXPR accessors.
5939
5940         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
5941         accessors.
5942
5943         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
5944         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5945         (bfin_expand_unop_builtin): Likewise.
5946         (bfin_expand_builtin): Use new CALL_EXPR accessors.
5947
5948 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5949             Brooks Moses  <brooks.moses@codesourcery.com>
5950             Lee Millward  <lee.millward@codesourcery.com>
5951
5952         * c-semantics.c (build_stmt): Add internal diagnostic check.
5953
5954         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
5955         accessors.  Print arguments explicitly instead of as a list.
5956
5957         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
5958
5959         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
5960         (c_finish_omp_flish): Likewise.
5961
5962         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
5963         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
5964         instead of TREE_CODE_LENGTH.
5965         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
5966         (c_warn_unused_result): Likewise.
5967
5968 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5969
5970         PR c/26494
5971         * doc/invoke.texi (Warning Options): Remove
5972         -Werror-implicit-function-declaration.
5973         (Wimplicit-function-declaration): Update description.
5974         * opts.c (common_handle_option): Move handling of -Werror=* to...
5975         (enable_warning_as_error): ...here.
5976         * opts.h (enable_warning_as_error): Declare.
5977         * c-decl.c (implicit_decl_warning): Unless
5978         -Wno-implicit-function-declaration is given, emit a pedwarn if
5979         -std=c99 or emit a warning if -Wimplicit-function-declaration.
5980         * c.opt (Wimplicit-function-declaration): Replace
5981         mesg_implicit_function_declaration with
5982         warn_implicit_function_declaration.
5983         * c-opts.c (c_common_handle_option):
5984         -Werror-implicit-function-declaration is exactly equal as
5985         -Werror=implicit-function-declaration.
5986         (set_Wimplicit): Replace mesg_implicit_function_declaration with
5987         warn_implicit_function_declaration.
5988         (c_common_post_options): -Wimplict-function-declaration is enabled
5989         by default by -std=c99, otherwise is disabled by default.
5990         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
5991
5992 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
5993
5994         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
5995         DECL on the rhs to a DECL on the lhs for debug info purposes if the
5996         former is ignored but not the latter.
5997
5998 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
5999
6000         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
6001         is made and the reference doesn't use the alias set of its type,
6002         do not create the temporary using that type.
6003
6004 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
6005
6006         * jump.c: Remove prototypes for delete_computation and
6007         delete_prior_computation.
6008
6009 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
6010
6011         * jump.c (get_label_after): Delete.
6012         (get_label_before, delete_computation, delete_jump,
6013         delete_prior_computation, follow_jumps): Move...
6014         * reorg.c (delete_computation, delete_prior_computation): ... here...
6015         (get_label_before, delete_jump): ... making these static ...
6016         (follow_jumps): ... and simplifying this since it only runs after
6017         reload.
6018         * rtl.h (get_label_after, get_label_before, delete_jump,
6019         follow_jumps): Delete prototypes.
6020
6021 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
6022
6023         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
6024
6025 2007-02-15  Nick Clifton  <nickc@redhat.com>
6026
6027         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
6028         order to prevent it from being munged by the target.
6029
6030 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
6031
6032         * config/i386/i386.md: Remove misleading comment.
6033
6034 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6035
6036         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
6037         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
6038         invalid patterns.
6039
6040 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6041
6042         * tree-sra.c (instantiate_missing_elements): Canonicalize
6043         bit-field types.
6044         (sra_build_assignment): New.
6045         (generate_copy_inout, generate_element_copy,
6046         generate_element_zero, generate_one_element_init): Use it.
6047
6048 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6049
6050         * tree-sra.c (instantiate_missing_elements): Canonicalize
6051         bit-field types.
6052         (sra_build_assignment): New.
6053         (generate_copy_inout, generate_element_copy,
6054         generate_element_zero, generate_one_element_init): Use it.
6055
6056 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6057
6058         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
6059         limbo die nodes.
6060
6061 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
6062
6063         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
6064         types as aggregates not scalars.
6065         * function.c (assign_stack_temp_for_type): Likewise.
6066
6067 2007-02-14  Roger Sayle  <roger@eyesopen.com>
6068             Zdenek Dvorak  <dvorakz@suse.cz>
6069
6070         * tree-dump.c (dump_switch_p_1): Require exact match of the option
6071         name.
6072
6073 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
6074
6075         * passes.c (next_pass_1): Clear the next field of the copied
6076         pass structure.
6077
6078 2007-02-14  Richard Henderson  <rth@redhat.com>
6079
6080         * tree-sra.c (early_sra): New.
6081         (decl_can_be_decomposed_p): Deny va_list if early_sra.
6082         (tree_sra_early, pass_sra_early): New.
6083         * tree-pass.h (pass_sra_early): Declare.
6084         * passes.c (init_optimization_passes): Use it.
6085
6086 2007-02-14  Richard Guenther  <rguenther@suse.de>
6087
6088         * flags.h (issue_strict_overflow_warning): Convert to a macro.
6089
6090 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
6091
6092          PR tree-optimization/30771
6093         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
6094         also phi nodes.
6095         (vect_analyze_operations): Induction phis can now be marked as
6096         used_in_loop.
6097         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
6098         Update documentation accordingly.
6099
6100 2007-02-14  Nick Clifton  <nickc@redhat.com>
6101
6102         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
6103         most 3 arguments are supported.
6104         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
6105
6106 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
6107
6108         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
6109         Ensure dst->current is valid.
6110
6111 2007-02-13  Paul Brook  <paul@codesourcery.com>
6112
6113         * config.gcc: Add arm*-*-uclinux-*eabi.
6114         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
6115         (SUBTARGET_EXTRA_LINK_SPEC): Define.
6116         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
6117         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
6118         (LINK_SPEC): Define.
6119         (LIB_SPEC): Define.
6120         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
6121         register.
6122         * config/arm/uclinux-eabi.h: New file.
6123         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
6124         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
6125         based targets.
6126
6127 2007-02-13  Ian Lance Taylor  <iant@google.com>
6128
6129         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
6130         * flags.h (warn_strict_overflow): Declare.
6131         (enum warn_strict_overflow_code): Define.
6132         (issue_strict_overflow_warning): New static inline function.
6133         * opts.c (warn_strict_overflow): New variable.
6134         (common_handle_option): Handle OPT_Wstrict_overflow and
6135         OPT_Wstrict_overflow_.
6136         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
6137         OPT_Wall.
6138         * fold-const.c: Include intl.h.
6139         (fold_deferring_overflow_warnings): New static variable.
6140         (fold_deferred_overflow_warning): New static variable.
6141         (fold_deferred_overflow_code): New static variable.
6142         (fold_defer_overflow_warnings): New function.
6143         (fold_undefer_overflow_warnings): New function.
6144         (fold_undefer_and_ignore_overflow_warnings): New function.
6145         (fold_deferring_overflow_warnings_p): New function.
6146         (fold_overflow_warning): New static function.
6147         (make_range): Add strict_overflow_p parameter.  Change all
6148         callers.
6149         (extract_muldiv, extract_muldiv_1): Likewise.
6150         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
6151         tree_expr_nonnegative_p.
6152         (fold_negate_expr): Call fold_overflow_warning.
6153         (fold_range_test): Likewise.
6154         (fold_comparison): Likewise.
6155         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
6156         instead of tree_expr_nonnegative_p.
6157         (tree_expr_nonnegative_warnv_p): Rename from
6158         tree_expr_nonnegative_p, add strict_overflow_p parameter.
6159         (tree_expr_nonnegative_p): New function.
6160         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
6161         strict_overflow_p parameter.
6162         (tree_expr_nonzero_p): New function.
6163         * passes.c (verify_interpass_invariants): New static function.
6164         (execute_one_pass): Call it.
6165         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
6166         warnings.
6167         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
6168         (estimate_numbers_of_iterations): Likewise.
6169         (scev_probably_wraps_p): Likewise.
6170         * tree-ssa-ccp.c: Include "toplev.h".
6171         (evaluate_stmt): Defer fold overflow warnings until we know we are
6172         going to optimize.
6173         (struct fold_stmt_r_data): Add stmt field.
6174         (fold_stmt_r): Defer fold overflow warnings until we know we
6175         optimized.
6176         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
6177         (fold_stmt_inplace): Likewise.
6178         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
6179         (cleanup_control_expr_graph): Defer fold overflow warnings until
6180         we know we are going to optimize.
6181         * tree-cfg.c (fold_cond_expr_cond): Likewise.
6182         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
6183         Likewise.
6184         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
6185         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
6186         * tree-ssa-loop-manip.c (create_iv): Likewise.
6187         * c-typeck.c (build_conditional_expr): Likewise.
6188         (build_binary_op): Likewise.
6189         * tree-vrp.c (vrp_expr_computes_nonzero): Call
6190         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
6191         (extract_range_from_unary_expr): Likewise.
6192         * simplify-rtx.c (simplify_const_relational_operation): Warn when
6193         assuming that signed overflow does not occur.
6194         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
6195         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
6196         (fold_defer_overflow_warnings): Declare.
6197         (fold_undefer_overflow_warnings): Declare.
6198         (fold_undefer_and_ignore_overflow_warnings): Declare.
6199         (fold_deferring_overflow_warnings_p): Declare.
6200         (tree_expr_nonzero_warnv_p): Declare.
6201         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
6202         of warning options.
6203         (Warning Options): Document -Wstrict-overflow.
6204         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
6205         (tree-ssa-ccp.o): Likewise.
6206         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
6207         (fold-const.o): Depend on intl.h.
6208
6209 2007-02-13  Ian Lance Taylor  <iant@google.com>
6210
6211         PR middle-end/30751
6212         * lower-subreg.c (resolve_simple_move): Decompose subregs in
6213         addresses.
6214
6215 2007-02-13  Stuart Hastings  <stuart@apple.com>
6216
6217         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
6218
6219 2007-02-13  Richard Henderson  <rth@redhat.com>
6220
6221         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
6222         handled_component_p before looking for the indirect_ref.
6223
6224 2007-02-13  Richard Henderson  <rth@redhat.com>
6225
6226         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
6227         remove flags clobber.
6228         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
6229         (bswaphi_lowpart): New.
6230         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
6231         remove TARGET_BSWAP test.  Delete expander of the same name.
6232
6233         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
6234         (expand_unop): Use them.
6235
6236 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
6237
6238         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
6239         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
6240         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
6241         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
6242         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
6243         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
6244         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
6245         assembler dialect choice from asm templates.
6246
6247 2007-02-12  Richard Henderson  <rth@redhat.com>
6248
6249         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
6250         (fixuns_trunc<SSEMODEF>si2): Use it.
6251         * config/i386/sse.md (vec_setv4sf_0): Export.
6252         * config/i386/i386.c (ix86_build_const_vector): Export.
6253         (ix86_split_convert_uns_si_sse): Rename from
6254         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
6255         * config/i386/i386-protos.h: Update.
6256
6257 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6258
6259         PR c/29521
6260         * c-typeck.c (c_finish_return): Improve warning message.
6261
6262 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6263
6264         * alias.c (find_symbolic_term): Delete unused function.
6265
6266 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
6267
6268         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
6269         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
6270         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
6271
6272 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
6273
6274         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
6275         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
6276         the function, temporarily point the debug interface to the null one.
6277
6278 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
6279
6280         * dwarf2out.c (round_up_to_align): New static function.
6281         (field_byte_offset): Use it to round the offset.
6282
6283 2007-02-12  Richard Henderson  <rth@redhat.com>
6284
6285         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
6286         (inswl_const): Export.
6287
6288 2007-02-12  Richard Henderson  <rth@redhat.com>
6289
6290         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
6291         result mode of the libcall, convert back to outmode.
6292
6293 2007-02-12  Roger Sayle  <roger@eyesopen.com>
6294
6295         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
6296         (bswapdi2): New define_expand to implement 32-bit implementation.
6297
6298 2007-02-12  Nick Clifton  <nickc@redhat.com>
6299
6300         * doc/invoke.texi (Overall Options): Document --help=.
6301         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
6302         (cc1_options): Pass --help= on to cc1.
6303         (display_help): Add description of --help=.
6304         (process_command): Add code to handle --help=.  Allow translated
6305         --help and --target-help switches to be passed on to compiler
6306         sub-process.
6307         (main): Remove unused if statement.
6308         * opts.c (columns): Remove.
6309         (LEFT_COLUMN): Define.
6310         (wrap_help): Add columns argument.
6311         (print_filtered_help): Change parameters to be an include bitmask,
6312         an exclude bitmask, an any bitmask and the column width.  Move the
6313         code to display the params list here.  Add code to display the
6314         status of options rather than their descriptions if the quiet flag
6315         is not active.
6316         (print_specific_help): Change parameters to be an include bitmask,
6317         an exclude bitmask and an any bitmask.  Move code to look up the
6318         column width here.  Decide upon the title for an options listing.
6319         (common_handle_options): Add code to handle --help=.  Adapt code
6320         for --help and --target-help to use the revised form of the
6321         print_specific_help function.
6322         (print_help): Delete.
6323         (print_param_help): Delete.
6324         (print_switch): Delete.
6325         * opts.h (cl_lang_count): Add prototype.
6326         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
6327         CL_MAX_OPTION_CLASS): New defines.
6328         * optc-gen.awk: Add construction of cl_lang_count.
6329         * c.opt: Add Warning attribute to warning options and Optimization
6330         attribute to optimization options.
6331         * common.opt: Likewise.
6332         Add --help=.
6333         Add -fhelp and -ftarget-help as aliases for the transformed --help
6334         and --target-help options.
6335         * opt-functions.awk: Add code to handle Warning and Optimization
6336         attributes.
6337
6338 2007-02-12  Richard Henderson  <rth@redhat.com>
6339
6340         * config/alpha/constraints.md: New file.
6341         * config/alpha/alpha.c: Include tm-constrs.h.
6342         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
6343         alpha_extra_constraint): Remove.
6344         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
6345         * config/alpha/alpha-protos.h: Update.
6346         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
6347         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
6348         (EXTRA_CONSTRAINT): Remove.
6349         * config/alpha/alpha.md: Include constraints.md.
6350         (adddi splitter): Use satisfies_constraint_*.
6351         * config/alpha/predicates.md (add_operand): Likewise.
6352         (sext_add_operand, addition_operation): Likewise.
6353
6354 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
6355
6356         PR tree-optimization/29145
6357         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
6358         in our handling of restrict qualified pointers.
6359
6360 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6361
6362         PR middle-end/7651
6363         * doc/invoke.texi (Wunused-value): Update description.
6364         (Wextra): Delete item.
6365         * opts.c (set_Wextra): Don't use the value of Wextra to set the
6366         value of Wunused-value.
6367         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
6368         (c_finish_stmt_expr): Don't check extra_warnings.
6369         (emit_side_effect_warnings): The caller is responsible to check
6370         warn_unused_value.
6371
6372 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6373             Matt Thomas  <matt@3am-software.com>
6374
6375         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
6376
6377 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6378
6379         * simplify-rtx.c (simplify_relational_operation_1): Optimize
6380         comparisons of POPCOUNT against zero.
6381         (simplify_const_relational_operation): Likewise.
6382
6383 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6384
6385         * doc/invoke.texi (Wextra): Delete outdated paragraph.
6386
6387 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6388
6389         * dwarf2out.c (root_type): Delete unused function.
6390
6391 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6392
6393         * genattrtab.c (contained_in_p): Delete unused function.
6394         (write_expr_attr_cache): Likewise.
6395
6396 2007-02-11  Jan Hubicka  <jh@suse.cz>
6397
6398         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
6399         previous patch.
6400
6401 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
6402
6403         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
6404         to add the REG_EQ* note.
6405         * see.c (see_merge_one_use_extension): Likewise.
6406         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
6407         turn REG_EQUAL notes into REG_EQUIV notes if the target
6408         register may have more than one set.
6409         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
6410         * gcse.c (try_replace_reg): Likewise.
6411         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
6412         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
6413         more than one REG_EQUIV note.
6414         * reload1.c (gen_reload): Use set_unique_reg_note.
6415
6416 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
6417
6418         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
6419         (ix86_builtin_conversion): New function.
6420
6421 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
6422
6423         PR target/29487
6424         * tree.h (DECL_REPLACEABLE_P): New macro.
6425         * except.c (set_nothrow_function_flags): Likewise.
6426
6427 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
6428             Ira Rosen  <irar@il.ibm.com>
6429             Dorit Nuzman  <dorit@il.ibm.com>
6430
6431         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
6432         * targhooks.c (default_builtin_vectorized_conversion): New.
6433         * targhooks.h (default_builtin_vectorized_function): New declaration.
6434         * target.h (struct vectorize): Add builtin_conversion field.
6435         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
6436         stmt_vec_info_type value.
6437         (vectorizable_conversion): New declaration.
6438         * tree-vect-analyze.c (vect_analyze_operations): Add
6439         vectorizable_conversion call.
6440         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
6441         * tree-vect-transform.c (vectorizable_conversion): New function.
6442         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
6443         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
6444         mode.
6445         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
6446         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
6447         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
6448         or ALTIVEC_BUILTIN_VCFSX.
6449
6450 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6451
6452         PR target/30634
6453         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
6454         CONST_DOUBLE and operand 0 is a hard register.
6455         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
6456         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
6457         is a hard floating-point register.
6458
6459 2007-02-10  Richard Henderson  <rth@redhat.com>
6460             Jakub Jelinek  <jakub@redhat.com>
6461             Alexandre Oliva  <aoliva@redhat.com>
6462
6463         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
6464         * builtin-types.def (BT_WORD): Make unsigned.
6465         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
6466         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
6467         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
6468         * c-decl.c (grokdeclarator): Don't error if !have_tls.
6469         * c-parser.c (c_parser_omp_threadprivate): Likewise.
6470         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
6471         emulated tls.
6472         * expr.c (emutls_var_address): New.
6473         (expand_expr_real_1): Expand emulated tls.
6474         (expand_expr_addr_expr_1): Likewise.
6475         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
6476         * output.h (emutls_finish): Declare.
6477         * toplev.c (compile_file): Call it.
6478         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
6479         address before wrapping in CONST.
6480         * varasm.c (emutls_htab, emutls_object_type): New.
6481         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
6482         (get_emutls_object_name, get_emutls_object_type): New.
6483         (get_emutls_init_templ_addr, emutls_decl): New.
6484         (emutls_common_1, emutls_finish): New.
6485         (assemble_variable): When emulating tls, swap decls; generate
6486         constructor for the emutls objects.
6487         (do_assemble_alias): When emulating tls, swap decl and target name.
6488         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
6489         for emulated tls.
6490         * varpool.c (decide_is_variable_needed): Look at force_output.
6491         Recurse for emulated tls.
6492         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
6493         with decide_is_variable_needed.
6494         * emutls.c: New file.
6495         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
6496         tls_object for real tls.
6497
6498 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6499
6500         PR rtl-optimization/29599
6501         * reload1.c (eliminate_regs_in_insn): Take the destination
6502         mode into account when computing the offset.
6503
6504 2007-02-09  Stuart Hastings  <stuart@apple.com>
6505             Richard Henderson  <rth@redhat.com>
6506
6507         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6508         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6509         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
6510         fixuns_truncdfhi2): New.
6511         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
6512         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
6513         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
6514         (floatunssidf2): Allow nonimmediate source.
6515         * gcc/config/i386/sse.md (movdi_to_sse): New.
6516         (vec_concatv2di): Drop '*'.
6517         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
6518         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6519         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
6520         New.
6521         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
6522         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6523         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
6524         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
6525         (ix86_build_signbit_mask): Fix decl of v, refactor to call
6526         ix86_build_const_vector.
6527         (x86_emit_floatuns): Rewrite.
6528
6529 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6530
6531         * genautomata.c (longest_path_length): Delete unused function.
6532         (struct state): Delete unused longest_path_length.
6533         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
6534         (get_free_state): Delete unused.
6535
6536 2007-02-09  Jan Hubicka  <jh@suse.cz>
6537
6538         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
6539         * doc/invoke.texi (inline-unit-growth): Update default value.
6540
6541         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
6542         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
6543         (rebuild_cgraph_edges): Likewise.
6544         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
6545         (dump_cgraph_node): Dump frequencies.
6546         (cgraph_clone_edge): Add frequency scales.
6547         (cgraph_clone_node): Add freuqnecy.
6548         * cgraph.h (cgraph_edge): Add freuqnecy argument.
6549         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
6550         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
6551         * tree-pass.h (TODO_rebuild_frequencies): New constant.
6552         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
6553         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
6554         (save_inline_function_body): Likewise.
6555         * ipa-inline.c: inluce rtl.h
6556         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
6557         (cgraph_edge_badness): Use frequencies.
6558         (cgraph_decide_recursive_inlining): Update clonning.
6559         (cgraph_decide_inlining_of_small_function): Dump frequency.
6560         * predict.c (estimate_bb_frequencies): Export.
6561         * predict.h (estimate_bb_frequencies): Declare.
6562         * tree-inline.c (copy_bb): Watch overflows.
6563         (expand_call_inline): Update call of cgraph_create_edge.
6564         (optimize_inline_calls): Use TODO flags to update frequnecies.
6565         * passes.h: Include predict.h
6566         (init_optimization_passes): Move profile ahead.
6567         (execute_function_todo): Handle TODO_rebuild_frequencies.
6568
6569 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6570
6571         * config/alpha/alpha.c (emit_insxl): Force the first operand of
6572         the insbl or inswl pattern into a register.
6573
6574 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6575
6576         * config/ia64/ia64.md (bswapdi2): New define_insn.
6577
6578 2007-02-09  Richard Henderson  <rth@redhat.com>
6579
6580         * config/i386/constraints.md (Ym): New constraint.
6581         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
6582         (movdi_1_rex64): Split sse and xmm general register moves from
6583         memory move alternatives.  Use conditional register constraints.
6584         (movsf_1, movdf_integer): Likewise.
6585         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
6586         (movdf_integer_rex64): New.
6587         (pushsf_rex64): Fix output constraints.
6588         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
6589         (sse2_stored): Likewise.
6590         (sse2_storeq_rex64): New.
6591         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
6592         amd and not generic.
6593         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
6594         for optimize_size.  Remove SF/DFmode hack.
6595
6596 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6597
6598         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
6599         (bit_SSE4a): New.
6600
6601 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
6602             Richard Sandiford  <richard@codesourcery.com>
6603
6604         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
6605         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
6606         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
6607         m68k/t-mlib to tmake_file.
6608         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
6609         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
6610         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
6611         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
6612         variable is not empty, add t-$m68k_arch_family to tmake_file.
6613         Add t-mlibs to tmake_file.
6614         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
6615         * config/m68k/t-cf: New file.
6616         * config/m68k/t-m68k: Likewise.
6617         * config/m68k/t-mlibs: Likewise.
6618         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6619         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6620         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6621         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6622         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
6623         Delete.
6624         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
6625         (INSTALL_LIBGCC): Delete.
6626         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6627         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6628         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6629         (M68K_MLIB_CPU): Define.
6630         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6631         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6632         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
6633
6634 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
6635             Richard Guenther  <rguenther@suse.de>
6636
6637         PR middle-end/23361
6638         * fold-const.c (fold_comparison): Handle obfuscated comparisons
6639         against INT_MIN/INT_MAX.
6640         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
6641         file if a loop is removed.
6642
6643 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
6644
6645         * calls.c (store_one_arg): Pass correct alignment to
6646         emit_push_insn for non-BLKmode values.
6647         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
6648         unaligned stack slot via a suitably aligned slot.
6649
6650 2007-02-08  DJ Delorie  <dj@redhat.com>
6651
6652         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
6653         warnings.
6654         (legal_subregs): Use unsigned char, make const.
6655         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
6656
6657 2007-02-08  Paul Brook  <paul@codesourcery.com>
6658
6659         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
6660         special interworking needed.
6661
6662 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
6663
6664         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
6665         conditional to __SSE2__.
6666         (Entries below should have been added to first ChangeLog
6667         entry for amdfam10 dated 2007-02-05)
6668         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
6669         defined.
6670         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
6671         defined.
6672         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
6673         defined.
6674
6675 2007-02-08  DJ Delorie  <dj@redhat.com>
6676
6677         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
6678         * config/m32c/m32c.c (legal_subregs): New.
6679         (m32c_illegal_subreg_p): New.
6680         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
6681         unsupported subregs of hard regs.
6682
6683 2007-02-08  Jan Hubicka  <jh@suse.cz>
6684
6685         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
6686         the same one; always update histograms.
6687
6688 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
6689
6690         * passes.c (init_optimization_passes): Tidy comment.
6691
6692 2007-02-08  Roger Sayle  <roger@eyesopen.com>
6693
6694         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
6695         strip zero_extend, bswap and rotates from POCOUNT's argument.
6696         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
6697         zero_extend and rotates from PARITY's argument.
6698         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
6699         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
6700         of an integer constant at compile-time.
6701
6702 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
6703
6704         PR 30562
6705         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
6706         Update all users.
6707         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
6708         users.
6709         (init_alias_info):
6710         * tree-ssa-live.c (remove_unused_locals): Do not remove
6711         TREE_ADDRESSABLE variables.
6712         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
6713         * tree-ssa-operands.c (add_virtual_operand): Remove argument
6714         FOR_CLOBBER.  Update all users.
6715         If VAR has an associated alias set, add a virtual operand for
6716         it if no alias is found to conflict with the memory reference.
6717
6718 2007-02-07  Jan Hubicka  <jh@suse.cz>
6719             Robert Kidd <rkidd@crhc.uiuc.edu>
6720
6721         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
6722
6723 2007-02-07  Ian Lance Taylor  <iant@google.com>
6724
6725         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
6726
6727 2007-02-07  Roger Sayle  <roger@eyesopen.com>
6728
6729         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
6730         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
6731         tablejumpdi, movsi_to_cr_one): Remove constraints from
6732         define_expand's match_operands.
6733
6734 2007-02-07  Roger Sayle  <roger@eyesopen.com>
6735
6736         * global.c (compute_regsets): Move declatation of "i" inside of
6737         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
6738
6739 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
6740
6741         PR c++/30703
6742         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
6743         of INDIRECT_REF <RESULT_DECL>.
6744
6745         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
6746
6747 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
6748             Kaz Kojima  <kkojima@gcc.gnu.org>
6749
6750         PR target/29746
6751         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
6752         properly.
6753         (sh_initialize_trampoline): Add parentheses to avoid a warning.
6754
6755 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
6756
6757         * doc/loop.texi: Document possibility not to perform disambiguation
6758         of loops with multiple latches.
6759         * cfgloopmanip.c (alp_enum_p): Removed.
6760         (add_loop): Handle subloops.  Use get_loop_body_with_size.
6761         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
6762         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
6763         the new forwarder block.
6764         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
6765         Handle the case latch is NULL.
6766         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
6767         when marking loop exits.
6768         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
6769         be modified.
6770         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
6771         disambiguate_loops_with_multiple_latches.
6772         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
6773         before fix_loop_structure.
6774         * cfgloop.c: Include pointer-set.h and output.h.
6775         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
6776         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
6777         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
6778         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
6779         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
6780         disambiguate_multiple_latches, get_loop_body_with_size,
6781         disambiguate_loops_with_multiple_latches): New functions.
6782         (flow_loop_dump): Dump multiple latch edges.
6783         (flow_loop_nodes_find): Handle loops with multiple latches.
6784         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
6785         (glb_enum_p): Modified.
6786         (get_loop_body): Use get_loop_body_with_size.
6787         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
6788         (AVOID_CFG_MODIFICATIONS): New constant.
6789         (disambiguate_loops_with_multiple_latches, add_loop,
6790         get_loop_body_with_size): Declare.
6791         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
6792
6793 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
6794
6795         PR inline-asm/28686
6796         * global.c (compute_regsets): New function.
6797         (global_alloc): Refactored ELIMINABLE_REGSET
6798         and NO_GLOBAL_ALLOC_REGS computation out.
6799         (rest_of_handle_global_alloc): Call compute_regsets()
6800         for non-optimizing case.
6801
6802 2007-02-06  Richard Henderson  <rth@redhat.com>
6803
6804         * config/i386/constraints.md (Y2): Rename from Y.
6805         (Yi): New constraint.
6806         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
6807         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
6808         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
6809         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
6810         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
6811         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
6812         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
6813         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
6814         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
6815         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
6816         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
6817         vec_extractv2si_1): Change Y constraints to Y2.
6818         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
6819         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
6820         Change Y constraints to Y2.
6821         (sse2_loadld): Change Y constraints to x.
6822
6823 2007-02-06  Roger Sayle  <roger@eyesopen.com>
6824
6825         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
6826         (parity<mode>2): New define_expand using rs6000_emit_parity.
6827         * config/rs6000/rs6000.c (rs6000_emit_popcount,
6828         rs6000_emit_parity): New functions.
6829         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
6830         rs6000_emit_parity): Prototype here.
6831
6832 2007-02-06  Ian Lance Taylor  <iant@google.com>
6833
6834         * lower-subreg.c (simple_move_operand): Reject CONST.
6835         (resolve_clobber): Call validate_change rather than directly
6836         assigning to XEXP (pat, 0).
6837
6838 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
6839
6840         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
6841         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
6842         (tree-cfg.o): Remove hashtab.h dependency.
6843
6844         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
6845         (struct ivopts_data): Change niters to pointer_map_t.
6846         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
6847         (niter_for_exit): Create pointer_map on demand.  Change for
6848         pointer_map API.
6849         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
6850         (free_loop_data): Destroy data->niters if created and reset field.
6851         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
6852         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
6853
6854         * tree-ssa-reassoc.c: Include pointer-set.h.
6855         (bb_rank): Change to long *.
6856         (operand_rank): Change to pointer_map_t.
6857         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
6858         (insert_operand_rank): Accept long.
6859         (operand_entry_hash, operand_entry_eq): Remove.
6860         (get_rank): Return long.  Adjust for changes above.
6861         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
6862         and operand_rank.
6863         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
6864
6865         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
6866         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
6867         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
6868         is not NULL.
6869         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
6870         directly since it cannot be NULL.
6871         (get_vi_for_tree): Rewrite for pointer_map API.
6872         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
6873         (init_alias_vars): Create vi_for_tree as pointer_map.
6874         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
6875
6876         * tree-cfg.c: Don't include hashtab.h.
6877         (edge_to_cases): Declare as pointer_map.
6878         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
6879         Delete.
6880         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
6881         (start_recording_case_labels): Create edge_to_cases as pointer_map.
6882         (end_recoding_case_labels): Cleanup edge_to_cases manually before
6883         destroying it.
6884         (record_switch_edge): Delete.
6885         (get_cases_for_edge): Adjust for pointer_map API, inline
6886         record_switch_edge (rewritten for new API), remove goto.
6887
6888 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
6889
6890         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
6891         * tree-nested.c: Include pointer-set.h.
6892         (var_map_elt, var_map_eq, var_map_hash): Delete.
6893         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
6894         to pointer_map_t's.
6895         (nesting_info_bitmap_obstack): New.
6896         (lookup_field_for_decl): Adjust for pointer_map API.
6897         (lookup_tramp_for_decl): Adjust for pointer_map API.
6898         (get_nonlocal_debug_decl): Adjust for pointer_map API.
6899         (get_local_debug_decl): Adjust for pointer_map API.
6900         (convert_nl_goto_reference): Adjust for pointer_map API.
6901         (convert_nl_goto_receiver): Adjust for pointer_map API.
6902         (create_nesting_tree): Create outside GGC space.  Create bitmap on
6903         the new obstack.  Create field_map and var_map as pointer_maps.
6904         (free_nesting_tree): Adjust for changes to create_nesting_tree.
6905         (root): Delete.
6906         (lower_nested_functions): Move root here, no need to NULL it.
6907         Initialize and release the obstack.
6908
6909 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
6910
6911         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
6912         Remove prototypes and make them non-static.
6913         (struct tree_int_map): Remove.
6914         * tree.h (struct tree_int_map): Move here, turning TO into an
6915         unsigned int.
6916         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
6917
6918         * tree.h (TREE_COMPLEXITY): Remove.
6919         (struct tree_exp): Remove complexity field.
6920         * tree.c (build1_stat): Don't set it.
6921
6922 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
6923             Victor Kaplansky  <victork@il.ibm.com>
6924
6925         * tree-vectorizer.c (vect_is_simple_use): Support induction.
6926         (vect_is_simple_reduction): Support reduction with induction as
6927         one of the operands.
6928         (vect_is_simple_iv_evolution): Fix formatting.
6929         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
6930         formatting.  Don't mark induction phis for vectorization.
6931         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
6932         * tree-vect-transform.c (get_initial_def_for_induction): New function.
6933         (vect_get_vec_def_for_operand): Support induction.
6934         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
6935         induction case.
6936         (vectorizable_reduction): Support reduction with induction as one of
6937         the operands.
6938         (vectorizable_type_demotion): Use def-type of stmt argument rather
6939         than dummy def-type.
6940
6941         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
6942         flag_tree_scev_cprop.
6943         * common.opt (tree-scev-cprop): New flag.
6944
6945         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
6946         call to vect_get_new_vect_var.
6947
6948 2007-02-06  Ira Rosen  <irar@il.ibm.com>
6949
6950         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
6951         vectype is not NULL.
6952         (vect_pattern_recog_1): Likewise.
6953
6954 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6955
6956         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
6957         (fold_negate_expr): Likewise.
6958
6959 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
6960
6961         PR debug/30189
6962         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
6963         even if cv-qualification is the same.
6964
6965 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
6966
6967         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
6968         __enable_execute_stack on completion.
6969
6970 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6971
6972         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
6973         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
6974         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
6975         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
6976         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
6977         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
6978         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
6979         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
6980
6981 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6982
6983         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
6984         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
6985         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
6986         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
6987         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
6988         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
6989         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
6990         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
6991         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
6992         umuldi3_highpart_rex64, umulsi3_highpart_insn,
6993         umulsi3_highpart_zext, smuldi3_highpart_rex64,
6994         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
6995         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
6996         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
6997         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
6998         sqrtextenddfxf2_i387): Added amdfam10_decode.
6999
7000         * config/i386/athlon.md (athlon_idirect_amdfam10,
7001         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
7002         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
7003         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
7004         athlon_ivector_store_amdfam10): New define_insn_reservation.
7005         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
7006         amdfam10.
7007
7008 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7009
7010         * config/i386/athlon.md (athlon_call_amdfam10,
7011         athlon_pop_amdfam10, athlon_lea_amdfam10): New
7012         define_insn_reservation.
7013         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
7014         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
7015         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
7016
7017 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7018
7019         * config/i386/athlon.md (athlon_sseld_amdfam10,
7020         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
7021         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
7022
7023 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7024
7025         * config/i386/athlon.md (athlon_sseins_amdfam10): New
7026         define_insn_reservation.
7027         * config/i386/i386.md (sseins): Added sseins to define_attr type
7028         and define_attr unit.
7029         * config/i386/sse.md: Set type attribute to sseins for insertq
7030         and insertqi.
7031
7032 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7033
7034         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
7035         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
7036         ssecomi_load_amdfam10, ssecomi_amdfam10,
7037         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
7038         define_insn_reservation.
7039         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
7040
7041 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7042
7043         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
7044         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
7045         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
7046         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
7047         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
7048         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
7049         define_insn_reservation.
7050
7051         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
7052         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
7053         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
7054         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
7055         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
7056
7057 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7058
7059         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
7060         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
7061         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
7062         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
7063         athlon_ssemul_load_k8): Added amdfam10.
7064
7065 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7066
7067         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
7068         (x86_sse_unaligned_move_optimal): New variable.
7069
7070         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
7071         m_AMDFAM10.
7072         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
7073         for unaligned vector SSE double/single precision loads for AMDFAM10.
7074
7075 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7076
7077         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
7078         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
7079         Define TARGET_CPU_DEFAULT_amdfam10.
7080         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
7081         (processor_type): Add PROCESSOR_AMDFAM10.
7082
7083         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
7084         processor_type in config/i386/i386.h.
7085         Enable imul peepholes for TARGET_AMDFAM10.
7086
7087         * config.gcc: Add support for --with-cpu option for amdfam10.
7088
7089         * config/i386/i386.c (amdfam10_cost): New variable.
7090         (m_AMDFAM10): New macro.
7091         (m_ATHLON_K8_AMDFAM10): New macro.
7092         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
7093         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
7094         x86_promote_QImode, x86_integer_DFmode_moves,
7095         x86_partial_reg_dependency, x86_memory_mismatch_stall,
7096         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
7097         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
7098         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
7099         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
7100         Enable/disable for amdfam10.
7101         (override_options): Add amdfam10_cost to processor_target_table.
7102         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
7103         processor_alias_table.
7104         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
7105         (ix86_adjust_cost): Add code for amdfam10.
7106
7107 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7108
7109         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
7110         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
7111         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
7112         * config/i386/i386.h: Add builtin definition for SSE4A.
7113         * config/i386/i386.md: Add support for ABM instructions
7114         (popcnt and lzcnt).
7115         * config/i386/sse.md: Add support for SSE4A instructions
7116         (movntss, movntsd, extrq, insertq).
7117         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
7118         Add -march=amdfam10 flag.
7119         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
7120         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
7121         and amdfam10.
7122         * doc/extend.texi: Add documentation for SSE4A builtins.
7123
7124 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
7125
7126         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
7127
7128 2007-02-05  Richard Guenther  <rguenther@suse.de>
7129
7130         * tree-vectorizer.h (vectorizable_function): Add argument type
7131         argument, change return type.
7132         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
7133         * tree-vect-transform.c (vectorizable_function): Handle extra
7134         argument, return vectorized function decl.
7135         (build_vectorized_function_call): Remove.
7136         (vectorizable_call): Handle calls with result and argument types
7137         differing.  Handle loop vectorization factor correctly.
7138         * targhooks.c (default_builtin_vectorized_function): Adjust for
7139         extra argument.
7140         * targhooks.h (default_builtin_vectorized_function): Likewise.
7141         * target.h (builtin_vectorized_function): Add argument type
7142         argument.
7143         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
7144         extra argument, allow vectorizing of lrintf.
7145         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
7146         documentation of target hook.
7147
7148 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
7149
7150         PR target/30665
7151         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
7152         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
7153         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
7154
7155 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7156
7157         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
7158         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
7159         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
7160         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
7161         before canonicalizing sincos to cexpi.
7162         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
7163
7164 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7165
7166         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
7167         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
7168         (alpha_init_builtins): Use alpha_add_builtins to process tables.
7169
7170 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7171
7172         * mips-tfile.c (initialize_init_file): Correct endianness test.
7173
7174 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
7175
7176         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
7177         the 'y' constraint.
7178
7179 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
7180
7181         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
7182         saves in a PARALLEL before the register assignments.
7183
7184 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
7185
7186         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
7187         DWARF_FRAME_RETURN_COLUMN to be a general register.
7188         * dwarf2out.c (init_return_column_size): New function, split from...
7189         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
7190         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
7191         to be nongeneral registers.
7192         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
7193         integer registers.
7194         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
7195         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
7196
7197 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
7198
7199         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
7200
7201 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
7202
7203         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
7204         (remove_path): Use can_remove_branch_p and remove_branch instead
7205         of loop_delete_branch_edge.
7206         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
7207         (tree_transform_and_unroll_loop): Remove dead branches immediately.
7208         Update profile using scale_dominated_blocks_in_loop.
7209         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
7210         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
7211         (can_remove_branch_p, remove_branch): Declare.
7212         * tree-cfg.c (tree_can_remove_branch_p): New function.
7213         (tree_cfg_hooks): Add tree_can_remove_branch_p.
7214         * cfgrtl.c (rtl_can_remove_branch_p): New function.
7215         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
7216
7217 2007-02-05  Jan Hubicka  <jh@suse.cz>
7218
7219         PR middle-end/30696
7220         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
7221         nodes in cgraph, don't remove offline copy of the function.
7222
7223 2007-02-04  Jan Hubicka  <jh@suse.cz>
7224
7225         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
7226         vectors might cause maybe_lookup_element_for_expr to be called
7227         on non-sra-candidate.
7228
7229 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7230
7231         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
7232         config/bfin/bfin.md, config/bfin/predicates.md: Follow
7233         spelling conventions.
7234
7235 2007-02-04  Richard Guenther  <rguenther@suse.de>
7236
7237         PR middle-end/30636
7238         * fold-const.c (try_move_mult_to_index): Make sure to not
7239         overflow one dimension of a multi-dimensional array access.
7240
7241 2007-02-04  Jan Hubicka  <jh@suse.cz>
7242
7243         * passes.c (init_optimization_passes): Reindent.
7244
7245 2007-02-04  Jan Hubicka  <jh@suse.cz>
7246             Eric Botcazou  <ebotcazou@adacore.com>
7247
7248         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
7249         (execute_fixup_cfg): Break out the abnormal goto code.
7250         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
7251         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
7252         (optimize_inline_calls): Call make_nonlocal_label_edges.
7253
7254 2007-02-04  Jan Hubicka  <jh@suse.cz>
7255
7256         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
7257         true when something was changed.
7258         (rename_ssa_copies): When something was changed, do
7259         TODO_remove_unused_locals.
7260         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
7261         add TODO_remove_unused_locals when instruction was removed.
7262
7263 2007-02-04  Jan Hubicka  <jh@suse.cz>
7264
7265         * ipa-inline.c (try_inline): Improve debug output; work on already
7266         inline edges too.
7267         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
7268         call try_inline for already inlined edges too when flattening;
7269         inline also functions that make callee growth but overall unit size
7270         reduce.
7271
7272 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7273
7274         * config/m32c/bitops.md, config/m32c/jump.md,
7275         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
7276         config/m32r/m32r.h, config/m32r/m32r.md,
7277         config/m32r/predicates.md, config/m68hc11/larith.asm,
7278         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
7279         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
7280         config/mips/mips-protos.h, config/mips/mips.c,
7281         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
7282         config/mn10300/mn10300.h, config/mn10300/predicates.md,
7283         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
7284         spelling conventions.
7285
7286         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
7287         Follow spelling conventions.
7288
7289 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
7290
7291         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
7292         warn about C++0x compatibility.
7293
7294 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7295
7296         * config/h8300/h8300.c, config/h8300/h8300.h,
7297         config/h8300/h8300.md: Follow spelling conventions.
7298
7299 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
7300
7301         PR middle-end/30667
7302         * combine.c (try_combine): Do not substitute source operand
7303         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
7304
7305 2007-02-03  Jan Hubicka  <jh@suse.cz>
7306
7307         PR gcov-profile/30650
7308         * value-prof.c (stringop_block_profile): Fix handling of size counter;
7309         do not divide by zero for never executed counters.
7310         (tree_find_values_to_profile): Fix counters.
7311         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
7312
7313 2007-02-03  Ian Lance Taylor  <iant@google.com>
7314
7315         * lower-subreg.c (simple_move_operand): New static function,
7316         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
7317         operands.
7318         (simple_move): Call simple_move_operand.
7319         (find_decomposable_subregs): Add special handling of MEMs.
7320         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
7321         meaning of return value.  If we see a hard register, test whether
7322         it can store a word_mode value.  Change all callers.
7323
7324 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7325
7326         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
7327         ftrapv insns and expanders.
7328         (subdi3): Change define_expand operand 1 to arith11_operand, and
7329         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
7330         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
7331         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
7332         respectively.
7333
7334         PR middle-end/30174
7335         * varasm.c (notice_global_symbol): Treat global objects as weak when
7336         flag_shlib is true.
7337
7338 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7339
7340         * emit-rtl.c (dconstpi): Delete.
7341         (dconstsqrt2): New.
7342         (init_emit_once): Delete dconstpi and init dconstsqrt2.
7343         * real.h (dconstpi): Delete.
7344         (dconstsqrt2): New.
7345         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
7346         (fold_builtin_hypot): Likewise.
7347
7348 2007-02-03  Tom Tromey  <tromey@redhat.com>
7349
7350         PR driver/30246
7351         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
7352         -gcoff3, -gxcoff3, -gvms3 implies -dD.
7353
7354 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
7355
7356         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
7357         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
7358         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
7359         config/rs6000/cell.md, config/rs6000/darwin.h,
7360         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
7361         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
7362         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
7363         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
7364         typos.  Follow spelling conventions.
7365         * doc/invoke.texi: Follow spelling conventions.
7366
7367 2007-02-03  Roger Sayle  <roger@eyesopen.com>
7368
7369         * simplify-rtx.c (simplify_relational_operation_1): Implement some
7370         canonicalization transformations that attempt to simplify integer
7371         constant comparisons to become comparisons against zero.
7372
7373 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7374
7375         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
7376         fabs(x)*sqrt(2).
7377         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
7378         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
7379
7380 2007-02-02  Mike Stump  <mrs@apple.com>
7381
7382         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
7383         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
7384         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
7385         generate a branch island.
7386
7387 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
7388
7389         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
7390         (xtensa_legitimate_address_p): New.
7391         (xtensa_legitimize_address): New.
7392         (xtensa_output_addr_const_extra): New.
7393         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
7394         (BASE_REG_P): New.
7395         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
7396         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
7397         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
7398         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
7399         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
7400         (xtensa_legitimize_address): New.
7401         (xtensa_output_addr_const_extra): New.
7402
7403 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
7404
7405         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
7406
7407 2007-02-02  Ian Lance Taylor  <iant@google.com>
7408
7409         * expmed.c (expand_divmod): Add comment.
7410
7411 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
7412
7413         * emit-rtl.c (renumber_insns): Remove.
7414         * flags.h: Remove the extern for flag_renumber_insns.
7415         * rtl.h: Remove the prototype for renumber_insns.
7416         * toplev.c (flag_renumber_insns): Remove.
7417
7418 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
7419
7420         Revert for x86 darwin:
7421         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
7422
7423         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
7424         code before the following patch under TARGET_MACHO.
7425         (ix86_function_value_regno_p): Likewise.
7426
7427 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7428
7429         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
7430         COMPLEX_EXPR.
7431
7432 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7433
7434         PR target/29682
7435         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
7436         general or fp registers.  Add comments.
7437         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
7438
7439 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
7440
7441         * pointer-set.c (insert_aux): Only return insertion slot.
7442         (pointer_set_insert): Adjust.
7443         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
7444         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
7445         pointer_map_traverse): New.
7446         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
7447         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
7448         pointer_map_contains, pointer_map_traverse): Declare.
7449
7450 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
7451
7452         PR middle-end/30473
7453         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
7454         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
7455
7456 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7457
7458         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
7459
7460         (struct _dep): New type.
7461         (dep_t): New typedef.
7462         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
7463         (DEP_STATUS): New access macro.  The macro with the same name was
7464         renamed to DEP_LINK_STATUS.
7465         (dep_init): Declare function
7466
7467         (struct _dep_link): New type.
7468         (dep_link_t): New typedef.
7469         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
7470         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
7471         (DEP_LINK_STATUS): New macro.
7472         (debug_dep_links): New debug function.
7473
7474         (struct _deps_list): New type.
7475         (deps_list_t): New typedef.
7476         (DEPS_LIST_FIRST): New access macro.
7477         (FOR_EACH_DEP_LINK): New cycle macro.
7478         (create_deps_list, free_deps_list, delete_deps_list): Declare
7479         functions.
7480         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
7481         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7482         (copy_deps_list_change_con): Ditto.
7483
7484         (move_dep_link): Declare function.
7485
7486         (struct _dep_node): New type.
7487         (dep_node_t): New typedef.
7488         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
7489
7490         (struct haifa_insn_data.back_deps): New field to hold backward
7491         dependencies of the insn.
7492         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
7493         to deps_list_t.
7494         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
7495         Change its type to deps_list_t.
7496         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
7497         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
7498         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
7499
7500         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
7501
7502         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
7503
7504         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
7505         all callers.
7506         (dep_cost): Declare.
7507
7508         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
7509         (ds_to_dk, dk_to_ds): New functions.
7510
7511         (init_dep_1): New static function.
7512         (init_dep): New function.
7513         (copy_dep): New static function.
7514
7515         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
7516         functions.
7517         (detach_dep_link): New static function.
7518         (move_dep_link): New function.
7519
7520         (dep_links_consistent_p, dump_dep_links): New static functions.
7521         (debug_dep_links): New debugging function.
7522
7523         (deps_obstack, dl_obstack, dn_obstack): New static variables.
7524
7525         (alloc_deps_list, init_deps_list): New static functions.
7526         (create_deps_list): New function.
7527         (clear_deps_list): New static function.
7528         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
7529         (deps_list_consistent_p, dump_deps_list): New static functions.
7530         (debug_deps_list): New function.
7531         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
7532         functions.
7533         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
7534
7535         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
7536         use new scheduler dependencies lists.
7537         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
7538         (sched_analyze): Ditto.  Initialize dependencies lists.
7539         (add_forw_dep, compute_forward_dependences): Update to use new
7540         scheduler dependencies lists.
7541
7542         (init_dependency_caches): Init deps_obstack.
7543         (free_dependency_caches): Free deps_obstack.
7544
7545         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
7546         new scheduler dependencies lists.
7547         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
7548         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7549
7550         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
7551         Update to use new scheduler dependencies lists.
7552         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
7553         (debug_dependencies): Ditto.
7554         (schedule_region): Update comments.
7555
7556         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
7557         scheduler dependencies lists.
7558         (schedule_ebb): Update comments.
7559
7560         * rtl.def (DEPS_LIST): Remove.
7561
7562         * lists.c (unused_deps_list): Remove.
7563         (free_list): Update assertions.
7564
7565         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
7566         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7567
7568         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
7569         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7570
7571         * haifa-sched.c (comments): Update.
7572         (insn_cost1): Remove.  Inline the code into insn_cost ().
7573         (insn_cost): Update to use new scheduler dependencies lists.  Move
7574         processing of the dependency cost to dep_cost ().
7575         (dep_cost): New function.  Use it instead of insn_cost () when
7576         evaluating cost of the dependency.  Use compatible interface to
7577         interact with the target.
7578         (priority): Update to use new scheduler dependencies lists.
7579         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
7580         with greater number of insns that depend on the insn.
7581         (schedule_insn): Update to use new scheduler dependencies lists.  Add
7582         code to free backward dependencies lists.  Inline and optimize code
7583         from resolve_dep () - see PR28071.
7584         (ok_for_early_queue_removal): Update to use new scheduler dependencies
7585         lists.  Update call to targetm.sched.is_costly_dependence hook.
7586
7587         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
7588         scheduler dependencies lists.
7589
7590         (resolve_dep): Remove.  Move the logic to schedule_insn ().
7591         (init_h_i_d): Initialize dependencies lists.
7592
7593         (process_insn_depend_be_in_spec): Rename to
7594         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
7595         dependencies lists.
7596         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
7597         Update to use new scheduler dependencies lists.
7598         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
7599
7600         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
7601         new scheduler dependencies lists.
7602         (build_intra_loop_deps): Ditto.
7603
7604         * target.h (struct _dep): Declare to use in
7605         gcc_target.sched.is_costly_dependence.
7606         (struct gcc_target.sched.adjust_cost): Fix typo.
7607         (struct gcc_target.sched.is_costly_dependence): Change signature to use
7608         single dep_t parameter instead of an equivalent triad.
7609         (struct gcc_target.sched.adjust_cost_2): Remove.
7610
7611         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
7612
7613         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
7614
7615         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
7616         documentation.
7617         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
7618
7619         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
7620         (REG_DEP_TRUE): Document.
7621
7622         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
7623         Change signature to correspond to the targetm.sched.adjust_cost hook.
7624         Update use in TARGET_SCHED_ADJUST_COST_2.
7625         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
7626         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
7627         new scheduler dependencies lists.
7628         (ia64_gen_check): Ditto.
7629
7630         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
7631         dependencies lists.
7632
7633         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
7634         signature to correspond to the targetm.sched.is_costly_dependence hook.
7635         (is_costly_group): Update to use new scheduler dependencies lists.
7636
7637         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
7638         instead of INSN_COST () macro.
7639
7640 2007-02-01  Ian Lance Taylor  <iant@google.com>
7641
7642         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
7643
7644 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
7645
7646         * pa.md (tp_load): Correct mfctl instruction syntax.
7647
7648 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
7649
7650         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
7651         altivec_padding_size calculation on AIX.  Improve comment, add
7652         assert to verify that it's right.
7653
7654         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
7655         64-bit.
7656
7657 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
7658
7659         PR inline-asm/28686
7660         * global.c (global_alloc): Add mising initialization of
7661         ELIMINABLE_REGSET.
7662
7663 2007-02-01  Roger Sayle  <roger@eyesopen.com>
7664
7665         * alias.c (init_alias_analysis): Correct whitespace.
7666         * bb-reorder.c (fix_edges_for_rarely_executed_code,
7667         partition_hot_cold_basic_blocks): Likewise.
7668         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
7669         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
7670         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
7671         fold_builtin_snprintf_chk, fold_builtin_printf,
7672         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
7673         do_mpfr_arg3, do_mpfr_sincos): Likewise.
7674         * cfgcleanup.c (cleanup_cfg): Likewise.
7675         * cfgexpand.c (tree_expand_cfg): Likewise.
7676         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
7677         * function.c (get_next_funcdef_no): Likewise.
7678         * gengtype.c (main): Likewise.
7679         * genmodes.c (main): Likewise.
7680         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
7681         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
7682         * ifcvt.c (noce_emit_move_insn): Likewise.
7683         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
7684         Likewise.
7685         * stor-layout.c (get_best_mode): Likewise.
7686         * tree-ssa-loop-niter.c (get_val_for): Likewise.
7687         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
7688         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
7689         perform_var_substitution, solve_graph): Likewise.
7690         * tree-vrp.c (vrp_finalize): Likewise.
7691
7692 2007-02-01  Ian Lance Taylor  <iant@google.com>
7693
7694         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
7695         high part of a paradoxical subreg, return a constant zero.
7696
7697 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
7698
7699         * toplev.c (lang_dependent_init): Call init_set_costs.
7700         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
7701
7702 2007-02-01  Richard Guenther  <rguenther@suse.de>
7703
7704         PR middle-end/30656
7705         * fold-const.c (fold_negate_expr): Allow negating a
7706         constant if overflow does not change.
7707
7708 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7709
7710         * doc/c-tree.texi (Expression trees): Improve markup.
7711         * doc/tm.texi (Register Classes, Addressing Modes)
7712         (Floating Point): Fix spacing after abbreviations.  Fix some
7713         typos.
7714
7715 2007-02-01  Ben Elliston  <bje@au.ibm.com>
7716
7717         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
7718         * doc/contrib.texi: Likewise.
7719         * doc/install.texi: Likewise.
7720
7721 2007-01-31  Richard Henderson  <rth@redhat.com>
7722             Ian Lance Taylor  <iant@google.com>
7723
7724         * lower-subreg.c: New file.
7725         * rtl.def (CONCATN): Define.
7726         * passes.c (init_optimization_passes): Add pass_lower_subreg and
7727         pass_lower_subreg2.
7728         * emit-rtl.c (update_reg_offset): New static function, broken out
7729         of gen_rtx_REG_offset.
7730         (gen_rtx_REG_offset): Call update_reg_offset.
7731         (gen_reg_rtx_offset): New function.
7732         * regclass.c: Revert patch of 2006-03-05, restoring
7733         reg_scan_update.
7734         (clear_reg_info_regno): New function.
7735         * dwarf2out.c (concatn_loc_descriptor): New static function.
7736         (loc_descriptor): Handle CONCATN.
7737         * common.opt (fsplit_wide_types): New option.
7738         * opts.c (decode_options): Set flag_split_wide_types when
7739         optimizing.
7740         * timevar.def (TV_LOWER_SUBREG): Define.
7741         * rtl.h (gen_reg_rtx_offset): Declare.
7742         (reg_scan_update): Declare.
7743         * regs.h (clear_reg_info_regno): Declare.
7744         * tree-pass.h (pass_lower_subreg): Declare.
7745         (pass_lower_subreg2): Declare.
7746         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
7747         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
7748         -fsplit-wide-types.
7749         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
7750         * Makefile.in (OBJS-common): Add lower-subreg.o.
7751         (lower-subreg.o): New target.
7752
7753 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7754
7755         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
7756
7757 2007-01-31  Anatoly Sokolov <aesok@post.ru>
7758
7759         PR target/19087
7760         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
7761
7762 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7763
7764         PR middle-end/29335
7765         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
7766
7767 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
7768
7769         * cfgloop.h: Include vec-prim.h.
7770         (enum li_flags): Remove LI_ONLY_OLD.
7771         (loop_iterator): Changed.
7772         (fel_next, fel_init): Iterate over loop tree.
7773         (FOR_EACH_LOOP_BREAK): New macro.
7774         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
7775         FOR_EACH_LOOP.
7776         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
7777         * modulo-sched.c (sms_schedule): Ditto.
7778         * tree-vectorizer.c (vectorize_loops): Ditto.
7779         * doc/loop.texi: Update information on loop numbering and behavior of
7780         FOR_EACH_LOOP wrto new loops.
7781         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
7782         add_to_evolution_1): Test nestedness of loops instead of comparing
7783         their numbers.
7784         * tree-chrec.c (chrec_fold_plus_poly_poly,
7785         chrec_fold_multiply_poly_poly, chrec_evaluate,
7786         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
7787         reset_evolution_in_loop): Ditto.
7788         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
7789
7790 2007-01-31  Dirk Mueller  <dmueller@suse.de>
7791
7792         * c-common.c (warn_about_parentheses): Separate warning about
7793         un-parenthized sequence of comparison operators from the one
7794         which is supposed to warn about x <= y <= z.
7795
7796 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
7797
7798         * optabs.h (enum optab_index): Add new OTI_isinf.
7799         (isinf_optab): Define corresponding macro.
7800         * optabs.c (init_optabs): Initialize isinf_optab.
7801         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
7802         patterns.
7803         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
7804         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
7805         using isinf_optab.
7806         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
7807         expand_builtin_interclass_mathfn.
7808         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
7809         * config/i386/i386.md (UNSPEC_FXAM): New constant.
7810         (fxam<mode>2_i387): New insn pattern.
7811         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
7812         built-in functions as x87 inline asm.
7813
7814 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7815
7816         * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
7817
7818 2007-01-30  Eric Christopher  <echristo@apple.com>
7819
7820         * config.gcc: Add geode.
7821
7822 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7823
7824         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
7825         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
7826         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
7827         value-prof.c: Fix comment typos.
7828
7829 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7830
7831         PR c++/24745
7832         * doc/invoke.texi (Wpointer-arith): Document warning.
7833
7834 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
7835
7836         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
7837         the list of discrepancies from the draft TR.
7838
7839 2007-01-30  Dirk Mueller  <dmueller@suse.de>
7840
7841         PR c++/30601
7842         * doc/invoke.texi (-Wreturn-type): Update description to
7843         match new behavior.
7844
7845 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
7846
7847         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
7848
7849 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
7850
7851         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
7852         to handle optabs that operate on floating point input argument and
7853         output to integer output.
7854         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
7855         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
7856         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
7857         expand_builtin_interclass_mathfn ().
7858         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
7859         (ilogbsi2): Remove.
7860         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
7861         ilogbl built-in functions as x87 intrinsics.
7862
7863 2007-01-30  Richard Guenther  <rguenther@suse.de>
7864
7865         PR middle-end/27657
7866         * dwarf2out.c (reference_to_unused): Query varpool if the
7867         variable was output.
7868
7869 2007-01-30  Richard Guenther  <rguenther@suse.de>
7870
7871         PR middle-end/30313
7872         * passes.c (execute_one_pass): Reset in_gimple_form to not
7873         confuse non-unit-at-a-time mode.
7874
7875 2007-01-29  Roger Sayle  <roger@eyesopen.com>
7876             Richard Guenther  <rguenther@suse.de>
7877
7878         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
7879         avoid undefined behaviour on overflow.  Use force_fit_type_double
7880         to construct the constant with the specified TREE_OVERFLOW.
7881
7882 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
7883
7884         * config/dfp-bit.c: Add parameterized support for fp exceptions.
7885         * config/dfp-bit.h: Ditto.
7886
7887 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7888
7889         * c-decl.c (pop_scope): Replace warnings with call to
7890         warn_for_unused_label.
7891         * c-common.h (warn_for_unused_label): Declare.
7892         * c-common.c (warn_for_unused_label): Define.
7893
7894 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7895
7896         * tree-optimize.c (update_inlined_to_pointers): Delete unused
7897         function.
7898
7899 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
7900
7901         * Makefile.in (USER_H): Remove decfloat.h.
7902         * ginclude/decfloat.h: Delete, moving contents to ...
7903         * ginclude/float.h: Add support for decimal floating point,
7904         guarded by __STDC_WANT_DEC_FP__.
7905
7906 2007-01-29  Mike Stump  <mrs@apple.com>
7907
7908         * doc/gccint.texi (Top): Rename Loop Representation to Loop
7909         Analysis and Representation to resolve case insensitive conflict.
7910         * doc/loop.texi (Loop Analysis and Representation): Likewise.
7911
7912 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
7913
7914         * tree.h (struct tree_memory_tag): Add aliases member.
7915         (MTAG_ALIASES): New macro.
7916         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
7917         (add_may_alias): Remove pointer-set. Update for may_aliases being
7918         a bitmap.
7919         (mark_aliases_call_clobbered): Update for may_aliases being a
7920         bitmap.
7921         (compute_tag_properties): Ditto.
7922         (create_partition_for): Ditto.
7923         (compute_memory_partitions): Ditto.
7924         (dump_may_aliases_for): Ditto.
7925         (is_aliased_with): Ditto.
7926         (add_may_alias_for_new_tag): Ditto.
7927         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
7928         (compute_is_aliased): New function.
7929         (compute_may_aliases): Call compute_is_aliased).
7930         (init_alias_info): Initialize alias_bitmap_obstack.
7931         (union_alias_set_into): New function.
7932         (compute_flow_sensitive_aliasing): Use union_aliases_into.
7933         (have_common_aliases_p): Rewrite to take two bitmaps and use
7934         intersection.
7935         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
7936         Update for bitmaps.
7937         (finalize_ref_all_pointers): Update for add_may_alias changes.
7938         (new_type_alias): Ditto.
7939         * tree-flow-inline.h (may_aliases): Return a bitmap.
7940         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
7941         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
7942         may_aliases being a bitmap.
7943         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
7944         may_aliases now returns a bitmap.
7945         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
7946         being a bitmap.
7947         * tree-ssa-operands.c (add_virtual_operand): Update for
7948         may_aliases being a bitmap.
7949
7950 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
7951
7952         PR tree-optimization/30630
7953         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
7954         variable as changed.
7955
7956 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
7957
7958         PR c++/28266
7959         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
7960         expanded only once even if an error occurs.
7961
7962 2007-01-29  Ben Elliston  <bje@au.ibm.com>
7963
7964         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
7965         (__gcov_average_profiler): Likewise.
7966         (__gcov_ior_profiler): Likewise.
7967         (__gcov_merge_ior): Likewise.
7968
7969 2007-01-28  Jan Hubicka  <jh@suse.cz>
7970
7971         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
7972         * value-prof.c (stringop_block_profile): Likewise.
7973
7974 2007-01-28  Jan Hubicka  <jh@suse.cz>
7975
7976         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
7977         variant handling histograms; add wrapper.
7978         (clear_storage_via_libcall): Export.
7979         (emit_block_move_hints): Break out from ...; add histograms.
7980         (emit_block_move): ... this one.
7981         (clear_storage_hints): Break out from ...; add histograms.
7982         (clear_storage): ... this one.
7983         (set_storage_via_memset): Handle histogram.
7984         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
7985         (clear_storage_hints, clear_storage_via_libcall): Declare.
7986         (set_storage_via_setmem): Update prototype.
7987         * doc/md.texi (movmem, setmem): Document new arguments.
7988
7989         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
7990         new histograms.
7991         (stringop_block_profile): New global function.
7992         (tree_stringops_values_to_profile): Profile block size and alignment.
7993         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
7994         HIST_TYPE_IOR.
7995         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
7996         (stringop_block_profile): Declare.
7997         * builtins.c: Include value-prof.h.
7998         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
7999         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
8000         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
8001         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
8002         * profile.c (instrument_values): Add new counters.
8003         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
8004         calls.
8005         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
8006         (tree_init_edge_profiler): Build new profilers.
8007         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
8008         (pass_tree_profile): Add dump.
8009         (tree_profile_hooks): Update.
8010         * Makefile.in (LIBGCOV): Add new constants.
8011         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
8012         __gcov_ior_profiler): New.
8013         * i386.md (movmem/setmem expanders): Add new optional arguments.
8014
8015 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
8016
8017         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
8018
8019 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
8020
8021         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
8022         (tree_unswitch_single_loop): Pass eni_size_weights to
8023         tree_num_loop_insns.
8024         * tree-ssa-loop-manip.c: Include tree-inline.h.
8025         (can_unroll_loop_p): Pass eni_size_weights to
8026         tree_num_loop_insns.
8027         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
8028         Pass eni_size_weights to estimate_num_insns.
8029         * tree.h (init_inline_once): Export.
8030         * toplev.c (backend_init): Call init_inline_once.
8031         * cgraphunit.c (cgraph_process_new_functions,
8032         cgraph_analyze_function): Pass eni_inlining_weights to
8033         estimate_num_insns.
8034         * ipa-inline.c (compute_inline_parameters): Ditto.
8035         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
8036         to estimate_num_insns.
8037         (try_unroll_loop_completely): Pass eni_size_weights to
8038         tree_num_loop_insns.
8039         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
8040         ot estimate_num_insns.
8041         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
8042         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
8043         * tree-inline.c (eni_inlining_weights, eni_size_weights,
8044         eni_time_weights): New variables.
8045         (init_inline_once): Initialize them.
8046         (struct eni_data): Mew.
8047         (estimate_num_insns_1, estimate_num_insns): Use weights.
8048         * tree-inline.h (struct eni_weights_d): New.
8049         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
8050         (estimate_num_insns): Declaration changed.
8051         * cfgloop.h (tree_num_loop_insns): Declaration changed.
8052         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
8053         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
8054
8055 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
8056
8057         * tree-data-ref.c (conflict_fn): Assert that the number of affine
8058         relations in the conflict function is valid.
8059
8060 2007-01-27  Ian Lance Taylor  <iant@google.com>
8061
8062         * common.opt: Add fstrict-overflow.
8063         * opts.c (decode_options): Set flag_strict_overflow if -O2.
8064         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
8065         (TYPE_OVERFLOW_UNDEFINED): Define.
8066         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
8067         Replace all uses.
8068         * tree.h (TYPE_TRAP_SIGNED): Don't define.
8069         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
8070         (fold_negate_expr): Likewise.
8071         (make_range): Likewise.
8072         (extract_muldiv_1): Likewise.
8073         (maybe_canonicalize_comparison): Likewise.
8074         (fold_comparison): Likewise.
8075         (fold_binary): Likewise.
8076         (tree_expr_nonnegative_p): Likewise.
8077         (tree_expr_nonzero_p): Likewise.
8078         * tree-vrp.c (compare_values): Likewise.
8079         (extract_range_from_binary_expr): Likewise.
8080         (extract_range_from_unary_expr): Likewise.
8081         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
8082         Likewise.
8083         (nowrap_type_p): Likewise.
8084         * tree-scalar-evolution.c (simple_iv): Likewise.
8085         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
8086         (build_range_check): Likewise.
8087         (extract_muldiv_1): Likewise.
8088         (fold_comparison): Likewise.
8089         * tree-vrp.c (vrp_int_const_binop): Likewise.
8090         (extract_range_from_unary_expr): Likewise.
8091         * convert.c (convert_to_integer): Likewise.
8092         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
8093         (fold_comparison): Likewise.
8094         (fold_binary): Likewise.
8095         * optabs.c (optab_for_tree_code): Likewise.
8096         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
8097         * simplify-rtx.c (simplify_const_relational_operation): Check
8098         flag_strict_overflow and flag_trapv.
8099         (simplify_const_relational_operation): Likewise.
8100         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
8101         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
8102         -fstrict-overflow.
8103
8104 2007-01-27  Roger Sayle  <roger@eyesopen.com>
8105
8106         * tree.c (tree_fold_gcd): Delete.
8107         * tree.h (tree_fold_gcd): Remove prototype.
8108         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
8109         test whether one constant integer is a multiple of another.  Instead
8110         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
8111         * fold-const.c (multiple_of_p):  We've determined both TOP and
8112         BOTTOM are integer constants so we can call int_const_binop directly
8113         instead of the more generic const_binop.
8114
8115 2007-01-27  Roger Sayle  <roger@eyesopen.com>
8116
8117         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
8118         1*X check that the constant hasn't overflowed, to preserve the
8119         TREE_OVERFLOW bit.
8120         (round_up): Provide an efficient implementation when rouding-up an
8121         INTEGER_CST to a power-of-two.
8122
8123 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8124
8125         * doc/sourcebuild.texi: Add comma for clarity.
8126         * doc/extend.texi: Fix some typos.
8127         * doc/passes.texi: Likewise.
8128         * doc/cppinternals.texi: Likewise.
8129         * doc/c-tree.texi: Likewise.
8130         * doc/tree-ssa.texi: Likewise.
8131         * doc/install.texi: Likewise.
8132
8133 2007-01-27  Jan Hubicka  <jh@suse.cz>
8134
8135         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
8136         (pass_sra): Do not require alias information.
8137         * passes.c (init_optimization_passes): Add SRA
8138
8139 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
8140
8141         * tracer.c (rest_of_handle_tracer): We already cleaned
8142         up the CFG in tracer() so don't do it here again.
8143         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
8144         cleanup_cfg here, either.  And don't call renumber_insns.
8145
8146         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
8147         and BB_HEAD are in the insn stream here.  Instead make sure
8148         that BB_INSN is valid on all insns.  Also, do check here that
8149         there are no pending branch predictions...
8150         (rtl_verify_flow_info): ...instead of doing it here.  Checks
8151         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
8152         here.
8153
8154 2007-01-26  Roger Sayle  <roger@eyesopen.com>
8155
8156         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
8157         function to simplify/factorize operand order canonicalization.
8158         (ix86_fixup_binary_operands): Reorganize using the above function.
8159         (ix86_binary_operator_ok): Likewise.
8160
8161 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
8162
8163         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
8164         file scope from optimize_attrs.
8165         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
8166         up search.
8167         (optimize_attrs): Clear insn_code_values after freeing it.
8168
8169 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
8170
8171         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
8172         a parts.base assignment.
8173
8174 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
8175
8176         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
8177         (compute_subscript_distance, initialize_data_dependence_relation,
8178         finalize_ddr_dependent, analyze_ziv_subscript,
8179         analyze_siv_subscript_cst_affine,
8180         compute_overlap_steps_for_affine_univar,
8181         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
8182         analyze_siv_subscript, analyze_miv_subscript,
8183         analyze_overlapping_iterations, subscript_dependence_tester_1,
8184         compute_self_dependence, free_dependence_relation): Work
8185         with affine_fn instead of chrecs.
8186         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
8187         common_affine_function, affine_function_base,
8188         affine_function_constant_p, affine_fn_op, affine_fn_plus,
8189         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
8190         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
8191         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
8192         (all_chrecs_equal_p): Removed.
8193         * tree-data-ref.h (affine_fn, conflict_function): New types.
8194         (struct subscript): Change type of conflicting_iterations_in_a
8195         and conflicting_iterations_in_b.
8196
8197 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
8198
8199         PR other/30182
8200         * config/pa/pa.h (TARGET_HPUX_11): New.
8201         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
8202         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
8203
8204 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
8205         Richard Guenther  <rguenther@suse.de>
8206
8207         * tree-ssa-structalias.c (solve_graph): Handle case
8208         we merged the variable to another.
8209
8210 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8211
8212         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
8213         functions.
8214
8215         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
8216         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
8217
8218 2007-01-25  DJ Delorie  <dj@redhat.com>
8219
8220         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
8221         allow changes to modes which don't fit in those registers.
8222
8223         * reload1.c (choose_reload_regs): Check for invalid subregs before
8224         computing their locations, not after.
8225
8226 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
8227
8228         PR 25127
8229         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
8230         save Altivec registers in an eh_return function.
8231         (compute_vrsave_mask): Likewise.
8232         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
8233         for saving Altivec registers.
8234         (rs6000_emit_prologue): Don't allocate stack twice in
8235         eh_return function.  Correct expected value of altivec_save_offset
8236         when using save_world.  Describe save of R0 to stack when using
8237         save_world.  Describe stack pointer adjustment when using
8238         save_world.  Remove duplicated eh_return parameter register saving.
8239         Update sp_offset variable after save_world.
8240         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
8241         darwin-world.asm.
8242         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
8243         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
8244         implies Altivec.
8245
8246 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
8247
8248         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
8249
8250 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
8251
8252         PR other/30182
8253         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
8254         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
8255
8256 2007-01-25  Richard Guenther  <rguenther@suse.de>
8257
8258         * doc/invoke.texi (-Wcoverage-mismatch): Document.
8259         * common.opt (-Wcoverage-mismatch): New warning option.
8260         * coverage.c (get_coverage_counts): Ignore coverage mismatch
8261         if -Wcoverage-mismatch is given.
8262
8263 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
8264
8265         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
8266         (ipcp_driver): Change to static definition.
8267         Add dumping of the ifunctions.
8268         (constant_val_insert): Remove unused parameter. Support for SSA.
8269         (ipcp_propagate_const): Support for SSA.
8270         (ipcp_profile_bb_print): Print only analyzed nodes.
8271         (ipcp_replace_map_create): Remove support for Fortran constant
8272         for now.
8273         * ipa-prop.c (ipa_method_modify_stmt,
8274         ipa_callsite_compute_param): Support for SSA.
8275         * ipa-prop.h (ipcp_driver): Remove declaration.
8276         (IS_VALID_TREE_MAP_INDEX): Add define.
8277
8278 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
8279
8280         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
8281
8282 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8283
8284         PR middle-end/30447
8285         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
8286         constant argument to cabs and do it without checking for
8287         -funsafe-math-optimizations.
8288
8289 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
8290
8291         * c-common.h (RID_FIRST_CXX0X): New.
8292         (RID_LAST_CXX0X): New.
8293         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
8294         by -Wall.
8295         * c.opt (Wc++0x-compat): New.
8296         * doc/invoke.texi (-Wc++0x-compat): Document.
8297
8298 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8299
8300         * builtins.c (fold_builtin_carg): New.
8301         (fold_builtin_1): Use it.
8302
8303 2007-01-24  Jan Hubicka  <jh@suse.cz>
8304
8305         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
8306
8307         * ipa-inline.c (initial_insns, max_insns): Delete.
8308         (compute_max_insns): New function.
8309         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
8310         of insns as base for code growth.
8311         (cgraph_decide_inlining): Make initial_insns local; do not compute
8312         max_insns.
8313         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
8314         * doc/invoke.texi (inline-unit-growth): Update docs.
8315
8316 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
8317
8318         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
8319         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
8320         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
8321         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
8322         for CPUs that have PTA_CX16 set.
8323
8324         PR middle-end/27416
8325         * gimplify.c (omp_check_private): New function.
8326         (gimplify_scan_omp_clauses): Use it for
8327         firstprivate/lastprivate/reduction.
8328
8329         PR middle-end/30494
8330         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
8331         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
8332
8333         PR middle-end/30421
8334         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
8335         If lower_lastprivate_clauses emits some statements, append them
8336         to dlist rather than body_p and to body_p append an initializer.
8337         (lower_omp_for): Adjust caller.
8338
8339 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
8340
8341         * target.h (globalize_decl_name): New.
8342         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
8343         * output.h (default_globalize_decl_name): New.
8344         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
8345         globalize_label.
8346         (globalize_decl): Ditto.
8347         (default_globalize_decl_name): New.
8348         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
8349         (ia64_handle_version_id_attribute): New.
8350         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
8351         (ia64_asm_output_external): Use globalize_decl_name instead
8352         of globalize_label.
8353         * doc/extend.texi (version_id): New pragma.
8354         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
8355
8356 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8357
8358         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
8359         _uleb128_t and _Unwind_SWord with _sleb128_t.
8360         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
8361         uw_frame_state_for, uw_update_context_1): Likewise.
8362         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
8363         * unwind-pe.h (read_uleb128, read_sleb128,
8364         read_encoded_value_with_base): Likewise.
8365         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
8366
8367 2007-01-24  Richard Guenther  <rguenther@suse.de>
8368
8369         * builtins.c (expand_builtin_cexpi): Get the fndecl
8370         for cexp in the correct way.
8371
8372 2007-01-24  Jan Hubicka  <jh@suse.cz>
8373
8374         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
8375
8376 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8377
8378         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
8379         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
8380         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
8381         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
8382         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
8383         __SIZEOF_PTRDIFF_T__.
8384         * doc/cpp.texi: Documentation for the new builtin macros added.
8385
8386 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
8387
8388         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
8389         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
8390         instead of operands[2] to avoid access past the end of array.
8391
8392 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
8393
8394         * reload1.c (emit_reload_insns): Pass the reload register
8395         for a non-spill output reload through forget_old_reloads_1.
8396
8397 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
8398
8399         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
8400         _SOFT_DOUBLE if doubles use software floating-point.
8401         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
8402         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8403         * config/rs6000/darwin-ldouble.c: Also compile functions for
8404         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
8405         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8406         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
8407         commented-out long double override.
8408         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
8409         * config/rs6000/eabispe.h: Likewise.
8410         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
8411         long double for non-SPE.
8412         (rs6000_handle_option): Likewise.
8413         (invalid_e500_subreg): Disallow more subregs involding DImode,
8414         DFmode, TImode or TFmode.
8415         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
8416         E500 double.
8417         (legitimate_lo_sum_address_p): Also check for TFmode for E500
8418         double.
8419         (rs6000_legitimize_address): Also handle TFmode for E500 double.
8420         (rs6000_legitimize_reload_address): Also handle TFmode for E500
8421         double.
8422         (rs6000_legitimate_address): Also check for TFmode for E500
8423         double.
8424         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
8425         (spe_build_register_parallel): Handle TFmode and TCmode.
8426         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
8427         double.
8428         (function_arg): Handle TFmode and TCmode for E500 double.
8429         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
8430         in general.
8431         (print_operand): Handle TFmode and TImode for %y.
8432         (rs6000_generate_compare): Handle TFmode comparisons for E500
8433         double.
8434         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
8435         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
8436         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
8437         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
8438         TFmode for E500 double.
8439         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
8440         (floatsidf2): Enable for E500 double.
8441         (movtf_softfloat): Use rs6000_nonimmediate_operand.
8442         (extenddftf2): Change to extenddftf2_fprs.
8443         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
8444         depending on TARGET_E500_DOUBLE.
8445         (extendsftf2): Enable for E500 double.
8446         (trunctfdf2): Enable for E500 double.
8447         (trunctfsf2): Change to trunctfsf2_fprs.
8448         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
8449         depending on TARGET_E500_DOUBLE.
8450         (floatsitf2): Enable for E500 double.
8451         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
8452         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
8453         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
8454         (negtf2): Change to negtf2_internal.
8455         (negtf2): New expander.
8456         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
8457         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
8458         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
8459         (movdi_internal32): Use rs6000_nonimmediate_operand.
8460         (unnamed splitter): Likewise.
8461         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
8462         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
8463         (SPE64TF, DITI): New mode macros.
8464         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
8465         modes.
8466         (frob_tf_ti): New.
8467         (frob_<mode>_di_2): New.
8468         (frob_tf_di_8_2): New.
8469         (frob_di_df): Change to frob_di_<mode>; allow more modes.
8470         (frob_ti_tf): New.
8471         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
8472         more modes.
8473         (frob_ti_<mode>_8_2): New.
8474         (frob_ti_tf_2): New.
8475         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
8476         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
8477         TFmode.
8478         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
8479         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
8480         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
8481         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
8482         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
8483         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
8484         tsttflt_gp): New.
8485
8486 2007-01-23  Ian Lance Taylor  <iant@google.com>
8487
8488         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
8489         insn-*.o first.
8490         (OBJS-archive): Reformat, alphabetize.
8491         (OBJS): Change out_object_file to OBJS-md.
8492
8493 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
8494
8495         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
8496         JUMP_P and CALL_P predicates where applicable.
8497         * config/i386/i386.c: Ditto.
8498         * config/i386/i386.md: Ditto.
8499         * config/i386/mmx.md: Ditto.
8500         * config/i386/predicates.md: Ditto.
8501
8502 2007-01-22  Andreas Schwab  <schwab@suse.de>
8503
8504         * config/m68k/m68k.h: Fix comment.
8505
8506 2007-01-22  Jan Hubicka  <jh@suse.cz>
8507
8508         * passes.c (init_optimization_passes): Do not rerun
8509         pass_early_warn_uninitialized.
8510
8511 2007-01-22  Richard Guenther  <rguenther@suse.de>
8512
8513         PR tree-optimization/30038
8514         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
8515         function.
8516         (execute_cse_sincos_1): Likewise.
8517         (execute_cse_sincos): Likewise.
8518         (gate_cse_sincos): Likewise.
8519         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
8520         the cexpi() canonicalization of sincos().
8521         * tree-pass.h (pass_cse_sincos): Declare.
8522         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
8523
8524 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
8525
8526         PR rtl-optimization/29329
8527         * combine.c (replaced_rhs_insn): Rename to i2mod.
8528         (replaced_rhs_value): Rename to i2mod_new_rhs.
8529         (i2mod_old_rhs): New global variable.
8530         (combine_instructions): Adjust for above change.  Save a copy of
8531         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
8532         note are substituted in the second instruction.
8533         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
8534         ditch the note if it pertains to the second eliminated register
8535         and this register is mentioned in i2mod_old_rhs.
8536
8537         Revert:
8538         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
8539
8540         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
8541         the insn to which the note was originally attached.
8542
8543 2007-01-21  Jan Hubicka  <jh@suse.cz>
8544
8545         * ipa-inline.c (inlining_mode): Comment, move up.
8546         (cgraph_decide_inlining_incrementally): Do not perform inlining
8547         itself; fix handling of flattening of self recursive functions.
8548         (cgraph_find_cycles): Remove.
8549         (cgraph_flatten_node): Remove.
8550         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
8551         (try_inline): New function.
8552         (cgraph_early_inlining): Update call of
8553         cgraph_decide_inlining_incrementally.  Apply inlining here.
8554         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
8555
8556 2007-01-21  Dirk Mueller  <dmueller@suse.de>
8557
8558         PR bootstrap/30511
8559         * tree-vrp.c (check_array_bounds): do not warn
8560         about ADDR_EXPR's of ARRAY_REF's which are immediately
8561         used in binary expressions.
8562
8563 2007-01-21  Ira Rosen  <irar@il.ibm.com>
8564
8565         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
8566         read_write_dep and macros for its access.
8567         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
8568         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
8569         argument, call vect_check_interleaving for every independent pair of
8570         data-refs. Mark loads that access the same memory location as a store
8571         in the loop.
8572         (vect_check_dependences): Remove.
8573         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
8574         call, fix the call to vect_analyze_data_ref_dependence.
8575         (vect_analyze_data_ref_access): For statements that access the same
8576         data-ref, check that they are not stores; for loads, check that there
8577         is no store that access the same location.
8578
8579 2007-01-20  Roger Sayle  <roger@eyesopen.com>
8580             Joseph Myers  <joseph@codesourcery.com>
8581
8582         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
8583         (-fdump-rtl-stack): Likewise.
8584         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
8585         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
8586         (-mpt-fixed): Use @minus{} for minus sign.
8587         (Using Precompiled Headers): Fix under/overfull hbox.
8588
8589 2007-01-20  Jan Hubicka  <jh@suse.cz>
8590
8591         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
8592         place within annotation.
8593
8594 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8595
8596         * pa.c (output_move_double): Change array size of xoperands to 4.
8597
8598 2007-01-20  Jan Hubicka  <jh@suse.cz>
8599
8600         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
8601         as temporary.
8602
8603 2007-01-19  Ian Lance Taylor  <iant@google.com>
8604
8605         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
8606         constant to unsigned HOST_WIDE_INT before negating.
8607
8608 2007-01-19  Ian Lance Taylor  <iant@google.com>
8609
8610         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
8611         to unsigned.
8612         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
8613         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8614         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
8615         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
8616         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8617         (realloc_vdef, realloc_vuse): Change second parameter to
8618         unsigned.
8619         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
8620         fields to unsigned.
8621         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
8622         unsigned. Change x and lim locals to unsigned.
8623         (realloc_vdef, realloc_vuse): Change num_elem parameter to
8624         unsigned.
8625         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
8626         (copy_virtual_operands): Change i and n locals to unsigned.
8627
8628 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8629
8630         PR middle-end/29335
8631         * builtins.c (fold_builtin_1): Handle builtin fdim.
8632
8633 2007-01-20  Jan Hubicka  <jh@suse.cz>
8634
8635         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
8636         * tree-ssa-structalias.c (compute_points_to_sets): Do call
8637         init_alias_heapvars.
8638         (init_alias_heapvars): Initialize only when not already initialized.
8639         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
8640
8641 2007-01-19  Roger Sayle  <roger@eyesopen.com>
8642
8643         * common.opt (fsigned-zeros): New command line option.
8644         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
8645         of flag_unsafe_math_optimizations.
8646         * opts.c (set_fast_math_flags): The -ffast-math command line option
8647         implies -fno-signed-zeros.
8648         (fast_math_flags_set_p): Likewise.
8649
8650         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
8651         the documentation of -ffast-math appropriately.  Wrap long lines.
8652
8653 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
8654
8655         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
8656         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
8657
8658 2007-01-19  Tomas Bily  <tbily@suse.cz>
8659
8660         * cgraphunit.c (cgraph_finalize_function): Updating of pid
8661         * tree-profile.c:
8662         (tree_init_ic_make_global_vars): New function
8663         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
8664         (tree_gen_ic_profiler): New function
8665         (tree_gen_ic_func_profiler): New function
8666         (tree_profiling): Added calling of tree_gen_ic_func_profiler
8667         (tree_profile_hooks): Added hook for indirec/virtual calls
8668         * value-prof.c (tree_find_values_to_profile): New case for
8669         indirect calls
8670         (tree_values_to_profile): Call for determining indirect/virtual
8671         counters
8672         (tree_indirect_call_to_profile): New function
8673         (tree_ic_transform): New function
8674         (tree_ic): New function
8675         (find_func_by_pid): New function
8676         (init_pid_map): New function
8677         (tree_value_profile_transformations): Added check for
8678         indirect/virtual call transformation
8679         * value-prof.h (enum hist_type): New counter type for
8680         indirect/virtual calls
8681         (profile_hooks): Added new hook for profiling indirect/virtual
8682         calls
8683         * profile.c (instrument_values): New case for indirect/virtual
8684         call added
8685         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
8686         (GCOV_COUNTER_V_INDIR): New counter type
8687         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
8688         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
8689         call added
8690         * cgraph.c: Definition of cgraph_max_pid
8691         (cgraph_create_node): Default init of pid attribute
8692         * cgraph.h: Declaration of cgraph_max_pid
8693         (struct cgraph_node): Added pid attribute
8694         * libgcov.c (__gcov_indirect_call_profiler): New function
8695         (__gcov_one_value_profiler_body): New function
8696         (__gcov_one_value_profiler): Body was moved to
8697         __gcov_one_value_profiler_body and calls it
8698
8699 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
8700
8701         * doc/gty.texi (Options): Document the mark_hook option to GTY.
8702         * gengtype.c (write_types_data, write_func_for_structure,
8703         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
8704         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
8705         (walk_type, write_func_for_structure): Generate the mark_hook if
8706         needed.
8707
8708 2007-01-19  Jan Hubicka  <jh@suse.cz>
8709
8710         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
8711         'early' argument take inlining mode argument specifying whether to
8712         inline for size/speeed or all functions; add support for flattening;
8713         improve dumpting.
8714         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
8715
8716 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8717
8718         PR c++/17947
8719         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
8720         the name of the declared identifier.
8721
8722 2007-01-19  Dirk Mueller  <dmueller@suse.de>
8723
8724         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
8725         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
8726         duplicate evaluation.
8727
8728 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
8729
8730         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
8731         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
8732         to XFMode, use acosxf2 and truncate result to requested mode.
8733         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
8734         (asin<mode>2): Similarly, with asin expanders.
8735         (*fscalexf4_i387): Rename from *fscalexf4.
8736         (expNcorexf3): New expander.
8737         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
8738         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
8739         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
8740         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
8741         patterns for SSE math.
8742         (exp10<mode>2): Similarly, with exp10 expanders.
8743         (exp2<mode>2): Similarly, with exp2 expanders.
8744         (expm1<mode>2): Similarly, with expm1 expanders.
8745         (ldexp<mode>3): Similarly, with ldexp expanders.
8746         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
8747         Use gen_truncxf<mode>2_i387_noop to truncate result.
8748
8749 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8750
8751         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
8752         for ColdFire targets.
8753
8754 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
8755             Richard Sandiford  <richard@codesourcery.com>
8756
8757         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
8758         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
8759         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
8760         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
8761         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
8762         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
8763
8764 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8765
8766         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
8767         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
8768         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
8769         (*adddi_dilshr32_cf): New pattern.
8770         (adddi3, subdi3): Remove first alternatives.
8771
8772 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8773
8774         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
8775         implemented using move.l, do not use its cc result for floating-point
8776         comparisons.
8777
8778 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8779
8780         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
8781         from accepting 's' constraints if flag_pic.
8782
8783 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8784
8785         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
8786         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
8787         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
8788         condition from TARGET_68881 to TARGET_HARD_FLOAT.
8789
8790 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
8791
8792         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
8793         ColdFire alternatives.
8794         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
8795         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
8796         architectures that support ff1 instruction.
8797
8798 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8799             Julian Brown  <julian@codesourcery.com>
8800
8801         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
8802         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
8803         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
8804         Add commentary.
8805
8806 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8807
8808         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
8809         and return a bool.
8810         (output_move_const_into_data_reg, output_move_simode_const): Delete.
8811         * config/m68k/m68k.c (const_method, const_int_cost): Take a
8812         HOST_WIDE_INT instead of an rtx.
8813         (m68k_rtx_costs): Update call accordingly.
8814         (output_move_const_into_data_reg): Likewise.  Fix formatting.
8815         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
8816         Return a bool.
8817         (output_move_simode_const): Update calls after above changes.
8818         Rework to use automatic variables and predicates like MEM_P.
8819         * config/m68k/m68k.md (pushexthisi_const): Update call to
8820         valid_mov3q_const.
8821
8822 2007-01-19  Dirk Mueller  <dmueller@suse.de>
8823
8824         * tree-ssa-alias.c (perform_var_substitution): Fix typo
8825         in dump_flags test.
8826
8827 2007-01-19  Richard Guenther  <rguenther@suse.de>
8828
8829         * builtins.c (expand_builtin_cexpi): Fall back to expanding
8830         via cexp in case sincos is not available.
8831
8832 2007-01-19  Richard Guenther  <rguenther@suse.de>
8833
8834         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
8835         * defaults.h (TARGET_HAS_SINCOS): Default to off.
8836         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
8837         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
8838         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
8839         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
8840         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
8841         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
8842
8843 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
8844
8845         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
8846         New insn patterns.
8847         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
8848         (atan2xf3): Directly generate RTL pattern.
8849         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
8850         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
8851         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8852         disable patterns for SSE math.
8853         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
8854         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
8855         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8856         disable patterns for SSE math.
8857
8858 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
8859
8860         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
8861
8862 2007-01-18  Roger Sayle  <roger@eyesopen.com>
8863
8864         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
8865         VIEW_CONVERT_EXPR to the same type as it's operand.
8866
8867 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
8868
8869         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
8870         configured for long double 128.
8871
8872 2007-01-18  Mike Stump  <mrs@apple.com>
8873
8874         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
8875         error.
8876
8877 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
8878
8879         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
8880         type correct.
8881
8882 2007-01-18  Jan Hubicka  <jh@suse.cz>
8883
8884         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
8885         greater than NUM_VOP_FREE_BUCKETS.
8886
8887 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
8888
8889         * tree-ssa-structalias.c: Update comments.
8890         (ptabitmap_obstack): Removed.
8891         (pta_obstack): New.
8892         (oldpta_obstack): Ditto.
8893         (stats): Add a few members.
8894         (struct variable_info): Remove node, complex, address_taken, and
8895         indirect_target members. Add oldsolution member.
8896         (new_var_info): Do not initialize removed members.
8897         (constraint_expr_type): Remove INCLUDES.
8898         (constraint_graph): Add size, implicit_preds, rep,
8899         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
8900         (FIRST_REF_NODE): New macro.
8901         (LAST_REF_NODE): Ditto.
8902         (FIRST_ADDR_NODE): Ditto.
8903         (find): New function.
8904         (unite): Ditto.
8905         (dump_constraint): Do not handle INCLUDES.
8906         (insert_into_complex): Do not insert duplicate constraints.
8907         (condense_varmap_nodes): Renamed and rewritten into ...
8908         (merge_node_constraints): This. Also fix bug in handling of
8909         offseted copy constraints.
8910         (clear_edges_for_node): No longer need to deal with preds at all,
8911         or removing associated preds/succs.
8912         (merge_graph_nodes): Deal with indirect_cycles.
8913         Don't deal with predecessors.
8914         (add_implicit_graph_edge): New function.
8915         (add_pred_graph_edge): Ditto.
8916         (add_graph_edge): Don't deal with predecessors.
8917         (build_constraint_graph): Removed.
8918         (build_pred_graph): New function.
8919         (build_succ_graph): Ditto.
8920         (struct scc_info): Removed in_component. Added roots, dfs, and
8921         node_mapping. Remove visited_index, unification_queue.
8922         (scc_visit): Deal with union-find we do now.
8923         Deal with cycles with REF nodes.
8924         (collapse_nodes): Renamed and rewritten to ...
8925         (unify_nodes): This.
8926         (process_unification_queue): Removed.
8927         (topo_visit): Cleanup
8928         (do_da_constraint): Use find.
8929         (do_sd_constraint): Ditto.
8930         (do_ds_constraint): Ditto.
8931         (do_complex_constraint): Ditto.
8932         (init_scc_info): Update for removed and added members.
8933         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
8934         (find_indirect_cycles): This.
8935         (equivalence_class): New variable.
8936         (label_visit): New function.
8937         (perform_variable_substitution): Rewritten.
8938         (free_var_substitution_info): New function.
8939         (find_equivalent_node): Ditto.
8940         (move_complex_constraints): Ditto.
8941         (eliminate_indirect_cycles): Ditto.
8942         (solve_graph): Only propagate changed bits.
8943         Use indirect cycle elimination.
8944         Use find.
8945         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
8946         (tree_id_eq): Renamed to ...
8947         (tree_vi_eq): This. Update for member change
8948         (insert_id_for_tree): Renamed and rewritten to ...
8949         (insert_vi_for_tree): This.
8950         (lookup_id_for_tree): Renamed and rewritten to ...
8951         (lookup_vi_for_tree): This.
8952         (get_id_for_tree): Renamed and rewritten to ...
8953         (get_vi_for_tree): Ditto.
8954         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
8955         (process_constraint): Don't handle INCLUDES.
8956         Remove special ADDRESSOF case.
8957         (find_func_aliases): Rewrite to use vi functions instead of id
8958         ones.
8959         (create_function_info_for): Ditto.
8960         (create_variable_info_for): Ditto.
8961         (intra_create_variable_infos): Ditto.
8962         (merge_smts_into): Ditto.
8963         (find_what_p_points_to): Ditto.
8964         (init_base_vars): Ditto.
8965         (init_alias_vars): Ditto.
8966         (remove_preds_and_fake_succs): New function.
8967         (dump_sa_points_to_info): Dump new stats.
8968         (dump_solution_for_var): Use find.
8969         (set_used_smts): Fix formatting.
8970         (compute_points_to_sets): Updated for new functions.
8971         (ipa_pta_execute): Ditto.
8972
8973 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8974             Richard Sandiford  <richard@codesourcery.com>
8975
8976         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
8977         parallels.
8978         * calls.c (expand_call): If the return value is a PARALLEL,
8979         extract its first member.
8980         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
8981         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
8982         use FUNCTION_EXTRA_EPILOGUE.
8983         (m68k_function_value): Return a PARALLEL if the return value
8984         is of a pointer type.
8985         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
8986         (FUNCTION_EXTRA_EPILOGUE): Remove.
8987         * config/m68k/m68k.md (D0_REG): New constant.
8988
8989 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8990
8991         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
8992         output a NOP for empty epilogues.
8993
8994 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8995
8996         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
8997         before function.  Extend register save check to include all
8998         registers, not just integer ones.
8999
9000 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9001
9002         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
9003         (m68k_use_return_insn): ...this.
9004         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
9005         * config/m68k/m68k.c (use_return_insn): Rename to...
9006         (m68k_use_return_insn): ...this.
9007         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
9008         of USE_RETURN_INSN.
9009
9010 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9011
9012         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
9013         nearest even, fix denormal rounding overflow.
9014
9015 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9016
9017         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
9018         f%$smove and f%$move.
9019         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
9020         (extendsfdf2_cf): Use fdmove instead of f%&move.
9021         (truncdfsf2_cf): Use fsmove instead of f%$smove.
9022         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
9023
9024 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9025
9026         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
9027         GPR<-GPR moves.
9028
9029 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9030
9031         * real.h (real_format): Add a canonical_nan_lsbs_set field.
9032         (coldfire_single_format): Declare.
9033         (coldfire_double_format): Likewise.
9034         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
9035         of qnan_msb_set to determine the lower bits of a canonical
9036         NaN significand.
9037         (encode_ieee_double): Likewise.
9038         (encode_ieee_quad): Likewise.
9039         (ieee_single_format): Initialize canonical_nan_lsbs_set.
9040         (mips_single_format): Likewise.
9041         (ieee_double_format): Likewise.
9042         (mips_double_format): Likewise.
9043         (ieee_extended_motorola_format): Likewise.
9044         (ieee_extended_intel_96_format): Likewise.
9045         (ieee_extended_intel_128_format): Likewise.
9046         (ieee_extended_intel_96_round_53_format): Likewise.
9047         (ibm_extended_format): Likewise.
9048         (mips_extended_format): Likewise.
9049         (ieee_quad_format): Likewise.
9050         (mips_quad_format): Likewise.
9051         (vax_f_format): Likewise.
9052         (vax_d_format): Likewise.
9053         (vax_g_format): Likewise.
9054         (i370_single_format): Likewise.
9055         (i370_double_format): Likewise.
9056         (decimal_single_format): Likewise.
9057         (decimal_double_format): Likewise.
9058         (decimal_quad_format): Likewise.
9059         (c4x_single_format): Likewise.
9060         (c4x_extended_format): Likewise.
9061         (real_internal_format): Likewise.
9062         (coldfire_single_format): New real_format.
9063         (coldfire_double_format): Likewise.
9064         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
9065         canonical_nan_lsbs_set.
9066         (pdp11_d_format): Likewise.
9067         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
9068         if TARGET_COLDFIRE_CPU.
9069
9070 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9071
9072         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
9073         (output_call, m68k_legitimize_call_address): Declare.
9074         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
9075         parenthesees.  Add support for a 'W' constraint.
9076         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
9077         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
9078         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
9079         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
9080         variables.
9081         (override_options): Initialize them.  Do not set flag_no_function_cse
9082         for TARGET_ID_SHARED_LIBRARY.
9083         (m68k_output_pic_call): Delete.
9084         (m68k_legitimize_call_address): New function.
9085         (print_operand): Remove the %o prefix.  Handle the %p prefix.
9086         (output_call): New function.
9087         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
9088         target address from the GOT if symbolic jumps are not allowed.
9089         * config/m68k/m68k.md (call, general_operand): Do not set
9090         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
9091         Merge separate flag_pic and !flag_pic define_insns into...
9092         (*call, *call_value): ...these new patterns.  Match the address
9093         rather than the containing MEM and require it to be a call_operand.
9094         Use output_call to generate the asm template.
9095         * config/m68k/predicates.md (const_call_operand): New predicate.
9096         (call_operand): Likewise.
9097
9098 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9099
9100         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
9101         (STACK_GROWS_DOWNWARD): Define to 1.
9102         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
9103         comments, emphasizing that these values are only defaults.
9104         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
9105         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
9106
9107 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9108
9109         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
9110
9111 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9112             Richard Sandiford  <richard@codesourcery.com>
9113
9114         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
9115         (FP_REGNO_P): New macros.
9116         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
9117         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
9118         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
9119         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
9120
9121 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9122
9123         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9124         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
9125         to $tmake_file.
9126         * config/m68k/t-floatlib: New file, extracting common code from...
9127         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
9128         * config/m68k/t-uclinux: Here.
9129         * config/m68k/fpgnulib.c: Do not compile extendeed precision
9130         routines on ColdFire targets.
9131
9132 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9133
9134         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9135         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
9136         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
9137         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
9138         explicitly set MOTOROLA to 1.
9139         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
9140
9141 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9142             Nathan Sidwell  <nathan@codesourcery.com>
9143
9144         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
9145         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
9146         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
9147         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
9148         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
9149         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
9150         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
9151         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
9152         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
9153         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
9154         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
9155         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
9156         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
9157         (DBX_REGISTER_NUMBER): Delete.
9158         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
9159         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
9160         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
9161
9162 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9163
9164         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
9165         * config/flat.h: New file.
9166         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
9167         OBJECT_FORMAT_FLAT.
9168         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
9169         indirect references for -msep-data or -mid-shared-library.
9170         Do not use PC-relative code addresses either.
9171         * config/m68k/m68k.c (override_options): Restrict -fPIC error
9172         to -mpcrel.
9173         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
9174         for shared libraries and crt1.o for executables.  Use crti.o and
9175         crtbegin.o.
9176         (ENDFILE_SPEC): Use crtend.o and crtn.o.
9177         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
9178         Do not add -elf2flt or -shared-lib-id options here.
9179         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
9180         Pass -shared-lib-id if -mid-shared-library, taking the library
9181         identifier from -mshared-library-id if given, otherwise
9182         defaulting to 0.
9183         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
9184         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
9185         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
9186         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
9187         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
9188         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
9189         and crtend.o.
9190         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
9191         jump sequence for ISA A and ISA A+.
9192         (PICJUMP): Likewise.
9193
9194 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9195
9196         * config.gcc (m68k-*-uclinux*): Base the port on the common
9197         and m68k GNU/Linux files rather than on the generic ELF ones.
9198         * config/m68k/uclinux.h (TARGET_VERSION): Override.
9199         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
9200
9201 2007-01-18  Julian Brown  <julian@codesourcery.com>
9202             Richard Sandiford  <richard@codesourcery.com>
9203
9204         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
9205         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
9206         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
9207         before redefining.
9208         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
9209         80 unconditionally.
9210         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
9211
9212 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9213
9214         * doc/install.texi: Document m68k-uclinuxoldabi.
9215         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
9216         * config/m68k/uclinux-oldabi.h: New file, copied from
9217         config/m68k/uclinux.h.
9218
9219 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
9220
9221         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
9222         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
9223         (m32r_compute_frame_size): Use unsigned for regno.
9224         (m32r_reload_lr): Use gen_frame_mem.
9225         (pop): New.
9226         (m32r_output_function_epilogue): Don't output the function epilogue
9227         textually here.
9228         (m32r_expand_epilogue): New.
9229         (direct_return): Return false if the function has the interrupt
9230         attribute.
9231         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
9232         * config/m32r/m32r.md (epilogue): New expander.
9233         (return_lr, return_rte): New insns.
9234         (return): Make it expander.
9235         (return_normal): New expander.
9236
9237 2007-01-18  Josh Conner  <jconner@apple.com>
9238
9239         PR target/30485
9240         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
9241         support for UNLE, UNLT, UNGE, and UNGT.
9242
9243 2007-01-18  Jan Hubicka  <jh@suse.cz>
9244
9245         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
9246         * tree-tailcall (add_virtual_phis): Likewise.
9247         (optimize_tail_call): Return TODOs.
9248         (execute_tail_calls): Return TODOs.
9249         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
9250         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
9251         changed.
9252         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
9253         Cleanup cfg using TODO.
9254         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
9255         * passes.c (execute_function_todo): When cleanup did something, remove
9256         unused locals.
9257         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
9258         (make_edges): Don't cleanup_cfg.
9259
9260 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
9261
9262         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
9263         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
9264         operate on the top of stack.
9265         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
9266         register handling of instructions that output to the second
9267         stack slot.
9268         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
9269         (move_for_stack_reg): Special-case check for dead destination
9270         stack slot for constant load of 1.0 inside UNSPEC_TAN.
9271
9272         * config/i386/i386.md (UNSPEC_TAN): New constant.
9273         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
9274         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
9275         to correctly model move of constant 1.0 to top stack slot.
9276         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
9277         (unnamed peephole2 pattern): Remove corresponding peephole2
9278         pattern that optimizes tan insn and loading of constant 1.0.
9279         (tanxf2): Use fptanxf4_i387.
9280         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
9281         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
9282         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
9283         disable patterns for SSE math.
9284         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
9285         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
9286
9287 2007-01-18  Dirk Mueller  <dmueller@suse.de>
9288             Richard Guenther <rguenther@suse.de>
9289
9290         PR diagnostic/8268
9291         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
9292         * common.opt (Warray-bounds): Add new warning option.
9293         * c-opts.c (c_common_handle_option): Define -Warray-bounds
9294         if -Wall is given.
9295         * Makefile.in: make tree-vrp.o depend on toplev.h
9296         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
9297         is enabled.
9298         (check_array_refs, check_array_bounds, check_array_ref): New.
9299
9300 2007-01-18  Jan Hubicka  <jh@suse.cz>
9301
9302         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
9303         (execute_ssa_ccp): Return flags conditionally.
9304         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
9305         changed.
9306         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
9307
9308 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
9309
9310         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
9311         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
9312
9313         * Makefile.c (GTFILES): Add cfglayout.h.
9314         * gengtype.c (open_base_files): Likewise.
9315         * cfglayout.c (cfg_layout_function_footer,
9316         cfg_layout_function_header) Reindent to make gengtype happy.
9317         * cfglayout.h (cfg_layout_function_footer,
9318         cfg_layout_function_header): Add GTY(()) marker.
9319
9320         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
9321
9322 2007-01-18  Ben Elliston  <bje@au.ibm.com>
9323
9324         * genautomata.c (write_automata): Include xstrerror output in the
9325         error message if writing the DFA description file fails.
9326
9327 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
9328
9329         * config/mips/mips-protos.h (mips_output_external): Make it
9330         return void.
9331         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
9332         * config/mips/mips.c (irix_output_external_libcall): Likewise.
9333         (extern_list): Likewise.
9334         (extern_head): Likewise.
9335         (TARGET_ASM_FILE_END): Likewise.
9336         (mips_file_end): Likewise.
9337         (mips_output_external): Rewritten.
9338
9339 2007-01-18  Ben Elliston  <bje@au.ibm.com>
9340
9341         * genpreds.c (write_insn_preds_c): Only write out the function
9342         body for regclass_for_constraint if we have register constraints.
9343
9344 2007-01-17  Tom Tromey  <tromey@redhat.com>
9345
9346         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
9347         * doc/install.texi (Testing): Use sourceware.org.
9348         (Binaries): Likewise.
9349         (Specific): Likewise.
9350         * doc/contrib.texi (Contributors): Use sourceware.org.
9351
9352 2007-01-17  Anatoly Sokolov <aesok@post.ru>
9353
9354         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
9355         (AVR_ENHANCED): Rename to ...
9356         (AVR_HAVE_MUL): ... new.
9357         (avr_enhanced_p): Rename to ...
9358         (avr_have_mul_p): ... new.
9359         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
9360         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
9361         * config/avr/avr.c (avr_enhanced_p): Rename to ...
9362         (avr_have_mul_p): ... new.
9363         (base_arch_s): Rename 'enhanced' to 'have_mul'.
9364         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
9365         'avr_enhanced_p' and 'enhanced'.
9366         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
9367         AVR_HAVE_MUL instead of AVR_ENHANCED.
9368         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
9369         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
9370         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
9371         instead of AVR_ENHANCED.
9372         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
9373         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
9374         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
9375
9376 2007-01-17  Ian Lance Taylor  <iant@google.com>
9377
9378         * vec.h (VEC_reserve_exact): Define.
9379         (vec_gc_p_reserve_exact): Declare.
9380         (vec_gc_o_reserve_exact): Declare.
9381         (vec_heap_p_reserve_exact): Declare.
9382         (vec_heap_o_reserve_exact): Declare.
9383         (VEC_OP (T,A,reserve_exact)): New static inline function, three
9384         versions.
9385         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
9386         negative parameter.
9387         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
9388         (VEC_OP (T,A,copy)) [all versions]: Likewise.
9389         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
9390         * vec.c (calculate_allocation): Add exact parameter.  Change all
9391         callers.
9392         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
9393         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
9394         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
9395         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
9396         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
9397         (vec_heap_p_reserve_exact): New function.
9398         (vec_heap_o_reserve_exact): New function.
9399
9400 2007-01-17  Jan Hubicka  <jh@suse.cz>
9401
9402         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
9403
9404 2007-01-17  Eric Christopher  <echristo@apple.com>
9405
9406         * config.gcc: Support core2 processor.
9407
9408 2007-01-16  Jan Hubicka  <jh@suse.cz>
9409
9410         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
9411         the names, just unlink the chain so we don't crash on dangling pointers
9412         to dead SSA names.
9413
9414 2007-01-16  Jan Hubicka  <jh@suse.cz>
9415
9416         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
9417         * tree-pass.h: Reorder to make IPA passes appear toegher.
9418         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
9419         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
9420         parameters, do not call early inliner.
9421         * ipa-inline.c: Update comments.  Include tree-flow.h
9422         (cgraph_decide_inlining): Do not compute inlining parameters.
9423         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
9424         be called with function context set up.
9425         (pass_ipa_inline): Remove unreachable functions before pass.
9426         (cgraph_early_inlining): Simplify assuming to be called from the
9427         PM as local pass.
9428         (pass_early_inline): New pass.
9429         (cgraph_gate_ipa_early_inlining): New gate.
9430         (pass_ipa_early_inline): Turn into simple wrapper.
9431         (compute_inline_parameters): New function.
9432         (gate_inline_passes): New gate.
9433         (pass_inline_parameters): New pass.
9434         (apply_inline): Move here from tree-optimize.c
9435         (pass_apply_inline): New pass.
9436         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
9437         transforming.
9438         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
9439         doing them by hand.
9440         (tree_function_versioning): Do not allocate dummy struct function.
9441         * tree-inline.h (optimize_inline_calls): Update prototype.
9442         * tree-optimize.c (execute_fixup_cfg): Export.
9443         (pass_fixup_cfg): Remove
9444         (tree_rest_of_compilation): Do not apply inlines.
9445         * tree-flow.h (execute_fixup_cfg): Declare.
9446         * Makefile.in (gt-passes.c): New.
9447         * passes.c: Include gt-passes.h
9448         (init_optimization_passes): New passes.
9449         (nnodes, order): New static vars.
9450         (do_per_function_toporder): New function.
9451         (execute_one_pass): Dump current pass here.
9452         (execute_ipa_pass_list): Don't dump current pass here.
9453
9454 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
9455
9456         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
9457         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
9458
9459 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
9460
9461         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
9462         (strong_alias): Define.
9463         (__gcc_qmul): Provide non-FMA for soft-float.
9464         (__gcc_qdiv): Same.
9465         (__gcc_qneg): New.
9466         (__gcc_qeq): New.
9467         (__gcc_qle): New.
9468         (__gcc_qge): New.
9469         (__gcc_qunord): New.
9470         (__gcc_stoq): New.
9471         (__gcc_dtoq): New.
9472         (__gcc_qtos): New.
9473         (__gcc_qtod): New.
9474         (__gcc_qtoi): New.
9475         (__gcc_qtou): New.
9476         (__gcc_itoq): New.
9477         (__gcc_utoq): New.
9478         (fmsub): New.
9479         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
9480         soft-float functions.
9481         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
9482         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
9483         about long double soft float.
9484
9485 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
9486             Tehila Meyzels  <tehila@il.ibm.com>
9487
9488         * tree-vectorizer.h (is_pattern_stmt_p): New.
9489         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
9490         formatting (tabs instead of spaces). Cleanup and clarify setting
9491         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
9492         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
9493         (vectorizable_type_demotion): Check that types are integral.
9494         (vectorizable_type_promotion): Likewise.
9495         (vectorizable_store): Fix typo.  Eliminate new-line at end of
9496         comments.
9497
9498 2007-01-16  Jan Hubicka  <jh@suse.cz>
9499
9500         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
9501         cgraph edges too.
9502
9503 2007-01-15  Eric Christopher  <echristo@apple.com>
9504
9505         * ifcvt.c: Include vec.h, vecprim.h.
9506         (check_cond_move_block): New argument regs.
9507         Reorganize. Add registers used to regs.
9508         (cond_move_process_if_block): Use regs set above as
9509         loop bounds.
9510
9511 2007-01-15  Eric Christopher  <echristo@apple.com>
9512
9513         * config/darwin.h: Update copyright.
9514         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
9515         (LINK_COMMAND_SPEC): Add -u.
9516         (LINK_SPEC): Fix umbrella for above.
9517
9518 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
9519
9520         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
9521         glibc CVS.
9522
9523 2007-01-15  Tom Tromey  <tromey@redhat.com>
9524
9525         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
9526         * doc/install.texi (Testing): Don't mention jacks.
9527         (Configuration): Document --enable-java-maintainer-mode.  Move
9528         --with-java-home to libgcj-specific section.  Document
9529         --with-ecj-jar.
9530         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
9531
9532 2007-01-15  Jan Hubicka  <jh@suse.cz>
9533
9534         * tree-ssa-dce.c (DCE_TODOs): New.
9535         (propagate_necessity): Return if something changed.
9536         (eliminate_unnecessary_stmts): Likewise.
9537         (perform_tree_ssa_dce): Return TODO flags when needed.
9538         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
9539
9540 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
9541
9542         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
9543         (fyl2x_extend<mode>xf3_i387): New insn pattern.
9544         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
9545         patterns using X87MODEF12 mode macro.  Extend operand 1
9546         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
9547         (log10<mode>2): Ditto.
9548         (log2<mode>2): Ditto.
9549         (log1p<mode>2): Ditto.
9550         (logb<mode>2): Ditto.
9551         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
9552         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
9553         (*fxtractxf3_i387): Rename from *fxtractxf3.
9554         (fxtract_extend<mode>xf3_i387): New insn pattern.
9555         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
9556         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
9557         and gen_fyl2xxf3_i387().
9558
9559 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
9560
9561         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
9562         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
9563         get_loop_exit_edges.  Changed return type to bool.
9564         * cfgloop.h (fix_loop_placement): Declaration removed.
9565
9566 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
9567
9568         * param.h (MIN_VECT_LOOP_BOUND): New.
9569         * params.def (MIN_VECT_LOOP_BOUND): New.
9570         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
9571         argument - minimum threshold for number of iterations.
9572         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
9573         argument to declaration.
9574         * tree-vect-analyze.c (vect_analyze_operations): Check value of
9575         MIN_VECT_LOOP_BOUND.
9576         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
9577         slpeel_tree_peel_loop_to_edge with additional argument.
9578         (vect_do_peeling_for_alignment): Likewise.
9579         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
9580
9581 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
9582
9583         PR target/30413
9584         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
9585         operands of size 1.
9586
9587 2007-01-14  Jan Hubicka  <jh@suse.cz>
9588
9589         * tree-dfa.c (remove_referenced_var): New function.
9590         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
9591         prune referenced vars list too.
9592         * tree-flow.h (remove_referenced_var): Declare.
9593
9594 2007-01-14  Jan Hubicka  <jh@suse.cz>
9595
9596         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
9597         separately.
9598         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
9599         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
9600         * except.h (verify_eh_throw_table_statements): Kill prototype.
9601         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
9602         into call exrepssions.
9603         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
9604         eh trhow verifier.
9605         * tree-cfg.c: Include pointer-set.h.
9606         (verify_node_sharing): Work on pointer set.
9607         (verify_eh_throw_stmt_node): New.
9608         (verify_stmts): Use pointers sets, verify throw_stmt.
9609
9610 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
9611
9612         * ipa-reference.c (analyze_function): Consider also addresses taken
9613         in phi nodes.
9614
9615 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9616
9617         * c-typeck.c (null_pointer_constant_p): Replace use of
9618         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9619         (build_c_cast): Likewise.
9620
9621 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9622
9623         * tree.h (force_fit_type_double): Remove unused final argument.
9624         * c-common.c (constant_expression_warning): Replace use of
9625         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9626         (convert_and_check): Likewise.
9627         (shorten_compare): Update call to force_fit_type_double.
9628         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
9629         * convert.c (convert_to_pointer): Update call to
9630         force_fit_type_double.
9631         * fold-const.c (force_fit_type_double): Remove overflowed_const
9632         argument.
9633         (int_const_binop, fold_convert_const_int_from_int,
9634         fold_convert_const_int_from_real, fold_div_compare,
9635         fold_sign_changed_comparison, fold_unary, fold_negate_const,
9636         fold_abs_const, fold_not_const): Remove the final argument from
9637         calls to force_fit_type_double.
9638
9639 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9640
9641         * configure.ac: Set insn to "nop" for spu-*-* also.
9642         * configure: Regenerate.
9643
9644 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
9645
9646         * builtins.def : Add BUILT_IN_FREE.
9647
9648 2007-01-12  Jan Hubicka  <jh@suse.cz>
9649
9650         PR tree-optimization/30443
9651         * tree-inline.c (tree_function_versioning): Do not optimize when
9652         cloning for inlining.
9653
9654 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
9655
9656         * doc/loop.texi: Document recording of loop exits.
9657         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
9658         (update_single_exits_after_duplication,
9659         update_single_exit_for_duplicated_loop,
9660         update_single_exit_for_duplicated_loops): Removed.
9661         (duplicate_loop_to_header_edge): Do not call
9662         update_single_exits_after_duplication and
9663         update_single_exit_for_duplicated_loops.
9664         (loop_version): Do not update single_exit information.
9665         (fix_loop_structure): Use record_loop_exits instead of
9666         mark_single_exit_loops.
9667         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
9668         the lists of loop exits.
9669         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
9670         split_edge, merge_blocks): Update the lists of loop exits.
9671         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
9672         loop_optimizer_init.
9673         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
9674         of mark_single_exit_loops.
9675         (loop_optimizer_finalize): Call release_recorded_exits.
9676         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
9677         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
9678         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
9679         update single exit information.
9680         * lambda-code.c (perfect_nestify): Ditto.
9681         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
9682         (mark_single_exit_loops): Removed.
9683         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
9684         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
9685         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
9686         functions.
9687         (get_loop_exit_edges, single_exit): Use recorded exit lists.
9688         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
9689         (verify_loop_structure): Verify consistency of the exit lists.
9690         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
9691         (set_single_exit): Removed.
9692         * cfgloop.h (struct loop_exit): New function.
9693         (struct loop): single_exit_ field replaced by exits field.
9694         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
9695         (struct loops): Added exits hash.
9696         (mark_single_exit_loops, set_single_exit): Declaration removed.
9697         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
9698
9699 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9700
9701         * doc/invoke.texi: Avoid use of @headitem.
9702
9703 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9704
9705         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
9706
9707 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9708
9709         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
9710         list of targets.
9711
9712 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9713             Richard Sandiford  <richard@codesourcery.com>
9714
9715         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
9716         * config/m68k/m68k.opt: Resort options.
9717         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
9718
9719 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9720             Richard Sandiford  <richard@codesourcery.com>
9721
9722         * doc/invoke.texi: Document the macros that are defined by
9723         m68k's -mtune and -mhard-float options.
9724         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
9725         (m68k_cpp_cpu_family): Likewise.
9726         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
9727         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
9728         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
9729         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
9730         (m68k_cpp_cpu_family): Likewise.
9731
9732 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9733
9734         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
9735         macros besides mc68000 as tuning macros.  Use a switch statement
9736         to set them and mcpu32.
9737
9738 2007-01-12  Julian Brown  <julian@codesourcery.com>
9739
9740         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
9741         (TARGET_68040_ONLY): Rename to...
9742         (TARGET_68040): ...this.
9743         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
9744         * config/m68k/m68k.md: Likewise.
9745
9746 2007-01-12  Julian Brown  <julian@codesourcery.com>
9747             Nathan Sidwell  <nathan@codesourcery.com>
9748             Richard Sandiford  <richard@codesourcery.com>
9749
9750         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
9751         the -mcpu= argument associated with the --with-cpu setting.
9752         Define M68K_DEFAULT_TUNE to the default -mtune= option,
9753         if different from the one implied by the -mcpu setting.
9754         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
9755         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
9756         * doc/invoke.texi: Mention ColdFire in the introduction to the
9757         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
9758         -mno-div and -mhard-float options.  Make -m68881 a synonym for
9759         -mhard-float.  Document the previously-undocumented -m5206e,
9760         -m528x, -m5307 and -m5407 options.  Tweak the existing option
9761         documentation for consistency.
9762         * doc/install.texi: Mention new --with-cpu arguments.
9763         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
9764         default CPU if neither -mcpu nor -march are specified.
9765         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
9766         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
9767         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
9768         using m68k_tune to decide between families that implement the
9769         same ISA.  Use m68k_tune to set __mcfv4e__.
9770         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
9771         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
9772         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
9773         (FL_ISA_C, FL_ISA_MMU): New macros.
9774         (MASK_COLDFIRE): Delete.
9775         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
9776         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
9777         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
9778         (TARGET_HARD_FLOAT): Do not define here.
9779         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
9780         (TUNE_68000): New macro.
9781         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
9782         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
9783         (TUNE_CFV2): Redefine in terms of m68k_tune.
9784         (uarch_type, target_device, fpu_type): New enums.
9785         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
9786         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
9787         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
9788         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
9789         (FL_FOR_isa_c): New macros.
9790         (m68k_isa): New enum.
9791         (m68k_target_selection): New structure.
9792         (all_devices, all_isas, all_microarchs): New tables.
9793         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
9794         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
9795         (MASK_ALL_CPU_BITS): Delete.
9796         (m68k_find_selection): New function.
9797         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
9798         Map the legacy target options to a combination of the new ones.
9799         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
9800         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
9801         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
9802         settings.
9803         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
9804         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
9805         properties.
9806         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
9807         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
9808         * config/m68k/m68k-devices.def: New file.
9809
9810 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9811             Nathan Sidwell  <nathan@codesourcery.com>
9812
9813         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
9814         (SUBTARGET_EXTRA_SPECS): New macros.
9815         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
9816         use %(asm_cpu_spec) instead.
9817         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
9818         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
9819         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
9820         (EXTRA_SPECS): Rename to...
9821         (SUBTARGET_EXTRA_SPECS): ...this.
9822
9823 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9824             Richard Sandiford  <richard@codesourcery.com>
9825             Julian Brown  <julian@codesourcery.com>
9826
9827         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9828         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
9829         to the configuration's default CPU.
9830         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
9831         Remove default masks.
9832         (m680[012]0-*-*): Set the default with_cpu to the first part of
9833         the target name.
9834         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
9835         (m68k*-*-linux): Extend the --with-cpu handling to...
9836         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
9837         and m68010.  Don't set target_cpu_default2.
9838         * doc/install.texi: Document --with-cpu for m68k.
9839         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
9840         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
9841         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
9842         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
9843         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
9844         (ASM_SPEC): Remove use of %(asm_cpu_default).
9845         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
9846         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
9847         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
9848         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
9849         __HAVE_FPU__ if TARGET_HARD_FLOAT.
9850         (TARGET_DEFAULT): Delete.
9851         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
9852         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
9853         (CPP_CPU_SPEC): Delete.
9854         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
9855         the appropriate string.
9856         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
9857         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
9858         (ASM_SPEC): Don't use %(asm_default_spec).
9859         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
9860         TARGET_DEFAULT and add MASK_68881.
9861         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
9862
9863 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9864
9865         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
9866         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
9867         MASK_68010 alongside MASK_68020.
9868         * doc/invoke.texi: Document -m68010.
9869         * config/m68k/m68k.opt (m68010): New.
9870         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
9871         if TUNE_68010.
9872         (TUNE_68010): New macro.
9873         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
9874         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
9875         (M68K_CPU_m68332): Add MASK_68010.
9876         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
9877         fallback definition.
9878         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
9879         defines.
9880         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
9881         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
9882         to all entries that use MASK_68020.
9883         (output_move_simode_const, output_move_himode, output_move_qimode)
9884         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
9885         instead of TARGET_68020 to select clr behavior.  Remove comment
9886         about there being no TARGET_68010.
9887         * config/m68k/m68k.md: Likewise throughout.
9888
9889 2007-01-12  Julian Brown  <julian@codesourcery.com>
9890
9891         * config/m68k/m68k.h (TARGET_ISAB): New macro.
9892         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
9893         * config/m68k/m68k.md: Likewise.
9894
9895 2007-01-12  Julian Brown  <julian@codesourcery.com>
9896
9897         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
9898         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
9899
9900 2007-01-12  Julian Brown  <julian@codesourcery.com>
9901
9902         * config/m68k/m68k.h (TUNE_68040_60): New macro.
9903         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
9904         * config/m68k/m68k.md: Likewise.
9905
9906 2007-01-12  Julian Brown  <julian@codesourcery.com>
9907             Richard Sandiford  <richard@codesourcery.com>
9908
9909         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
9910         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
9911         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
9912         TARGET_CPU32.
9913         (TARGET_CPU32): Rename to...
9914         (TUNE_CPU32): ...this.
9915         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
9916         (TUNE_CFV2): New macros.
9917         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
9918         remove conditions that are implied by TARGET_68020.
9919         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
9920         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
9921         (m68k_output_function_epilogue): Likewise.
9922         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
9923         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
9924         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
9925         non-68000 timings.  Refactor multiplication and division costs.
9926         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
9927         TUNE_CPU32 instead of TARGET_CPU32.
9928         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
9929         and TUNE_68060 instead of TARGET_68060.
9930         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
9931         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
9932         TARGET_CPU32.
9933         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
9934         && !TARGET_COLDFIRE" to choose between moveq and clr.
9935         Likewise in the unnamed movsf pattern.
9936         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
9937         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
9938         ashiftrt pattern.
9939
9940 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9941
9942         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
9943         of tabbing before backslashes.
9944
9945 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9946
9947         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
9948         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
9949         (ASM_OUTPUT_INTERNAL_LABEL): Define.
9950
9951 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
9952
9953         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
9954         find_interesting_uses_cond.
9955         (find_interesting_uses_cond): Use extract_cond_operands.
9956         (rewrite_use_compare): Use extract_cond_operands and
9957         force_gimple_operand_bsi.  Do not call update_stmt.
9958         (determine_use_iv_cost_condition): Use extract_cond_operands.
9959         Return cheaper of using original bound and changing the exit bound.
9960
9961 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
9962
9963         PR tree-optimization/29516
9964         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
9965         most_expensive_mult_to_index, addr_to_parts,
9966         create_mem_ref, maybe_fold_tmr): Make the type of
9967         fields of TARGET_MEM_REF sizetype.
9968         (move_fixed_address_to_symbol, move_pointer_to_base):
9969         New functions.
9970         * tree.def (TARGET_MEM_REF): Add comment on types of
9971         the operands.
9972
9973 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
9974
9975         * c-common.c (vector_types_convertible_p): Treat opaque types as
9976         always convertible if they have the same size, but not otherwise.
9977
9978 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
9979
9980         * ifcvt.c (struct noce_if_info): Add comments to the fields.
9981         Remove the b_unconditional field.
9982         (noce_try_sign_mask): Do not look at b_unconditional.
9983         (noce_process_if_block): Do not use merge_if_blocks.  Update
9984         the CFG here.  Do not set b_unconditional.
9985         (cond_move_process_if_block): Likewise.
9986         (find_cond_trap): Likewise.
9987         (check_cond_move_block): Require simple jump insns at the end
9988         of the basic block.
9989
9990 2007-01-11  Jan Hubicka  <jh@suse.cz>
9991
9992         PR tree-optimization/1046
9993         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
9994         when alias info is not ready.
9995         (pass_tail_recursion): Do not require aliasing.
9996         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
9997         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
9998         * tree-ssa-copy.c (pass_copy_prop): Likewise.
9999         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
10000         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
10001         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
10002         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
10003         before inlining.
10004         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
10005         When aliasing is not build, mark statement as volatile.
10006
10007 2007-01-11  Tom Tromey  <tromey@redhat.com>
10008
10009         PR preprocessor/15185, PR preprocessor/20989:
10010         * doc/cppopts.texi <-MT>: Update description of algorithm for
10011         computing default target.
10012         <-M, -MD>: Reword "basename" text.
10013
10014 2007-01-11  Roger Sayle  <roger@eyesopen.com>
10015
10016         * builtins.c (expand_builtin_pow, expand_builtin_powi,
10017         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
10018         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
10019         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
10020         fold_builtin_bswap, real_constp, fold_builtin_pow,
10021         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
10022         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
10023         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
10024         * convert.c (convert_to_pointer): Likewise.
10025         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
10026         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
10027         const_binop, fold_convert_const_int_from_int,
10028         fold_convert_const_int_from_real,
10029         fold_convert_const_real_from_real, sign_bit_p,
10030         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
10031         fold_sign_changed_comparison, fold_unary, fold_comparison,
10032         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
10033         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
10034         * print-tree.c (print_node_brief, print_node): Likewise.
10035         * stor-layout.c (place_field, layout_type): Likewise.
10036         * tree-chrec.c (keep_cast): Likewise.
10037         * tree.c (build_vector, build_real, build_real_from_int_cst,
10038         build_complex): Likewise.
10039
10040 2007-01-11  Roger Sayle  <roger@eyesopen.com>
10041
10042         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
10043         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
10044
10045 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
10046
10047         * configure.ac (strict1_warn): Rename to strict_warn.
10048         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
10049         cc_set_by_configure, quoted_cc_set_by_configure,
10050         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
10051         all_boot_languages, all_stagestuff): Remove.
10052         (target_list): Remove bootstrap targets.
10053         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
10054         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
10055         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
10056         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
10057         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
10058         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
10059         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
10060         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
10061         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
10062         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
10063         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
10064         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
10065         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
10066         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
10067         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
10068         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
10069         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
10070         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
10071         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
10072         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
10073         (mostlyclean): Adjust.
10074         (clean, distclean): Don't mention bootstrap stuff.
10075         * configure: Regenerate.
10076         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
10077         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
10078         treelang/config-lang.in (stagestuff): Remove.
10079         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
10080         stageprofile, stagefeedback, stagestuff): Remove mention.
10081
10082 2007-01-11  Nick Clifton  <nickc@redhat.com>
10083
10084         * config/mcore/predicates.md (mcore_general_movesrc_operand):
10085         Accept CONSTs.
10086         (mcore_general_movdst_operand): Do not accept CONST_INTs.
10087         (mcore_arith_K_S_operand): Run the test for the S constraint not
10088         the test for the M constraint.
10089         (mcore_addsub_operand): Do not accept integer values that are
10090         larger than 32 bits.
10091         * config/mcore/mcore.md: Remove unused constraints from split.
10092         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
10093         (addsi3): Likewise.
10094         (allocate_stack): Likewise.
10095         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
10096         operands to 32 bits.
10097         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
10098         INTVAL.
10099         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
10100         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
10101         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
10102         mcore_output_bclri, mcore_output_andn, output_inline_const,
10103         mcore_output_move, mcore_output_movedouble): Likewise.
10104         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
10105         (output_inline_const): Likewise.
10106         (output_inline_const): Fix format strings used in sprintf
10107         statements.
10108         * config/mcore/mcore-protos.h: Update prototypes for changed
10109         functions in mcore.c.
10110         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
10111         HOST_WIDE_INT and not int.
10112         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
10113         CONST_OK_FOR_N): Likewise.
10114         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
10115         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
10116         an INTVAL.
10117
10118 2007-01-10  Jan Hubicka  <jh@suse.cz>
10119
10120         * tree-vrp.c (remove_range_assertions): Release defs.
10121         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
10122         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
10123
10124 2007-01-10  Paul Brook  <paul@codesourcery.com>
10125
10126         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
10127         * config/arm/arm.md (mulsi3subsi): New insn.
10128
10129 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
10130
10131         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
10132         (tree_transform_and_unroll_loop): New.
10133         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
10134         Declare.
10135
10136 2007-01-10  Robert Kennedy <jimbob@google.com>
10137
10138         * fold-const.c (fold_comparison): Fold comparisons like (x *
10139         1000 < 0) to (x < 0).
10140
10141 2007-01-10  Ian Lance Taylor  <iant@google.com>
10142
10143         * tree-pretty-print.c (dump_generic_node): Print parentheses when
10144         operands have the same priority.
10145
10146 2007-01-10  Tom Tromey  <tromey@redhat.com>
10147
10148         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
10149         (fold_binary): Likewise.
10150         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
10151         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
10152         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
10153         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
10154         * langhooks.h (struct lang_hooks): Removed field
10155         'can_use_bit_fields_p'.
10156
10157 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
10158
10159         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
10160
10161 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
10162
10163         * function.c (get_last_funcdef_no): New function.
10164         * function.h (get_last_funcdef_no): Declare.
10165         * tree-inline.c (initialize_cfun): Add initialization.
10166         (tree_function_versioning): Cleanup.
10167
10168 2007-01-10  Jan Hubicka  <jh@suse.cz>
10169
10170         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
10171         PHIs.
10172
10173 2007-01-10  Sa Liu  <saliu@de.ibm.com>
10174             Ben Elliston  <bje@au.ibm.com>
10175
10176         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
10177         for SAVE_NONLOCAL and Pmode for any other save level.
10178         * spu-protos.h (spu_restore_stack_block): Declare.
10179         * spu.md (save_stack_block): Remove.
10180         (restore_stack_block): Call spu_restore_stack_block.
10181         * spu.c (spu_restore_stack_block): New function.
10182         (spu_expand_epilogue): Remove old comment.
10183
10184 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
10185
10186         PR tree-optimization/30322
10187         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
10188         (cand_value_at): Return the value as aff_tree.
10189         (may_eliminate_iv): Convert the bound from aff_tree to tree.
10190         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
10191         aff_combination_mult): New functions.
10192         (aff_combination_add): Use aff_combination_add_cst.
10193         (aff_combination_convert): Allow conversions to a wider type.
10194         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
10195         * tree-affine.h (aff_combination_mult): Declare.
10196
10197 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
10198
10199         * doc/tm.texi: Update documentation to reflect reality of exec
10200         and start file search behaviours. Update copyright year.
10201         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
10202         header file directories.
10203
10204 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
10205
10206         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
10207         (*cosxf2): Rename to cosxf2_i387.
10208         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
10209         using X87MODEF12 mode macro. Rename patterns to
10210         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
10211         for SSE math.
10212         (*cosdf2, *cossf2): Ditto.
10213         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
10214         to match extended input operands.
10215         (sincos<mode>3): New expander.
10216         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
10217         insn patterns and corresponding splitters.
10218
10219 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
10220
10221         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
10222         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
10223
10224 2007-01-09  Nicolas Pitre  <nico@cam.org>
10225
10226         PR target/30173
10227         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
10228
10229 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
10230
10231         * target.h (struct gcc_target): New field library_rtti_comdat.
10232         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
10233         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
10234         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
10235         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
10236
10237 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
10238
10239         * doc/invoke.texi (Optimize Options): Correct description of -O0.
10240
10241 2007-01-08  Richard Guenther  <rguenther@suse.de>
10242
10243         * tree.h (force_fit_type_double): Export.
10244         (force_fit_type): Remove.
10245         * fold-const.c (force_fit_type_double): New function.
10246         (force_fit_type): Remove.
10247         (int_const_binop): Use it.
10248         (fold_convert_const_int_from_int): Likewise.
10249         (fold_convert_const_int_from_real): Likewise.
10250         (fold_div_compare): Likewise.
10251         (fold_sign_changed_comparison): Likewise.
10252         (fold_unary): Likewise.
10253         (fold_negate_const): Likewise.
10254         (fold_abs_const): Likewise.
10255         (fold_not_const): Likewise.
10256         * c-common.c (shorten_compare): Use force_fit_type_double.
10257         * convert.c (convert_to_pointer): Likewise.
10258
10259 2007-01-08  Richard Guenther  <rguenther@suse.de>
10260
10261         * tree.h (build_int_cst_wide_type): Export.
10262         * tree.c (build_int_cst_wide_type): New function.
10263         (build_int_cst_wide): Fix comment.
10264         * builtins.c (fold_builtin_object_size): Use build_int_cst
10265         to build -1 or 0 of the correct type.  Use fit_double_type
10266         to check for overflow.
10267         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
10268         to build the mask.
10269         (decode_field_reference): Likewise.
10270         (all_ones_mask_p): Likewise.
10271         (native_interpret_int): Use build_int_cst_wide_type.
10272         (fold_binary): Use build_int_cst_type to build an all-ones
10273         value.
10274         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
10275
10276 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
10277
10278         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
10279
10280 2007-01-09  Ben Elliston  <bje@au.ibm.com>
10281
10282         * genautomata.c (STATS_OPTION): New option.
10283         (stats_flag): New flag.
10284         (gen_automata_option): Handle it.
10285         (initiate_automaton_gen): Ditto.
10286         (write_automata): Output statistics only if stats_flag is
10287         set. Likewise, output time statistics only if time_flag is set.
10288         * doc/md.texi (Processor pipeline description): Document new flag.
10289
10290 2007-01-08  Richard Guenther  <rguenther@suse.de>
10291
10292         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
10293         * tree.c (build_int_cst_type): Likewise.
10294         (size_in_bytes): Don't call force_fit_type on the result.
10295         (int_fits_type_p): Use fit_double_type.
10296         * fold-const.c (fit_double_type): New function.
10297         (force_fit_type): Use it.
10298         * tree.h (fit_double_type): Export.
10299
10300 2007-01-08  Jan Hubicka  <jh@suse.cz>
10301
10302         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
10303         * ipa.c (function_and_variable_visibility): Fix return type.
10304
10305 2007-01-08  Richard Guenther  <rguenther@suse.de>
10306
10307         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
10308         of offset to build the index.
10309         * tree-pretty-print.c (dump_generic_node): Don't build negated
10310         const just for printing.
10311         * c-pretty-print.c (pp_c_integer_constant): Likewise.
10312         * builtins.c (fold_builtin_int_roundingfn): Check if result
10313         fits the type by using force_fit_type and comparing the result.
10314         * predict.c (predict_loops): Use compare_tree_int for comparison.
10315         * tree.c (build_int_cst): Fall back to integer_type_node for
10316         NULL_TREE type.
10317         (build_int_cst_wide): Assert type is non-null.
10318
10319 2007-01-08  Roberto Costa  <roberto.costa@st.com>
10320
10321         * tree-vrp.c (extract_range_from_cond_expr): New.
10322         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
10323         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
10324         as expressions.
10325         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
10326         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
10327         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
10328         used as expressions.
10329         * tree-object-size.c (cond_expr_object_size): New.
10330         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
10331
10332 2007-01-08  Jan Hubicka  <jh@suse.cz>
10333
10334         * tree-ssa-forwprop.c (forward_propagate_into_cond,
10335         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
10336         statement.
10337
10338 2007-01-08  Richard Guenther  <rguenther@suse.de>
10339
10340         PR tree-optimization/23603
10341         * tree-vrp.c (set_value_range_to_truthvalue): New function.
10342         (extract_range_from_binary): Fall back to truthvalue instead of
10343         varying for TRUTH_*_EXPR.
10344         (extract_range_from_comparison): Fall back to truthvalue instead of
10345         varying.
10346         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
10347         if all visited PHI values were constant.
10348
10349 2007-01-08  Jan Hubicka  <jh@suse.cz>
10350
10351         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
10352         (cgraph_analyze_function): break out from ...
10353         (cgraph_finalize_compilation_unit): ... here.
10354         (cgraph_expand_function): Remove forgoten commented out line.
10355         (cgraph_optimize): Analyze functions.
10356
10357 2007-01-08  Jan Hubicka  <jh@suse.cz>
10358
10359         * tree-pas.h (TODO_remove_function): New flag.
10360         (TODO_update*): Renumber.
10361         (pass_ipa_increase_alignment,
10362         pass_ipa_function_and_variable_visibility): New passes.
10363         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
10364         (cgraph_function_and_variable_visibility): Move to ipa.c
10365         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
10366         cgraph_increase_alignment.
10367         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
10368         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
10369         calling tree-inline.
10370         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
10371         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
10372         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
10373         (gate_increase_alignment): New function.
10374         (pass_ipa_increase_alignment): New pass.
10375         * ipa.c: Inline tree-pass.h and timevar.h
10376         (function_and_variable_visibility): Move here from cgraphunit.c
10377         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
10378         * passes.c (init_optimization_passes): Add the two new passes.
10379         (execute_todo): Handle cgraph_remove_functions.
10380
10381 2007-01-08  Nick Clifton  <nickc@redhat.com>
10382
10383         * config/frv/predicates.md (reg_or_0_operand): Accept
10384         CONST_DOUBLEs.
10385
10386 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
10387
10388         * config/bfin/rtems.h, config/bfin/t-rtems: New.
10389         * config.gcc: Add bfin*-rtems*.
10390
10391 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10392
10393         * c.opt: Add -flax-vector-conversions.
10394         * c-typeck.c (convert_for_assignment): Pass flag to
10395         vector_types_convertible_p to allow emission of note.
10396         (digest_init): Likewise.
10397         * c-opts.c: Handle -flax-vector-conversions.
10398         * c-common.c (flag_lax_vector_conversions): New.
10399         (vector_types_convertible_p): Unless -flax-vector conversions
10400         has been passed, disallow conversions between vectors with
10401         differing numbers of subparts and/or element types.  If such
10402         a conversion is disallowed, possibly emit a note on the first
10403         occasion only to inform the user of -flax-vector-conversions.
10404         The new last argument specifies this.
10405         * c-common.h (flag_lax_vector_conversions): New.
10406         (vector_types_convertible_p): Add extra argument.
10407         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
10408         char_type_node for V*QI type vectors.
10409         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
10410         Update to satisfy new typechecking rules.
10411         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
10412         C and C++ variants.
10413         * doc/invoke.texi (C Dialect Options): Document
10414         -flax-vector-conversions.
10415
10416 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10417
10418         PR tree-optimization/29877
10419         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
10420         a register variable on the RHS to not be replaceable.
10421
10422 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
10423         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
10424         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
10425         const_simm15, const_pow2, const_npow2): Added.
10426         * config/score/misc.md (insv, extv, extzv, movmemsi,
10427         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
10428         * config/score/score.c (score_address_cost, score_select_cc_mode):
10429         Added.
10430         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
10431         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
10432         Update score_print_operand.
10433         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
10434         Adjust register allocate order and update some macro define.
10435         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
10436         mdx_block_move_straight, mdx_block_move_loop_head,
10437         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
10438         mdx_block_move): Added.
10439         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
10440         mdp_limm): Updated and fix some bug and typo.
10441         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
10442         (movsf, movdf, doloop_end): Added.
10443
10444 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
10445
10446         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
10447         config/arm/thumb2.md: Fix comment typos.
10448         * doc/extend.texi: Fix a typo.
10449
10450 2007-01-07  Eric Christopher  <echristo@apple.com>
10451
10452         * configure.ac: Check for __stack_chk_fail for darwin.
10453         * configure: Regenerate.
10454
10455 2007-01-07  Richard Guenther  <rguenther@suse.de>
10456
10457         * tree-vrp.c (extract_range_from_assert): CSE calls to
10458         compare_values where possible.
10459         (extract_range_from_unary_expr): Likewise.
10460
10461 2007-01-07  Anatoly Sokolov <aesok@post.ru>
10462
10463         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
10464         * config/avr/avr.c (call_insn_operand): Delete function.
10465         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
10466         instead of register number. Use predicates.
10467         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
10468         call_insn_operand): Add.
10469
10470 2007-01-06  Jan Hubicka  <jh@suse.cz>
10471
10472         * tree-pass.h (pass_build_cgraph_edges): Declare.
10473         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
10474         (visited_nodes): Remove.
10475         (cgraph_create_edges): Move to cgraphbuild.c; rename to
10476         build_cgrpah_edges; make visited_nodes local.
10477         (cgraph_process_new_functions): DO not call initialize_inline_failed.
10478         (record_references_in_initializer): Move to cgraphbuild.c
10479         (initialize_inline_failed, rebuild_cgraph_edges,
10480         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
10481         (verify_cgraph_node): Make visited_nodes local.
10482         (cgraph_analyze_function): Do not call cgraph_create_edges and
10483         initialize_inline_failed.
10484         (cgraph_expand_function): Do not call cgraph_lower_function;
10485         assert that function is already lowered.
10486         * Makefile.in (cgraphbuild.o): New.
10487         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
10488         at the end of lowering passes.
10489
10490 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
10491
10492         * ifcvt.c (cond_move_convert_if_block): New function, code
10493         factored out from...
10494         (cond_move_process_if_block): ...here.  Call the new function
10495         on the THEN and ELSE blocks.
10496         (merge_if_block): Do not copy global_live_at_end, merge_blocks
10497         already takes care of this.
10498
10499 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10500
10501         PR c/19978
10502         * tree.h (TREE_OVERFLOW_P): New.
10503         * c-typeck.c (parser_build_unary_op): Warn only if result
10504         overflowed and operands did not.
10505         (parser_build_binary_op): Likewise.
10506         (convert_for_assignment): Remove redundant overflow_warning.
10507         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
10508
10509 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10510
10511         * c-typeck.c (store_init_value): Split over two lines to follow
10512         the GNU coding style.
10513
10514 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
10515
10516         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
10517         __GXX_EXPERIMENTAL_CXX0X__.
10518         * doc/cpp.texi: Same.
10519
10520 2007-01-05  Richard Guenther  <rguenther@suse.de>
10521
10522         PR middle-end/27826
10523         * tree.c (get_narrower): Do not construct COMPONENT_REFs
10524         with mismatched types.  Instead explicitly build a
10525         conversion NOP_EXPR.
10526
10527 2007-01-05  Ian Lance Taylor  <iant@google.com>
10528
10529         * c-common.c (decl_with_nonnull_addr_p): New function.
10530         (c_common_truthvalue_conversion): Call it.
10531         * c-typeck.c (build_binary_op): Likewise.
10532         * c-common.h (decl_with_nonnull_addr_p): Declare.
10533
10534 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
10535
10536         PR c/30360
10537         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
10538         denom against 0.0.
10539
10540 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
10541
10542         * doc/install.texi (Final install): Document the fact that
10543         the GNAT runtime should not be stripped.
10544
10545 2007-01-04  Jan Hubicka  <jh@suse.cz>
10546
10547         * tree-inline.c (fold_marked_statements): Update operand caches
10548         and EH after folding
10549
10550 2007-01-04  Ian Lance Taylor  <iant@google.com>
10551
10552         * c-common.c (check_function_nonnull): Whitespace fix.
10553
10554 2007-01-04  Jan Hubicka  <jh@suse.cz>
10555
10556         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
10557         comitted older version of patch.
10558         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
10559         function, celanup cfg and collect garbage.
10560
10561 2007-01-04  Mike Stump  <mrs@apple.com>
10562
10563         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
10564         (clean): Likewise.
10565
10566 2007-01-04  Eric Christopher  <echristo@apple.com>
10567
10568         * libgcc2.c (__bswapsi2): Use SItype.
10569         (__bswapdi2): Use DItype.
10570         * libgcc2.h: Update for above.
10571
10572 2007-01-04  Paul Brook  <paul@codesourcery.com>
10573
10574         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
10575         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
10576         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
10577         umulsidi3, umulsidi3adddi, smulsi3_highpart,
10578         umulsi3_highpart): Make conditional on !arm_arch6.
10579         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
10580         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
10581         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
10582         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
10583         umulsi3_highpart_v6): New insns.
10584
10585 2007-01-04  Roger Sayle  <roger@eyesopen.com>
10586
10587         * fold-const.c (fold_convert): When casting an expression to void,
10588         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
10589         have a type.  Instead of attempting to build a NOP_EXPR, return
10590         these "special" trees directly.
10591
10592 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
10593
10594         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
10595         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
10596         rs6000_cost->fp not 0 as adjustment for outer NEG.
10597
10598 2007-01-04  Jan Hubicka  <jh@suse.cz>
10599
10600         * cgraph.c (cgraph_release_function_body): New function.
10601         (cgraph_remove_node): Use it.
10602         * cgraph.h (cgraph_release_function_body): Declare.
10603         * cgraphunit.c (cgraph_expand_function): Use it.
10604         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
10605         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
10606         is initialized and while compilation of other function is running.
10607         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
10608         statement CFG annotations from here to ...
10609         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
10610
10611 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
10612
10613         * cfgloop.h (enum li_flags): Make the constants powers of two.
10614
10615 2007-01-04  Jan Hubicka  <jh@suse.cz>
10616
10617         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
10618         set.
10619         (fold_marked_statements): New function.
10620         (optimize_inline_calls, tree_function_versioning): Fold new statements.
10621         * tree-inline.h (copy_body_data): Add statements_to_fold.
10622
10623 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
10624
10625         * config.gcc: Mention libgcc/config.host.
10626         * Makefile.in: Update comments mentioning libgcc.
10627         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
10628         (all.cross, start.encap, rest.encap, rest.cross): Update
10629         dependencies for libgcc move.
10630         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
10631         (clean-target, clean-target-libgcc): Delete.
10632         (srcdirify, GCC_EXTRA_PARTS): New macros.
10633         (libgcc-support, libgcc.mvars): New rules.
10634         (distclean): Remove mention of mklibgcc.
10635         (install): Don't reference INSTALL_LIBGCC.
10636         (install-common): Don't reference EXTRA_PARTS.
10637         (install-libgcc, install-multilib): Delete rules.
10638         * mklibgcc.in: Delete file.
10639         * doc/configfiles.texi: Don't mention mklibgcc.
10640
10641         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
10642         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
10643         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
10644         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
10645         (mklibgcc, ldblspecs): Likewise.
10646
10647         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
10648         (posixpre.def): Use $(T).
10649         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
10650         (SHLIB_SRC, SHLIB_INSTALL): Delete.
10651         (SHLIB_LINK): Make dummy.
10652         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
10653
10654         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
10655
10656         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
10657         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
10658         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
10659         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
10660
10661         * configure.ac (all_outputs): Remove mklibgcc.
10662         * configure: Regenerated.
10663
10664 2007-01-03  Josh Conner  <jconner@apple.com>
10665
10666         PR middle-end/29683
10667         * calls.c (compute_argument_addresses): Set stack and stack_slot
10668         for partial args, too.
10669         (store_one_arg): Use locate.size.constant for the size when
10670         generating a save_area.
10671
10672 2007-01-03  Robert Kennedy <jimbob@google.com>
10673
10674         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
10675         whose definitions are deleted due to basic block merging.
10676
10677 2007-01-03  Paul Brook  <paul@codesourcery.com>
10678
10679         PR target/16634
10680         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
10681         functions.
10682         (use_return_insn): Return 0 for Thumb interrupt functions.
10683         (print_multi_reg): Add rfe argument for IRQ returns.
10684         (arm_output_epilogue): Pop interrupt return address directly into PC.
10685         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
10686
10687 2007-01-03  Paul Brook  <paul@codesourcery.com>
10688
10689         Merge from sourcerygxx-4_1.
10690         * config/arm/thumb2.md: New file.
10691         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
10692         Thumb-2.
10693         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
10694         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
10695         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
10696         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
10697         tables.
10698         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
10699         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
10700         comptibility.
10701         * config/arm/ieee754-sf.S: Ditto.
10702         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
10703         (thumb1_base_register_rtx_p): ... to this.
10704         (thumb_index_register_rtx_p): Rename...
10705         (thumb1_index_register_rtx_p): ... to this.
10706         (thumb_output_function_prologue): Rename...
10707         (thumb1_output_function_prologue): ... to this.
10708         (thumb_legitimate_address_p): Rename...
10709         (thumb1_legitimate_address_p): ... to this.
10710         (thumb_rtx_costs): Rename...
10711         (thumb1_rtx_costs): ... to this.
10712         (thumb_compute_save_reg_mask): Rename...
10713         (thumb1_compute_save_reg_mask): ... to this.
10714         (thumb_final_prescan_insn): Rename...
10715         (thumb1_final_prescan_insn): ... to this.
10716         (thumb_expand_epilogue): Rename...
10717         (thumb1_expand_epilogue): ... to this.
10718         (arm_unwind_emit_stm): Rename...
10719         (arm_unwind_emit_sequence): ... to this.
10720         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
10721         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
10722         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
10723         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
10724         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
10725         thumb2_output_casesi): New functions.
10726         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
10727         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
10728         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
10729         THUMB2_WORK_REGS): Define.
10730         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
10731         arm_condexec_mask, arm_condexec_masklen)): New variables.
10732         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
10733         (arm_override_options): Check new CPU capabilities.
10734         Set new architecture flag variables.
10735         (arm_isr_value): Handle v7m interrupt functions.
10736         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
10737         Thumb-2.
10738         (const_ok_for_arm): Handle Thumb-2 constants.
10739         (arm_gen_constant): Ditto.  Use movw when available.
10740         (arm_function_ok_for_sibcall): Return false for v7m interrupt
10741         functions.
10742         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
10743         (thumb_find_work_register, arm_load_pic_register,
10744         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
10745         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
10746         print_multi_reg, output_mov_long_double_fpa_from_arm,
10747         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
10748         output_mov_double_fpa_from_arm, output_move_double,
10749         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
10750         output_return_instruction, arm_output_function_prologue,
10751         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
10752         arm_output_mi_thunk, thumb_set_return_address): Ditto.
10753         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
10754         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
10755         (arithmetic_instr, shift_op): Use arm_shift_nmem.
10756         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
10757         '!' and 'L'.
10758         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
10759         (thumb_expand_prologue): Use thumb_set_frame_pointer.
10760         (arm_file_start): Output directive for unified syntax.
10761         (arm_unwind_emit_set): Handle stack alignment instruction.
10762         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
10763         Add v6t2, v7, v7a, v7r and v7m.
10764         (RETLDM): Add Thumb-2 code.
10765         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
10766         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
10767         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
10768         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
10769         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
10770         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
10771         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
10772         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
10773         ADJUST_INSN_LENGTH): Define.
10774         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
10775         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
10776         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
10777         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
10778         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
10779         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
10780         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
10781         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
10782         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
10783         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
10784         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
10785         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
10786         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
10787         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
10788         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
10789         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
10790         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
10791         cortex-m3.
10792         * config/arm/arm-tune.md: Regenerate.
10793         * config/arm/arm-protos.h: Update prototypes.
10794         * config/arm/vfp.md: Enable patterns for Thumb-2.
10795         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
10796         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
10797         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
10798         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
10799         * config/arm/libunwind.S: Add Thumb-2 code.
10800         * config/arm/constraints.md: Update include Thumb-2.
10801         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
10802         * config/arm/ieee754-df.S: Ditto.
10803         * config/arm/bpabi.S: Ditto.
10804         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
10805         * config/arm/predicates.md (low_register_operand,
10806         low_reg_or_int_operand, thumb_16bit_operator): New.
10807         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
10808         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
10809         * config/arm/t-arm-elf: Add armv7 multilib.
10810         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
10811         Include thumb2.md.
10812         (UNSPEC_STACK_ALIGN, ce_count): New.
10813         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
10814         arm_zero_extendsidi2, arm_zero_extendqidi2): New
10815         insns/expanders.
10816         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
10817         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
10818         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
10819         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
10820         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
10821         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
10822         insns.
10823         * doc/extend.texi: Document ARMv7-M interrupt functions.
10824         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
10825
10826 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
10827
10828         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
10829         (struct _Unwind_Context): Rename args_size to flags, remove
10830         signal_frame field, add a new args_size field and version field.
10831         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
10832         _Unwind_IsExtendedContext): New inline functions.
10833         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
10834         Assume by_value array is only present if _Unwind_IsExtendedContext.
10835         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
10836         _Unwind_IsSignalFrame.
10837         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
10838         (uw_update_context_1): Use _Unwind_SetSignalFrame.
10839         (uw_init_context_1): Initialize context->flags to
10840         EXTENDED_CONTEXT_BIT.
10841         * config/rs6000/linux-unwind.h (frob_update_context): Use
10842         _Unwind_SetSignalFrame.
10843
10844 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10845
10846         PR middle-end/30353
10847         * gimplify.c (gimplify_modify_expr_complex_part): Move below
10848         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
10849         the value.
10850
10851 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
10852
10853         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
10854         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
10855         RET, AT_SP): Remove.
10856         * config/i386/i386.md (*sse_prologue_save_insn): Use return
10857         instead of RET.
10858
10859         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10860         * cfgbuild.c (find_basic_blocks): Likewise.
10861         * cfgrtl.c (rtl_create_basic_block): Likewise.
10862         * function.c (temp_slots_at_level): Likewise.
10863         * reg-stack.c (stack_regs_mentioned): Likewise.
10864         * regclass.c (allocate_reg_info): Likewise.
10865         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10866         set_bb_for_stmt, move_block_to_fn): Likewise.
10867         * tree-complex.c (tree_lower_complex): Likewise.
10868         * vec.h (VEC_safe_grow_cleared): New.
10869
10870         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
10871
10872 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
10873
10874         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
10875         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
10876         to loop_version.
10877         * cfgloopmanip.c (scale_loop_frequencies): Export.
10878         (loopify): Scale the frequencies by prescribed coefficients.
10879         (set_zero_probability): New function.
10880         (duplicate_loop_to_header_edge): Improve updating of frequencies.
10881         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
10882         and frequencies according to arguments.
10883         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
10884         correctly.
10885         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
10886         * modulo-sched.c (sms_schedule): Set probabilities for entering
10887         versioned loop correctly.
10888         * tree-vect-transform.c (vect_transform_loop): Ditto.
10889         * cfgloop.h (loopify, loop_version): Declaration changed.
10890         (scale_loop_frequencies): Declared.
10891
10892 2007-01-02  Jan Hubicka  <jh@suse.cz>
10893
10894         * cgraph.c: Include tree-flow.h
10895         (cgraph_add_new-function): Handle IPA_SSA mode; execute
10896         early_local_passes.
10897         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
10898         * tree-pass.h (pass_all_early_optimizations): Declare.
10899         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
10900         early_local_passes.
10901         (cgraph_analyze_function): Do early_local_passes.
10902         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
10903         Do not add referenced vars.
10904         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
10905         SSA form.
10906         (gate_all_early_local_passes): New gate.
10907         (pass_early_local_passes): Use new gate.
10908         (execute_early_local_optimizations): New functions.
10909         (gate_all_early_optimizations): New gate.
10910         (pass_all_early_optimizations): New pass.
10911         (execute_free_datastructures): Free SSA only when initialized.
10912         (gate_init_datastructures): Init only when optimizing.
10913         (tree_lowering_passes): Do early local passes when called late.
10914         * tree-profile.c (do_tree_profiling): Don't profile functions added
10915         late.
10916         (do_early_tree_profiling, pass_early_tree_profile): Kill.
10917         * tree-cfg.c (update_modified_stmts): Do not update when operands are
10918         not active.
10919         * passes.c (init_optimizations_passes): Reorder so we go into SSA
10920         during early_local_passes.
10921         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
10922
10923
10924 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
10925
10926         * Makefile.in: Update copyright year.
10927
10928 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
10929
10930         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
10931         in $(lang_checks) and check-consistency targets.
10932
10933 2007-01-02  Jan Hubicka  <jh@suse.cz>
10934
10935         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
10936         Do not add referenced vars.
10937         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
10938         are not active.
10939         * passes.c (init_optimization_passes): Put mudflap_2 after
10940         free_datastructures.
10941
10942 2007-01-02  Jan Hubicka  <jh@suse.cz>
10943
10944         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
10945         Set NOTHROW flag on call statements proved to be nothrow.
10946         Update statement of local calls so new pure/const functions are
10947         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
10948         goto receivers.
10949         (tree_rest_of_compilation): Register hooks and initialize bitmap
10950         early. Do not set after_inlining flag.
10951
10952 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
10953
10954         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
10955         HOST_BITS_PER_LONGLONG
10956
10957 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
10958
10959         PR c/19977
10960         * c-typeck.c (store_init_value): Don't emit pedantic overflow
10961         warning for non-static initializers.
10962
10963 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
10964
10965         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
10966         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
10967         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
10968         Always use set_unique_reg_note to add REG_EQUAL notes.
10969
10970 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
10971
10972         Revert:
10973         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
10974
10975         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10976         * cfgbuild.c (find_basic_blocks): Likewise.
10977         * cfgrtl.c (rtl_create_basic_block): Likewise.
10978         * function.c (temp_slots_at_level): Likewise.
10979         * reg-stack.c (stack_regs_mentioned): Likewise.
10980         * regclass.c (allocate_reg_info): Likewise.
10981         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10982         set_bb_for_stmt, move_block_to_fn): Likewise.
10983         * tree-complex.c (tree_lower_complex): Likewise.
10984         * vec.h (VEC_safe_grow_cleared): New.
10985
10986 2007-01-02  Ian Lance Taylor  <iant@google.com>
10987
10988         * c-common.c (c_common_truthvalue_conversion): When warning about
10989         using an assignment as a truth value, set TREE_NO_WARNING.
10990
10991 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10992
10993         PR middle-end/7651
10994         * c.opt (Wold-style-declaration): New.
10995         * doc/invoke.texi (C-only Warning Options): New.
10996         (Wold-style-declaration): Document it.
10997         (Wextra): Enabled by -Wextra.
10998         * c-opts.c (c_common_post_options): Enabled by -Wextra.
10999         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
11000         -Wold-style-declaration.
11001
11002 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
11003
11004         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
11005         * cfgbuild.c (find_basic_blocks): Likewise.
11006         * cfgrtl.c (rtl_create_basic_block): Likewise.
11007         * function.c (temp_slots_at_level): Likewise.
11008         * reg-stack.c (stack_regs_mentioned): Likewise.
11009         * regclass.c (allocate_reg_info): Likewise.
11010         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
11011         set_bb_for_stmt, move_block_to_fn): Likewise.
11012         * tree-complex.c (tree_lower_complex): Likewise.
11013         * vec.h (VEC_safe_grow_cleared): New.
11014
11015 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
11016
11017         * c-common.c (c_common_nodes_and_builtins): Since variants of
11018         void_type_node get built before it is given a name, we need to
11019         give those variants the name, too.
11020         (complete_array_type): We need to work with the canonical main
11021         type of the array, from which we will build the qualified version.
11022         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
11023         * print-tree.c (print_node): Display canonical type information
11024         for each type.
11025         * stor-layout.c (layout_type): When we don't know the
11026         alignment of a type for which we're building an array, we end up
11027         guessing wrong, so make the type require structural equality.
11028         * tree.c (make_node_stat): When we build a new type, it is its
11029         own canonical type.
11030         (build_type_attribute_qual_variant): When building an attribute
11031         variant, its canonical type is the non-attribute variant. However,
11032         if the attributes are target-dependent and they differ, we need to
11033         use structural equality checks for this type.
11034         (build_qualified_type): A qualified type is not equivalent to its
11035         unqualified variant; set the canonical type appropriately.
11036         (build_distinct_type_copy): When building a distinct type from
11037         another type, the new type is its own canonical type.
11038         (build_variant_type_copy): When building a new type variant, we
11039         assume that it is equivalent to the original type.
11040         (build_pointer_type_for_mode): When building a pointer type, also
11041         build a canonical type pointer.
11042         (build_reference_type_for_mode): When building a reference type,
11043         also build a canonical type reference.
11044         (build_index_type): When we can't hash an index type (e.g.,
11045         because its maximum value is negative), the index type requires
11046         structural equality tests.
11047         (build_array_type): Build the canonical form of an array type.
11048         (build_function_type): Function types require structural equality,
11049         because they contain default arguments, attributes, etc.
11050         (build_method_type_directly): Ditto for method types.
11051         (build_offset_type): Build the canonical offset type.
11052         (build_complex_type): Build the canonical vector type.
11053         (make_vector_type): Build the canonical vector type.
11054         * tree.h (TYPE_CANONICAL): New.
11055         (TYPE_STRUCTURAL_EQUALITY_P): New.
11056         (SET_TYPE_STRUCTURAL_EQUALITY): New.
11057         (struct tree_type): Added "canonical" field.
11058         * params.h (VERIFY_CANONICAL_TYPES): New.
11059         * doc/c-tree.texi (TYPE_CANONICAL): Document.
11060         (TYPE_STRUCTURAL_EQUALITY_P): Document.
11061         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
11062         * doc/invoke.texi (verify-canonical-types): Document --param
11063         parameter for verifying canonical types.
11064
11065 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11066
11067         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
11068         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
11069         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
11070         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
11071         tm_file.
11072         * config/rs6000/e500.h: New.
11073         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
11074         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
11075         Remove.
11076         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
11077         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
11078         TARGET_E500_DOUBLE): Remove.
11079         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
11080         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
11081         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
11082         * config/rs6000/rs6000.c (rs6000_override_options): Use
11083         CHECK_E500_OPTIONS.
11084
11085 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11086
11087         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
11088         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
11089         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
11090         rs6000_emit_cmove): Don't check TARGET_E500.
11091         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
11092         sordered): Don't check TARGET_E500.
11093
11094 2007-01-01  Eric Christopher  <echristo@apple.com>
11095
11096         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
11097         HARD_REGISTER_NUM_P.
11098
11099 2007-01-01  Roger Sayle  <roger@eyesopen.com>
11100
11101         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
11102         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
11103         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
11104         eq/ne Y".
11105
11106 2007-01-01  Mike Stump  <mrs@apple.com>
11107
11108         * configure.ac: Remove support for building with Apple's gcc-3.1.
11109
11110 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11111
11112         PR middle-end/30311
11113         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
11114         REG is a hard register.  Do not modify REG before calling
11115         subreg_nregs.
11116         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
11117         multiple of the size of YMODE for certain lowpart cases.
11118
11119 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11120
11121         PR middle-end/30253
11122         * gimplify (voidify_wrapper_expr): Update for
11123         GIMPLE_MODIFY_STMT.
11124
11125 2007-01-01  Andreas Schwab  <schwab@suse.de>
11126
11127         PR target/29166
11128         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
11129         save of BR0 in extra_spill_size instead of spill_size.
11130         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
11131         area.
11132         (ia64_expand_epilogue): Restore BR0 from its new location.
11133
11134 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11135
11136         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
11137         Use a temporary variable if the left hand side is not a gimple
11138         register.
11139
11140 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11141
11142         * gimplify.c (gimplify_return_expr): Make the temporary variable
11143         for the return expression, a gimple register variable.
11144
11145 2007-01-01  Jan Hubicka  <jh@suse.cz>
11146
11147         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
11148         INSN_LIST.
11149
11150 2007-01-01  Mike Stump  <mrs@apple.com>
11151
11152         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
11153         .literal16.
11154         * config/darwin.c (machopic_select_rtx_section): Use
11155         HAVE_GAS_LITERAL16.
11156         (darwin_mergeable_constant_section): Likewise.
11157         * configure: Regenerate.
11158         * config.in: Regenerate.
11159
11160 2007-01-01  Jan Hubicka  <jh@suse.cz>
11161             Andrew Pinski  <pinskia@gmail.com>
11162
11163         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
11164         before starting IPA passes.