OSDN Git Service

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