OSDN Git Service

f60a91b9ef90444b24c6ba27a19f61d334fe8eda
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-20  Richard Henderson  <rth@redhat.com>
2
3         PR target/31628
4         * config/i386/i386.c (type_has_variadic_args_p): Look for any
5         TREE_LIST with a void_type_node value, not void_list_node exactly.
6
7 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
8
9         * doc/standards.texi: Re-arrange into language-specific
10         subsections. Add a C++ section, documenting which standards we
11         support.
12
13 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
14
15         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
16         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
17
18 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
19
20         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
21         ecrti.o and crtbegin.o.
22         (LIB_DEFAULT_SPEC): Include -lc.
23         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
24
25 2007-04-20  Richard Henderson  <rth@redhat.com>
26
27         PR target/28623
28         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
29         argument; update all callers.
30         (get_unaligned_offset): New.
31         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
32         get_unaligned_address, just pass on the address directly.
33         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
34         the subreg in the helper patterns.
35         (unaligned_extendqidi_le): Use get_unaligned_offset.
36         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
37         (unaligned_extendhidi_be): Likewise.
38         (unaligned_extendhidi): Tidy.
39         * config/alpha/alpha-protos.h: Update.
40
41 2007-04-20  Richard Henderson  <rth@redhat.com>
42
43         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
44         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
45         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
46         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
47         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
48         (CPP_SPEC): Don't include %(cpp_subtarget).
49         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
50         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
51         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
52
53 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
54
55         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
56         for __builtin_ia32_cmpordss.
57
58         PR tree-optimization/31632
59         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
60         and arg1 for optimizations of comparison against min/max values.
61         Fold arg0 to arg1's type for optimizations of comparison against
62         min+1 and max-1 values.
63
64 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
65
66         * reload.c (combine_reloads): When trying to use a dying register,
67         check whether it's uninitialized and don't use if so.
68
69 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
70
71         * fold-const.c: Remove prototypes for native_encode_expr and
72         native_interpret_expr.
73         (native_encode_expr): Make non-static.
74         (native_interpret_expr): Likewise.
75         * tree.h: Add prototypes for the above.
76
77 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
78
79         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
80         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
81         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
82         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
83         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
84         Add length attributes.
85
86 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
87
88         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
89         not that it is 1.
90
91         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
92         __STDC_WANT_DEC_FP__.
93
94 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
95
96         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
97         for long double compatibility.
98         * configure: Regenerate.
99
100 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
101
102         PR rtl-optimization/29841
103         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
104         trap instructions.
105         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
106         that may cause control flow transfer from being moved.
107
108 2007-04-18  Jan Hubicka  <jh@suse.cz>
109
110         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
111         types.
112
113 2007-04-18  Eric Christopher  <echristo@apple.com>
114
115         * config/rs6000/darwin.md (load_macho_picbase): Use link register
116         only. Update operands.
117         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
118         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
119         link register to pic register.
120
121 2007-04-18  Dirk Mueller  <dmueller@suse.de>
122
123         PR diagnostic/31227
124         * tree-vrp.c (search_for_addr_array): New.
125         (check_array_bounds): Suppress warning about
126         address taken of array refs if its not de-referenced.
127
128 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
129
130         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
131         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
132
133         * tree-vectorizer.h (NITERS_KNOWN_P): New.
134         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
135         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
136
137         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
138         dump print.
139         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
140         print message.
141         (vect_analyze_scalar_cycles): Fix indentation.
142         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
143         (vect_mark_relevant): Include phis in relevance analysis.
144
145         * tree-vect-transform.c (vect_transform_loop): Add an assert.
146
147 2007-04-18  Anatoly Sokolov <aesok@post.ru>
148
149         * config/avr/avr.c (ptrreg_to_str): Replace error() with
150         output_operand_lossage().
151
152 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
153
154         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
155         the unused code for reduction without adjust-in-epilog to simplify the
156         function.
157
158 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
159
160         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
161         (S390_TDC_NEGATIVE_ZERO): New constant.
162         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
163         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
164         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
165         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
166         (S390_TDC_POSITIVE_INFINITY): New constant.
167         (S390_TDC_NEGATIVE_INFINITY): New constant.
168         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
169         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
170         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
171         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
172         (S390_TDC_INFINITY): New constant.
173         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
174         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
175         optimization for UNSPEC_CCZ_TO_INT.
176         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
177         ("*ccz_to_int"): New insn.
178         ("isinf<mode>2"): New insn.
179         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
180         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
181         (UNSPEC_CCZ_TO_INT): New constant.
182
183 2007-04-18  Richard Guenther  <rguenther@suse.de>
184
185         PR tree-optimization/19431
186         PR tree-optimization/21463
187         * tree-pass.h (pass_phiprop): Declare.
188         * passes.c (init_optimization_passes): New phiprop pass.
189         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
190         (phivn_valid_p): New helper function.
191         (phiprop_insert_phi): Likewise.
192         (propagate_with_phi): Likewise.
193         (tree_ssa_phiprop): New propagator propagating loads
194         through phi nodes if profitable.
195
196 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
197
198         * tree-vect-analyze.c (process_use): New function.
199         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
200         Check phis in all bbs.
201         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
202         assert.
203
204 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
205
206         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
207         we use REG_EQUAL.
208
209 2007-04-17  Anatoly Sokolov <aesok@post.ru>
210
211         PR target/30483
212         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
213         error().
214
215 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
216
217         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
218         on "0".
219         (sse_vmmulv4sf3): Likewise.
220         (sse2_vmaddv2df3): Likewise.
221         (sse2_vmmulv2df3): Likewise.
222
223 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
224
225         PR rtl-optimization/31360
226         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
227         (target_reg_cost): New.
228         (init_set_costs): Initialize target_reg_cost.  Add comments
229         regarding the rationale of the costs.
230         (global_cost_for_size): Renamed to...
231         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
232         of register pressure.
233         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
234         estimate_reg_pressure_cost.  Add number of ivs.
235         (determine_set_costs): Dump target_reg_cost.
236         * loop-invariant.c (gain_for_invariant):  Use
237         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
238         (best_gain_for_invariant, find_invariants_to_move): Remove
239         n_inv_uses.
240         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
241         (target_reg_cost): Declare.
242         (global_cost_for_size): Declaration removed.
243         (estimate_reg_pressure_cost): Declare.
244
245 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
246
247         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
248         regnos into even/odd register pairs.
249         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
250         TDmode similar to the other floating point modes.
251         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
252         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
253         define_expand's.
254         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
255         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
256         (movdd_hardfloat64): Use TARGET_MFPGPR.
257
258 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
259
260         * reload1.c (delete_output_reload): Don't count output in n_inherited.
261
262         Revert
263         2005-01-05  Richard Henderson  <rth@redhat.com>
264         PR rtl-opt/10692
265         * reload1.c (do_input_reload): Restrict the optimization deleteing
266         a previous output reload to RELOAD_FOR_INPUT.
267
268 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
269
270         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
271         induc_vec_info_type.
272         (vectorizable_induction): New function declaration.
273         * tree-vect-transform.c (get_initial_def_for_induction): No need to
274         check if already vectorized.  Find first place in BB where new stmts
275         can be inserted.  Takes only one argument.
276         (vectorizable_induction): New function.
277         (vect_transform_stmt): Add case for induc_vec_info_type to call
278         vectorizable_induction.
279         (vect_transform_loop): Consider phis for vectorization.
280         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
281         condition.
282         (analyze_operations): Call vectorizable_induction when analyzing phis.
283         Fix comment.
284         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
285         (vect_mark_relevant): Include phis in relevance analysis.
286         (vect_mark_stmts_to_be_vectorize): Likewise.
287         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
288
289 2007-04-16  Lawrence Crowl  <crowl@google.com>
290
291         * doc/invoke.texi (Debugging Options): Add documentation for the
292         -femit-struct-debug options -femit-struct-debug-baseonly,
293         -femit-struct-debug-reduced, and
294         -femit-struct-debug-detailed[=...].
295
296         * c-opts.c (c_common_handle_option): Add
297         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
298         and OPT_femit_struct_debug_detailed_.
299         * c.opt: Add specifications for
300         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
301         and -femit-struct-debug-detailed[=...].
302         * opts.c (set_struct_debug_option): Parse the
303         -femit-struct-debug-... options.
304         * opts.c (matches_main_base, main_input_basename,
305         main_input_baselength, base_of_path, matches_main_base): Add
306         variables and functions to compare header base name to compilation
307         unit base name.
308         * opts.c (should_emit_struct_debug): Add to determine to emit a
309         structure based on the option.
310         (dump_struct_debug) Also disabled function to debug this
311         function.
312         * opts.c (handle_options): Save the base name of the
313         compilation unit.
314
315         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
316         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
317         This hook indicates if a type is generic.  Set it by default
318         to "never generic".
319         * langhooks.h (struct lang_hooks_for_types): Add a new hook
320         to determine if a struct type is generic or not.
321         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
322         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
323         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
324         with live C++ hook.
325
326         * flags.h (enum debug_info_usage): Add an enumeration to describe
327         a program's use of a structure type.
328         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
329         to indicate the program's usage of the type.  Filter structs based
330         on the -femit-struct-debug-... specification.
331         (gen_type_die): Split into two routines, gen_type_die and
332         gen_type_die_with_usage.  gen_type_die is now a wrapper
333         that assumes direct usage.
334         (gen_type_die_with_usage): Replace calls to gen_type_die
335         with gen_type_die_with_usage adding the program usage of
336         the referenced type.
337         (dwarf2out_imported_module_or_decl): Suppress struct debug
338         information using should_emit_struct_debug when appropriate.
339
340 2007-04-16  Ian Lance Taylor  <iant@google.com>
341
342         PR tree-optimization/31522
343         * tree-vrp.c (vr_phi_edge_counts): New static variable.
344         (vrp_initialize): Allocate vr_phi_edge_counts.
345         (vrp_visit_phi_node): Don't push to infinity if we saw a new
346         executable edge.  Drop test for all constants.
347         (vrp_finalize): Free vrp_phi_edge_counts.
348
349         * doc/cpp.texi (Common Predefined Macros): Clarify description of
350         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
351
352         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
353         predecessors at head rather than tail.
354
355 2007-04-16  Matthias Klose  <doko@debian.org>
356
357         * config/alpha/linux.h (CPP_SPEC): Define.
358         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
359
360 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
361
362         * function.h: Remove sequence_stack extern declaration.
363
364 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
365
366         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
367         TARGET_FIDOA.
368         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
369         defined.
370
371 2007-04-16  Anatoly Sokolov <aesok@post.ru>
372
373         * config/avr/avr.c (avr_arch_types): Rearranging  array.
374         (enum avr_arch): Add.
375         (avr_mcu_types): Use avr_arch enumeration constants instead of
376         numbers.
377         * config/avr/avr.h (LINK_SPEC): Simplify.
378
379 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
380
381         * config/m68k/m68k.c (m68k_libcall_value,
382         m68k_function_value): Use macros for register names more.
383
384         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
385         instead.
386         (M68K_REGNAME): Use A6_REG.
387         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
388
389 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
390
391         PR middle-end/28071
392         * sched-int.h (struct deps): Split field 'pending_lists_length' into
393         'pending_read_list_length' and 'pending_write_list_length'.  Update
394         comment.
395         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
396         to handle two length counters instead of one.  Update all uses.
397         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
398         two length counters instead of one.
399         * sched-rgn.c (propagate_deps): Update to handle two length counters
400         instead of one.
401
402 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
403
404         PR target/31582
405         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
406         copy of source, pass it to ix86_expand_vector_set and return
407         it as target.
408
409 2007-04-16  David Ung  <davidu@mips.com>
410             Joseph Myers  <joseph@codesourcery.com>
411
412         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
413         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
414         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
415         Add 74K processor information.
416         * config/mips/mips.md: Include 74k.md.
417         (cpu): Add 74kc,74kf,74kx.
418         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
419         * config/mips/74k.md: New.
420         * doc/invoke.texi (MIPS Options): Document 74K support.
421
422 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
423
424         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
425         vectorizable_* functions.
426         * tree-vect-transform.c (vectorizable_call): Add check for
427         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
428         (vectorizable_store): likewise.
429         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
430         Add comments.
431         (vectorizable_operation, vectorizable_type_demotion): Likewise.
432         (vectorizable_type_promotion, vectorizable_load): Likewise.
433         (vectorizable_live_operation, vectorizable_condition): Likewise.
434         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
435         STMT_VINFO_LIVE_P.
436         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
437
438 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
439
440         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
441         register numbers more.
442         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
443         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
444         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
445         FUNCTION_VALUE_REGNO_P): Likewise.
446         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
447         STATIC_CHAIN_REGNUM): Likewise.
448         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
449         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
450         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
451         * config/m68k/m68k.md (FP_REG): New.
452
453 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
454
455         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
456         alignment on fido.
457
458 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
459
460         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
461         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
462         comment typos.
463
464 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
465
466         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
467         cold loops.
468
469 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
470
471         PR c/31520
472         * c-decl.c (finish_decl): Grab the type of the decl after the call
473         to store_init_value.
474
475 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
476
477         * common.opt (fforward-propagate): Fix "Optimization" annotation.
478
479 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
480
481         PR c++/25874
482         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
483         post dominators and cleanup cfg before returning.
484
485 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
486
487         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
488         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
489
490 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
491
492         * config.gcc: Recognize fido.
493         * config/m68k/m68k-devices.def (fidoa): New.
494         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
495         __mfido__.
496         (FL_FIDOA, TARGET_FIDOA): New.
497         * config/m68k/m68k.opt (mfidoa): New.
498
499 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
500
501         PR middle-end/31322
502         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
503         when a personality function is used.
504
505 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
506
507         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
508
509 2007-04-13  Mike Stump  <mrs@apple.com>
510
511         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
512         we can...
513         * config/darwin.opt (fapple-kext): Make C++ only.
514         * config/darwin.c (darwin_override_options): Remove code to ensure
515         -fapple-kext is given for C++ only.
516
517 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
518
519         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
520         * config/mips/mips.c (override_options): Call
521         SUBTARGET_OVERRIDE_OPTIONS, if defined.
522
523 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
524
525         * config/i386/i386.opt (msvr3-shlib): Removed.
526
527         * doc/invoke.texi: Remove -msvr3-shlib.
528
529 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
530
531         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
532         with "popcnt" instruction.
533
534 2007-04-13  Richard Guenther  <rguenther@suse.de>
535
536         PR tree-optimization/21258
537         * tree-vrp.c (compare_case_labels): New helper.
538         (find_switch_asserts): New function.
539         (find_assert_locations): Call it for SWITCH_EXPRs.
540
541 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
542
543         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
544         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
545         check is now implied in X87_FLOAT_MODE_P.
546         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
547         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
548         (fix_trunc<mode>_i386_fisttp): Ditto.
549         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
550         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
551         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
552         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
553         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
554         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
555         (unnamed_splitters): Ditto.
556         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
557         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
558         FIRST_SSE_REG for local functions when SSE math is enabled or
559         for functions with sseregparm attribute.
560         (standard_80387_constant_p): Return -1 if mode is not
561         X87_FLOAT_MODE_P.
562         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
563         (ix86_expand_compare): Ditto.
564         (ix86_expand_carry_flag_compare): Ditto.
565         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
566         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
567         DECIMAL_FLOAT_MODE_P.
568         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
569         of SCALAR_FLOAT_MODE_P.
570         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
571         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
572         checks before FLOAT_MODE_P.
573         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
574         before FLOAT_MODE_P.
575         [DIV]: Ditto.
576         [NEG]: Ditto.
577         [ABS]: Ditto.
578         [SQRT]: Ditto.
579         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
580
581 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
582             Charles Wilson  <libtool@cwilson.fastmail.fm>
583
584         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
585         (libgcc.mvars): Don't depend on them.
586         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
587         * exec-tool.in: New.
588
589 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
590
591         * doc/invoke.text (--help): Document --help=common.
592
593 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
594
595         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
596
597 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
598
599         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
600         * genemit.c (main): Emit #include "integrate.h".
601         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
602         (LOADGP_RTP): New mips_loadgp_style.
603         * config/mips/mips.h: Include config/vxworks-dummy.h.
604         (TARGET_RTP_PIC): New macro.
605         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
606         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
607         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
608         for TARGET_RTP_PIC.
609         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
610         -mvxworks-pic when using -mrtp and a PIC option.
611         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
612         for RTP PIC.
613         (mips_symbolic_constant_p, mips_symbolic_address_p)
614         (mips_symbol_insns): Handle SYMBOL_HALF.
615         (override_options): Warn about -G and -mrtp being used together.
616         Initialize mips_lo_relocs[SYMBOL_HALF].
617         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
618         (mips_emit_loadgp): Handle LOADGP_RTP.
619         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
620         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
621         (tablejump): Handle function-relative case table entries if
622         TARGET_RTP_PIC.
623         * config/mips/predicates.md (symbol_ref_operand): New predicate.
624
625 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
626
627         * config/mips/mips.md (load_call<mode>): Allow any general register.
628         destination.
629         (sibcall_value_internal, sibcall_value_multiple_internal)
630         (call_value_internal, call_value_split, call_value_multiple_internal)
631         (call_value_multiple_split): Remove constraints from operand 0.
632
633 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
634
635         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
636         rather than loadgp_noshared.
637         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
638         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
639         gen_loadgp.
640         * config/mips/mips.md (loadgp): Rename to...
641         (loadgp_newabi): ...this.
642         (loadgp_noshared): Rename to...
643         (loadgp_absolute): ...this.
644
645 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
646
647         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
648         false for locally-binding symbols.
649         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
650
651 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
652
653         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
654         (SYMBOL_GOT_PAGE_OFST): ...this.
655         (SYMBOL_GOT_GLOBAL): Rename to...
656         (SYMBOL_GOT_DISP): ...this.
657         (SYMBOL_GOTOFF_GLOBAL): Rename to...
658         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
659         * config/mips/mips.c (mips_global_symbol_p): New function.
660         (mips_symbol_binds_local_p): Likewise.
661         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
662         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
663         and mips_symbol_binds_local_p.
664         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
665         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
666         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
667         SYMBOL_GOTOFF_DISP.
668         (mips_ok_for_lazy_binding_p): New function.
669         (mips_load_call_address, mips_expand_call): Use it.
670         (mips_dangerous_for_la25_p): Likewise.
671         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
672         (*got_disp<mode>): Use got_disp_operand instead of
673         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
674         SYMBOL_GOTOFF_GLOBAL.
675         (*got_page<mode>): Use got_page_ofst_operand instead of
676         local_got_operand.
677         * config/mips/predicates.md (const_call_insn_operand): Use
678         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
679         (global_got_operand): Rename to...
680         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
681         SYMBOL_GOT_GLOBAL.
682         (local_got_operand): Rename to...
683         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
684         of SYMBOL_GOT_LOCAL.
685
686 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
687
688         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
689         TARGET_CALL_CLOBBERED_GP.
690         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
691         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
692         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
693         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
694         of TARGET_ABICALLS && !TARGET_NEWABI.
695         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
696         * config/mips/mips.c (mips_load_call_address): Check
697         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
698         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
699         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
700         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
701         TARGET_ABICALLS && TARGET_NEWABI.
702         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
703         TARGET_ABICALLS.
704         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
705         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
706         TARGET_ABICALLS && TARGET_NEWABI.
707         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
708         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
709         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
710         whether indirect calls must use $25.
711         (mips_extra_live_on_entry): Check TARGET_GOT instead of
712         TARGET_ABICALLS.
713         * config/mips/mips.md (jal_macro): Check flag_pic and
714         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
715         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
716         instead of TARGET_ABICALLS.
717         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
718         TARGET_ABICALLS && TARGET_OLDABI.
719         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
720         (sibcall): In the comment above the define_insn, mention
721         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
722         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
723         instead of TARGET_ABICALLS.
724
725 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
726
727         * doc/md.texi (Blackfin family constraints): Document PA and PB.
728         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
729         (MACFLAGS_MATCH_P): New macro.
730         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
731         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
732         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
733         the other MACFLAG constants.
734         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
735         (flag_machi): Tighten constraints.  Renumber some of the operands.
736         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
737         output template.
738         (flag_machi_parts_acconly): New pattern.
739         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
740         used.
741         (flag_macinit1hi): Tighten constraints.
742         (flag_mul_macv2hi_parts_acconly): New pattern.
743
744         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
745         Use a more efficient implementation.
746         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
747         inline sequences when not optimizing for size.
748
749         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
750         movhi_high2low): Delete, merge functionality into...
751         (packv2hi): ... this pattern.
752
753         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
754         * config/bfin/bfin.opt (msim): New option.
755         (mcpu=): New option.
756         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
757         (bfin_cpu_t): Typedef of enum bfin_cpu.
758         (bfin_cpu_type): New declaration.
759         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
760         -msim and -mcpu= options.
761         (LIB_SPEC): Likewise.
762         * config/bfin/bfin.c (bfin_cpu_type): Define.
763         (bfin_handle_option): Handle -mcpu= option.
764         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
765         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
766         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
767
768 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
769
770         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
771         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
772         (powerpc-wrs-vxworksae): Use ${tm_file}.
773         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
774         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
775         * config/i386/vx-common.h: New file.
776
777 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
778
779         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
780         of crt0.o%s.
781
782 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
783
784         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
785         ldxtr.
786
787 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
788
789         PR c++/31078
790         PR c++/31103
791         * c-common.c (c_build_qualified_type): Set canonical type
792         appropriately.
793
794 2007-04-12  Richard Guenther  <rguenther@suse.de>
795
796         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
797         lower bound and element size if lower bound is not zero
798         or either of the ARRAY_REF operands is set.
799
800 2007-04-12  Richard Guenther  <rguenther@suse.de>
801
802         PR tree-optimization/24689
803         PR tree-optimization/31307
804         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
805         indices by value.
806         * gimplify.c (canonicalize_addr_expr): To be consistent with
807         gimplify_compound_lval only set operands two and three of
808         ARRAY_REFs if they are not gimple_min_invariant.  This makes
809         it never at this place.
810         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
811
812 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
813
814         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
815         null before emitting a .nsubspa directive.
816
817 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
818
819         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
820         need_to_partition_p if there are no memory statements in the
821         function.
822
823 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
824
825         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
826         (gcd_of_steps_may_divide_p): New function.
827         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
828
829 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
830
831         * reload.c (find_reloads_toplev, find_reloads_address,
832         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
833         not a pointer equality test, to decide if we need to call
834         push_reg_equiv_alt_mem.
835
836 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
837
838         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
839         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
840         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
841
842 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
843
844         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
845         vector to be positive.
846
847 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
848
849         PR 30735
850         PR 31090
851         * doc/invoke.texi: Document --params max-aliased-vops and
852         avg-aliased-vops.
853         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
854         debug_memory_partitions): Move to tree-flow.h
855         * params.h (AVG_ALIASED_VOPS): Define.
856         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
857         users.
858         (mp_info_t): Likewise.
859         (get_mem_sym_stats_for): New.
860         (set_memory_partition): Move from tree-flow-inline.h.
861         (mark_non_addressable): Only clear the set of symbols for the
862         partition if it exists.
863         (dump_memory_partitions): Move from tree-ssa-operands.c
864         (debug_memory_partitions): Likewise.
865         (need_to_partition_p): New.
866         (dump_mem_ref_stats): New.
867         (debug_mem_ref_stats): New.
868         (dump_mem_sym_stats): New.
869         (debug_mem_sym_stats): New.
870         (update_mem_sym_stats_from_stmt): New.
871         (compare_mp_info_entries): New.
872         (mp_info_cmp): Call it.
873         (sort_mp_info): Change argument to a list of mem_sym_stats_t
874         objects.
875         (get_mpt_for): Move from tree-ssa-operands.c.
876         (find_partition_for): New.
877         (create_partition_for): Remove.
878         (estimate_vop_reduction): New.
879         (update_reference_counts): New.
880         (build_mp_info): New.
881         (compute_memory_partitions): Refactor.
882         Document new heuristic.
883         Call build_mp_info, update_reference_counts,
884         find_partition_for and estimate_vop_reduction.
885         (compute_may_aliases): Populate virtual operands before
886         calling debugging dumps.
887         (delete_mem_sym_stats): New.
888         (delete_mem_ref_stats): New.
889         (init_mem_ref_stats): New.
890         (init_alias_info): Call it.
891         (maybe_create_global_var): Remove alias_info argument.
892         Get number of call sites and number of pure/const call sites
893         from gimple_mem_ref_stats().
894         (dump_alias_info): Call dump_memory_partitions first.
895         (dump_points_to_info_for): Show how many times a pointer has
896         been dereferenced.
897         * opts.c (decode_options): For -O2 set --param
898         max-aliased-vops to 500.
899         For -O3 set --param max-aliased-vops to 1000 and --param
900         avg-aliased-vops to 3.
901         * fortran/options.c (gfc_init_options): Remove assignment to
902         MAX_ALIASED_VOPS.
903         * tree-flow-inline.h (gimple_mem_ref_stats): New.
904         * tree-dfa.c (dump_variable): Dump memory reference
905         statistics.
906         Dump NO_ALIAS* settings.
907         (referenced_var_lookup): Tidy.
908         (mem_sym_stats): New.
909         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
910         and ORIG are different SSA names for a memory partition.
911         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
912         * tree-flow.h (struct mem_sym_stats_d): Define.
913         (mem_sym_stats_t): Define.
914         (struct mem_ref_stats_d): Define.
915         (struct gimple_df): Add field mem_ref_stats.
916         (enum noalias_state): Define.
917         (struct var_ann_d): Add bitfield noalias_state.
918         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
919         debug_mem_ref_stats, debug_memory_partitions,
920         debug_mem_sym_stats): Declare.
921         * tree-ssa-structalias.c (update_alias_info): Update call
922         sites, pure/const call sites and asm sites in structure
923         returned by gimple_mem_ref_stats.
924         Remove local variable IS_POTENTIAL_DEREF.
925         Increase NUM_DEREFS if the memory expression is a potential
926         dereference.
927         Call update_mem_sym_stats_from_stmt.
928         If the memory references memory, call
929         update_mem_sym_stats_from_stmt for all the direct memory
930         symbol references found.
931         (intra_create_variable_infos): Set noalias_state field for
932         pointer arguments according to the value of
933         flag_argument_noalias.
934         * tree-ssa-structalias.h (struct alias_info): Remove fields
935         num_calls_found and num_pure_const_calls_found.
936         (update_mem_sym_stats_from_stmt): Declare.
937         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
938         Set default value to 100.
939         (PARAM_AVG_ALIASED_VOPS): Define.
940
941 2007-04-11  Richard Guenther  <rguenther@suse.de>
942
943         PR middle-end/31530
944         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
945         a * -b + c as c - a * b if we honor sign dependent rounding.
946
947 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
948
949         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
950         bfin_expand_strmov.
951         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
952         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
953         variables.
954         (initialize_trampoline): Don't use old-style function definition.
955         (bfin_secondary_reload): Mark IN_P argument as unused.
956
957 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
958
959         PR tree-optimization/31343
960         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
961         (build_polynomial_chrec): Return a scalar when the evolution is zero.
962         * testsuite/gcc.dg/vect/pr31343.c: New.
963
964 2007-04-10  Eric Christopher  <echristo@apple.com>
965
966         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
967         * config/i386/i386.md (*cmpfp0): Use.
968         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
969         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
970         (fix_trunc<mode>_i386_fisttp): Ditto.
971         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
972         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
973         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
974         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
975         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
976         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
977         (unnamed_splitters): Ditto.
978         * config/i386/i386.c (output_fix_trunc): Assert that
979         we're not being passed a TFmode operand.
980
981 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
982
983         PR tree-optimization/31526
984         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
985         n_basic_blocks to find newly added blocks.
986
987 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
988
989         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
990         alternative.
991         (fix_trunc<mode>si_sse): Ditto.
992         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
993         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
994         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
995         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
996         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
997         expander using SSEMODEF mode macro.
998         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
999         expander using SSEMODEF mode macro.
1000         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
1001         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
1002         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
1003         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
1004         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
1005         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
1006         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
1007         Macroize insn using X87MODEF mode macro.
1008
1009 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
1010
1011         * config/i386/sse.md (sse2_pinsrw): Removed.
1012         (sse2_pextrw): Renamed to ...
1013         (*sse2_pextrw): This.
1014
1015 2007-04-09  Jan Hubicka  <jh@suse.cz>
1016
1017         PR target/27869
1018         * config/i386/sse.md
1019         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
1020         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
1021         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
1022         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
1023
1024 2007-04-09  Jan Hubicka  <jh@suse.cz>
1025
1026         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
1027         multiple fields of union.
1028
1029 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
1030
1031         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
1032         (create_preheaders): Check that loops are available.
1033         (fix_loop_structure): Clean up, improve comments.
1034         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
1035         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
1036         state flags.
1037         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
1038         * predict.c (tree_estimate_probability): Do not call
1039         calculate_dominance_info.  Call create_preheaders.
1040         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
1041         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
1042         flags.
1043         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
1044         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
1045         * tree-cfg.c (tree_split_edge): Make an assert more precise.
1046         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
1047         arguments.
1048
1049 2007-04-08  Jan Hubicka  <jh@suse.cz>
1050
1051         * tree.h (maybe_fold_offset_to_component_ref): Declare.
1052         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
1053         * fold-const.c (fold_unary): Use it.
1054
1055 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1056
1057         * varasm.c (assemble_variable): Remove call to
1058         lang_hooks.decls.prepare_assemble_variable.
1059         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
1060         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
1061         * langhooks.h (lang_hooks_for_decls): Remove
1062         prepare_assemble_variable.
1063
1064 2007-04-08  Mike Stump  <mrs@apple.com>
1065
1066         * config/i386/i386.c: Use inc/dec on Core2.
1067
1068 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
1069
1070         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
1071         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
1072         lhd_tree_inlining_end_inlining): Remove.
1073         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
1074         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
1075         end_inlining hooks.
1076         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
1077         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
1078         lhd_tree_inlining_end_inlining): Remove prototypes.
1079         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
1080         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
1081         LANG_HOOKS_TREE_INLINING_START_INLINING,
1082         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
1083
1084         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
1085         not set it.
1086
1087 2007-04-08  Anatoly Sokolov <aesok@post.ru>
1088
1089         PR target/29932
1090         * config/avr/predicates.md (io_address_operand): Delete predicate.
1091         (low_io_address_operand): Don't use 'mode' argument.
1092         (higth_io_address_operand): Rename ...
1093         (high_io_address_operand): ... to this. Don't use 'mode' argument.
1094         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
1095         for above change.
1096
1097 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
1098
1099         Revert change removing staticp.
1100
1101 2007-04-07  Anatoly Sokolov <aesok@post.ru>
1102
1103         PR target/30289
1104         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
1105         earlyclobber.
1106
1107 2007-04-07  Bruce Korb  <bkorb@gnu.org>
1108
1109         * c.opt: Add -Wformat-contains-nul.
1110         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
1111           -Wformat setting.
1112         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
1113         the NUL byte warning.
1114
1115 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
1116
1117         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
1118
1119 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1120
1121         * tree.c (staticp): No longer use staticp langhook.
1122         * langhooks.c (lhd_staticp): Removed.
1123         * langhooks.h (struct lang_hooks): Remove staticp.
1124         * c-common.c (c_staticp): Remove.
1125         * c-common.h (c_staticp): Ditto.
1126         * langhooks-defs.h (lhd_staticp): Ditto.
1127         (LHD_HOOKS_STATICP): Ditto
1128         * tree.h (gcc_assert_lowered): New macro.
1129
1130 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
1131
1132         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
1133         argument "reliable".
1134         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
1135         Add argument "reliable".  Propagate it through calls.
1136         (infer_loop_bounds_from_undefined):  Derive number of iterations
1137         estimates from references in blocks that do not dominate loop latch.
1138         (gcov_type_to_double_int): New function.
1139         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
1140         and expected_loop_iterations_unbounded.
1141         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
1142         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
1143         * tree-data-ref.c (estimated_loop_iterations): Export.
1144         (get_references_in_stmt): Fix -- do not return addresses of local
1145         objects.
1146         * cfgloop.h (expected_loop_iterations_unbounded,
1147         estimated_loop_iterations): Declare.
1148
1149 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
1150
1151         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
1152
1153 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1154
1155         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
1156         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
1157         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
1158         Use output_387_reg_move().
1159         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
1160         expander using X87MODEF12 mode macro.
1161         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
1162         choosing register preferences.  Use output_387_reg_move().
1163         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
1164         instead of "x".  Use output_387_reg_move().
1165         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
1166         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
1167         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
1168         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
1169         Use output_387_reg_move().
1170         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
1171         mode macro.
1172         (*truncxf?f_i387 splitter): Ditto.
1173
1174 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1175
1176         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
1177         LANG_HOOKS_SAFE_FROM_P.
1178         * expr.c (safe_from_p): Remove langhook call.
1179         * langhooks.h (lang_hooks): Remove safe_from_p.
1180         (lhd_safe_from_p): Remove prototype.
1181         * langhooks.c (lhd_safe_from_p): Remove.
1182
1183 2007-04-06  Jan Hubicka  <jh@suse.cz>
1184
1185         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
1186         functions.
1187
1188 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1189
1190         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
1191         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
1192         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
1193         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
1194         alternative.
1195         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
1196         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
1197
1198 2007-04-05  Richard Henderson  <rth@redhat.com>
1199
1200         * config/alpha/alpha.c (print_operand) [+]: Remove.
1201         (alpha_end_function): Print nop if call at end of function.
1202         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
1203         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
1204         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
1205         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
1206         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
1207         the call pattern. Update peepholes to match.
1208
1209 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
1210
1211         * doc/extend.texi (Other Builtins): Add decimal float variants
1212         of signbit.
1213         * builtins.def: Ditto.
1214         * builtins.c (expand_builtin): Ditto.
1215
1216 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
1217             H.J. Lu  <hongjiu.lu@intel.com>
1218
1219         PR target/31478
1220         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
1221         of V8HImode when calling ix86_binary_operator_ok.
1222         (sse2_pmaddwd): Call ix86_binary_operator_ok.
1223         (sdot_prodv8hi): Operands 1 and 2 must be register.
1224
1225 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
1226
1227         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
1228         initialize align to silence bogus warning.
1229
1230 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
1231
1232         PR middle-end/22156
1233         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
1234         all_no_warning.
1235         (struct sra_walk_fns): Remove use_all parameter from use.
1236         (sra_hash_tree): Handle BIT_FIELD_REFs.
1237         (sra_elt_hash): Don't hash bitfld blocks.
1238         (sra_elt_eq): Skip them in parent compares as well.  Handle
1239         BIT_FIELD_REFs.
1240         (sra_walk_expr): Don't maintain or pass down use_all_p.
1241         (scan_use): Remove use_all parameter.
1242         (scalarize_use): Likewise.  Re-expand assignment to
1243         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
1244         output, and re-scalarize after output.  Don't mark anything
1245         for no warning.
1246         (scalarize_ldst): Adjust.
1247         (scalarize_walk_gimple_modify_statement): Likewise.
1248         (build_element_name_1): Handle BIT_FIELD_REFs.
1249         (instantiate_element): Don't warn for any element whose parent
1250         is used as a whole.
1251         (instantiate_missing_elements_1): Return the sra_elt.
1252         (canon_type_for_field): New.
1253         (try_instantiate_multiple_fields): New.
1254         (instantiate_missing_elemnts): Use them.
1255         (mark_no_warning): Removed.
1256         (generate_one_element_ref): Handle BIT_FIELD_REFs.
1257         (REPLDUP, sra_build_elt_assignment): New.
1258         (generate_copy_inout): Use them.
1259         (generate_element_copy): Likewise.  Handle bitfld differences.
1260         (generate_element_zero): Don't recurse for blocks.  Use
1261         sra_build_elt_assignment.
1262         (generate_one_element_int): Take elt instead of var.  Use
1263         sra_build_elt_assignment.
1264         (generate_element_init_1): Adjust.
1265         (scalarize_use, scalarize_copy): Use REPLDUP.
1266         (scalarize_ldst): Move assert before dereference.
1267         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
1268
1269 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
1270
1271         * regmove.c: Fix unused variable warnings due to previous commit.
1272
1273 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
1274
1275         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
1276         (regmove_bb_head): Remove.
1277         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
1278         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
1279         problems with fixup_match_1.
1280         Don't initialize/free regmove_bb_head.
1281
1282         (reg_is_remote_constant_p): If an insn is in the same basic block
1283         but not before INSN, consider it remote, too.
1284
1285 2007-04-05  Anatoly Sokolov <aesok@post.ru>
1286
1287         PR target/25448
1288         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
1289         DECL_ASSEMBLER_NAME, not the DECL_NAME.
1290
1291 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
1292
1293         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
1294         (CONDITIONAL_REGISTER_USAGE): Likewise.
1295
1296 2007-04-04  Richard Henderson  <rth@redhat.com>
1297
1298         * config/alpha/lib1funcs.asm: Remove unused file.
1299
1300 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1301
1302         PR other/31356
1303         * opts.c (print_specific_help): Fix --help=<language>
1304         header line.
1305         (common_handle_option): Support --help=common.
1306
1307 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1308
1309         PR other/31353
1310         * gcc.c (main): Do not run the linker if
1311         print_subprocess_help indicates that it shouldn't be
1312         run.
1313
1314 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1315
1316         PR doc/31355
1317         * doc/invoke.texi (--help=): Document <languages> value, fix
1318         formatting in tables of values.
1319
1320 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
1321
1322         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
1323         dllimport attribute of virtual methods.
1324
1325 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
1326
1327         * config/score/crti.asm: Change _bss_start to __bss_start.
1328         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
1329         (OUTGOING_REG_PARM_STACK_SPACE) update.
1330         * config/score/score.opt: add options to make backend support
1331         score5, score5u, score7 and score7d.
1332         * config/score/score.md: Likewise.
1333         * config/score/misc.md: Likewise.
1334         * config/score/mac.md: Likewise.
1335         * doc/invoke.texi: Likewise.
1336         * doc/md.texi: update constraints define.
1337
1338 2007-04-03  Richard Henderson  <rth@redhat.com>
1339
1340         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
1341         an appropriate type, use the mode instead.
1342
1343 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
1344
1345         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
1346         Set the default --with-arch setting to mips2.
1347         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
1348         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1349         (MULTILIB_OSDIRNAMES): Delete.
1350         (MULTILIB_DIRNAMES): Define.
1351         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
1352         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
1353         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
1354         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
1355         VXWORKS_OS_CPP_BUILTINS.
1356         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
1357         (MIPS_DEBUGGING_INFO): Undefine.
1358         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
1359
1360 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
1361
1362         PR middle-end/30704
1363         * fold-const.c (native_encode_real): Encode real.c provided longs
1364         as a series of 32-bit native integers.
1365         (native_interpret_real): Interpret buffer as a series of 32-bit
1366         native integers.
1367
1368 2007-04-03  Richard Guenther  <rguenther@suse.de>
1369
1370         * genpreds.c (write_insn_constraint_len): Write function
1371         optimized for CONSTRAINT_LEN implementation.
1372         (write_tm_preds_h): Output insn_constraint_len inline and
1373         use it for CONSTRAINT_LEN.
1374         (write_insn_preds_c): Don't output insn_constraint_len.
1375         * doc/md.texi (define_register_constraint): Document multi-letter
1376         constraints shall have the same length if they start with the same
1377         letter.
1378
1379 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
1380
1381         PR target/31175
1382         * config/i386/i386.md (isinf<mode>2): Expand only when
1383         TARGET_C99_FUNCTIONS is set.
1384
1385 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
1386
1387         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
1388         (x86_64-*-linux*): Ditto.
1389         * config/i386/i386.opt (mpc): New option.
1390         * config/i386/i386.c (overrride_options): Handle
1391         ix87_precision_string.
1392         * config/i386/crtprec.c: New file.
1393         * config/i386/t-crtpc: Ditto.
1394         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
1395         and -mpc80 options.
1396         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
1397         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
1398         crtprec32.o, crtprec64.o and crtprec80.o.
1399
1400         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
1401         and -mpc80 options.
1402         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
1403
1404 2007-04-02  Eric Christopher  <echristo@apple.com>
1405
1406         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
1407         limitations on darwin.
1408
1409 2007-04-02  Anatoly Sokolov <aesok@post.ru>
1410
1411         PR target/31137
1412         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
1413
1414 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1415
1416         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
1417
1418 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1419
1420         * libgcc2.h (exception_descriptor): Don't forward-declare.
1421         (__get_eh_table_language, __get_eh_table_version): Delete
1422         prototypes of long-dead functions.
1423
1424 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
1425
1426         * ebitmap.h: New file
1427         * ebitmap.c: New file
1428         * Makefile.in (ebitmap.o): New target.
1429
1430 2007-04-01  Jan Hubicka  <jh@suse.cz>
1431
1432         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
1433         before very first instruction.
1434
1435 2007-04-01  Jan Hubicka  <jh@suse.cz>
1436
1437         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
1438         waring on 64bit hosts.
1439         * bitmap.h: Fix typo in bitmap_head_def.
1440
1441 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
1442
1443         PR rtl-optimization/31391
1444         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
1445         into a DELETED_LABEL note, and the label is in an empty basic
1446         block, update BB_END as well as BB_HEAD.
1447
1448 2007-04-01  Richard Henderson  <rth@redhat.com>
1449
1450         PR tree-optimization/31169
1451         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
1452         to varying if the range is outside [0,  prec-1].
1453
1454 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
1455
1456         PR target/31388
1457         * config/mips/mips.md (load_const_gp): New insn.
1458         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
1459         the MIPS16 GP pseudo register if no_new_pseudos.
1460         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
1461
1462 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1463
1464         PR target/31364
1465         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
1466         secureplt.
1467         (call_value): Likewise.
1468
1469 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
1470             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1471
1472         PR 14737
1473         * doc/invoke.texi: (optimization options): Reword description
1474         of -ffast-math. Document its primary purpose.
1475
1476 2007-03-31  Richard Guenther  <rguenther@suse.de>
1477
1478         * omp-low.c (splay-tree.h): Include.
1479         (lookup_decl): Replace splay-tree usage by pointer-map.
1480         (maybe_lookup_decl): Likewise.
1481         (new_omp_context): Likewise.
1482         (delete_omp_context): Likewise.
1483         * gimplify.c (splay-tree.h): Include.
1484         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
1485         pointer-map.
1486         (remap_ssa_name): Likewise.
1487         (remap_decl): Likewise.
1488         (remap_type_1): Likewise.
1489         (remap_type): Likewise.
1490         (copy_body_r): Likewise.
1491         (expand_call_inline): Likewise.
1492         (clone_body): Likewise.
1493         (copy_tree_r): Likewise.
1494         (remap_save_expr): Likewise.
1495         (unsave_r): Likewise.
1496         (unsave_expr_now): Likewise.
1497         (tree_function_versioning): Likewise.
1498         (build_duplicate_type): Likewise.
1499         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
1500         (struct copy_body_data): Replace splay-tree by pointer-map.
1501         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
1502         not $(SPLAY_TREE_H).
1503         (gimplify.o): Depend on $(SPLAY_TREE_H).
1504         (omp-low.p): Likewise.
1505
1506 2007-03-31  Anatoly Sokolov <aesok@post.ru>
1507
1508         * config/avr/predicates.md (even_register_operand,
1509         odd_register_operand): New predicates.
1510         * config/avr/avr.md (movw peephole2): New.
1511         (movw_r peephole2): New.
1512
1513 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
1514
1515         * tree.h (get_signed_or_unsigned_type): New.
1516         * fold-const.c (operand_equal_for_comparison_p): Use
1517         get_signed_or_unsigned_type instead of
1518         lang_hooks.types.signed_or_unsigned_type.
1519         * expr.c (store_expr): Ditto.
1520         * langhooks.c (get_signed_or_unsigned_type): New.
1521         (lhd_signed_or_unsigned_type): New.
1522         * langhooks.h (lhd_signed_or_unsigned_type): New.
1523         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
1524
1525 2007-03-30  Richard Henderson  <rth@redhat.com>
1526
1527         * tree-ssa-loop-ivopts.c: Include target.h.
1528         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
1529         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
1530         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
1531         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
1532
1533 2007-03-30  Richard Henderson  <rth@redhat.com>
1534             Kai Tietz  <kai.tietz@onevision.com>
1535
1536         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
1537         default for 64-bit.
1538         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
1539         (TARGET_64BIT_MS_ABI): New.
1540         (DBX_REGISTER_NUMBER): Handle 64-bit.
1541         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
1542         (LONG_TYPE_SIZE): Force to 32.
1543         (REG_PARM_STACK_SPACE): New.
1544         (OUTGOING_REG_PARM_STACK_SPACE): New.
1545         (REGPARM_MAX, SSE_REGPARM_MAX): New.
1546         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1547         (STACK_BOUNDARY): Use 128 for 64-bit.
1548         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
1549         Add 64-bit implementation.
1550         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
1551         argument unused.
1552         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
1553         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
1554         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
1555         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
1556         (ix86_handle_cconv_attribute): Don't warn when ignoring if
1557         TARGET_64BIT_MS_ABI.
1558         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
1559         (ix86_pass_by_reference): Likewise.
1560         (ix86_function_value_regno_p): Likewise.
1561         (ix86_build_builtin_va_list): Likewise.
1562         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
1563         (function_arg_advance_ms_64): New.
1564         (function_arg_advance): Call it.
1565         (function_arg_ms_64): New.
1566         (function_arg): Call it.
1567         (function_value_ms_64): New.
1568         (ix86_function_value_1): Call it.
1569         (return_in_memory_ms_64): New.
1570         (ix86_return_in_memory): Call it.
1571         (setup_incoming_varargs_ms_64): New.
1572         (ix86_setup_incoming_varargs): Call it.
1573         (ix86_expand_prologue): Handle 64-bit stack probing.
1574         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
1575         (output_pic_addr_const): Likewise.
1576         (x86_this_parameter): Likewise.
1577         (x86_output_mi_thunk): Likewise.
1578         (x86_function_profiler): Likewise.
1579         (TARGET_STRICT_ARGUMENT_NAMING): New.
1580         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
1581         (TARGET_64BIT_MS_ABI): New.
1582         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
1583         * config/i386/i386.md (allocate_stack_worker): Remove.
1584         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
1585         describe the clobber of eax without a match_scratch.
1586         (allocate_stack_worker_postreload): Remove.
1587         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
1588         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
1589         (allocate_stack_worker_rex64_postreload): Remove.
1590         (allocate_stack): Handle 64-bit.
1591         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
1592         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
1593         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
1594         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
1595         (STANDARD_STARTFILE_PREFIX_1): Likewise.
1596         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
1597         * config.build (x86_64-*-mingw*): New host.
1598         * config.host (x86_64-*-mingw*): New host.
1599         * config.gcc (x86_64-*-mingw*): New target.
1600         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
1601
1602 2007-03-30  Richard Henderson  <rth@redhat.com>
1603             Kai Tietz  <kai.tietz@onevision.com>
1604
1605         * c-pragma.c (struct def_pragma_macro_value): New.
1606         (struct def_pragma_macro): New.
1607         (pushed_macro_table): New.
1608         (dpm_hash, dpm_eq): New.
1609         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
1610         (init_pragma): Install them.
1611         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1612
1613 2007-03-30  Anatoly Sokolov <aesok@post.ru>
1614
1615         * config/avr/avr.c (avr_override_options): Clear
1616         'flag_delete_null_pointer_checks'.
1617
1618 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
1619
1620         PR c++/26099
1621         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
1622         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
1623         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
1624         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
1625         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
1626         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
1627         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
1628         C++ extensions.
1629         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
1630
1631 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
1632
1633         * regmove.c: Move all of pass_stack_adjustments from here...
1634         * combine-stack-adj.c: ...to this new file.
1635         * Makefile.in: Add rules for combine-stack-adj.o.
1636
1637 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
1638
1639         PR tree-optimization/31383
1640         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
1641         to have the same length.
1642
1643 2007-03-30  Jan Hubicka  <jh@suse.cz>
1644
1645         PR middle-end/30700
1646         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
1647         availablility; add more sanity checking; ask varpool only about
1648         VAR_DECL.
1649
1650 2007-03-29  Richard Henderson  <rth@redhat.com>
1651
1652         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
1653         to decide, but __SIZEOF_LONG_LONG__.
1654
1655 2007-03-29  Richard Henderson  <rth@redhat.com>
1656
1657         * emutls.c (struct __emutls_array): New.
1658         (emutls_destroy): Use it instead of casting element 0 from void*.
1659         (__emutls_get_address): Likewise.
1660
1661 2007-03-29  Richard Henderson  <rth@redhat.com>
1662
1663         * varasm.c (initializer_constant_valid_p): Don't deny
1664         DECL_DLLIMPORT_P on functions.
1665
1666         * config/i386/cygming.h: Remove function declarations.
1667         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
1668         (ASM_OUTPUT_LABELREF): Remove.
1669         (COMMON_ASM_OP): Remove.
1670         (ASM_OUTPUT_COMMON): Remove.
1671         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
1672         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
1673         (ASM_DECLARE_FUNCTION_NAME): Likewise.
1674         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
1675         Rename from TARGET_ENCODE_SECTION_INFO.
1676         * config/i386/netware.h: Likewise.
1677         * config/i386/i386-protos.h: Update.
1678         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
1679         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
1680         (legitimate_constant_p): Reject dllimports.
1681         (dllimport_map, get_dllimport_decl): New.
1682         (legitimize_dllimport_symbol): New.
1683         (legitimize_address, ix86_expand_move): Use it.
1684         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
1685         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
1686         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
1687         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
1688         * config/i386/predicates.md (constant_call_address_operand): Only
1689         accept symbols; reject dllimport_p symbols.
1690         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
1691         i386_pe_maybe_record_exported_symbol.
1692         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
1693         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
1694         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
1695         trust the setting of DECL_DLLIMPORT_P.
1696         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
1697         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
1698         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
1699         tidy the argument scanning loop.
1700         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
1701         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
1702         (i386_pe_strip_name_encoding): Remove.
1703         (i386_pe_binds_local_p): New.
1704         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
1705         (i386_pe_output_labelref): Remove.
1706         (i386_pe_asm_output_aligned_decl_common): New.
1707         (i386_pe_maybe_record_exported_symbol): Rename from
1708         i386_pe_record_exported_symbol; check for dllexported symbols.
1709
1710 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
1711
1712         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
1713         add comment explaining why vsnprintf cannot be used.
1714
1715 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
1716
1717         PR tree-optimization/30666
1718         * tree.c (build_complex_type): When creating type names for DWARF2
1719         debug info, create TYPE_DECLs for TYPE_NAME instead of
1720         IDENTIFIER_NODEs.
1721         (build_common_tree_nodes_2): Use build_complex_type when building
1722         predefined complex types, to preserve canonical types.
1723
1724 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
1725
1726         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
1727         (noce_get_alt_condition): Look at it to determine whether to
1728         reverse the condition or not.
1729         (noce_get_condition): Substitute the truth for lies.
1730         (noce_find_if_block): Set the then_else_reversed field.
1731
1732 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
1733
1734         * config/fr30/fr30.md (movdi): Do not accept immediates as the
1735         destination of this insn.
1736         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
1737         than calling gen_rtx_SET directly.  Use r0 to hold the value of
1738         'address + 4' rather than a stack based temporary which can be
1739         mis-optimized away.
1740
1741 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1742
1743         * config/s390/s390.c (s390_secondary_input_reload_class,
1744         s390_secondary_output_reload_class): Functions removed.
1745         (s390_secondary_reload): New function.
1746         (TARGET_SECONDARY_RELOAD): Target macro defined.
1747         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
1748         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
1749         * config/s390/s390.md ("reload_outti", "reload_outdi",
1750         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
1751         "reload_out<mode>"): Expanders removed.
1752         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
1753         "reload<mode>_nonoffmem_out"): Expanders added.
1754
1755 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1756
1757         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
1758         SRC->DEST replacement failed anyway.
1759
1760 2007-03-28  Mike Stump  <mrs@apple.com>
1761
1762         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
1763         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
1764         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
1765
1766 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1767
1768         * config.gcc: Accept barcelona as a variant of amdfam10.
1769         * config/i386/i386.c (override_options): Likewise.
1770         * doc/invoke.texi: Likewise.
1771
1772 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
1773
1774         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
1775         offsets for BIT_FIELD_REF and COMPONENT_REF.
1776
1777 2007-03-28  Richard Guenther  <rguenther@suse.de>
1778
1779         * tree.c (is_global_var): Move ...
1780         * tree-flow-inline.h (is_global_var): ... here.
1781         * tree.h (is_global_var): Remove declaration.
1782
1783 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
1784
1785         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
1786         option.
1787         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
1788         * config/i386/i386.c (ix86_tune_features): Initialize new
1789         tuning option.
1790         * config/i386/predicates.md (promotable_binary_operator): Use
1791         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
1792
1793 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
1794
1795         PR target/31380
1796         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
1797
1798 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
1799
1800         * config/fr30/fr30.md (movsi_internal): Change destination
1801         constraint from m to V and add m to the end.
1802
1803 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1804
1805         * config/sh/sh.md (movsi_i): Fix type attribute.
1806
1807 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1808
1809         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
1810         (movsf_ie): Likewise.
1811
1812 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1813
1814         * config.gcc: Add sh4-300 to multilib.
1815         * config/sh/t-mlib-sh4-300: New file.
1816
1817 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1818
1819         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
1820         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
1821         fix_trunc<mode>di2.
1822         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
1823         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
1824         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
1825         "fixuns_trunctddi2"): Whitespace fix.
1826
1827 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1828
1829         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
1830         the definition of struct sh_args.
1831         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
1832         CALL_COOKIE_INT_REG_GET): Likewise.
1833
1834 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
1835
1836         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
1837         transformations are applied successfully.
1838
1839 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
1840
1841         * tree.c (tree_contains_struct): Permit 512 tree codes.
1842         * tree.h (tree_contains_struct): Ditto.
1843         (MAX_TREE_CODES): Ditto.
1844         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
1845         SPARE member to store remaining padding bits.
1846
1847 2007-03-27  Anatoly Sokolov <aesok@post.ru>
1848
1849         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
1850         architecture.
1851
1852 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
1853
1854         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
1855         * configure: Regenerate.
1856
1857         * configure: Regenerate using the correct version of autoconf.
1858
1859 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
1860
1861         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
1862         pointer regs.
1863         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
1864         regs to "__SP_L__" and "__SP_H__".
1865
1866 2007-03-27  Richard Guenther  <rguenther@suse.de>
1867
1868         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
1869         computations with it with a HOST_WIDE_INT variable.
1870
1871 2007-03-26  Mike Stump  <mrs@apple.com>
1872
1873         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
1874         objective-c-header, objective-c++-header and objc++-cpp-output
1875         support.
1876         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
1877
1878 2007-03-26  Richard Henderson  <rth@redhat.com>
1879
1880         PR target/31361
1881         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
1882         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
1883         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
1884         IX86_BUILTIN_PSRLQ128): New.
1885         (ix86_init_mmx_sse_builtins): Add them.
1886         (ix86_expand_builtin): Expand them.
1887         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
1888         operand 2 be TImode.
1889         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
1890         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
1891         _mm_srli_epi64): Mark __B const.
1892         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
1893         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
1894         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
1895         new two-vector shift builtins.
1896
1897 2007-03-26  Ian Lance Taylor  <iant@google.com>
1898
1899         PR tree-optimization/31345
1900         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
1901         [+INF, +INF(OVF)] into VARYING.
1902
1903 2007-03-26  Zack Weinberg  <zackw@panix.com>
1904
1905         * gengtype-parse.c: New file.
1906         * gengtype-yacc.y: Delete.
1907         * gengtype-lex.l: Don't include gengtype-yacc.h.
1908         Define YY_DECL and yyterminate appropriately for recursive
1909         descent parser.  yylval is now a string out-parameter to yylex.
1910         (HWS, EOID): New shorthand.
1911         (IWORD): Add a couple more types.
1912         (yylex): Add a setup stanza.  Remove the complex rules for
1913         detecting GTY'ed types and typedefs; replace with simple
1914         keyword detectors.  Adjust everything for the changed
1915         definition of yylval.  Ignore all pp-directives, not just #define.
1916         (yyerror): Delete.
1917         (parse_file): Rename yybegin; do not call yyparse.
1918         (yyend): New.
1919         * gengtype.c (xasprintf): Export again.
1920         (this_file): New.  Use everywhere __FILE__ was being used.
1921         (get_lang_bitmap): Special case types defined in gengtype.c.
1922         (do_typedef, new_structure): Suppress definition of certain types.
1923         (new_structure): Improve diagnostics of duplicate definitions.
1924         Make sure location_s is associated with input.h.
1925         (nreverse_pairs, define_location_structures): New functions.
1926         (main): Improve tagging of kludge types.  Remove old kludges
1927         for input.h types; use define_location_structures.
1928         * gengtype.h: Update prototypes.  Define token codes here.
1929         * Makefile.in: Remove all references to gengtype-yacc.
1930         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
1931         and gengtype.
1932         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
1933         add GTY((skip)) to the field that's only conditionally there.
1934         * doc/install.texi: Document that Bison is no longer required
1935         unless building treelang.
1936
1937         * gengtype.c: Don't include gtyp-gen.h.
1938         (srcdir): Declare here.
1939         (base_files, lang_dir_names): Allocate dynamically.
1940         (gt_files, num_gt_files, num_lang_dirs): New globals.
1941         (measure_input_list, read_input_line, read_input_list)
1942         (set_lang_bitmap): New functions.
1943         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
1944         simplify, relying on read_input_list to set up the bitmaps.
1945         (main): Arguments are no longer unused.  Check for correct number
1946         of command line arguments, set srcdir and srcdir_len, then call
1947         read_input_list, before doing anything else.  No need to worry
1948         about duplicates in main loop.
1949         * configure.ac: Simplify the calculation of all_gtfiles.
1950         Put language tags in there.  Don't set or substitute
1951         all_gtfiles_files_langs or all_gtfiles_files_frags.
1952         * Makefile.in: Revamp the way gengtype is invoked, now that it
1953         takes a file on its command line with a much simpler format.
1954         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
1955         (GTFILES): Remove duplicates and C source files.
1956         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
1957         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
1958         * configure: Regenerate.
1959
1960         * gengtype.h: Remove all type definitions to gengtype.c; leave
1961         only definitions of options_p, type_p, and pair_p as opaque
1962         pointers.  Update prototypes.
1963         * gengtype.c: Many type definitions moved here from gengtype.h.
1964         Consolidate type definitions at the top of the file.
1965         (xvasprintf): Delete.
1966         (xasprintf): Make static.
1967         (create_nested_pointer_option): Add 'next' parameter.
1968         (create_field_all, create_field_at): New functions.
1969         (create_field): Now a thin wrapper around create_field_all.
1970         (create_optional_field): Rename create_optional_field_ and add
1971         line argument.  Original name is now a macro which supplies
1972         __LINE__.
1973         (oprintf): Use vsnprintf directly.
1974         (close_output_files): Use fatal rather than perror/exit.
1975         (note_def_vec, note_def_vec_alloc): Use create_field_at.
1976         (main): Set progname.  Don't use exit.
1977         * gengtype-yacc.y (struct_fields): Use create_field_at.
1978         (option, optionseqopt): Delete.
1979         (optionseq): Consolidate productions from option here so we
1980         can use the first argument to create_option.
1981
1982         * gengtype-lex.l: Distinguish unions from structures in the
1983         token type.  Don't call find_structure; return the tag as a string.
1984         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
1985         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
1986         Reorganize typedef_struct production accordingly.
1987         Use create_nested_ptr_option.
1988         * gengtype.c (create_nested_ptr_option): New function.
1989         * gengtype.h: Declare it.
1990
1991         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
1992         (string_type): Don't declare.
1993         (do_scalar_typedef): Declare.
1994         (create_scalar_type): Update prototype.
1995         * gengtype.c (string_type): Make static.
1996         (scalar_nonchar, scalar_char): New.
1997         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
1998         (resolve_typedef): Use scalar_nonchar for error recovery.
1999         (create_scalar_type): Remove name_len field.  Return scalar_char
2000         or scalar_nonchar as appropriate.
2001         (adjust_field_type): Look at scalar_is_char boolean to decide whether
2002         to use string_type.
2003         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
2004         whenever possible.
2005         (main): Initialize scalar_char and scalar_nonchar before calling
2006         gen_rtx_next.
2007         * gengtype-lex.l: Adjust for removal of second argument to
2008         create_scalar_type.  Use yylval.s instead of yylval.t when
2009         returning SCALAR.
2010         * gengtype-yacc.y: Type of SCALAR is string.  Call
2011         create_scalar_type from type:SCALAR rule.  Adjust for removal of
2012         second argument to create_scalar_type.
2013
2014         * vec.h: Remove all #if IN_GENGTYPE blocks.
2015         Add comment saying that changes may require adjustments to gengtype.
2016         * gengtype.c: Don't include coretypes.h or tm.h.
2017         Add comment to inclusion of errors.h.
2018         (note_def_vec, note_def_vec_alloc): New functions.
2019         * gengtype.h: Declare new functions.
2020         * gengtype-lex.l: Don't include coretypes.h.
2021         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
2022         Delete.
2023         (update_lineno): Remove unnecessary prototype.
2024         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
2025         (VEC rule): Just return VEC_TOKEN.
2026         * gengtype-yacc.y (VEC_TOKEN): New token type.
2027         (type): Add a production for VEC(a,b).
2028         * Makefile.in: Update dependencies.
2029
2030         * gengtype-lex.l: Remove rules for parsing pointer-to-function
2031         typedefs that use the old PARAMS macro.
2032
2033         * gengtype-lex.l: Remove all rules and states relating to yacc
2034         input files.
2035         * gengtype-yacc.y: Similarly.
2036         * gengtype.c (note_yacc_type): Delete function.
2037         * gengtype.h: Update prototypes.
2038
2039 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
2040
2041         * tree-pretty-print.c (dump_generic_node): Report precision of
2042         unnamed integer types.
2043
2044 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
2045
2046         * ifcvt.c (noce_try_store_flag_constants): Don't check
2047         no_new_pseudos here.
2048         (noce_try_store_flag_constants): Don't check no_new_pseudos.
2049         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
2050         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
2051         noce_try_sign_mask): Likewise.
2052         (if_convert): Check no_new_pseudos here.
2053
2054         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
2055         Remove prototypes.
2056         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
2057         (noce_get_condition): Handle new then_else_reversed argument.
2058         (noce_init_if_info): Remove, fold into noce_find_if_block.
2059         (noce_process_if_block): Take a struct noce_if_info as the
2060         argument.  Don't set up one based on ce_if_info.  Update pointer
2061         references accordingly.
2062         (cond_move_process_if_block): Likewise.
2063         (process_if_block): Removed.
2064         (find_if_block): Removed.  Move functionality two new functions,
2065         noce_find_if_block and cond_exec_find_if_block.
2066         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
2067         blocks and the symmetric IF-ELSE-JOIN case.
2068         (cond_exec_find_if_block): Also new function mostly based on old
2069         find_if_block and process_if_block.
2070         (find_if_header): Replace find_if_block call with separately
2071         guarded calls to noce_find_if_block and cond_exec_find_if_block.
2072         (find_cond_trap): Update noce_get_condition call.
2073         (dead_or_predicable): Likewise.
2074
2075 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
2076
2077         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
2078         Remove.
2079         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
2080         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
2081         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
2082         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
2083         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
2084         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
2085         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
2086         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
2087         __builtin_ia32_psrad128 builtins.
2088
2089 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
2090
2091         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
2092         * config/i386/constraints.md
2093         (define_constraint "I"): Use IN_RANGE macro.
2094         (define_constraint "J"): Ditto.
2095         (define_constraint "K"): Ditto.
2096         (define_constraint "M"): Ditto.
2097         (define_constraint "N"): Ditto.
2098         (define_constraint "O"): Ditto.
2099         * config/i386/predicates.md
2100         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
2101         (define_predicate "const_0_to_3_operand"): Ditto.
2102         (define_predicate "const_0_to_7_operand"): Ditto.
2103         (define_predicate "const_0_to_15_operand"): Ditto.
2104         (define_predicate "const_0_to_63_operand"): Ditto.
2105         (define_predicate "const_0_to_255_operand"): Ditto.
2106         (define_predicate "const_1_to_31_operand"): Ditto.
2107         (define_predicate "const_2_to_3_operand"): Ditto.
2108         (define_predicate "const_4_to_7_operand"): Ditto.
2109
2110 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
2111
2112         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
2113         in SImode for save_world.
2114         * config/rs6000/altivec.md (save_world, restore_world): Convert to
2115         LR hard reg.
2116
2117 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
2118
2119         PR tree-optimization/30784
2120         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
2121         BIT_FIELD_REF.
2122
2123 2007-03-25  Revital Eres  <eres@il.ibm.com>
2124
2125         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
2126           Fold movement_possibility function into it.
2127
2128 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
2129
2130         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
2131         (load_macho_picbase_{si,di}): Convert to LR hard reg.
2132         (call_indirect_nonlocal_darwin64): Same.
2133         (call_nonlocal_darwin64): Same.
2134         (call_value_indirect_nonlocal_darwin64): Same.
2135         (call_value_nonlocal_darwin64): Same.
2136         (sibcall_nonlocal_darwin64): Same.
2137         (sibcall_value_nonlocal_darwin64): Same.
2138         (sibcall_symbolic_64): Same.
2139         (sibcall_value_symbolic_64): Same.
2140         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
2141         LR pseudo.
2142         (rs6000_emit_load_toc_table): Same.
2143         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
2144         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
2145         (mull_call): Same.
2146         (divss_call): Same.
2147         (divus_call): Same.
2148         (quoss_call): Same.
2149         (quous_call): Same.
2150         (load_toc_v4_pic_si): Same
2151         (load_toc_v4_PIC_1): Same.
2152         (load_toc_v4_PIC_1b): Same.
2153         (call_indirect_aix{32,64}): Same.
2154         (call_value_indirect_aix{32,64}): Same.
2155         (call): Same.
2156         (call_value): Same.
2157         (call_local{32,64}): Same.
2158         (call_value_local{32,64}): Same.
2159         (call_indirect_nonlocal_aix{32,64}): Same.
2160         (call_nonlocal_aix{32,64}): Same.
2161         (call_value_indirect_nonlocal_aix{32,64}): Same.
2162         (call_value_nonlocal_aix{32,64}): Same.
2163         (call_indirect_nonlocal_sysv<mode>): Same.
2164         (call_nonlocal_sysv<mode>): Same.
2165         (call_value_indirect_nonlocal_sysv<mode>): Same.
2166         (call_value_nonlocal_sysv<mode>): Same.
2167         (sibcall): Same.
2168         (sibcall_local{32,64}): Same.
2169         (sibcall_value_local{32,64}): Same.
2170         (sibcall_nonlocal_aix{32,64}): Same.
2171         (sibcall_value_nonlocal_aix{32,64}): Same.
2172         (sibcall_nonlocal_sysv<mode>): Same.
2173         (sibcall_value): Same.
2174         (sibcall_value_nonlocal_sysv<mode>): Same.
2175
2176 2007-03-24  Paul Brook  <paul@codesourcery.com>
2177
2178         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
2179         * config/arm/linux-eabi.h: Remove legacy syscall hack.
2180
2181 2007-03-24  Richard Henderson  <rth@redhat.com>
2182
2183         * config/ia64/constraints.md: New file.
2184         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
2185         satisfies_constraint_?.
2186         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
2187         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
2188         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
2189         ia64_output_mi_thunk): Likewise.
2190         (ia64_const_ok_for_letter_p): Remove.
2191         (ia64_const_double_ok_for_letter_p): Remove.
2192         (ia64_extra_constraint): Remove.
2193         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
2194         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
2195         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
2196         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
2197         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
2198         EXTRA_MEMORY_CONSTRAINT): Remove.
2199         * config/ia64/ia64.md: Include constriants.md.  Replace
2200         CONST_OK_FOR_? with satisfies_constraint_?.
2201
2202 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
2203             H.J. Lu  <hongjiu.lu@intel.com>
2204
2205         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
2206         DPD or BID name.
2207         (name macros): Use DPD_BID_NAME to convert names properly.
2208
2209         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
2210         decimal floating point format.
2211         (init_floating_libfuncs): Change decimal functions so that they
2212         have a "bid_" prefix if the decimal system uses the BID format,
2213         and "dpd_" prefix if the decimal system uses the DPD format.
2214         (init_interclass_conv_libfuncs): Ditto.
2215         (init_intraclass_conv_libfuncs): Ditto.
2216
2217         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
2218         using the BID format.
2219
2220         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
2221         whether we are using the BID decimal format.
2222         * configure: Regenerate.
2223
2224         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
2225         the compiler has decimal floating point enabled.  Define
2226         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
2227         instead of DPD.
2228
2229         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
2230         using the BID format.
2231
2232         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
2233         whether we are using the BID decimal format.
2234         * configure: Regenerate.
2235
2236         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
2237         the compiler has decimal floating point enabled.  Define
2238         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
2239         instead of DPD.
2240
2241         * doc/install.texi (--enable-decimal-float): Document BID and DPD
2242         options, and that it is enabled for i386/x86_64 systems.
2243
2244         * Makefile.in (enable_decimal_float): New.
2245         (DECNUMFMT): New.
2246         (DECNUMINC): Add  -I$(DECNUMFMT).
2247         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
2248         to $(DECNUMFMT) from $(DECNUM).
2249
2250         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
2251         Substitute enable_decimal_float.
2252         * configure: Regenerated.
2253
2254         PR other/30529
2255         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
2256         unsigned long.
2257
2258         * configure.ac: Enable decimal float for x86_64-*-linux*.
2259         * configure: Regenerated.
2260
2261         PR other/30530
2262         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
2263         decimal128ClearSign to flip and clear the sign bit in decimal128.
2264         (decimal_real_maxval): Set decimal128SetSign to set the sign
2265         bit in decimal128.
2266
2267 2007-03-23  Ian Lance Taylor  <iant@google.com>
2268
2269         * fold-const.c (fold_binary): Correct warning for X - c >= X.
2270
2271 2007-03-23  Ian Lance Taylor  <iant@google.com>
2272
2273         * tree-dump.c (dump_files): Correct comment.
2274
2275 2007-03-23  Ian Lance Taylor  <iant@google.com>
2276
2277         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
2278
2279 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
2280
2281         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
2282         in cfglayout mode.  Don't go into and out of cfglayout mode.
2283         Link the blocks in the order of the constructed traces.
2284         (rest_of_handle_tracer): Adjust call to tracer.
2285         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
2286         Don't go into cfglayout mode.
2287         (rtl_loop_done): Don't go out of cfglayout mode.
2288         * cfglayout.c (relink_block_chain): New function, split out from...
2289         (fixup_reorder_chain): ...here.  Remove redundant checking.
2290         (cfg_layout_finalize): Don't clear the header, footer, and aux
2291         fields here, move the code to do so to relink_block_chain.  Likewise
2292         for free_original_copy_tables.
2293         * rtl.h (tracer): Update prototype.
2294         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
2295         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
2296         mode.  Use relink_block_chain to serialize the CFG according to the
2297         new basic block order.  Move targetm.cannot_modify_jumps_p check from
2298         here...
2299         (gate_handle_reorder_blocks): ...to here.
2300         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
2301         from here...
2302         (gate_duplicate_computed_gotos): ...to here.
2303         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
2304         something always changes when going into and out of cfglayout mode.
2305         Perform an expensive cfg cleanup while going into cfglayout mode.
2306         Always update liveness information on HAVE_conditional_execution
2307         targets.  Reserialize the basic blocks and go out of cfglayout mode.
2308         * reg-stack.c: Include cfglayout.h.
2309         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
2310         the call to reorder_basic_blocks.
2311         * basic-block.h (reorder_basic_blocks): Update prototype.
2312         (relink_block_chain): New prototype.
2313         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
2314
2315 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
2316
2317         * config/mips/mips.md (type, hazard, *movdi_32bit,
2318         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
2319         *movhi_internal, *movqi_internal, *movsf_hardfloat,
2320         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
2321         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
2322         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
2323         applicable.
2324         (movcc): Change first xfer to multi.
2325         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
2326         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
2327         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
2328         config/mips/generic.md: Change reservations using "xfer" to use
2329         "mfc,mtc".
2330         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
2331         using match_operand.
2332         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
2333         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
2334         examining mode.
2335         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
2336
2337 2007-03-22  Richard Henderson  <rth@redhat.com>
2338
2339         * config/i386/i386.c: Remove unnecessary function declarations.
2340         Move targetm definition, and all related macros, to the end of
2341         the file.  Resort some functions to put definitions before uses.
2342         (ix86_attribute_table): Make static.  Move to end of file.
2343         (ix86_gimplify_va_arg): Make static.
2344
2345 2007-03-22  Richard Henderson  <rth@redhat.com>
2346
2347         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
2348         don't increase local_regparm with force_align_arg_pointer check.
2349         (ix86_function_sseregparm): Assert 32-bit.
2350         (type_has_variadic_args_p): New.
2351         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
2352         type_has_variadic_args_p.
2353         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
2354         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
2355         use memset instead.  Do maybe_vaarg check first; skip attribute
2356         tests if true; skip attribute tests for 64-bit.
2357         (construct_container): Remove TARGET_DEBUG_ARG.
2358         (function_arg_advance_32, function_arg_advance_64): Split out ...
2359         (function_arg_advance): ... from here.
2360         (function_arg_32, function_arg_64): Split out ...
2361         (function_arg): ... from here.
2362         (ix86_pass_by_reference): Tidy.
2363         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
2364         (function_value_32): New, from parts of ix86_function_value
2365         and ix86_value_regno.
2366         (function_value_64): New, from parts of ix86_function_value
2367         and ix86_libcall_value.
2368         (ix86_function_value_1): New.
2369         (ix86_function_value, ix86_libcall_value): Use it.
2370         (return_in_memory_32, return_in_memory_64): Split out ...
2371         (ix86_return_in_memory): ... from here.
2372         (ix86_struct_value_rtx): Skip for 64-bit.
2373         (ix86_libcall_value, ix86_value_regno): Remove.
2374         (setup_incoming_varargs_64): Split out ...
2375         (ix86_setup_incoming_varargs): ... from here.
2376         (ix86_va_start): Remove TARGET_DEBUG_ARG.
2377         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
2378         * config/i386/i386-protos.h (ix86_function_value): Remove.
2379         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
2380
2381 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2382
2383         PR other/23572
2384         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
2385         infinities not supported, otherwise emit warning if -Woverflow. On
2386         underflow, emit warning if -Woverflow.
2387         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
2388         and 0 otherwise.
2389         * real.h (real_from_string): Update declaration
2390
2391 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
2392             Richard Henderson  <rth@redhat.com>
2393
2394         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
2395         * calls.c (compute_argument_block_size, expand_call,
2396         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
2397         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
2398         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
2399         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
2400         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
2401         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
2402         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
2403         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
2404         Set to 1.
2405
2406 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
2407
2408         * c-incpath.c (add_sysroot_to_chain): New.
2409         (merge_include_chains): Add sysroot argument.  Call
2410         add_sysroot_to_chain if sysrooted.
2411         (register_include_chains): Update call to merge_include_chains.
2412         * doc/cppopts.texi: Document use of '=' in include directory
2413         arguments.
2414
2415 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
2416
2417         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
2418         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
2419         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
2420         insn pattern using X87MODEF12 mode macro.
2421
2422 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
2423
2424         * regmove.c (regmove_optimize): Use reg_mentioned_p
2425         instead of reg_overlap_mentioned_p for DST.
2426
2427 2007-03-21  Mike Stump  <mrs@apple.com>
2428
2429         * c.opt: Fixup for Objective-C/C++.
2430
2431 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
2432
2433         * explow.c (convert_memory_address): Fold memory reference when
2434         POINTERS_EXTEND_UNSIGNED < 0
2435
2436 2007-03-21  Richard Henderson  <rth@redhat.com>
2437
2438         PR target/31245
2439         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
2440         * config/i386/mmintrin.h (__m64): Likewise.
2441         * config/i386/xmmintrin.h (__m128): Likewise.
2442
2443 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2444
2445         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
2446         (VXWORKS_OS_CPP_BUILTINS): Define.
2447         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
2448         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
2449
2450 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2451
2452         * rtl.h (constant_pool_reference_p): Delete.
2453         (find_constant_src): Declare.
2454         * rtlanal.c (find_constant_src): New function.
2455         * simplify-rtx.c (constant_pool_reference_p): Delete.
2456         * config/i386/i386.md: Use find_constant_src instead of
2457         constant_pool_reference_p/avoid_constant_pool_reference pairs.
2458
2459 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2460
2461         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
2462         * c-cppbuiltin.c (c_cpp_builtins): Define them.
2463
2464 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
2465
2466         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
2467         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
2468         (arm_elf_asm_constructor): Use it.
2469         (arm_elf_asm_destructor): New function.
2470
2471 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
2472
2473         * jump.c (mark_jump_label): Treat SEQUENCE specially.
2474
2475 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
2476
2477         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
2478
2479 2007-03-19  Andrew Haley  <aph@redhat.com>
2480
2481         PR tree-optimization/31264
2482         * tree-vrp.c (register_edge_assert_for_1): Don't look though
2483         VIEW_CONVERT_EXPRs.
2484
2485 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
2486
2487         PR rtl-optimization/30907
2488         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
2489         (fwprop_init): Always call loop_optimizer_initialize.
2490         (fwprop_done): Always call loop_optimizer_finalize.
2491         (fwprop): We always have loop info now.
2492         (gate_fwprop_addr): Remove.
2493         (pass_fwprop_addr): Use gate_fwprop as gate.
2494
2495         PR rtl-optimization/30841
2496         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
2497         df_chain_alloc): Call df_reorganize_refs unconditionally.
2498         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
2499         refs_organized to refs_organized_size.
2500         (df_ref_create_structure): Use refs_organized_size instead of
2501         bitmap_size if refs had been organized, and keep refs_organized_size
2502         up-to-date.
2503         * df.h (struct df_ref_info): Change refs_organized to
2504         refs_organized_size.
2505         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
2506         bitmap_size.
2507
2508 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
2509
2510         * except.c (output_function_exception_table): Do not reference the
2511         EH personality routine for functions that do not require an
2512         exception table.
2513
2514 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
2515
2516         PR c/30762
2517         * c-typeck.c (convert_for_assignment): Call comptypes for
2518         RECORD_TYPE or UNION_TYPE.
2519
2520         PR inline-asm/30505
2521         * reload1.c (reload): Do invalid ASM checking after
2522         cleanup_subreg_operands.
2523
2524 2007-03-19  Jeff Law  <law@redhat.com>
2525
2526         * tree-cfg.c (find_taken_edge): Tighten conditions for
2527         optimizing computed gotos.
2528
2529 2007-03-19  Michael Matz  <matz@suse.de>
2530
2531         * builtins.c (expand_builtin_sync_operation,
2532         expand_builtin_compare_and_swap,
2533         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
2534         correctly.
2535
2536         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
2537         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
2538         for operand 3.
2539
2540 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2541
2542         * doc/tm.texi: Add brackets around the return type of
2543         TARGET_SECONDARY_RELOAD.
2544
2545 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2546         Richard Guenther  <rguenther@suse.de>
2547
2548         PR tree-optimization/31254
2549         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
2550         Use handled_component_p () where appropriate.  Continue
2551         propagating into the rhs if we propagated into an INDIRECT_REF
2552         on the lhs.
2553
2554 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2555
2556         * config/s390/s390.md (op_type attribute): RRR instruction type added.
2557         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
2558         (xde, xdee): Mode attributes adjusted to support DFP modes.
2559         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
2560         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
2561         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
2562         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
2563         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
2564         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2565         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
2566         numbers.
2567         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
2568         "movsf"): Insn definitions removed.
2569         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
2570         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
2571         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
2572         definitions added.
2573         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
2574         "reload_in<mode>", "reload_out<mode>"): Expander added.
2575         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
2576         Expander removed.
2577
2578 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2579
2580         * config/s390/s390.md: Only non-functional changes.  Renamed
2581         FPR mode macro to BFP all over the file.
2582
2583 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2584
2585         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
2586         (op_type attribute): RRF instruction type added.
2587         (fT0): New mode attribute.
2588         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2589         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
2590         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
2591         no secondary memory is needed when moving DFmode values between GPRs
2592         and FPRs.
2593
2594 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2595
2596         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
2597         inverted and documentation adjusted.
2598         ("mhard-dfp", "msoft-dfp"): New options.
2599         * config/s390/s390.c (s390_handle_arch_option): New architecture
2600         switch: z9-ec.
2601         (override_options): Sanity checks for the new options added.
2602         * config.gcc: New architecture switch: z9-ec.
2603         * config/s390/s390.h (processor_flags): PF_DFP added.
2604         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
2605         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
2606         when the bit is NOT set so remove it from the defaults.
2607
2608 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2609
2610         * genemit.c (main): Print include statement for dfp.h.
2611         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
2612         is not available.
2613
2614 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2615
2616         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
2617
2618 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
2619
2620         PR target/31022
2621         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
2622         instead of PATTERN.
2623
2624 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2625
2626         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
2627         attr_length_call, output_call, output_indirect_call): Cleanup
2628         formatting of targetm calls.
2629
2630 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2631
2632         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2633
2634 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2635
2636         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
2637         reservation, bypass and anti-bypass descriptions for these instructions.
2638         Update move patterns.
2639         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
2640         TYPE_FPSTORE.
2641
2642 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
2643
2644         * tree-vect-transform.c (get_initial_def_for_induction): Replace
2645         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
2646         (get_initial_def_for_reduction): Likewise.
2647
2648 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
2649
2650         Fix PR tree-optimization/29922
2651         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
2652         (get_representative): Removed.
2653         (value_dies_in_block_x): Update for rvuse removal.
2654         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
2655         (compute_antic_aux): Handle when PHI nodes appear in
2656         non-single-successors.
2657         (dump_bitmap_of_names): Removed.
2658         (compute_antic_safe): Renamed and removed rvuse calculation.
2659         Calculate only antic safe.
2660         (insert_into_preds_of_block): Remove assert.
2661         (execute_pre): Update for renamed functions.
2662         (defer_or_phi_translate_block): New function.
2663
2664 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2665
2666         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
2667         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
2668         typos.
2669         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
2670         Follow spelling conventions.
2671
2672         * tree-data-ref.h: Remove the prototype for analyze_array.
2673
2674 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
2675
2676         PR tree-optimization/31041
2677         * tree-vect-transform.c (get_initial_def_for_induction): Call
2678         force_gimple_operand.
2679
2680 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
2681
2682         * ipa-type-escape.c (look_for_casts) : Revert code to use
2683         handled_component_p due to ada test a-numaux.adb.
2684
2685 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2686
2687         * final.c (final_scan_insn): Alter the condition of a
2688         conditional trap if we have nonstandard CC.
2689
2690 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2691
2692         * configure.ac: Remove excess quoting from asm line 0 test.
2693         * configure: Rebuilt.
2694
2695 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2696
2697         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
2698         * c-common.c (convert_and_check): Move warning logic to...
2699         (warnings_for_convert_and_check): ...here. Define.
2700         * c-common.h (warnings_for_convert_and_check): Declare.
2701
2702 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2703
2704         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
2705         (output_call): Likewise.
2706
2707 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2708
2709         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
2710
2711 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2712
2713         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
2714
2715 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
2716
2717         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
2718         opteron, athlon-64 and athlon-fx processor_alias_table entries.
2719
2720 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
2721
2722         PR tree-optimization/31183
2723         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2724         Use double_int instead of unsigned int for representing access_strides.
2725         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
2726
2727 2007-03-16  Richard Guenther  <rguenther@suse.de>
2728
2729         PR tree-optimization/31146
2730         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
2731         to allow recursion of forward_propagate_addr_expr.
2732         (forward_propagate_addr_into_variable_array_index): Likewise.
2733         (forward_propagate_addr_expr): Likewise.
2734         (tree_ssa_forward_propagate_single_use_vars): Likewise.
2735         (forward_propagate_addr_expr_1): Recurse on simple copies
2736         instead of propagating into them.  Do so for useless conversions
2737         as well.
2738         (forward_propagate_addr_expr): Clean up unused statements after
2739         recursion.
2740
2741 2007-03-16  Richard Guenther  <rguenther@suse.de>
2742
2743         * builtins.c (expand_builtin_cexpi): Use the right argument
2744         for the expansion via cexp.
2745
2746 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2747
2748         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
2749         * configure: Rebuilt.
2750
2751 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2752
2753         PR debug/29906
2754         * dwarf2out.c (force_type_die): Adjust comment.
2755         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
2756
2757 2007-03-15  DJ Delorie  <dj@redhat.com>
2758
2759         * config/frv/predicates.md (minmax_operator): Don't check operands
2760         here.
2761
2762 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2763
2764         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
2765         Update constant estimates of number of iterations.
2766         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
2767         argument renamed to "realistic".
2768         (compute_estimated_nb_iterations): Removed.
2769         (record_niter_bound): New function.
2770         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
2771         call record_nonwrapping_iv with upper = false.
2772         (infer_loop_bounds_from_signedness): Pass upper argument to
2773         record_nonwrapping_iv.
2774         (estimate_numbers_of_iterations_loop): Do not call
2775         compute_estimated_nb_iterations.  Record estimate based on profile
2776         information.  Initialize the constant estimates of number of
2777         iterations.
2778         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
2779         estimates.
2780         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
2781         number of iterations is too small.
2782         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
2783         (EST_NOT_AVAILABLE): Removed.
2784         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
2785         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
2786         fields.
2787
2788 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2789
2790         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
2791         Handle NE_EXPR guards.
2792
2793 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2794
2795         PR c++/24924
2796         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
2797         Set also -pedantic-errors by default for the  preprocessor unless
2798         -fpermissive is given.
2799
2800 2007-03-15  Richard Guenther  <rguenther@suse.de>
2801
2802         PR middle-end/29719
2803         PR middle-end/31161
2804         * builtins.c (expand_builtin_cexpi): As a fallback if we
2805         don't have builtins for sincos or cexp create a function
2806         declaration for cexp and expand to a call to that.
2807         (expand_builtin_int_roundingfn): Always fall
2808         back to floor/ceil and its variants even if they may be
2809         not available.
2810
2811 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
2812
2813         PR middle-end/31159
2814         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
2815         jump tables, move the call to delete_dead_jumptables from here...
2816         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
2817         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
2818         don't allow merging of blocks that try_redirect_by_replacing_jump
2819         also does not handle when not optimizing.
2820
2821 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2822             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2823
2824         * config/i386/i386.md (x86_sahf_1): Correctly handle
2825         HAVE_AS_IX86_SAHF.
2826
2827 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2828
2829         PR target/31167
2830         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
2831         x86_64_general_operand as operand[2] predicate.  Remove "iF"
2832         from operand constraints and use "e" constraint instead.
2833         (*subti3_1, *subti3_1 splitter): Ditto.
2834         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
2835         operand[1] predicate.
2836
2837 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
2838
2839         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
2840         arrays, multiply the access strides by the size of the sub-array.
2841         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
2842
2843 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2844
2845         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
2846         the configured assembler supports the sahf mnemonic.
2847         * configure: Regenerate.
2848         * config.in: Regenerate.
2849
2850         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
2851         emit "sahf" or ".byte\t0x9e" as asm template.
2852
2853 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
2854
2855         PR 31018
2856         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
2857         option to replace hard coded TARGET_xxx in md file.
2858         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
2859         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2860         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
2861         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
2862         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
2863         (X86_TUNE_NOT_VECTORMODE): Ditto.
2864         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
2865         (TUNE_AVOID_VECTOR_DECODE): Ditto.
2866         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2867         (TUNE_SLOW_IMUL_IMM8): Ditto.
2868         (TUNE_MOVE_M1_VIA_OR): Ditto.
2869         (TUNE_NOT_UNPAIRABLE): Ditto.
2870         (TUNE_NOT_VECTORMODE): Ditto.
2871
2872         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
2873         options.
2874
2875         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
2876         tuning options instead of hard coded TARGET_xxx.
2877         (fix ssemode peephole2's): Ditto.
2878         (imul peephole2's): Ditto.
2879         (movsi_or): Ditto.
2880         (movdi_or_rex64): Ditto.
2881         (move peephole2): Ditto.
2882         (not peephole2's): Ditto.
2883
2884 2007-03-14  Dirk Mueller  <dmueller@suse.de>
2885
2886         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
2887         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
2888         * c-parser.c (c_parser_if_body): Always add an empty statement in case
2889         of empty body.
2890         * c-parser.c (c_parser_do_statement): Warn about empty body in
2891         do/while statement.
2892         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
2893         * doc/invoke.texi (-Wempty-body): Update documentation.
2894
2895 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2896
2897         PR c/21438
2898         * c-common.h (warn_for_div_by_zero): Declare.
2899         * c-common.c (warn_for_div_by_zero): Define.
2900         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
2901         warning.
2902
2903 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2904
2905         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
2906         to PREFIX and STANDARD_PREFIX.
2907
2908 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2909             Phil Edwards  <phil@codesourcery.com>
2910
2911         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
2912         (__gthread_once_t): Remove busy field for RTPs.
2913         (__GTHREAD_ONCE_INIT): Update accordingly.
2914
2915 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2916
2917         * doc/invoke.texi: Document VxWorks options.
2918
2919 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2920
2921         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
2922
2923 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
2924
2925         PR tree-optimization/30590
2926         * tree-nrv.c (tree_nrv): Check for the partial update of the
2927         return value.
2928
2929 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2930
2931         * flags.h (flag_random_seed): Remove declaration, in favor of...
2932         * toplev.h (get_random_seed, set_random_seed): ... these.
2933         * tree.c (get_file_function_name): Use the former.
2934         * opts.c (common_handle_option): Use the latter.
2935         * toplev.c
2936
2937 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
2938
2939         PR middle-end/31127
2940         * cse.c (cse_find_path): Do not bail out if a basic block that
2941         we already visited now becomes part of a path that starts at a
2942         different basic block.  Just disallow this, to make sure we
2943         visit each basic block at most once.
2944
2945 2007-03-13  Jan Hubicka  <jh@suse.cz>
2946
2947         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
2948         when profile esitmate is present, calls with very low frequency are
2949         cold.
2950
2951 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
2952
2953         PR tree-optimization/30730
2954         PR tree-optimization/26900
2955         * tree-ssa-loop-niter.c: Include gmp.h.
2956         (bounds): New type.
2957         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
2958         split_to_var_and_offset, determine_value_range,
2959         bound_difference_of_offsetted_base, refine_bounds_using_guard,
2960         bound_difference, bounds_add, bounds_negate,
2961         number_of_iterations_ne_max, dump_affine_iv): New functions.
2962         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
2963         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
2964         difference of initial and final value of control iv to validate
2965         results.
2966         (number_of_iterations_cond): Add loop parameter.  Determine bounds
2967         on the difference of the extremes of the control iv.  Add dumps.
2968         (expand_simple_operations): Handle phi nodes.
2969         (simplify_using_initial_conditions): Do not record used conditions.
2970         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
2971         Do not set additional_info.
2972         (implies_nonnegative_p, implies_ge_p): Removed.
2973         (derive_constant_upper_bound): Do not use parameter `additional'.
2974         (record_estimate): Parameter `additional' removed.  Parameter
2975         `i_bound' added.  Do not call derive_constant_upper_bound.
2976         (record_nonwrapping_iv): Use derive_constant_upper_bound to
2977         bound the number of iterations estimate.
2978         (estimate_numbers_of_iterations_loop): Pass the estimate from
2979         the number of iterations analysis to record_estimate.
2980         * tree.h (multiple_of_p): Declare.
2981         * tree-scalar-evolution.c (expression_expensive_p): Removed.
2982         (scev_const_prop): Do not check expression_expensive_p.
2983         * fold-const.c (multiple_of_p): Exported.
2984         * double-int.c (double_int_mask): Exported.
2985         * double-int.h (double_int_mask): Declare.
2986         * tree-flow.h (struct tree_niter_desc): Removed additional_info
2987         field.  Added max field.
2988
2989 2007-03-13  David Taylor  <taylor@candd.org>
2990
2991         PR driver/12448:
2992         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
2993         default -MQ.
2994
2995 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2996
2997         PR target/31123
2998         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
2999         two unamed patterns.
3000
3001 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
3002
3003         * config/i386/i386.opt (mcx16, msahf): New options.
3004         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
3005         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
3006
3007         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
3008         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
3009         Output -mcx16 and -msahf options when corresponding bit is set.
3010
3011         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
3012         and -msahf options.
3013
3014 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
3015
3016         * configure.ac: Test for assembler tolerance to # 0 "".
3017         * configure, config.in: Rebuilt.
3018         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
3019
3020 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
3021
3022         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
3023
3024         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
3025         (handle_syscall): Handle direct system calls.
3026         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
3027
3028 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
3029
3030         * doc/invoke.texi: Fix cpp.info cross-reference.
3031         * doc/passes.texi: Fix gcc.info cross-reference.
3032
3033 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
3034
3035         PR tree-optimization/30835
3036         * lambda-code.c (can_convert_to_perfect_nest): Check whether
3037         bb_for_stmt is not NULL before accessing it.
3038
3039 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
3040
3041         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
3042         some multilibs.
3043
3044 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
3045
3046         PR 30635
3047         * doc/install.texi: Document --enable-stage1-languages
3048
3049 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
3050
3051         * tree-pass.h (pass_into_cfg_layout_mode,
3052         pass_outof_cfg_layout_mode): Declare.
3053         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
3054         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
3055         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
3056         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
3057
3058 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
3059
3060         * c-decl.c (warn_variable_length_array): New function.
3061         Refactored from grokdeclarator to handle warn_vla
3062         and handle unnamed array case.
3063         (grokdeclarator): Refactored VLA warning case.
3064         * c.opt (Wvla): New flag.
3065         * doc/invoke.texi (Wvla): New warning.
3066
3067 2007-03-12  Richard Henderson  <rth@redhat.com>
3068
3069         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
3070         (TARGET_SECTION_TYPE_FLAGS): New.
3071
3072 2007-03-12  Richard Henderson  <rth@redhat.com>
3073
3074         * config/darwin.c (machopic_reloc_rw_mask): New.
3075         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
3076         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
3077
3078 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
3079
3080         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
3081         * cppdefault.h (cpp_PREFIX): Document.
3082         (cpp_PREFIX_len): Likewise.
3083         (cpp_EXEC_PREFIX): New variable.
3084         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
3085         * c-incpath.c (add_standard_paths): Correct logic for relocating
3086         paths within prefix.
3087
3088 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
3089
3090         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
3091         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
3092         mode macro.
3093         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
3094         fix_truncdfdi_sse using SSEMODEF mode macro.
3095         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
3096         fix_truncdfsi_sse using SSEMODEF mode macro.
3097         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
3098         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
3099
3100 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
3101
3102         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
3103         elfos.h to tm_file.
3104
3105 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
3106
3107         * tree.h : Add multiple_of_p declaration.
3108         * fold-const.c (multiple_of_p): Make multiple_of_p public.
3109         * ipa-type-escape.c (results_of_malloc): Redundant.
3110         (visited_stmts): New. Visited stmt for walk_use_def_chains.
3111         (cast_type): Extended with new members.
3112         (check_cast): Returns cast_type.
3113         (cast): New structure for data of walk_use_def_chains.
3114         (is_malloc_result, is_cast_from_non_pointer_1,
3115         is_cast_from_non_pointer,
3116         is_array_access_through_pointer_and_index): New functions.
3117         (look_for_casts): Returns cast types.
3118         (check_call): Returns void.
3119         (okay_pointer_operation): Use support of pointer plus index,
3120         pointer plus constant and allow all multiplications.
3121
3122 2007-03-11  Richard Guenther  <rguenther@suse.de>
3123
3124         PR tree-optimization/31115
3125         * tree-vrp.c (extract_range_from_binary_expr): Make sure
3126         the shift count is positive and non-anti-range for RSHIFT_EXPR.
3127         A shift count of zero is not special as with *_DIV_EXPR.
3128         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
3129         direction.
3130
3131 2007-03-11  Ian Lance Taylor  <iant@google.com>
3132
3133         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
3134         the *_DIV_EXPR codes correctly with overflow infinities.
3135
3136 2007-03-11  Ira Rosen  <irar@il.ibm.com>
3137
3138         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
3139         indicate success/failure of the analysis. Add negation to subtrahend
3140         in case of subtraction. Fail if both operands contain constants.
3141         (create_data_ref): Fail if analyze_offset fails.
3142
3143 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
3144
3145         * config/i386/i386.md (frndintxf2): Rename to ...
3146         (rintxf2): ... this. Remove expander having same name.
3147         (rintsf2, rintdf2): Implement using SSEMODEF macro.
3148         (roundsf2, rounddf2): Ditto.
3149         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
3150         (lround<mode>di2, lround<mode>si2): Ditto.
3151
3152 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
3153
3154         * lower-subreg.c: Include except.h.
3155         (decompose_multiword_subregs): Verify that the only control flow
3156         insns we can split are loads to multi-words pseudos.
3157         Handle breaking such blocks after splitting, instead of calling
3158         find_many_sub_basic_blocks.
3159
3160         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
3161         on the new basic block.  Add a lengthy comment explaining why we
3162         thought this was necessary.
3163         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
3164
3165 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
3166
3167         PR c++/30924
3168         * tree.c (walk_type_fields): Recurse into the element type of
3169         ARRAY_TYPEs if there is a pointer set.
3170
3171 2007-03-10  Dirk Mueller  <dmueller@suse.de>
3172
3173         * c-common.c (warn_logical_operator): Fix condition.
3174
3175 2007-03-10  Tobias Schl├╝ter  <tobi@gcc.gnu.org>
3176
3177         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
3178         quotation mark.
3179         * config/darwin.c (machopic_select_section): Remove superfluous
3180         argument in call to categorize_decl_for_section.  Remove unused
3181         variable shlib.
3182
3183 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
3184
3185         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
3186         defined.
3187         * configure: Regenerate.
3188
3189 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
3190
3191         PR target/31101
3192         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
3193         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
3194         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
3195         Add LABEL_NUSES to emitted label.
3196         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
3197         branch probability value to emitted jump insn.
3198         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
3199         Do not check life information and do not re-arrange input operands
3200         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
3201
3202 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3203
3204         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
3205         the change of decode_asm_operands.
3206
3207 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3208
3209         * mode-switching.c (create_pre_exit): Skip blockage insn.
3210
3211 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
3212
3213         * tree-pass.h (TODO_update_smt_usage): Remove.
3214         Update all users.
3215         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
3216         argument SOME.
3217         Update all users.
3218
3219 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3220
3221         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
3222         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
3223         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
3224         SOM target.
3225
3226 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
3227
3228         * gcc.c: Document %{, in big comment at top.
3229         (input_suffix_matches): Remove special handling for .s and
3230         .S.
3231         (input_spec_matches): New.
3232         (handle_braces): Handle %{,.
3233         (validate_switches): ',' indicates a value which is not a switch.
3234         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
3235         to detect assembler input.
3236         * config/i386/sol2.h (CPP_SPEC): Likewise.
3237         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
3238         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
3239         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
3240         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
3241         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
3242         -m64 causes deployment target to default to 10.5.
3243         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
3244
3245 2007-03-09  Richard Henderson  <rth@redhat.com>
3246
3247         PR target/26090
3248         * target.h (targetm.asm.out.reloc_rw_mask): New.
3249         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
3250         (TARGET_ASM_OUT): Use it.
3251         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
3252         * varasm.c (categorize_decl_for_section): Remove shlib argument;
3253         use the new reloc_rw_mask target hook instead.
3254         (default_section_type_flags_1): Merge into...
3255         (default_section_type_flags): ... here.
3256         (decl_readonly_section_1): Merge into...
3257         (decl_readonly_section): ... here.
3258         (default_elf_select_section_1): Merge into...
3259         (default_elf_select_section): ... here.
3260         (default_unique_section_1): Merge into...
3261         (default_unique_section): ... here.
3262         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
3263         (default_select_rtx_section): Use it.
3264         (default_elf_select_rtx_section): Likewise.
3265         * output.h: Update to match.
3266         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
3267         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
3268         (TARGET_ASM_RELOC_RW_MASK): New.
3269         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
3270         to categorize_decl_for_section.
3271         (x86_64_elf_unique_section): Likewise.
3272         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
3273         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
3274         (TARGET_ASM_RELOC_RW_MASK): New.
3275         * config/ia64/ia64.c (ia64_rwreloc_select_section,
3276         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
3277         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
3278         (TARGET_RWRELOC): Remove.
3279         (ia64_section_type_flags): Adjust call to default_section_type_flags.
3280         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
3281         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
3282         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
3283         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
3284         (rs6000_xcoff_select_section): Use decl_readonly_section.
3285         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
3286         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
3287         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
3288         (TARGET_SECTION_TYPE_FLAGS): Remove.
3289         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
3290
3291 2007-03-09  Roger Sayle  <roger@eyesopen.com>
3292
3293         * fold-const.c (fold_comparison): Remove compile-time evaluation of
3294         complex constant equality/inequality comparisons for here.
3295         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
3296         known at compile-time or can be simplified to a scalar comparison.
3297         (fold_relational_const): Move compile-time evaluation of complex
3298         constant equality/inequality comparisons to here.
3299
3300 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3301
3302         PR rtl-optimization/30643
3303         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
3304         dest_addr_elt.
3305         (fold_rtx): Recurse, like before 2006-11-03.
3306
3307 2007-03-09  DJ Delorie  <dj@redhat.com>
3308
3309         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
3310         m32c-pragma.o.
3311
3312 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
3313
3314         PR tree-optimization/30375
3315         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
3316         LHS of statements is not the same.
3317         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
3318
3319 2007-03-09  Chao-ying Fu  <fu@mips.com>
3320
3321         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
3322         REV 2.
3323         * doc/invoke.texi (-mdspr2): Document new option.
3324         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
3325         New unspec for DSP REV 2.
3326         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
3327         these instructions are extended in DSP REV 2.
3328         (mips-dspr2.md): Include.
3329         * config/mips/mips.opt (mdspr2): New option.
3330         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
3331         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
3332         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
3333         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
3334         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
3335         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
3336         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
3337         and 2 builtins.
3338         (bdesc_map): Add one field of unsupported_target_flags.
3339         (bdesc_arrays):  Update entries to have extra fields.  Add
3340         dsp_32only_bdesc.
3341         (mips_init_builtins): Initialize new function types.
3342         Check unsupported_target_fileds to filter out builtins.
3343         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
3344         TARGET_DSPR2.
3345         (ASM_SPEC): Pass mdspr2 to the assembler.
3346         * config/mips/mips-dspr2.md: New file.
3347
3348 2007-03-09  Sa Liu  <saliu@de.ibm.com>
3349
3350         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
3351
3352 2007-03-09  Ian Lance Taylor  <iant@google.com>
3353
3354         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
3355         argument) like -Wstrict-overflow=2.
3356         * doc/invoke.texi (Warning Options): Update documentation.
3357
3358 2007-03-09  Dirk Mueller  <dmueller@suse.de>
3359
3360         PR c++/17946
3361         * doc/invoke.texi (-Wlogical-op): Document.
3362         * common.opt (-Wlogical-op): New.
3363         * c-common.h (warn_logical_operator): Declare.
3364         * c-common.c (warn_logical_operator): Define.
3365         * c-typeck.c (parser_build_binary_op): Call
3366         warn_logical_operator.
3367
3368 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3369
3370         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
3371         * final.c (final_scan_insn): Test for non-"" file name.
3372
3373 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
3374
3375         * doc/loop.texi: Document the Omega linear constraints solver.
3376         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
3377         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
3378         omega-hash-table-size, omega-max-keys, and
3379         omega-eliminate-redundant-constraints.
3380         * tree-pass.h (pass_check_data_deps): Declared.
3381         * omega.c: New.
3382         * omega.h: New.
3383         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
3384         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
3385         pass_check_data_deps): New.
3386         * tree-data-ref.c (init_data_ref): Remove declaration.
3387         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
3388         (analyze_array): Renamed init_array_ref, move up initializations.
3389         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
3390         Removed arguments that are set to NULL.
3391         (analyze_indirect_ref): Correct indentation, correct call to
3392         init_pointer_ref.
3393         (object_analysis): Call init_array_ref instead of analyze_array.
3394         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
3395         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
3396         of DR_ACCESS_FNS_ADDR.
3397         (init_omega_eq_with_af, omega_extract_distance_vectors,
3398         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
3399         ddr_consistent_p): New.
3400         (compute_affine_dependence): Check consistency of ddrs when
3401         flag_check_data_deps is passed.
3402         (analyze_all_data_dependences): Uncomment.
3403         (tree_check_data_deps): New.
3404         * tree-data-ref.h: Include omega.h.
3405         (DR_ACCESS_FNS_ADDR): Removed.
3406         (data_dependence_relation): Add inner_loop.
3407         (DDR_INNER_LOOP): New.
3408         * common.opt (fcheck-data-deps): New.
3409         * tree-flow.h (tree_check_data_deps): Declare.
3410         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
3411         (OBJS-common): Depend on omega.o.
3412         (omega.o): Define.
3413         * passes.c (pass_check_data_deps): Scheduled.
3414         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
3415         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
3416         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
3417         PARAM_VECT_MAX_VERSION_CHECKS,
3418         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
3419
3420 2007-03-09  Richard Guenther  <rguenther@suse.de>
3421
3422         PR tree-optimization/30904
3423         PR middle-end/31058
3424         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
3425         the same way as *_DIV_EXPR.
3426
3427 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3428
3429         * recog.c (decode_asm_operands): No mixed declarations and code.
3430
3431 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3432
3433         * rtl.def (ASM_INPUT): Add location.
3434         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
3435         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
3436         (decode_asm_operands): Add loc operand.
3437         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
3438         * stmt.c (expand_asm): Rename to...
3439         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
3440         gen_rtx_ASM_INPUT_loc.
3441         (expand_asm_expr): Adjust.
3442         * recog.c (decode_asm_operands): Add loc operand.
3443         (check_asm_operands, extract_insn): Adjust.
3444         * reload1.c (maybe_fix_stack_asms): Likewise.
3445         * final.c (asm_insn_count): Likewise.
3446         (final_scan_insn): Output # line before and after asm.
3447
3448 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
3449
3450         * tree-ssa-structalias.c (variable_info): Remove
3451         finished_solution.
3452         (new_var_info): Ditto.
3453         (shared_bitmap_info_t): New structure.
3454         (shared_bitmap_table): New variable.
3455         (shared_bitmap_hash): New function.
3456         (shared_bitmap_eq): Ditto
3457         (shared_bitmap_lookup): Ditto.
3458         (shared_bitmap_add): Ditto.
3459         (merge_smts_into): Change to take bitmap directly.
3460         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
3461         (init_alias_vars): Init shared bitmap hashtable.
3462         (delete_points_to_sets): Delete shared bitmap hashtable.
3463         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
3464         is_aliased removal as a change that was still necessary was
3465         deleted.
3466
3467 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
3468
3469         * config/i386/i386.h (override_options): Conditionally disable
3470         x86_sahf for 64bit targets only.
3471
3472 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3473
3474         PR C/31072
3475         * c-decl.c (merge_decls): Don't call make_var_volatile.
3476         * varasm.c (make_var_volatile): Remove.
3477         * output.h (make_var_volatile): Remove.
3478
3479 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
3480
3481         PR tree-optimization/31085
3482         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
3483
3484 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3485
3486         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
3487         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
3488         ATTR_CONST_NOTHROW_LIST.
3489
3490         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
3491         FIX_TRUNC_EXPR.
3492
3493 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
3494
3495         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
3496
3497 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
3498
3499         PR 31013
3500         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
3501         is declared.
3502         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
3503         passed, use shared libgcc.
3504
3505 2007-03-08  Roger Sayle  <roger@eyesopen.com>
3506
3507         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
3508         instead of calling build2 with a GIMPLE_MODIFY_STMT.
3509         (honor_protect_cleanup_actions, lower_try_finally_switch):
3510         Likewise.
3511         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
3512         ifc_temp_var): Likewise.
3513         * tree-inline.c (setup_one_parameter): Likewise.
3514         * tree-mudflap.c (mf_decl_cache_locals,
3515         mf_build_check_statement_for): Likewise.
3516         * tree-nested.c (init_tmp_var, save_tmp_var,
3517         finalize_nesting_tree_1): Likewise.
3518         * tree-outof-ssa.c (insert_copy_on_edge,
3519         insert_backedge_copies): Likewise.
3520         * tree-profile.c (tree_gen_edge_profiler,
3521         tree_gen_ic_profiler): Likewise.
3522         * tree-scalar-evolution.c (scev_const_prop): Likewise.
3523         * tree-sra.c (sra_build_assignment): Likewise.
3524         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
3525         * tree-ssa-math-opts.c (insert_reciprocals,
3526         execute_cse_sincos_1): Likewise.
3527         * tree-tailcall.c (adjust_accumulator_values,
3528         adjust_return_value): Likewise.
3529         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
3530         * tree-vect-transform.c (vect_create_data_ref_ptr,
3531         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
3532         vect_create_epilog_for_reduction, vectorizable_reduction,
3533         vectorizable_call, vectorizable_conversion,
3534         vectorizable_assignment, vectorizable_operation,
3535         vectorizable_type_demotion, vect_gen_widened_results_half,
3536         vect_permute_store_chain, vectorizable_store,
3537         vect_setup_realignment, vect_permute_load_chain,
3538         vectorizable_load, vectorizable_condition,
3539         vect_create_cond_for_align_checks): Likewise.
3540         * tree-vrp.c (build_assert_expr_for): Likewise.
3541
3542 2007-03-08  Ian Lance Taylor  <iant@google.com>
3543
3544         * tree-vrp.c: Include "intl.h".
3545         (usable_range_p): New static function.
3546         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
3547         overflowed values, juts set *strict_overflow_p.
3548         (compare_values): Only return -2 if one of the operands is not a
3549         constant.
3550         (compare_ranges): Call usable_range_p.
3551         (compare_range_with_value): Likewise.
3552         (vrp_evaluate_conditional_warnv): Rename from
3553         vrp_evaluate_conditional.  Make static.  Change all callers.
3554         (vrp_evaluate_conditional): New function.
3555         (simplify_div_or_mod_using_ranges): Issue warning about reliance
3556         on signed overflow.
3557         (simplify_abs_using_ranges): Likewise.
3558         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
3559         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
3560         within_stmt parameter.
3561         * tree-ssa-propagate.c (fold_predicate_in): Update call to
3562         vrp_evaluate_conditional.
3563         * tree-ssa-threadedge.c
3564         (record_temporary_equivalences_from_stmts_at_dest): Change
3565         simplify parameter to take a second tree parameter.
3566         (simplify_control_stmt_condition): Likewise.
3567         (thread_across_edge): Likewise.
3568         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3569         (thread_across_edge): Likewise.
3570         * Makefile.in (tree-vrp.o): Depend upon intl.h.
3571
3572 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
3573
3574         * config/i386/i386.h (TARGET_SAHF): New define.
3575         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
3576         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
3577         (x86_sahf): New global variable.
3578         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
3579         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
3580         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
3581         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
3582         for 64-bit.
3583         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
3584         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
3585         when expanding fcomi/sahf based tests.
3586         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
3587         expanding sahf based alternative. Emit sahf based sequence when
3588         optimizing for code size.
3589         * config/i386/i386.md (x86_sahf_1): Do not disable for
3590         TARGET_64BIT, enable for TARGET_SAHF.
3591
3592 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
3593
3594         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
3595         spurious whitespace from error message.
3596
3597 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
3598
3599         PR c++/30852
3600         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
3601
3602 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
3603
3604         * c-decl.c (grokdeclarator): Disable warnings for anonymous
3605         bitfields.
3606         * tree-sra.c (instantiate_element): Propagate disabled warnings
3607         from the element itself to the created variable.
3608
3609 2007-03-07  Richard Henderson  <rth@redhat.com>
3610
3611         PR target/30848
3612         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
3613         silently fix up the stack in the case of a missing register.
3614
3615 2007-03-07  Paul Brook  <paul@codesourcery.com>
3616
3617         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
3618
3619 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
3620
3621         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
3622         New.
3623         (phase1_vrs): Use them.
3624         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
3625         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
3626         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
3627         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
3628         __gnu_Unwind_Restore_WMMXC if required.
3629         (_Unwind_VRS_Pop): Implement iWMMXt support.
3630         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
3631         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
3632         gnu_Unwind_Save_WMMXC): Define.
3633
3634 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3635
3636         * config/vxworks.h (vxworks_override_options): Declare.
3637         (VXWORKS_OVERRIDE_OPTIONS): Use it.
3638         * config/vxworks.c: Include target.h and toplev.h.
3639         (vxworks_override_options): New function.
3640         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
3641
3642 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3643
3644         * config/s390/s390.c (override_options): Don't emit an error when
3645         -mstack-size is used without providing -mstack-guard.
3646         (s390_emit_prologue): Choose stack_guard value automatically if not
3647         provided via command line.
3648         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
3649
3650 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3651
3652         * config/i386/i386.c (output_set_got): Add a GOT initialization
3653         sequence for VxWorks PIC.
3654         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
3655         around labels as well as symbols.  Use gotoff_operand instead
3656         of local_symbolic_operand.
3657         (legitimize_pic_address): Use gotoff_operand instead of
3658         local_symbolic_operand.  Use @GOT accesses for labels as
3659         well as symbols.
3660         (ix86_output_addr_diff_elt): Use PC-relative rather than
3661         GP-relative offsets for VxWorks PIC.
3662         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
3663         no_new_pseudos.  Check whether the returned register is op0.
3664         * config/i386/i386.md (tablejump): Use PC-relative rather than
3665         GP-relative offsets for VxWorks PIC.
3666         * config/i386/predicates.md (gotoff_operand): New predicate.
3667
3668 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3669
3670         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
3671         before defining.
3672         * config/vxworks-dummy.h: New file.
3673         * config/i386/i386.h: Include it.
3674
3675 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
3676
3677         * dwarf2out.c (is_inlined_entry_point): New
3678         (add_high_low_attributes): Emit DW_AT_entry_pc along with
3679         DW_AT_ranges if the first subblock is the entry point.
3680
3681 2007-03-06  David Daney  <ddaney@avtrex.com>
3682
3683         * doc/install.texi (mips-*-*): Change recommended binutils
3684         version.
3685
3686 2007-03-06  Anatoly Sokolov <aesok@post.ru>
3687
3688         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
3689         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
3690         devices.
3691         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3692         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3693
3694 2007-03-06  Jan Hubicka  <jh@suse.cz>
3695
3696         * errors.h (warning, error, fatal, internal_error): Mark as cold.
3697         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
3698         are hot.
3699         (probably_cold_bb_p): Cold functions are cold.
3700         (probably_never_executed_bb_p): Cold functions are cold.
3701         (tree_bb_level_predictions): Predict calls to cold functions as not
3702         taken.
3703         (compute_function_frequency): Check hot/cold attributes.
3704         * function.h (function_frequency): Update comments.
3705         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
3706         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
3707         (c_common_att): Add cold and hot.
3708
3709         * doc/extend.texi (hot,cold attributes): Document.
3710
3711 2007-03-06  Andrew Haley  <aph@redhat.com>
3712
3713         * function.c (expand_function_end): Move blockage to just after we
3714         emit the label for the naked return from the function.
3715
3716 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3717
3718         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
3719         before redefining.
3720
3721 2007-03-06  Jan Hubicka  <jh@suse.cz>
3722
3723         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
3724         loaded for constant large models.  Non-large 64bit PIC can do.
3725         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
3726         * cmodel.h: Add LARGE PIC.
3727         * i386.md (UNSPEC_PLTOFF): New.
3728         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
3729         needed.
3730         (*call_1_rex64): Disable for large models.
3731         (*call_1_rex64_large): New.
3732         (*call_value_1_rex64): Disable for large models.
3733         (*call_value_1_rex64_large): New.
3734         (set_rip_rex4): New.
3735         (set_got_offset_rex64): New.
3736         * predicates.md (constant_call_address_operand): For large model
3737         constant calls are not possible.
3738         * i386-protos.h (construct_plt_address): Declare.
3739         * i386.c (override_options): Accept large models.
3740         (ix86_expand_prologue): Expand large PIC GOT pointer load.
3741         (legitimate_constant_p): Add new UNSPECs.
3742         (legitimate_pic_operand_p): Likewise.
3743         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
3744         (legitimize_pic_address): Do easy RIP relative way for TLS only for
3745         non-large model.
3746         (output_pic_addr_const): Add PLTOFF.
3747         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
3748         (ix86_expand_move): Legitimize pic address when in PIC mode.
3749         (construct_plt_address): New function.
3750         (ix86_expand_call): Offload the address to register and use GOT pointer
3751         for large model.
3752         * invoke.texi (mcmodel=large): Update documentation.
3753
3754 2007-03-06  Richard Henderson  <rth@redhat.com>
3755
3756         * config/i386/i386.c (x86_use_leave, x86_push_memory,
3757         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
3758         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
3759         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
3760         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
3761         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
3762         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
3763         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
3764         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
3765         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
3766         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3767         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
3768         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3769         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3770         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
3771         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
3772         x86_schedule, x86_use_bt, x86_pad_returns,
3773         x86_use_xchgb): Merge into ...
3774         (ix86_tune_features): ... here.  New array.
3775         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3776         x86_bswap): Merge into ...
3777         (ix86_arch_features): ... here.  New array.
3778         (x86_3dnow_a): Remove.
3779         (x86_accumulate_outgoing_args): Make static.
3780         (x86_arch_always_fancy_math_387): Make static.
3781         (ix86_tune_mask, ix86_arch_mask): Move ...
3782         (override_options): ... to local variables here.  Apply the
3783         appropriate mask to each element of ix86_arch_features and
3784         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
3785         as were done in the old macros.
3786         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
3787         * config/i386/i386.h (x86_use_leave, x86_push_memory,
3788         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
3789         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
3790         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
3791         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
3792         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
3793         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
3794         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
3795         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
3796         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
3797         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3798         x86_accumulate_outgoing_args, x86_prologue_using_move,
3799         x86_epilogue_using_move, x86_decompose_lea,
3800         x86_arch_always_fancy_math_387, x86_shift1,
3801         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3802         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3803         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
3804         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3805         x86_use_incdec, x86_pad_returns, x86_bswap,
3806         x86_partial_flag_reg_stall): Remove.
3807         (enum ix86_tune_indices): New.
3808         (ix86_tune_features): New.
3809         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
3810         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
3811         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
3812         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
3813         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
3814         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
3815         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
3816         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
3817         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
3818         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
3819         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
3820         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
3821         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
3822         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
3823         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
3824         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
3825         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
3826         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
3827         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
3828         TARGET_EXT_80387_CONSTANTS): Use it.
3829         (enum ix86_arch_indices): New.
3830         (ix86_arch_features): New.
3831         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
3832         TARGET_BSWAP): Use it.
3833         (ix86_tune_mask, ix86_arch_mask): Remove.
3834
3835 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
3836
3837         PR bootstrap/31020
3838         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
3839         Define using $${sysroot_headers_suffix}.
3840         * configure: Regenerate.
3841         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
3842         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
3843         defined.
3844         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
3845         * gcc.c (print_sysroot_headers_suffix): New.
3846         (option_map): Include --print-sysroot-headers-suffix.
3847         (display_help): Mention -print-sysroot-headers-suffix.
3848         (process_command): Handle -print-sysroot-headers-suffix.
3849         (do_spec_1): Append multilib directory to include-fixed path if
3850         sysroot suffixes in use.
3851         (main): Handle -print-sysroot-headers-suffix.
3852         * Makefile.in (start.encap): Don't depend on xlimits.h
3853         (xlimits.h): Remove.
3854         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
3855         limits.h for each multilib in fixinc_list.
3856         (fixinc_list, s-fixinc_list): New.
3857         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
3858         generate them for each multilib in fixinc_list.
3859         (stmp-fixproto): Use include-fixed.  Run fixproto for each
3860         multilib in fixinc_list.
3861         (mostlyclean): Don't remove xlimits.h.
3862         (clean): Remove include-fixed.
3863         (real-install-headers-tar, real-install-headers-cpio,
3864         real-install-headers-cp): Don't copy include, only include-fixed.
3865         (install-mkheaders): Depend on fixinc_list.  Don't depend on
3866         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
3867         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
3868         SYSTEM_HEADER_DIR setting in mkheaders.conf.
3869
3870 2007-03-06  Jan Hubicka  <jh@suse.cz>
3871
3872         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
3873         NANs easilly.
3874
3875 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3876
3877         * configure.ac: Allow tm_file to contain build-directory files.
3878         * configure: Regenerate.
3879         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
3880         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
3881         * config/m68k/print-sysroot-suffix.sh: New file.
3882
3883 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3884
3885         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
3886         of pic_offset_table_rtx if reload_completed.
3887         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
3888         PIC_OFFSET_TABLE_REGNUM.
3889         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
3890         return true.
3891         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
3892         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
3893
3894 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3895
3896         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3897         functions that call eh_return.
3898
3899 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3900
3901         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3902         functions that need a constant pool.
3903
3904 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3905
3906         PR target/28181
3907         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
3908         (m68k_preferred_reload_class): Likewise.
3909         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
3910         (SECONDARY_RELOAD_CLASS): Define.
3911         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
3912         (LIMIT_RELOAD_CLASS): Delete.
3913         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
3914         registers from storing bytes.
3915         (m68k_secondary_reload_class): New function.
3916         (m68k_preferred_reload_class): Likewise.
3917
3918 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3919
3920         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
3921         leaf functions.
3922         (m68k_expand_prologue): Likewise.
3923
3924 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3925
3926         * config/m68k/m68k-protos.h (output_sibcall): Declare.
3927         (mips_expand_epilogue): Add a bool parameter.
3928         (m68k_legitimize_sibcall_address): Declare.
3929         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
3930         (m68k_expand_epilogue): Add a parameter to select between sibling
3931         and normal epilogues.  Only generate a return for the latter.
3932         (m68k_ok_for_sibcall_p): New function.
3933         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
3934         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
3935         (sibcall_value, *sibcall_value): Likewise.
3936         (*call, *call_value): Require !SIBLING_CALL_P.
3937         (epilogue): Update call to m68k_expand_epilogue.
3938         (sibcall_epilogue): New pattern.
3939         * config/m68k/predicates.md (const_call_operand): Say that this
3940         predicate applies to sibling calls too.
3941         (sibcall_operand): New predicate.
3942
3943 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3944
3945         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
3946         alternatives as movsi_cf.
3947         (movsf_cf_hard): Add commentary.
3948
3949 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
3950             Richard Sandiford  <richard@codesourcery.com>
3951
3952         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
3953         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
3954         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
3955         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
3956         as being live on exit from an interrupt function.
3957         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
3958         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
3959         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
3960         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
3961         (m68k_interrupt_function_p): Globalize.
3962         (m68k_compute_frame_layout): Remove reverse mask code.
3963         (m68k_emit_movem, m68k_set_frame_related): New functions.
3964         (m68k_output_function_prologue): Delete in favor of...
3965         (m68k_expand_prologue): ...this new function.
3966         (m68k_output_function_epilogue): Delete in favor of...
3967         (m68k_expand_epilogue): ...this new function.
3968         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
3969         functions.
3970         (print_operand): Handle %?.
3971         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
3972         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
3973         (prologue, epilogue): New patterns.
3974         (return): Turn into a define_expand.
3975         (*return): New pattern, derived from old "return" pattern.  Use rte
3976         rather than rts for interrupt functions.  Only use rtd if the pop
3977         count is nonzero.
3978         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
3979         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
3980         (link, *link, unlink, *unlink, load_got): Likewise.
3981
3982 2007-03-06  Richard Sandiford  <richard@codesourcery.com>