OSDN Git Service

c.opt (Wformat-contains-nul): Add warning attribute.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-23  Nick Clifton  <nickc@redhat.com>
2
3         * c.opt (Wformat-contains-nul): Add warning attribute.
4
5 2007-04-23  Jan Hubicka  <jh@suse.cz>
6
7         * function.c (init_function_start): Don't init line number info.
8         (expand_function_end): Update.
9         (reset_block_changes, record_block_change, finalize_block_changes,
10         check_block_change, free_block_changes): Kill.
11         * function.h (reset_block_changes, record_block_change,
12         finalize_block_changes, check_block_change, free_block_changes): Remove
13         prototypes.
14         (struct function): Remove ib_boundaries_block.
15         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
16         Use curr_insn_locator to initialize locator.
17         (emit_line_note): Remove.
18         * cfgexpand.c (expand_gimple_cond_expr): Update.
19         (construct_exit_block): Likewise.
20         (tree_expand_cfg): Initialize/finalize locators.
21         * expr.c (expand_expr_real): Update.
22         * cfglayout.c (line_locators_locs, line_locators_lines,
23         file_locators_locs, file_locators_files): Remove.
24         (set_block_levels): Move to cfgexpand.c.
25         (insn_locators_initialize): Remove.
26         (pass_insn_locators_initialize): Remove.
27         (locations_locators_locs, locations_locators_vals): New static vars.
28         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
29         Likewise.
30         (insn_locators_alloc, insn_locators_finalize,
31         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
32         New functions.
33         (locator_location): New.
34         (locator_line, locator_file): Rewrite.
35         * rtl.h (emit_line_note): Kill.
36         (insn_locators_alloc, insn_locators_finalize,
37         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
38         Declare.
39         * tree-inline.c (initialize_cfun): Do not initialize
40         ib_boundaries_block.
41         * passes.c (pass_insn_locators_initialize): Remove.
42
43 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
44
45         PR middle-end/31448
46         * expr.c (reduce_to_bit_field_precision): Handle
47         CONST_INT rtx's.
48
49 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
50
51         PR tree-optimization/24659
52         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
53         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
54         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
55         * genopinit.c (optabs): Rename vec_pack_mod_optab
56         to vec_pack_trunc_optab.
57         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
58         early for scalar floating point operands for NOP_EXPR.
59         (vectorizable_type_promotion): Ditto.
60         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
61         vec_pack_trunc_optab.
62         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
63
64         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
65         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
66         Rename from VEC_PACK_MOD_EXPR.
67         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
68         * expr.c (expand_expr_real_1): Ditto.
69         * tree-inline.c (estimate_num_insns_1): Ditto.
70         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
71
72         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
73         (vec_unpacks_lo_v4sf): Ditto.
74         (vec_pack_trunc_v2df): Ditto.
75         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
76         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
77         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
78
79         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
80         vec_pack_mod_v8hi.
81         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
82
83         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
84         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
85         packing of floating point operands.
86         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
87         represent unpacking of floating point operands.
88         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
89         [vec_unpacks_hi]: Ditto.
90         [vec_unpacks_lo]: Ditto.
91
92 2007-04-22  Jan Hubicka  <jh@suse.cz>
93
94         * final.c (rest_of_handle_final): Call
95         targetm.asm_out.constructor/targetm.asm_out.destructor
96         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
97         proper priority via decl_*_priority_insert.
98         * c-common.c (c_expand_body): Likewise.
99
100 2007-04-22  Richard Guenther  <rguenther@suse.de>
101
102         PR tree-optimization/29789
103         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
104         (rewrite_reciprocal): New helper split out from
105         determine_invariantness_stmt.
106         (rewrite_bittest): Likewise.
107         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
108         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
109         is not.
110
111 2007-04-22  Revital Eres  <eres@il.ibm.com>
112
113         * loop-unroll.c (var_to_expand): New field to support also
114         insns of the form x = something + x.
115         (analyze_insn_to_expand_var): Use it.
116         (expand_var_during_unrolling): Likewise.
117
118 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
119
120         * predict.c: Include pointer-set.h.
121         (bb_predictions): New variable.
122         (tree_predicted_by_p, tree_predict_edge,
123         remove_predictions_associated_with_edge): Use bb_predictions map
124         instead of bb->predictions.
125         (clear_bb_predictions, assert_is_empty): New functions.
126         (combine_predictions_for_bb): Use bb_predictions map.  Call
127         clear_bb_predictions.
128         (tree_estimate_probability): Create and free bb_predictions map.
129         * Makefile.in (predict.o): Add pointer-set.h dependency.
130         * basic-block.h (struct basic_block_def): Remove predictions
131         field.
132         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
133
134 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
135
136         PR target/31480
137         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
138         is null.
139
140 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
141
142         * timevar.c (timevar_print): Change reference of --disable-checking to
143         --enable-checking=release.  Also warn if assert checking is disabled.
144
145 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
146
147         PR C/30265
148         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
149         decl as addressable if the compound literal was marked as
150         addressable.
151         Mark the decl as a gimple register if it is a complex or
152         vector decl and does not live in memory.
153
154 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
155
156         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
157         (GENERIC_NEXT): New function macro.
158         (PHI_CHAIN): Use phi_node's new chain variable.
159         (tree_phi_node): Change tree_common to tree_base
160         and add the chain field.
161         * tree-phinodes.c (make_phi_node): Don't set
162         TREE_TYPE on the new node.
163         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
164         instead of checking GIMPLE_TUPLE_P in chain_next.
165         * tree-vect-transform.c
166         (get_initial_def_for_induction): Look at
167         PHI_RESULT_TREE for the type of the phi node.
168         (update_vuses_to_preheader): Use PHI_CHAIN
169         instead of TREE_CHAIN on the phi node.
170         * tree-ssa-structalias.c (compute_points_to_sets):
171         Likewise.
172         (ipa_pta_execute): Likewise.
173
174 2007-04-21  Richard Guenther  <rguenther@suse.de>
175
176         PR middle-end/31136
177         * fold-const.c (fold_unary): Call fold_convert_const on the
178         original tree.
179
180 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
181
182         * gcse.c (store_killed_in_insn): Handle PARALLELs.
183         (store_killed_in_pat): New.
184
185 2007-04-20  Richard Henderson  <rth@redhat.com>
186
187         PR target/31628
188         * config/i386/i386.c (type_has_variadic_args_p): Look for any
189         TREE_LIST with a void_type_node value, not void_list_node exactly.
190
191 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
192
193         * doc/standards.texi: Re-arrange into language-specific
194         subsections. Add a C++ section, documenting which standards we
195         support.
196
197 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
198
199         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
200         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
201
202 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
203
204         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
205         ecrti.o and crtbegin.o.
206         (LIB_DEFAULT_SPEC): Include -lc.
207         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
208
209 2007-04-20  Richard Henderson  <rth@redhat.com>
210
211         PR target/28623
212         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
213         argument; update all callers.
214         (get_unaligned_offset): New.
215         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
216         get_unaligned_address, just pass on the address directly.
217         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
218         the subreg in the helper patterns.
219         (unaligned_extendqidi_le): Use get_unaligned_offset.
220         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
221         (unaligned_extendhidi_be): Likewise.
222         (unaligned_extendhidi): Tidy.
223         * config/alpha/alpha-protos.h: Update.
224
225 2007-04-20  Richard Henderson  <rth@redhat.com>
226
227         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
228         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
229         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
230         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
231         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
232         (CPP_SPEC): Don't include %(cpp_subtarget).
233         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
234         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
235         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
236
237 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
238
239         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
240         for __builtin_ia32_cmpordss.
241
242         PR tree-optimization/31632
243         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
244         and arg1 for optimizations of comparison against min/max values.
245         Fold arg0 to arg1's type for optimizations of comparison against
246         min+1 and max-1 values.
247
248 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
249
250         * reload.c (combine_reloads): When trying to use a dying register,
251         check whether it's uninitialized and don't use if so.
252
253 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
254
255         * fold-const.c: Remove prototypes for native_encode_expr and
256         native_interpret_expr.
257         (native_encode_expr): Make non-static.
258         (native_interpret_expr): Likewise.
259         * tree.h: Add prototypes for the above.
260
261 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
262
263         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
264         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
265         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
266         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
267         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
268         Add length attributes.
269
270 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
271
272         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
273         not that it is 1.
274
275         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
276         __STDC_WANT_DEC_FP__.
277
278 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
279
280         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
281         for long double compatibility.
282         * configure: Regenerate.
283
284 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
285
286         PR rtl-optimization/29841
287         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
288         trap instructions.
289         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
290         that may cause control flow transfer from being moved.
291
292 2007-04-18  Jan Hubicka  <jh@suse.cz>
293
294         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
295         types.
296
297 2007-04-18  Eric Christopher  <echristo@apple.com>
298
299         * config/rs6000/darwin.md (load_macho_picbase): Use link register
300         only. Update operands.
301         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
302         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
303         link register to pic register.
304
305 2007-04-18  Dirk Mueller  <dmueller@suse.de>
306
307         PR diagnostic/31227
308         * tree-vrp.c (search_for_addr_array): New.
309         (check_array_bounds): Suppress warning about
310         address taken of array refs if its not de-referenced.
311
312 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
313
314         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
315         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
316
317         * tree-vectorizer.h (NITERS_KNOWN_P): New.
318         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
319         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
320
321         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
322         dump print.
323         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
324         print message.
325         (vect_analyze_scalar_cycles): Fix indentation.
326         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
327         (vect_mark_relevant): Include phis in relevance analysis.
328
329         * tree-vect-transform.c (vect_transform_loop): Add an assert.
330
331 2007-04-18  Anatoly Sokolov <aesok@post.ru>
332
333         * config/avr/avr.c (ptrreg_to_str): Replace error() with
334         output_operand_lossage().
335
336 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
337
338         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
339         the unused code for reduction without adjust-in-epilog to simplify the
340         function.
341
342 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
343
344         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
345         (S390_TDC_NEGATIVE_ZERO): New constant.
346         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
347         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
348         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
349         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
350         (S390_TDC_POSITIVE_INFINITY): New constant.
351         (S390_TDC_NEGATIVE_INFINITY): New constant.
352         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
353         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
354         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
355         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
356         (S390_TDC_INFINITY): New constant.
357         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
358         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
359         optimization for UNSPEC_CCZ_TO_INT.
360         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
361         ("*ccz_to_int"): New insn.
362         ("isinf<mode>2"): New insn.
363         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
364         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
365         (UNSPEC_CCZ_TO_INT): New constant.
366
367 2007-04-18  Richard Guenther  <rguenther@suse.de>
368
369         PR tree-optimization/19431
370         PR tree-optimization/21463
371         * tree-pass.h (pass_phiprop): Declare.
372         * passes.c (init_optimization_passes): New phiprop pass.
373         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
374         (phivn_valid_p): New helper function.
375         (phiprop_insert_phi): Likewise.
376         (propagate_with_phi): Likewise.
377         (tree_ssa_phiprop): New propagator propagating loads
378         through phi nodes if profitable.
379
380 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
381
382         * tree-vect-analyze.c (process_use): New function.
383         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
384         Check phis in all bbs.
385         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
386         assert.
387
388 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
389
390         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
391         we use REG_EQUAL.
392
393 2007-04-17  Anatoly Sokolov <aesok@post.ru>
394
395         PR target/30483
396         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
397         error().
398
399 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
400
401         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
402         on "0".
403         (sse_vmmulv4sf3): Likewise.
404         (sse2_vmaddv2df3): Likewise.
405         (sse2_vmmulv2df3): Likewise.
406
407 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
408
409         PR rtl-optimization/31360
410         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
411         (target_reg_cost): New.
412         (init_set_costs): Initialize target_reg_cost.  Add comments
413         regarding the rationale of the costs.
414         (global_cost_for_size): Renamed to...
415         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
416         of register pressure.
417         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
418         estimate_reg_pressure_cost.  Add number of ivs.
419         (determine_set_costs): Dump target_reg_cost.
420         * loop-invariant.c (gain_for_invariant):  Use
421         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
422         (best_gain_for_invariant, find_invariants_to_move): Remove
423         n_inv_uses.
424         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
425         (target_reg_cost): Declare.
426         (global_cost_for_size): Declaration removed.
427         (estimate_reg_pressure_cost): Declare.
428
429 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
430
431         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
432         regnos into even/odd register pairs.
433         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
434         TDmode similar to the other floating point modes.
435         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
436         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
437         define_expand's.
438         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
439         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
440         (movdd_hardfloat64): Use TARGET_MFPGPR.
441
442 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
443
444         * reload1.c (delete_output_reload): Don't count output in n_inherited.
445
446         Revert
447         2005-01-05  Richard Henderson  <rth@redhat.com>
448         PR rtl-opt/10692
449         * reload1.c (do_input_reload): Restrict the optimization deleteing
450         a previous output reload to RELOAD_FOR_INPUT.
451
452 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
453
454         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
455         induc_vec_info_type.
456         (vectorizable_induction): New function declaration.
457         * tree-vect-transform.c (get_initial_def_for_induction): No need to
458         check if already vectorized.  Find first place in BB where new stmts
459         can be inserted.  Takes only one argument.
460         (vectorizable_induction): New function.
461         (vect_transform_stmt): Add case for induc_vec_info_type to call
462         vectorizable_induction.
463         (vect_transform_loop): Consider phis for vectorization.
464         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
465         condition.
466         (analyze_operations): Call vectorizable_induction when analyzing phis.
467         Fix comment.
468         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
469         (vect_mark_relevant): Include phis in relevance analysis.
470         (vect_mark_stmts_to_be_vectorize): Likewise.
471         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
472
473 2007-04-16  Lawrence Crowl  <crowl@google.com>
474
475         * doc/invoke.texi (Debugging Options): Add documentation for the
476         -femit-struct-debug options -femit-struct-debug-baseonly,
477         -femit-struct-debug-reduced, and
478         -femit-struct-debug-detailed[=...].
479
480         * c-opts.c (c_common_handle_option): Add
481         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
482         and OPT_femit_struct_debug_detailed_.
483         * c.opt: Add specifications for
484         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
485         and -femit-struct-debug-detailed[=...].
486         * opts.c (set_struct_debug_option): Parse the
487         -femit-struct-debug-... options.
488         * opts.c (matches_main_base, main_input_basename,
489         main_input_baselength, base_of_path, matches_main_base): Add
490         variables and functions to compare header base name to compilation
491         unit base name.
492         * opts.c (should_emit_struct_debug): Add to determine to emit a
493         structure based on the option.
494         (dump_struct_debug) Also disabled function to debug this
495         function.
496         * opts.c (handle_options): Save the base name of the
497         compilation unit.
498
499         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
500         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
501         This hook indicates if a type is generic.  Set it by default
502         to "never generic".
503         * langhooks.h (struct lang_hooks_for_types): Add a new hook
504         to determine if a struct type is generic or not.
505         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
506         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
507         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
508         with live C++ hook.
509
510         * flags.h (enum debug_info_usage): Add an enumeration to describe
511         a program's use of a structure type.
512         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
513         to indicate the program's usage of the type.  Filter structs based
514         on the -femit-struct-debug-... specification.
515         (gen_type_die): Split into two routines, gen_type_die and
516         gen_type_die_with_usage.  gen_type_die is now a wrapper
517         that assumes direct usage.
518         (gen_type_die_with_usage): Replace calls to gen_type_die
519         with gen_type_die_with_usage adding the program usage of
520         the referenced type.
521         (dwarf2out_imported_module_or_decl): Suppress struct debug
522         information using should_emit_struct_debug when appropriate.
523
524 2007-04-16  Ian Lance Taylor  <iant@google.com>
525
526         PR tree-optimization/31522
527         * tree-vrp.c (vr_phi_edge_counts): New static variable.
528         (vrp_initialize): Allocate vr_phi_edge_counts.
529         (vrp_visit_phi_node): Don't push to infinity if we saw a new
530         executable edge.  Drop test for all constants.
531         (vrp_finalize): Free vrp_phi_edge_counts.
532
533         * doc/cpp.texi (Common Predefined Macros): Clarify description of
534         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
535
536         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
537         predecessors at head rather than tail.
538
539 2007-04-16  Matthias Klose  <doko@debian.org>
540
541         * config/alpha/linux.h (CPP_SPEC): Define.
542         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
543
544 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
545
546         * function.h: Remove sequence_stack extern declaration.
547
548 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
549
550         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
551         TARGET_FIDOA.
552         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
553         defined.
554
555 2007-04-16  Anatoly Sokolov <aesok@post.ru>
556
557         * config/avr/avr.c (avr_arch_types): Rearranging  array.
558         (enum avr_arch): Add.
559         (avr_mcu_types): Use avr_arch enumeration constants instead of
560         numbers.
561         * config/avr/avr.h (LINK_SPEC): Simplify.
562
563 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
564
565         * config/m68k/m68k.c (m68k_libcall_value,
566         m68k_function_value): Use macros for register names more.
567
568         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
569         instead.
570         (M68K_REGNAME): Use A6_REG.
571         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
572
573 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
574
575         PR middle-end/28071
576         * sched-int.h (struct deps): Split field 'pending_lists_length' into
577         'pending_read_list_length' and 'pending_write_list_length'.  Update
578         comment.
579         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
580         to handle two length counters instead of one.  Update all uses.
581         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
582         two length counters instead of one.
583         * sched-rgn.c (propagate_deps): Update to handle two length counters
584         instead of one.
585
586 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
587
588         PR target/31582
589         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
590         copy of source, pass it to ix86_expand_vector_set and return
591         it as target.
592
593 2007-04-16  David Ung  <davidu@mips.com>
594             Joseph Myers  <joseph@codesourcery.com>
595
596         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
597         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
598         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
599         Add 74K processor information.
600         * config/mips/mips.md: Include 74k.md.
601         (cpu): Add 74kc,74kf,74kx.
602         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
603         * config/mips/74k.md: New.
604         * doc/invoke.texi (MIPS Options): Document 74K support.
605
606 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
607
608         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
609         vectorizable_* functions.
610         * tree-vect-transform.c (vectorizable_call): Add check for
611         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
612         (vectorizable_store): likewise.
613         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
614         Add comments.
615         (vectorizable_operation, vectorizable_type_demotion): Likewise.
616         (vectorizable_type_promotion, vectorizable_load): Likewise.
617         (vectorizable_live_operation, vectorizable_condition): Likewise.
618         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
619         STMT_VINFO_LIVE_P.
620         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
621
622 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
623
624         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
625         register numbers more.
626         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
627         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
628         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
629         FUNCTION_VALUE_REGNO_P): Likewise.
630         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
631         STATIC_CHAIN_REGNUM): Likewise.
632         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
633         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
634         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
635         * config/m68k/m68k.md (FP_REG): New.
636
637 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
638
639         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
640         alignment on fido.
641
642 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
643
644         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
645         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
646         comment typos.
647
648 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
649
650         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
651         cold loops.
652
653 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
654
655         PR c/31520
656         * c-decl.c (finish_decl): Grab the type of the decl after the call
657         to store_init_value.
658
659 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
660
661         * common.opt (fforward-propagate): Fix "Optimization" annotation.
662
663 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
664
665         PR c++/25874
666         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
667         post dominators and cleanup cfg before returning.
668
669 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
670
671         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
672         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
673
674 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
675
676         * config.gcc: Recognize fido.
677         * config/m68k/m68k-devices.def (fidoa): New.
678         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
679         __mfido__.
680         (FL_FIDOA, TARGET_FIDOA): New.
681         * config/m68k/m68k.opt (mfidoa): New.
682
683 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
684
685         PR middle-end/31322
686         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
687         when a personality function is used.
688
689 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
690
691         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
692
693 2007-04-13  Mike Stump  <mrs@apple.com>
694
695         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
696         we can...
697         * config/darwin.opt (fapple-kext): Make C++ only.
698         * config/darwin.c (darwin_override_options): Remove code to ensure
699         -fapple-kext is given for C++ only.
700
701 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
702
703         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
704         * config/mips/mips.c (override_options): Call
705         SUBTARGET_OVERRIDE_OPTIONS, if defined.
706
707 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
708
709         * config/i386/i386.opt (msvr3-shlib): Removed.
710
711         * doc/invoke.texi: Remove -msvr3-shlib.
712
713 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
714
715         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
716         with "popcnt" instruction.
717
718 2007-04-13  Richard Guenther  <rguenther@suse.de>
719
720         PR tree-optimization/21258
721         * tree-vrp.c (compare_case_labels): New helper.
722         (find_switch_asserts): New function.
723         (find_assert_locations): Call it for SWITCH_EXPRs.
724
725 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
726
727         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
728         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
729         check is now implied in X87_FLOAT_MODE_P.
730         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
731         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
732         (fix_trunc<mode>_i386_fisttp): Ditto.
733         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
734         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
735         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
736         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
737         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
738         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
739         (unnamed_splitters): Ditto.
740         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
741         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
742         FIRST_SSE_REG for local functions when SSE math is enabled or
743         for functions with sseregparm attribute.
744         (standard_80387_constant_p): Return -1 if mode is not
745         X87_FLOAT_MODE_P.
746         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
747         (ix86_expand_compare): Ditto.
748         (ix86_expand_carry_flag_compare): Ditto.
749         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
750         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
751         DECIMAL_FLOAT_MODE_P.
752         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
753         of SCALAR_FLOAT_MODE_P.
754         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
755         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
756         checks before FLOAT_MODE_P.
757         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
758         before FLOAT_MODE_P.
759         [DIV]: Ditto.
760         [NEG]: Ditto.
761         [ABS]: Ditto.
762         [SQRT]: Ditto.
763         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
764
765 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
766             Charles Wilson  <libtool@cwilson.fastmail.fm>
767
768         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
769         (libgcc.mvars): Don't depend on them.
770         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
771         * exec-tool.in: New.
772
773 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
774
775         * doc/invoke.text (--help): Document --help=common.
776
777 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
778
779         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
780
781 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
782
783         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
784         * genemit.c (main): Emit #include "integrate.h".
785         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
786         (LOADGP_RTP): New mips_loadgp_style.
787         * config/mips/mips.h: Include config/vxworks-dummy.h.
788         (TARGET_RTP_PIC): New macro.
789         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
790         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
791         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
792         for TARGET_RTP_PIC.
793         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
794         -mvxworks-pic when using -mrtp and a PIC option.
795         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
796         for RTP PIC.
797         (mips_symbolic_constant_p, mips_symbolic_address_p)
798         (mips_symbol_insns): Handle SYMBOL_HALF.
799         (override_options): Warn about -G and -mrtp being used together.
800         Initialize mips_lo_relocs[SYMBOL_HALF].
801         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
802         (mips_emit_loadgp): Handle LOADGP_RTP.
803         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
804         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
805         (tablejump): Handle function-relative case table entries if
806         TARGET_RTP_PIC.
807         * config/mips/predicates.md (symbol_ref_operand): New predicate.
808
809 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
810
811         * config/mips/mips.md (load_call<mode>): Allow any general register.
812         destination.
813         (sibcall_value_internal, sibcall_value_multiple_internal)
814         (call_value_internal, call_value_split, call_value_multiple_internal)
815         (call_value_multiple_split): Remove constraints from operand 0.
816
817 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
818
819         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
820         rather than loadgp_noshared.
821         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
822         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
823         gen_loadgp.
824         * config/mips/mips.md (loadgp): Rename to...
825         (loadgp_newabi): ...this.
826         (loadgp_noshared): Rename to...
827         (loadgp_absolute): ...this.
828
829 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
830
831         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
832         false for locally-binding symbols.
833         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
834
835 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
836
837         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
838         (SYMBOL_GOT_PAGE_OFST): ...this.
839         (SYMBOL_GOT_GLOBAL): Rename to...
840         (SYMBOL_GOT_DISP): ...this.
841         (SYMBOL_GOTOFF_GLOBAL): Rename to...
842         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
843         * config/mips/mips.c (mips_global_symbol_p): New function.
844         (mips_symbol_binds_local_p): Likewise.
845         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
846         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
847         and mips_symbol_binds_local_p.
848         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
849         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
850         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
851         SYMBOL_GOTOFF_DISP.
852         (mips_ok_for_lazy_binding_p): New function.
853         (mips_load_call_address, mips_expand_call): Use it.
854         (mips_dangerous_for_la25_p): Likewise.
855         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
856         (*got_disp<mode>): Use got_disp_operand instead of
857         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
858         SYMBOL_GOTOFF_GLOBAL.
859         (*got_page<mode>): Use got_page_ofst_operand instead of
860         local_got_operand.
861         * config/mips/predicates.md (const_call_insn_operand): Use
862         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
863         (global_got_operand): Rename to...
864         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
865         SYMBOL_GOT_GLOBAL.
866         (local_got_operand): Rename to...
867         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
868         of SYMBOL_GOT_LOCAL.
869
870 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
871
872         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
873         TARGET_CALL_CLOBBERED_GP.
874         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
875         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
876         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
877         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
878         of TARGET_ABICALLS && !TARGET_NEWABI.
879         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
880         * config/mips/mips.c (mips_load_call_address): Check
881         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
882         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
883         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
884         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
885         TARGET_ABICALLS && TARGET_NEWABI.
886         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
887         TARGET_ABICALLS.
888         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
889         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
890         TARGET_ABICALLS && TARGET_NEWABI.
891         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
892         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
893         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
894         whether indirect calls must use $25.
895         (mips_extra_live_on_entry): Check TARGET_GOT instead of
896         TARGET_ABICALLS.
897         * config/mips/mips.md (jal_macro): Check flag_pic and
898         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
899         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
900         instead of TARGET_ABICALLS.
901         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
902         TARGET_ABICALLS && TARGET_OLDABI.
903         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
904         (sibcall): In the comment above the define_insn, mention
905         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
906         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
907         instead of TARGET_ABICALLS.
908
909 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
910
911         * doc/md.texi (Blackfin family constraints): Document PA and PB.
912         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
913         (MACFLAGS_MATCH_P): New macro.
914         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
915         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
916         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
917         the other MACFLAG constants.
918         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
919         (flag_machi): Tighten constraints.  Renumber some of the operands.
920         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
921         output template.
922         (flag_machi_parts_acconly): New pattern.
923         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
924         used.
925         (flag_macinit1hi): Tighten constraints.
926         (flag_mul_macv2hi_parts_acconly): New pattern.
927
928         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
929         Use a more efficient implementation.
930         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
931         inline sequences when not optimizing for size.
932
933         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
934         movhi_high2low): Delete, merge functionality into...
935         (packv2hi): ... this pattern.
936
937         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
938         * config/bfin/bfin.opt (msim): New option.
939         (mcpu=): New option.
940         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
941         (bfin_cpu_t): Typedef of enum bfin_cpu.
942         (bfin_cpu_type): New declaration.
943         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
944         -msim and -mcpu= options.
945         (LIB_SPEC): Likewise.
946         * config/bfin/bfin.c (bfin_cpu_type): Define.
947         (bfin_handle_option): Handle -mcpu= option.
948         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
949         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
950         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
951
952 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
953
954         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
955         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
956         (powerpc-wrs-vxworksae): Use ${tm_file}.
957         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
958         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
959         * config/i386/vx-common.h: New file.
960
961 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
962
963         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
964         of crt0.o%s.
965
966 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
967
968         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
969         ldxtr.
970
971 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
972
973         PR c++/31078
974         PR c++/31103
975         * c-common.c (c_build_qualified_type): Set canonical type
976         appropriately.
977
978 2007-04-12  Richard Guenther  <rguenther@suse.de>
979
980         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
981         lower bound and element size if lower bound is not zero
982         or either of the ARRAY_REF operands is set.
983
984 2007-04-12  Richard Guenther  <rguenther@suse.de>
985
986         PR tree-optimization/24689
987         PR tree-optimization/31307
988         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
989         indices by value.
990         * gimplify.c (canonicalize_addr_expr): To be consistent with
991         gimplify_compound_lval only set operands two and three of
992         ARRAY_REFs if they are not gimple_min_invariant.  This makes
993         it never at this place.
994         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
995
996 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
997
998         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
999         null before emitting a .nsubspa directive.
1000
1001 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
1002
1003         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
1004         need_to_partition_p if there are no memory statements in the
1005         function.
1006
1007 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
1008
1009         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
1010         (gcd_of_steps_may_divide_p): New function.
1011         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
1012
1013 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1014
1015         * reload.c (find_reloads_toplev, find_reloads_address,
1016         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
1017         not a pointer equality test, to decide if we need to call
1018         push_reg_equiv_alt_mem.
1019
1020 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
1021
1022         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
1023         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
1024         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
1025
1026 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
1027
1028         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
1029         vector to be positive.
1030
1031 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
1032
1033         PR 30735
1034         PR 31090
1035         * doc/invoke.texi: Document --params max-aliased-vops and
1036         avg-aliased-vops.
1037         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
1038         debug_memory_partitions): Move to tree-flow.h
1039         * params.h (AVG_ALIASED_VOPS): Define.
1040         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
1041         users.
1042         (mp_info_t): Likewise.
1043         (get_mem_sym_stats_for): New.
1044         (set_memory_partition): Move from tree-flow-inline.h.
1045         (mark_non_addressable): Only clear the set of symbols for the
1046         partition if it exists.
1047         (dump_memory_partitions): Move from tree-ssa-operands.c
1048         (debug_memory_partitions): Likewise.
1049         (need_to_partition_p): New.
1050         (dump_mem_ref_stats): New.
1051         (debug_mem_ref_stats): New.
1052         (dump_mem_sym_stats): New.
1053         (debug_mem_sym_stats): New.
1054         (update_mem_sym_stats_from_stmt): New.
1055         (compare_mp_info_entries): New.
1056         (mp_info_cmp): Call it.
1057         (sort_mp_info): Change argument to a list of mem_sym_stats_t
1058         objects.
1059         (get_mpt_for): Move from tree-ssa-operands.c.
1060         (find_partition_for): New.
1061         (create_partition_for): Remove.
1062         (estimate_vop_reduction): New.
1063         (update_reference_counts): New.
1064         (build_mp_info): New.
1065         (compute_memory_partitions): Refactor.
1066         Document new heuristic.
1067         Call build_mp_info, update_reference_counts,
1068         find_partition_for and estimate_vop_reduction.
1069         (compute_may_aliases): Populate virtual operands before
1070         calling debugging dumps.
1071         (delete_mem_sym_stats): New.
1072         (delete_mem_ref_stats): New.
1073         (init_mem_ref_stats): New.
1074         (init_alias_info): Call it.
1075         (maybe_create_global_var): Remove alias_info argument.
1076         Get number of call sites and number of pure/const call sites
1077         from gimple_mem_ref_stats().
1078         (dump_alias_info): Call dump_memory_partitions first.
1079         (dump_points_to_info_for): Show how many times a pointer has
1080         been dereferenced.
1081         * opts.c (decode_options): For -O2 set --param
1082         max-aliased-vops to 500.
1083         For -O3 set --param max-aliased-vops to 1000 and --param
1084         avg-aliased-vops to 3.
1085         * fortran/options.c (gfc_init_options): Remove assignment to
1086         MAX_ALIASED_VOPS.
1087         * tree-flow-inline.h (gimple_mem_ref_stats): New.
1088         * tree-dfa.c (dump_variable): Dump memory reference
1089         statistics.
1090         Dump NO_ALIAS* settings.
1091         (referenced_var_lookup): Tidy.
1092         (mem_sym_stats): New.
1093         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
1094         and ORIG are different SSA names for a memory partition.
1095         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
1096         * tree-flow.h (struct mem_sym_stats_d): Define.
1097         (mem_sym_stats_t): Define.
1098         (struct mem_ref_stats_d): Define.
1099         (struct gimple_df): Add field mem_ref_stats.
1100         (enum noalias_state): Define.
1101         (struct var_ann_d): Add bitfield noalias_state.
1102         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
1103         debug_mem_ref_stats, debug_memory_partitions,
1104         debug_mem_sym_stats): Declare.
1105         * tree-ssa-structalias.c (update_alias_info): Update call
1106         sites, pure/const call sites and asm sites in structure
1107         returned by gimple_mem_ref_stats.
1108         Remove local variable IS_POTENTIAL_DEREF.
1109         Increase NUM_DEREFS if the memory expression is a potential
1110         dereference.
1111         Call update_mem_sym_stats_from_stmt.
1112         If the memory references memory, call
1113         update_mem_sym_stats_from_stmt for all the direct memory
1114         symbol references found.
1115         (intra_create_variable_infos): Set noalias_state field for
1116         pointer arguments according to the value of
1117         flag_argument_noalias.
1118         * tree-ssa-structalias.h (struct alias_info): Remove fields
1119         num_calls_found and num_pure_const_calls_found.
1120         (update_mem_sym_stats_from_stmt): Declare.
1121         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
1122         Set default value to 100.
1123         (PARAM_AVG_ALIASED_VOPS): Define.
1124
1125 2007-04-11  Richard Guenther  <rguenther@suse.de>
1126
1127         PR middle-end/31530
1128         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
1129         a * -b + c as c - a * b if we honor sign dependent rounding.
1130
1131 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1132
1133         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
1134         bfin_expand_strmov.
1135         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
1136         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
1137         variables.
1138         (initialize_trampoline): Don't use old-style function definition.
1139         (bfin_secondary_reload): Mark IN_P argument as unused.
1140
1141 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
1142
1143         PR tree-optimization/31343
1144         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
1145         (build_polynomial_chrec): Return a scalar when the evolution is zero.
1146         * testsuite/gcc.dg/vect/pr31343.c: New.
1147
1148 2007-04-10  Eric Christopher  <echristo@apple.com>
1149
1150         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
1151         * config/i386/i386.md (*cmpfp0): Use.
1152         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
1153         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
1154         (fix_trunc<mode>_i386_fisttp): Ditto.
1155         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
1156         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
1157         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
1158         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
1159         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
1160         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
1161         (unnamed_splitters): Ditto.
1162         * config/i386/i386.c (output_fix_trunc): Assert that
1163         we're not being passed a TFmode operand.
1164
1165 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
1166
1167         PR tree-optimization/31526
1168         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
1169         n_basic_blocks to find newly added blocks.
1170
1171 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
1172
1173         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
1174         alternative.
1175         (fix_trunc<mode>si_sse): Ditto.
1176         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
1177         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
1178         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
1179         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
1180         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
1181         expander using SSEMODEF mode macro.
1182         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
1183         expander using SSEMODEF mode macro.
1184         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
1185         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
1186         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
1187         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
1188         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
1189         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
1190         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
1191         Macroize insn using X87MODEF mode macro.
1192
1193 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
1194
1195         * config/i386/sse.md (sse2_pinsrw): Removed.
1196         (sse2_pextrw): Renamed to ...
1197         (*sse2_pextrw): This.
1198
1199 2007-04-09  Jan Hubicka  <jh@suse.cz>
1200
1201         PR target/27869
1202         * config/i386/sse.md
1203         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
1204         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
1205         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
1206         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
1207
1208 2007-04-09  Jan Hubicka  <jh@suse.cz>
1209
1210         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
1211         multiple fields of union.
1212
1213 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
1214
1215         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
1216         (create_preheaders): Check that loops are available.
1217         (fix_loop_structure): Clean up, improve comments.
1218         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
1219         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
1220         state flags.
1221         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
1222         * predict.c (tree_estimate_probability): Do not call
1223         calculate_dominance_info.  Call create_preheaders.
1224         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
1225         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
1226         flags.
1227         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
1228         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
1229         * tree-cfg.c (tree_split_edge): Make an assert more precise.
1230         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
1231         arguments.
1232
1233 2007-04-08  Jan Hubicka  <jh@suse.cz>
1234
1235         * tree.h (maybe_fold_offset_to_component_ref): Declare.
1236         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
1237         * fold-const.c (fold_unary): Use it.
1238
1239 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1240
1241         * varasm.c (assemble_variable): Remove call to
1242         lang_hooks.decls.prepare_assemble_variable.
1243         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
1244         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
1245         * langhooks.h (lang_hooks_for_decls): Remove
1246         prepare_assemble_variable.
1247
1248 2007-04-08  Mike Stump  <mrs@apple.com>
1249
1250         * config/i386/i386.c: Use inc/dec on Core2.
1251
1252 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
1253
1254         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
1255         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
1256         lhd_tree_inlining_end_inlining): Remove.
1257         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
1258         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
1259         end_inlining hooks.
1260         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
1261         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
1262         lhd_tree_inlining_end_inlining): Remove prototypes.
1263         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
1264         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
1265         LANG_HOOKS_TREE_INLINING_START_INLINING,
1266         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
1267
1268         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
1269         not set it.
1270
1271 2007-04-08  Anatoly Sokolov <aesok@post.ru>
1272
1273         PR target/29932
1274         * config/avr/predicates.md (io_address_operand): Delete predicate.
1275         (low_io_address_operand): Don't use 'mode' argument.
1276         (higth_io_address_operand): Rename ...
1277         (high_io_address_operand): ... to this. Don't use 'mode' argument.
1278         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
1279         for above change.
1280
1281 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
1282
1283         Revert change removing staticp.
1284
1285 2007-04-07  Anatoly Sokolov <aesok@post.ru>
1286
1287         PR target/30289
1288         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
1289         earlyclobber.
1290
1291 2007-04-07  Bruce Korb  <bkorb@gnu.org>
1292
1293         * c.opt: Add -Wformat-contains-nul.
1294         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
1295           -Wformat setting.
1296         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
1297         the NUL byte warning.
1298
1299 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
1300
1301         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
1302
1303 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1304
1305         * tree.c (staticp): No longer use staticp langhook.
1306         * langhooks.c (lhd_staticp): Removed.
1307         * langhooks.h (struct lang_hooks): Remove staticp.
1308         * c-common.c (c_staticp): Remove.
1309         * c-common.h (c_staticp): Ditto.
1310         * langhooks-defs.h (lhd_staticp): Ditto.
1311         (LHD_HOOKS_STATICP): Ditto
1312         * tree.h (gcc_assert_lowered): New macro.
1313
1314 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
1315
1316         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
1317         argument "reliable".
1318         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
1319         Add argument "reliable".  Propagate it through calls.
1320         (infer_loop_bounds_from_undefined):  Derive number of iterations
1321         estimates from references in blocks that do not dominate loop latch.
1322         (gcov_type_to_double_int): New function.
1323         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
1324         and expected_loop_iterations_unbounded.
1325         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
1326         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
1327         * tree-data-ref.c (estimated_loop_iterations): Export.
1328         (get_references_in_stmt): Fix -- do not return addresses of local
1329         objects.
1330         * cfgloop.h (expected_loop_iterations_unbounded,
1331         estimated_loop_iterations): Declare.
1332
1333 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
1334
1335         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
1336
1337 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1338
1339         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
1340         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
1341         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
1342         Use output_387_reg_move().
1343         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
1344         expander using X87MODEF12 mode macro.
1345         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
1346         choosing register preferences.  Use output_387_reg_move().
1347         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
1348         instead of "x".  Use output_387_reg_move().
1349         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
1350         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
1351         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
1352         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
1353         Use output_387_reg_move().
1354         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
1355         mode macro.
1356         (*truncxf?f_i387 splitter): Ditto.
1357
1358 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1359
1360         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
1361         LANG_HOOKS_SAFE_FROM_P.
1362         * expr.c (safe_from_p): Remove langhook call.
1363         * langhooks.h (lang_hooks): Remove safe_from_p.
1364         (lhd_safe_from_p): Remove prototype.
1365         * langhooks.c (lhd_safe_from_p): Remove.
1366
1367 2007-04-06  Jan Hubicka  <jh@suse.cz>
1368
1369         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
1370         functions.
1371
1372 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1373
1374         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
1375         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
1376         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
1377         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
1378         alternative.
1379         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
1380         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
1381
1382 2007-04-05  Richard Henderson  <rth@redhat.com>
1383
1384         * config/alpha/alpha.c (print_operand) [+]: Remove.
1385         (alpha_end_function): Print nop if call at end of function.
1386         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
1387         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
1388         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
1389         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
1390         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
1391         the call pattern. Update peepholes to match.
1392
1393 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
1394
1395         * doc/extend.texi (Other Builtins): Add decimal float variants
1396         of signbit.
1397         * builtins.def: Ditto.
1398         * builtins.c (expand_builtin): Ditto.
1399
1400 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
1401             H.J. Lu  <hongjiu.lu@intel.com>
1402
1403         PR target/31478
1404         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
1405         of V8HImode when calling ix86_binary_operator_ok.
1406         (sse2_pmaddwd): Call ix86_binary_operator_ok.
1407         (sdot_prodv8hi): Operands 1 and 2 must be register.
1408
1409 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
1410
1411         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
1412         initialize align to silence bogus warning.
1413
1414 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
1415
1416         PR middle-end/22156
1417         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
1418         all_no_warning.
1419         (struct sra_walk_fns): Remove use_all parameter from use.
1420         (sra_hash_tree): Handle BIT_FIELD_REFs.
1421         (sra_elt_hash): Don't hash bitfld blocks.
1422         (sra_elt_eq): Skip them in parent compares as well.  Handle
1423         BIT_FIELD_REFs.
1424         (sra_walk_expr): Don't maintain or pass down use_all_p.
1425         (scan_use): Remove use_all parameter.
1426         (scalarize_use): Likewise.  Re-expand assignment to
1427         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
1428         output, and re-scalarize after output.  Don't mark anything
1429         for no warning.
1430         (scalarize_ldst): Adjust.
1431         (scalarize_walk_gimple_modify_statement): Likewise.
1432         (build_element_name_1): Handle BIT_FIELD_REFs.
1433         (instantiate_element): Don't warn for any element whose parent
1434         is used as a whole.
1435         (instantiate_missing_elements_1): Return the sra_elt.
1436         (canon_type_for_field): New.
1437         (try_instantiate_multiple_fields): New.
1438         (instantiate_missing_elemnts): Use them.
1439         (mark_no_warning): Removed.
1440         (generate_one_element_ref): Handle BIT_FIELD_REFs.
1441         (REPLDUP, sra_build_elt_assignment): New.
1442         (generate_copy_inout): Use them.
1443         (generate_element_copy): Likewise.  Handle bitfld differences.
1444         (generate_element_zero): Don't recurse for blocks.  Use
1445         sra_build_elt_assignment.
1446         (generate_one_element_int): Take elt instead of var.  Use
1447         sra_build_elt_assignment.
1448         (generate_element_init_1): Adjust.
1449         (scalarize_use, scalarize_copy): Use REPLDUP.
1450         (scalarize_ldst): Move assert before dereference.
1451         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
1452
1453 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
1454
1455         * regmove.c: Fix unused variable warnings due to previous commit.
1456
1457 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
1458
1459         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
1460         (regmove_bb_head): Remove.
1461         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
1462         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
1463         problems with fixup_match_1.
1464         Don't initialize/free regmove_bb_head.
1465
1466         (reg_is_remote_constant_p): If an insn is in the same basic block
1467         but not before INSN, consider it remote, too.
1468
1469 2007-04-05  Anatoly Sokolov <aesok@post.ru>
1470
1471         PR target/25448
1472         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
1473         DECL_ASSEMBLER_NAME, not the DECL_NAME.
1474
1475 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
1476
1477         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
1478         (CONDITIONAL_REGISTER_USAGE): Likewise.
1479
1480 2007-04-04  Richard Henderson  <rth@redhat.com>
1481
1482         * config/alpha/lib1funcs.asm: Remove unused file.
1483
1484 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1485
1486         PR other/31356
1487         * opts.c (print_specific_help): Fix --help=<language>
1488         header line.
1489         (common_handle_option): Support --help=common.
1490
1491 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1492
1493         PR other/31353
1494         * gcc.c (main): Do not run the linker if
1495         print_subprocess_help indicates that it shouldn't be
1496         run.
1497
1498 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
1499
1500         PR doc/31355
1501         * doc/invoke.texi (--help=): Document <languages> value, fix
1502         formatting in tables of values.
1503
1504 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
1505
1506         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
1507         dllimport attribute of virtual methods.
1508
1509 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
1510
1511         * config/score/crti.asm: Change _bss_start to __bss_start.
1512         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
1513         (OUTGOING_REG_PARM_STACK_SPACE) update.
1514         * config/score/score.opt: add options to make backend support
1515         score5, score5u, score7 and score7d.
1516         * config/score/score.md: Likewise.
1517         * config/score/misc.md: Likewise.
1518         * config/score/mac.md: Likewise.
1519         * doc/invoke.texi: Likewise.
1520         * doc/md.texi: update constraints define.
1521
1522 2007-04-03  Richard Henderson  <rth@redhat.com>
1523
1524         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
1525         an appropriate type, use the mode instead.
1526
1527 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
1528
1529         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
1530         Set the default --with-arch setting to mips2.
1531         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
1532         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1533         (MULTILIB_OSDIRNAMES): Delete.
1534         (MULTILIB_DIRNAMES): Define.
1535         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
1536         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
1537         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
1538         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
1539         VXWORKS_OS_CPP_BUILTINS.
1540         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
1541         (MIPS_DEBUGGING_INFO): Undefine.
1542         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
1543
1544 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
1545
1546         PR middle-end/30704
1547         * fold-const.c (native_encode_real): Encode real.c provided longs
1548         as a series of 32-bit native integers.
1549         (native_interpret_real): Interpret buffer as a series of 32-bit
1550         native integers.
1551
1552 2007-04-03  Richard Guenther  <rguenther@suse.de>
1553
1554         * genpreds.c (write_insn_constraint_len): Write function
1555         optimized for CONSTRAINT_LEN implementation.
1556         (write_tm_preds_h): Output insn_constraint_len inline and
1557         use it for CONSTRAINT_LEN.
1558         (write_insn_preds_c): Don't output insn_constraint_len.
1559         * doc/md.texi (define_register_constraint): Document multi-letter
1560         constraints shall have the same length if they start with the same
1561         letter.
1562
1563 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
1564
1565         PR target/31175
1566         * config/i386/i386.md (isinf<mode>2): Expand only when
1567         TARGET_C99_FUNCTIONS is set.
1568
1569 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
1570
1571         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
1572         (x86_64-*-linux*): Ditto.
1573         * config/i386/i386.opt (mpc): New option.
1574         * config/i386/i386.c (overrride_options): Handle
1575         ix87_precision_string.
1576         * config/i386/crtprec.c: New file.
1577         * config/i386/t-crtpc: Ditto.
1578         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
1579         and -mpc80 options.
1580         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
1581         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
1582         crtprec32.o, crtprec64.o and crtprec80.o.
1583
1584         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
1585         and -mpc80 options.
1586         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
1587
1588 2007-04-02  Eric Christopher  <echristo@apple.com>
1589
1590         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
1591         limitations on darwin.
1592
1593 2007-04-02  Anatoly Sokolov <aesok@post.ru>
1594
1595         PR target/31137
1596         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
1597
1598 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1599
1600         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
1601
1602 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1603
1604         * libgcc2.h (exception_descriptor): Don't forward-declare.
1605         (__get_eh_table_language, __get_eh_table_version): Delete
1606         prototypes of long-dead functions.
1607
1608 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
1609
1610         * ebitmap.h: New file
1611         * ebitmap.c: New file
1612         * Makefile.in (ebitmap.o): New target.
1613
1614 2007-04-01  Jan Hubicka  <jh@suse.cz>
1615
1616         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
1617         before very first instruction.
1618
1619 2007-04-01  Jan Hubicka  <jh@suse.cz>
1620
1621         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
1622         waring on 64bit hosts.
1623         * bitmap.h: Fix typo in bitmap_head_def.
1624
1625 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
1626
1627         PR rtl-optimization/31391
1628         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
1629         into a DELETED_LABEL note, and the label is in an empty basic
1630         block, update BB_END as well as BB_HEAD.
1631
1632 2007-04-01  Richard Henderson  <rth@redhat.com>
1633
1634         PR tree-optimization/31169
1635         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
1636         to varying if the range is outside [0,  prec-1].
1637
1638 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
1639
1640         PR target/31388
1641         * config/mips/mips.md (load_const_gp): New insn.
1642         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
1643         the MIPS16 GP pseudo register if no_new_pseudos.
1644         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
1645
1646 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1647
1648         PR target/31364
1649         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
1650         secureplt.
1651         (call_value): Likewise.
1652
1653 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
1654             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1655
1656         PR 14737
1657         * doc/invoke.texi: (optimization options): Reword description
1658         of -ffast-math. Document its primary purpose.
1659
1660 2007-03-31  Richard Guenther  <rguenther@suse.de>
1661
1662         * omp-low.c (splay-tree.h): Include.
1663         (lookup_decl): Replace splay-tree usage by pointer-map.
1664         (maybe_lookup_decl): Likewise.
1665         (new_omp_context): Likewise.
1666         (delete_omp_context): Likewise.
1667         * gimplify.c (splay-tree.h): Include.
1668         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
1669         pointer-map.
1670         (remap_ssa_name): Likewise.
1671         (remap_decl): Likewise.
1672         (remap_type_1): Likewise.
1673         (remap_type): Likewise.
1674         (copy_body_r): Likewise.
1675         (expand_call_inline): Likewise.
1676         (clone_body): Likewise.
1677         (copy_tree_r): Likewise.
1678         (remap_save_expr): Likewise.
1679         (unsave_r): Likewise.
1680         (unsave_expr_now): Likewise.
1681         (tree_function_versioning): Likewise.
1682         (build_duplicate_type): Likewise.
1683         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
1684         (struct copy_body_data): Replace splay-tree by pointer-map.
1685         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
1686         not $(SPLAY_TREE_H).
1687         (gimplify.o): Depend on $(SPLAY_TREE_H).
1688         (omp-low.p): Likewise.
1689
1690 2007-03-31  Anatoly Sokolov <aesok@post.ru>
1691
1692         * config/avr/predicates.md (even_register_operand,
1693         odd_register_operand): New predicates.
1694         * config/avr/avr.md (movw peephole2): New.
1695         (movw_r peephole2): New.
1696
1697 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
1698
1699         * tree.h (get_signed_or_unsigned_type): New.
1700         * fold-const.c (operand_equal_for_comparison_p): Use
1701         get_signed_or_unsigned_type instead of
1702         lang_hooks.types.signed_or_unsigned_type.
1703         * expr.c (store_expr): Ditto.
1704         * langhooks.c (get_signed_or_unsigned_type): New.
1705         (lhd_signed_or_unsigned_type): New.
1706         * langhooks.h (lhd_signed_or_unsigned_type): New.
1707         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
1708
1709 2007-03-30  Richard Henderson  <rth@redhat.com>
1710
1711         * tree-ssa-loop-ivopts.c: Include target.h.
1712         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
1713         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
1714         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
1715         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
1716
1717 2007-03-30  Richard Henderson  <rth@redhat.com>
1718             Kai Tietz  <kai.tietz@onevision.com>
1719
1720         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
1721         default for 64-bit.
1722         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
1723         (TARGET_64BIT_MS_ABI): New.
1724         (DBX_REGISTER_NUMBER): Handle 64-bit.
1725         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
1726         (LONG_TYPE_SIZE): Force to 32.
1727         (REG_PARM_STACK_SPACE): New.
1728         (OUTGOING_REG_PARM_STACK_SPACE): New.
1729         (REGPARM_MAX, SSE_REGPARM_MAX): New.
1730         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1731         (STACK_BOUNDARY): Use 128 for 64-bit.
1732         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
1733         Add 64-bit implementation.
1734         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
1735         argument unused.
1736         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
1737         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
1738         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
1739         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
1740         (ix86_handle_cconv_attribute): Don't warn when ignoring if
1741         TARGET_64BIT_MS_ABI.
1742         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
1743         (ix86_pass_by_reference): Likewise.
1744         (ix86_function_value_regno_p): Likewise.
1745         (ix86_build_builtin_va_list): Likewise.
1746         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
1747         (function_arg_advance_ms_64): New.
1748         (function_arg_advance): Call it.
1749         (function_arg_ms_64): New.
1750         (function_arg): Call it.
1751         (function_value_ms_64): New.
1752         (ix86_function_value_1): Call it.
1753         (return_in_memory_ms_64): New.
1754         (ix86_return_in_memory): Call it.
1755         (setup_incoming_varargs_ms_64): New.
1756         (ix86_setup_incoming_varargs): Call it.
1757         (ix86_expand_prologue): Handle 64-bit stack probing.
1758         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
1759         (output_pic_addr_const): Likewise.
1760         (x86_this_parameter): Likewise.
1761         (x86_output_mi_thunk): Likewise.
1762         (x86_function_profiler): Likewise.
1763         (TARGET_STRICT_ARGUMENT_NAMING): New.
1764         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
1765         (TARGET_64BIT_MS_ABI): New.
1766         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
1767         * config/i386/i386.md (allocate_stack_worker): Remove.
1768         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
1769         describe the clobber of eax without a match_scratch.
1770         (allocate_stack_worker_postreload): Remove.
1771         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
1772         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
1773         (allocate_stack_worker_rex64_postreload): Remove.
1774         (allocate_stack): Handle 64-bit.
1775         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
1776         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
1777         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
1778         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
1779         (STANDARD_STARTFILE_PREFIX_1): Likewise.
1780         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
1781         * config.build (x86_64-*-mingw*): New host.
1782         * config.host (x86_64-*-mingw*): New host.
1783         * config.gcc (x86_64-*-mingw*): New target.
1784         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
1785
1786 2007-03-30  Richard Henderson  <rth@redhat.com>
1787             Kai Tietz  <kai.tietz@onevision.com>
1788
1789         * c-pragma.c (struct def_pragma_macro_value): New.
1790         (struct def_pragma_macro): New.
1791         (pushed_macro_table): New.
1792         (dpm_hash, dpm_eq): New.
1793         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
1794         (init_pragma): Install them.
1795         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1796
1797 2007-03-30  Anatoly Sokolov <aesok@post.ru>
1798
1799         * config/avr/avr.c (avr_override_options): Clear
1800         'flag_delete_null_pointer_checks'.
1801
1802 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
1803
1804         PR c++/26099
1805         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
1806         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
1807         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
1808         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
1809         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
1810         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
1811         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
1812         C++ extensions.
1813         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
1814
1815 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
1816
1817         * regmove.c: Move all of pass_stack_adjustments from here...
1818         * combine-stack-adj.c: ...to this new file.
1819         * Makefile.in: Add rules for combine-stack-adj.o.
1820
1821 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
1822
1823         PR tree-optimization/31383
1824         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
1825         to have the same length.
1826
1827 2007-03-30  Jan Hubicka  <jh@suse.cz>
1828
1829         PR middle-end/30700
1830         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
1831         availablility; add more sanity checking; ask varpool only about
1832         VAR_DECL.
1833
1834 2007-03-29  Richard Henderson  <rth@redhat.com>
1835
1836         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
1837         to decide, but __SIZEOF_LONG_LONG__.
1838
1839 2007-03-29  Richard Henderson  <rth@redhat.com>
1840
1841         * emutls.c (struct __emutls_array): New.
1842         (emutls_destroy): Use it instead of casting element 0 from void*.
1843         (__emutls_get_address): Likewise.
1844
1845 2007-03-29  Richard Henderson  <rth@redhat.com>
1846
1847         * varasm.c (initializer_constant_valid_p): Don't deny
1848         DECL_DLLIMPORT_P on functions.
1849
1850         * config/i386/cygming.h: Remove function declarations.
1851         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
1852         (ASM_OUTPUT_LABELREF): Remove.
1853         (COMMON_ASM_OP): Remove.
1854         (ASM_OUTPUT_COMMON): Remove.
1855         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
1856         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
1857         (ASM_DECLARE_FUNCTION_NAME): Likewise.
1858         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
1859         Rename from TARGET_ENCODE_SECTION_INFO.
1860         * config/i386/netware.h: Likewise.
1861         * config/i386/i386-protos.h: Update.
1862         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
1863         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
1864         (legitimate_constant_p): Reject dllimports.
1865         (dllimport_map, get_dllimport_decl): New.
1866         (legitimize_dllimport_symbol): New.
1867         (legitimize_address, ix86_expand_move): Use it.
1868         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
1869         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
1870         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
1871         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
1872         * config/i386/predicates.md (constant_call_address_operand): Only
1873         accept symbols; reject dllimport_p symbols.
1874         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
1875         i386_pe_maybe_record_exported_symbol.
1876         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
1877         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
1878         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
1879         trust the setting of DECL_DLLIMPORT_P.
1880         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
1881         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
1882         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
1883         tidy the argument scanning loop.
1884         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
1885         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
1886         (i386_pe_strip_name_encoding): Remove.
1887         (i386_pe_binds_local_p): New.
1888         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
1889         (i386_pe_output_labelref): Remove.
1890         (i386_pe_asm_output_aligned_decl_common): New.
1891         (i386_pe_maybe_record_exported_symbol): Rename from
1892         i386_pe_record_exported_symbol; check for dllexported symbols.
1893
1894 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
1895
1896         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
1897         add comment explaining why vsnprintf cannot be used.
1898
1899 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
1900
1901         PR tree-optimization/30666
1902         * tree.c (build_complex_type): When creating type names for DWARF2
1903         debug info, create TYPE_DECLs for TYPE_NAME instead of
1904         IDENTIFIER_NODEs.
1905         (build_common_tree_nodes_2): Use build_complex_type when building
1906         predefined complex types, to preserve canonical types.
1907
1908 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
1909
1910         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
1911         (noce_get_alt_condition): Look at it to determine whether to
1912         reverse the condition or not.
1913         (noce_get_condition): Substitute the truth for lies.
1914         (noce_find_if_block): Set the then_else_reversed field.
1915
1916 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
1917
1918         * config/fr30/fr30.md (movdi): Do not accept immediates as the
1919         destination of this insn.
1920         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
1921         than calling gen_rtx_SET directly.  Use r0 to hold the value of
1922         'address + 4' rather than a stack based temporary which can be
1923         mis-optimized away.
1924
1925 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1926
1927         * config/s390/s390.c (s390_secondary_input_reload_class,
1928         s390_secondary_output_reload_class): Functions removed.
1929         (s390_secondary_reload): New function.
1930         (TARGET_SECONDARY_RELOAD): Target macro defined.
1931         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
1932         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
1933         * config/s390/s390.md ("reload_outti", "reload_outdi",
1934         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
1935         "reload_out<mode>"): Expanders removed.
1936         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
1937         "reload<mode>_nonoffmem_out"): Expanders added.
1938
1939 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1940
1941         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
1942         SRC->DEST replacement failed anyway.
1943
1944 2007-03-28  Mike Stump  <mrs@apple.com>
1945
1946         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
1947         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
1948         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
1949
1950 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1951
1952         * config.gcc: Accept barcelona as a variant of amdfam10.
1953         * config/i386/i386.c (override_options): Likewise.
1954         * doc/invoke.texi: Likewise.
1955
1956 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
1957
1958         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
1959         offsets for BIT_FIELD_REF and COMPONENT_REF.
1960
1961 2007-03-28  Richard Guenther  <rguenther@suse.de>
1962
1963         * tree.c (is_global_var): Move ...
1964         * tree-flow-inline.h (is_global_var): ... here.
1965         * tree.h (is_global_var): Remove declaration.
1966
1967 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
1968
1969         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
1970         option.
1971         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
1972         * config/i386/i386.c (ix86_tune_features): Initialize new
1973         tuning option.
1974         * config/i386/predicates.md (promotable_binary_operator): Use
1975         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
1976
1977 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
1978
1979         PR target/31380
1980         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
1981
1982 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
1983
1984         * config/fr30/fr30.md (movsi_internal): Change destination
1985         constraint from m to V and add m to the end.
1986
1987 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1988
1989         * config/sh/sh.md (movsi_i): Fix type attribute.
1990
1991 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1992
1993         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
1994         (movsf_ie): Likewise.
1995
1996 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1997
1998         * config.gcc: Add sh4-300 to multilib.
1999         * config/sh/t-mlib-sh4-300: New file.
2000
2001 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
2002
2003         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
2004         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
2005         fix_trunc<mode>di2.
2006         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
2007         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
2008         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
2009         "fixuns_trunctddi2"): Whitespace fix.
2010
2011 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2012
2013         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
2014         the definition of struct sh_args.
2015         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
2016         CALL_COOKIE_INT_REG_GET): Likewise.
2017
2018 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
2019
2020         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
2021         transformations are applied successfully.
2022
2023 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
2024
2025         * tree.c (tree_contains_struct): Permit 512 tree codes.
2026         * tree.h (tree_contains_struct): Ditto.
2027         (MAX_TREE_CODES): Ditto.
2028         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
2029         SPARE member to store remaining padding bits.
2030
2031 2007-03-27  Anatoly Sokolov <aesok@post.ru>
2032
2033         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
2034         architecture.
2035
2036 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
2037
2038         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
2039         * configure: Regenerate.
2040
2041         * configure: Regenerate using the correct version of autoconf.
2042
2043 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
2044
2045         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
2046         pointer regs.
2047         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
2048         regs to "__SP_L__" and "__SP_H__".
2049
2050 2007-03-27  Richard Guenther  <rguenther@suse.de>
2051
2052         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
2053         computations with it with a HOST_WIDE_INT variable.
2054
2055 2007-03-26  Mike Stump  <mrs@apple.com>
2056
2057         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
2058         objective-c-header, objective-c++-header and objc++-cpp-output
2059         support.
2060         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
2061
2062 2007-03-26  Richard Henderson  <rth@redhat.com>
2063
2064         PR target/31361
2065         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
2066         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
2067         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
2068         IX86_BUILTIN_PSRLQ128): New.
2069         (ix86_init_mmx_sse_builtins): Add them.
2070         (ix86_expand_builtin): Expand them.
2071         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
2072         operand 2 be TImode.
2073         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
2074         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
2075         _mm_srli_epi64): Mark __B const.
2076         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
2077         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
2078         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
2079         new two-vector shift builtins.
2080
2081 2007-03-26  Ian Lance Taylor  <iant@google.com>
2082
2083         PR tree-optimization/31345
2084         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
2085         [+INF, +INF(OVF)] into VARYING.
2086
2087 2007-03-26  Zack Weinberg  <zackw@panix.com>
2088
2089         * gengtype-parse.c: New file.
2090         * gengtype-yacc.y: Delete.
2091         * gengtype-lex.l: Don't include gengtype-yacc.h.
2092         Define YY_DECL and yyterminate appropriately for recursive
2093         descent parser.  yylval is now a string out-parameter to yylex.
2094         (HWS, EOID): New shorthand.
2095         (IWORD): Add a couple more types.
2096         (yylex): Add a setup stanza.  Remove the complex rules for
2097         detecting GTY'ed types and typedefs; replace with simple
2098         keyword detectors.  Adjust everything for the changed
2099         definition of yylval.  Ignore all pp-directives, not just #define.
2100         (yyerror): Delete.
2101         (parse_file): Rename yybegin; do not call yyparse.
2102         (yyend): New.
2103         * gengtype.c (xasprintf): Export again.
2104         (this_file): New.  Use everywhere __FILE__ was being used.
2105         (get_lang_bitmap): Special case types defined in gengtype.c.
2106         (do_typedef, new_structure): Suppress definition of certain types.
2107         (new_structure): Improve diagnostics of duplicate definitions.
2108         Make sure location_s is associated with input.h.
2109         (nreverse_pairs, define_location_structures): New functions.
2110         (main): Improve tagging of kludge types.  Remove old kludges
2111         for input.h types; use define_location_structures.
2112         * gengtype.h: Update prototypes.  Define token codes here.
2113         * Makefile.in: Remove all references to gengtype-yacc.
2114         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
2115         and gengtype.
2116         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
2117         add GTY((skip)) to the field that's only conditionally there.
2118         * doc/install.texi: Document that Bison is no longer required
2119         unless building treelang.
2120
2121         * gengtype.c: Don't include gtyp-gen.h.
2122         (srcdir): Declare here.
2123         (base_files, lang_dir_names): Allocate dynamically.
2124         (gt_files, num_gt_files, num_lang_dirs): New globals.
2125         (measure_input_list, read_input_line, read_input_list)
2126         (set_lang_bitmap): New functions.
2127         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
2128         simplify, relying on read_input_list to set up the bitmaps.
2129         (main): Arguments are no longer unused.  Check for correct number
2130         of command line arguments, set srcdir and srcdir_len, then call
2131         read_input_list, before doing anything else.  No need to worry
2132         about duplicates in main loop.
2133         * configure.ac: Simplify the calculation of all_gtfiles.
2134         Put language tags in there.  Don't set or substitute
2135         all_gtfiles_files_langs or all_gtfiles_files_frags.
2136         * Makefile.in: Revamp the way gengtype is invoked, now that it
2137         takes a file on its command line with a much simpler format.
2138         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
2139         (GTFILES): Remove duplicates and C source files.
2140         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
2141         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
2142         * configure: Regenerate.
2143
2144         * gengtype.h: Remove all type definitions to gengtype.c; leave
2145         only definitions of options_p, type_p, and pair_p as opaque
2146         pointers.  Update prototypes.
2147         * gengtype.c: Many type definitions moved here from gengtype.h.
2148         Consolidate type definitions at the top of the file.
2149         (xvasprintf): Delete.
2150         (xasprintf): Make static.
2151         (create_nested_pointer_option): Add 'next' parameter.
2152         (create_field_all, create_field_at): New functions.
2153         (create_field): Now a thin wrapper around create_field_all.
2154         (create_optional_field): Rename create_optional_field_ and add
2155         line argument.  Original name is now a macro which supplies
2156         __LINE__.
2157         (oprintf): Use vsnprintf directly.
2158         (close_output_files): Use fatal rather than perror/exit.
2159         (note_def_vec, note_def_vec_alloc): Use create_field_at.
2160         (main): Set progname.  Don't use exit.
2161         * gengtype-yacc.y (struct_fields): Use create_field_at.
2162         (option, optionseqopt): Delete.
2163         (optionseq): Consolidate productions from option here so we
2164         can use the first argument to create_option.
2165
2166         * gengtype-lex.l: Distinguish unions from structures in the
2167         token type.  Don't call find_structure; return the tag as a string.
2168         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
2169         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
2170         Reorganize typedef_struct production accordingly.
2171         Use create_nested_ptr_option.
2172         * gengtype.c (create_nested_ptr_option): New function.
2173         * gengtype.h: Declare it.
2174
2175         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
2176         (string_type): Don't declare.
2177         (do_scalar_typedef): Declare.
2178         (create_scalar_type): Update prototype.
2179         * gengtype.c (string_type): Make static.
2180         (scalar_nonchar, scalar_char): New.
2181         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
2182         (resolve_typedef): Use scalar_nonchar for error recovery.
2183         (create_scalar_type): Remove name_len field.  Return scalar_char
2184         or scalar_nonchar as appropriate.
2185         (adjust_field_type): Look at scalar_is_char boolean to decide whether
2186         to use string_type.
2187         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
2188         whenever possible.
2189         (main): Initialize scalar_char and scalar_nonchar before calling
2190         gen_rtx_next.
2191         * gengtype-lex.l: Adjust for removal of second argument to
2192         create_scalar_type.  Use yylval.s instead of yylval.t when
2193         returning SCALAR.
2194         * gengtype-yacc.y: Type of SCALAR is string.  Call
2195         create_scalar_type from type:SCALAR rule.  Adjust for removal of
2196         second argument to create_scalar_type.
2197
2198         * vec.h: Remove all #if IN_GENGTYPE blocks.
2199         Add comment saying that changes may require adjustments to gengtype.
2200         * gengtype.c: Don't include coretypes.h or tm.h.
2201         Add comment to inclusion of errors.h.
2202         (note_def_vec, note_def_vec_alloc): New functions.
2203         * gengtype.h: Declare new functions.
2204         * gengtype-lex.l: Don't include coretypes.h.
2205         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
2206         Delete.
2207         (update_lineno): Remove unnecessary prototype.
2208         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
2209         (VEC rule): Just return VEC_TOKEN.
2210         * gengtype-yacc.y (VEC_TOKEN): New token type.
2211         (type): Add a production for VEC(a,b).
2212         * Makefile.in: Update dependencies.
2213
2214         * gengtype-lex.l: Remove rules for parsing pointer-to-function
2215         typedefs that use the old PARAMS macro.
2216
2217         * gengtype-lex.l: Remove all rules and states relating to yacc
2218         input files.
2219         * gengtype-yacc.y: Similarly.
2220         * gengtype.c (note_yacc_type): Delete function.
2221         * gengtype.h: Update prototypes.
2222
2223 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
2224
2225         * tree-pretty-print.c (dump_generic_node): Report precision of
2226         unnamed integer types.
2227
2228 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
2229
2230         * ifcvt.c (noce_try_store_flag_constants): Don't check
2231         no_new_pseudos here.
2232         (noce_try_store_flag_constants): Don't check no_new_pseudos.
2233         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
2234         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
2235         noce_try_sign_mask): Likewise.
2236         (if_convert): Check no_new_pseudos here.
2237
2238         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
2239         Remove prototypes.
2240         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
2241         (noce_get_condition): Handle new then_else_reversed argument.
2242         (noce_init_if_info): Remove, fold into noce_find_if_block.
2243         (noce_process_if_block): Take a struct noce_if_info as the
2244         argument.  Don't set up one based on ce_if_info.  Update pointer
2245         references accordingly.
2246         (cond_move_process_if_block): Likewise.
2247         (process_if_block): Removed.
2248         (find_if_block): Removed.  Move functionality two new functions,
2249         noce_find_if_block and cond_exec_find_if_block.
2250         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
2251         blocks and the symmetric IF-ELSE-JOIN case.
2252         (cond_exec_find_if_block): Also new function mostly based on old
2253         find_if_block and process_if_block.
2254         (find_if_header): Replace find_if_block call with separately
2255         guarded calls to noce_find_if_block and cond_exec_find_if_block.
2256         (find_cond_trap): Update noce_get_condition call.
2257         (dead_or_predicable): Likewise.
2258
2259 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
2260
2261         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
2262         Remove.
2263         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
2264         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
2265         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
2266         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
2267         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
2268         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
2269         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
2270         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
2271         __builtin_ia32_psrad128 builtins.
2272
2273 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
2274
2275         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
2276         * config/i386/constraints.md
2277         (define_constraint "I"): Use IN_RANGE macro.
2278         (define_constraint "J"): Ditto.
2279         (define_constraint "K"): Ditto.
2280         (define_constraint "M"): Ditto.
2281         (define_constraint "N"): Ditto.
2282         (define_constraint "O"): Ditto.
2283         * config/i386/predicates.md
2284         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
2285         (define_predicate "const_0_to_3_operand"): Ditto.
2286         (define_predicate "const_0_to_7_operand"): Ditto.
2287         (define_predicate "const_0_to_15_operand"): Ditto.
2288         (define_predicate "const_0_to_63_operand"): Ditto.
2289         (define_predicate "const_0_to_255_operand"): Ditto.
2290         (define_predicate "const_1_to_31_operand"): Ditto.
2291         (define_predicate "const_2_to_3_operand"): Ditto.
2292         (define_predicate "const_4_to_7_operand"): Ditto.
2293
2294 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
2295
2296         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
2297         in SImode for save_world.
2298         * config/rs6000/altivec.md (save_world, restore_world): Convert to
2299         LR hard reg.
2300
2301 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
2302
2303         PR tree-optimization/30784
2304         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
2305         BIT_FIELD_REF.
2306
2307 2007-03-25  Revital Eres  <eres@il.ibm.com>
2308
2309         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
2310           Fold movement_possibility function into it.
2311
2312 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
2313
2314         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
2315         (load_macho_picbase_{si,di}): Convert to LR hard reg.
2316         (call_indirect_nonlocal_darwin64): Same.
2317         (call_nonlocal_darwin64): Same.
2318         (call_value_indirect_nonlocal_darwin64): Same.
2319         (call_value_nonlocal_darwin64): Same.
2320         (sibcall_nonlocal_darwin64): Same.
2321         (sibcall_value_nonlocal_darwin64): Same.
2322         (sibcall_symbolic_64): Same.
2323         (sibcall_value_symbolic_64): Same.
2324         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
2325         LR pseudo.
2326         (rs6000_emit_load_toc_table): Same.
2327         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
2328         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
2329         (mull_call): Same.
2330         (divss_call): Same.
2331         (divus_call): Same.
2332         (quoss_call): Same.
2333         (quous_call): Same.
2334         (load_toc_v4_pic_si): Same
2335         (load_toc_v4_PIC_1): Same.
2336         (load_toc_v4_PIC_1b): Same.
2337         (call_indirect_aix{32,64}): Same.
2338         (call_value_indirect_aix{32,64}): Same.
2339         (call): Same.
2340         (call_value): Same.
2341         (call_local{32,64}): Same.
2342         (call_value_local{32,64}): Same.
2343         (call_indirect_nonlocal_aix{32,64}): Same.
2344         (call_nonlocal_aix{32,64}): Same.
2345         (call_value_indirect_nonlocal_aix{32,64}): Same.
2346         (call_value_nonlocal_aix{32,64}): Same.
2347         (call_indirect_nonlocal_sysv<mode>): Same.
2348         (call_nonlocal_sysv<mode>): Same.
2349         (call_value_indirect_nonlocal_sysv<mode>): Same.
2350         (call_value_nonlocal_sysv<mode>): Same.
2351         (sibcall): Same.
2352         (sibcall_local{32,64}): Same.
2353         (sibcall_value_local{32,64}): Same.
2354         (sibcall_nonlocal_aix{32,64}): Same.
2355         (sibcall_value_nonlocal_aix{32,64}): Same.
2356         (sibcall_nonlocal_sysv<mode>): Same.
2357         (sibcall_value): Same.
2358         (sibcall_value_nonlocal_sysv<mode>): Same.
2359
2360 2007-03-24  Paul Brook  <paul@codesourcery.com>
2361
2362         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
2363         * config/arm/linux-eabi.h: Remove legacy syscall hack.
2364
2365 2007-03-24  Richard Henderson  <rth@redhat.com>
2366
2367         * config/ia64/constraints.md: New file.
2368         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
2369         satisfies_constraint_?.
2370         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
2371         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
2372         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
2373         ia64_output_mi_thunk): Likewise.
2374         (ia64_const_ok_for_letter_p): Remove.
2375         (ia64_const_double_ok_for_letter_p): Remove.
2376         (ia64_extra_constraint): Remove.
2377         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
2378         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
2379         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
2380         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
2381         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
2382         EXTRA_MEMORY_CONSTRAINT): Remove.
2383         * config/ia64/ia64.md: Include constriants.md.  Replace
2384         CONST_OK_FOR_? with satisfies_constraint_?.
2385
2386 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
2387             H.J. Lu  <hongjiu.lu@intel.com>
2388
2389         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
2390         DPD or BID name.
2391         (name macros): Use DPD_BID_NAME to convert names properly.
2392
2393         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
2394         decimal floating point format.
2395         (init_floating_libfuncs): Change decimal functions so that they
2396         have a "bid_" prefix if the decimal system uses the BID format,
2397         and "dpd_" prefix if the decimal system uses the DPD format.
2398         (init_interclass_conv_libfuncs): Ditto.
2399         (init_intraclass_conv_libfuncs): Ditto.
2400
2401         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
2402         using the BID format.
2403
2404         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
2405         whether we are using the BID decimal format.
2406         * configure: Regenerate.
2407
2408         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
2409         the compiler has decimal floating point enabled.  Define
2410         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
2411         instead of DPD.
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         * doc/install.texi (--enable-decimal-float): Document BID and DPD
2426         options, and that it is enabled for i386/x86_64 systems.
2427
2428         * Makefile.in (enable_decimal_float): New.
2429         (DECNUMFMT): New.
2430         (DECNUMINC): Add  -I$(DECNUMFMT).
2431         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
2432         to $(DECNUMFMT) from $(DECNUM).
2433
2434         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
2435         Substitute enable_decimal_float.
2436         * configure: Regenerated.
2437
2438         PR other/30529
2439         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
2440         unsigned long.
2441
2442         * configure.ac: Enable decimal float for x86_64-*-linux*.
2443         * configure: Regenerated.
2444
2445         PR other/30530
2446         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
2447         decimal128ClearSign to flip and clear the sign bit in decimal128.
2448         (decimal_real_maxval): Set decimal128SetSign to set the sign
2449         bit in decimal128.
2450
2451 2007-03-23  Ian Lance Taylor  <iant@google.com>
2452
2453         * fold-const.c (fold_binary): Correct warning for X - c >= X.
2454
2455 2007-03-23  Ian Lance Taylor  <iant@google.com>
2456
2457         * tree-dump.c (dump_files): Correct comment.
2458
2459 2007-03-23  Ian Lance Taylor  <iant@google.com>
2460
2461         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
2462
2463 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
2464
2465         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
2466         in cfglayout mode.  Don't go into and out of cfglayout mode.
2467         Link the blocks in the order of the constructed traces.
2468         (rest_of_handle_tracer): Adjust call to tracer.
2469         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
2470         Don't go into cfglayout mode.
2471         (rtl_loop_done): Don't go out of cfglayout mode.
2472         * cfglayout.c (relink_block_chain): New function, split out from...
2473         (fixup_reorder_chain): ...here.  Remove redundant checking.
2474         (cfg_layout_finalize): Don't clear the header, footer, and aux
2475         fields here, move the code to do so to relink_block_chain.  Likewise
2476         for free_original_copy_tables.
2477         * rtl.h (tracer): Update prototype.
2478         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
2479         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
2480         mode.  Use relink_block_chain to serialize the CFG according to the
2481         new basic block order.  Move targetm.cannot_modify_jumps_p check from
2482         here...
2483         (gate_handle_reorder_blocks): ...to here.
2484         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
2485         from here...
2486         (gate_duplicate_computed_gotos): ...to here.
2487         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
2488         something always changes when going into and out of cfglayout mode.
2489         Perform an expensive cfg cleanup while going into cfglayout mode.
2490         Always update liveness information on HAVE_conditional_execution
2491         targets.  Reserialize the basic blocks and go out of cfglayout mode.
2492         * reg-stack.c: Include cfglayout.h.
2493         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
2494         the call to reorder_basic_blocks.
2495         * basic-block.h (reorder_basic_blocks): Update prototype.
2496         (relink_block_chain): New prototype.
2497         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
2498
2499 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
2500
2501         * config/mips/mips.md (type, hazard, *movdi_32bit,
2502         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
2503         *movhi_internal, *movqi_internal, *movsf_hardfloat,
2504         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
2505         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
2506         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
2507         applicable.
2508         (movcc): Change first xfer to multi.
2509         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
2510         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
2511         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
2512         config/mips/generic.md: Change reservations using "xfer" to use
2513         "mfc,mtc".
2514         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
2515         using match_operand.
2516         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
2517         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
2518         examining mode.
2519         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
2520
2521 2007-03-22  Richard Henderson  <rth@redhat.com>
2522
2523         * config/i386/i386.c: Remove unnecessary function declarations.
2524         Move targetm definition, and all related macros, to the end of
2525         the file.  Resort some functions to put definitions before uses.
2526         (ix86_attribute_table): Make static.  Move to end of file.
2527         (ix86_gimplify_va_arg): Make static.
2528
2529 2007-03-22  Richard Henderson  <rth@redhat.com>
2530
2531         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
2532         don't increase local_regparm with force_align_arg_pointer check.
2533         (ix86_function_sseregparm): Assert 32-bit.
2534         (type_has_variadic_args_p): New.
2535         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
2536         type_has_variadic_args_p.
2537         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
2538         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
2539         use memset instead.  Do maybe_vaarg check first; skip attribute
2540         tests if true; skip attribute tests for 64-bit.
2541         (construct_container): Remove TARGET_DEBUG_ARG.
2542         (function_arg_advance_32, function_arg_advance_64): Split out ...
2543         (function_arg_advance): ... from here.
2544         (function_arg_32, function_arg_64): Split out ...
2545         (function_arg): ... from here.
2546         (ix86_pass_by_reference): Tidy.
2547         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
2548         (function_value_32): New, from parts of ix86_function_value
2549         and ix86_value_regno.
2550         (function_value_64): New, from parts of ix86_function_value
2551         and ix86_libcall_value.
2552         (ix86_function_value_1): New.
2553         (ix86_function_value, ix86_libcall_value): Use it.
2554         (return_in_memory_32, return_in_memory_64): Split out ...
2555         (ix86_return_in_memory): ... from here.
2556         (ix86_struct_value_rtx): Skip for 64-bit.
2557         (ix86_libcall_value, ix86_value_regno): Remove.
2558         (setup_incoming_varargs_64): Split out ...
2559         (ix86_setup_incoming_varargs): ... from here.
2560         (ix86_va_start): Remove TARGET_DEBUG_ARG.
2561         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
2562         * config/i386/i386-protos.h (ix86_function_value): Remove.
2563         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
2564
2565 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2566
2567         PR other/23572
2568         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
2569         infinities not supported, otherwise emit warning if -Woverflow. On
2570         underflow, emit warning if -Woverflow.
2571         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
2572         and 0 otherwise.
2573         * real.h (real_from_string): Update declaration
2574
2575 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
2576             Richard Henderson  <rth@redhat.com>
2577
2578         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
2579         * calls.c (compute_argument_block_size, expand_call,
2580         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
2581         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
2582         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
2583         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
2584         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
2585         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
2586         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
2587         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
2588         Set to 1.
2589
2590 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
2591
2592         * c-incpath.c (add_sysroot_to_chain): New.
2593         (merge_include_chains): Add sysroot argument.  Call
2594         add_sysroot_to_chain if sysrooted.
2595         (register_include_chains): Update call to merge_include_chains.
2596         * doc/cppopts.texi: Document use of '=' in include directory
2597         arguments.
2598
2599 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
2600
2601         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
2602         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
2603         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
2604         insn pattern using X87MODEF12 mode macro.
2605
2606 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
2607
2608         * regmove.c (regmove_optimize): Use reg_mentioned_p
2609         instead of reg_overlap_mentioned_p for DST.
2610
2611 2007-03-21  Mike Stump  <mrs@apple.com>
2612
2613         * c.opt: Fixup for Objective-C/C++.
2614
2615 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
2616
2617         * explow.c (convert_memory_address): Fold memory reference when
2618         POINTERS_EXTEND_UNSIGNED < 0
2619
2620 2007-03-21  Richard Henderson  <rth@redhat.com>
2621
2622         PR target/31245
2623         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
2624         * config/i386/mmintrin.h (__m64): Likewise.
2625         * config/i386/xmmintrin.h (__m128): Likewise.
2626
2627 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2628
2629         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
2630         (VXWORKS_OS_CPP_BUILTINS): Define.
2631         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
2632         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
2633
2634 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2635
2636         * rtl.h (constant_pool_reference_p): Delete.
2637         (find_constant_src): Declare.
2638         * rtlanal.c (find_constant_src): New function.
2639         * simplify-rtx.c (constant_pool_reference_p): Delete.
2640         * config/i386/i386.md: Use find_constant_src instead of
2641         constant_pool_reference_p/avoid_constant_pool_reference pairs.
2642
2643 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2644
2645         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
2646         * c-cppbuiltin.c (c_cpp_builtins): Define them.
2647
2648 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
2649
2650         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
2651         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
2652         (arm_elf_asm_constructor): Use it.
2653         (arm_elf_asm_destructor): New function.
2654
2655 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
2656
2657         * jump.c (mark_jump_label): Treat SEQUENCE specially.
2658
2659 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
2660
2661         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
2662
2663 2007-03-19  Andrew Haley  <aph@redhat.com>
2664
2665         PR tree-optimization/31264
2666         * tree-vrp.c (register_edge_assert_for_1): Don't look though
2667         VIEW_CONVERT_EXPRs.
2668
2669 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
2670
2671         PR rtl-optimization/30907
2672         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
2673         (fwprop_init): Always call loop_optimizer_initialize.
2674         (fwprop_done): Always call loop_optimizer_finalize.
2675         (fwprop): We always have loop info now.
2676         (gate_fwprop_addr): Remove.
2677         (pass_fwprop_addr): Use gate_fwprop as gate.
2678
2679         PR rtl-optimization/30841
2680         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
2681         df_chain_alloc): Call df_reorganize_refs unconditionally.
2682         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
2683         refs_organized to refs_organized_size.
2684         (df_ref_create_structure): Use refs_organized_size instead of
2685         bitmap_size if refs had been organized, and keep refs_organized_size
2686         up-to-date.
2687         * df.h (struct df_ref_info): Change refs_organized to
2688         refs_organized_size.
2689         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
2690         bitmap_size.
2691
2692 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
2693
2694         * except.c (output_function_exception_table): Do not reference the
2695         EH personality routine for functions that do not require an
2696         exception table.
2697
2698 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
2699
2700         PR c/30762
2701         * c-typeck.c (convert_for_assignment): Call comptypes for
2702         RECORD_TYPE or UNION_TYPE.
2703
2704         PR inline-asm/30505
2705         * reload1.c (reload): Do invalid ASM checking after
2706         cleanup_subreg_operands.
2707
2708 2007-03-19  Jeff Law  <law@redhat.com>
2709
2710         * tree-cfg.c (find_taken_edge): Tighten conditions for
2711         optimizing computed gotos.
2712
2713 2007-03-19  Michael Matz  <matz@suse.de>
2714
2715         * builtins.c (expand_builtin_sync_operation,
2716         expand_builtin_compare_and_swap,
2717         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
2718         correctly.
2719
2720         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
2721         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
2722         for operand 3.
2723
2724 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2725
2726         * doc/tm.texi: Add brackets around the return type of
2727         TARGET_SECONDARY_RELOAD.
2728
2729 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2730         Richard Guenther  <rguenther@suse.de>
2731
2732         PR tree-optimization/31254
2733         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
2734         Use handled_component_p () where appropriate.  Continue
2735         propagating into the rhs if we propagated into an INDIRECT_REF
2736         on the lhs.
2737
2738 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2739
2740         * config/s390/s390.md (op_type attribute): RRR instruction type added.
2741         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
2742         (xde, xdee): Mode attributes adjusted to support DFP modes.
2743         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
2744         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
2745         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
2746         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
2747         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
2748         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2749         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
2750         numbers.
2751         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
2752         "movsf"): Insn definitions removed.
2753         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
2754         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
2755         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
2756         definitions added.
2757         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
2758         "reload_in<mode>", "reload_out<mode>"): Expander added.
2759         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
2760         Expander removed.
2761
2762 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2763
2764         * config/s390/s390.md: Only non-functional changes.  Renamed
2765         FPR mode macro to BFP all over the file.
2766
2767 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2768
2769         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
2770         (op_type attribute): RRF instruction type added.
2771         (fT0): New mode attribute.
2772         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2773         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
2774         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
2775         no secondary memory is needed when moving DFmode values between GPRs
2776         and FPRs.
2777
2778 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2779
2780         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
2781         inverted and documentation adjusted.
2782         ("mhard-dfp", "msoft-dfp"): New options.
2783         * config/s390/s390.c (s390_handle_arch_option): New architecture
2784         switch: z9-ec.
2785         (override_options): Sanity checks for the new options added.
2786         * config.gcc: New architecture switch: z9-ec.
2787         * config/s390/s390.h (processor_flags): PF_DFP added.
2788         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
2789         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
2790         when the bit is NOT set so remove it from the defaults.
2791
2792 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2793
2794         * genemit.c (main): Print include statement for dfp.h.
2795         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
2796         is not available.
2797
2798 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2799
2800         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
2801
2802 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
2803
2804         PR target/31022
2805         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
2806         instead of PATTERN.
2807
2808 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2809
2810         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
2811         attr_length_call, output_call, output_indirect_call): Cleanup
2812         formatting of targetm calls.
2813
2814 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2815
2816         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2817
2818 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2819
2820         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
2821         reservation, bypass and anti-bypass descriptions for these instructions.
2822         Update move patterns.
2823         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
2824         TYPE_FPSTORE.
2825
2826 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
2827
2828         * tree-vect-transform.c (get_initial_def_for_induction): Replace
2829         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
2830         (get_initial_def_for_reduction): Likewise.
2831
2832 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
2833
2834         Fix PR tree-optimization/29922
2835         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
2836         (get_representative): Removed.
2837         (value_dies_in_block_x): Update for rvuse removal.
2838         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
2839         (compute_antic_aux): Handle when PHI nodes appear in
2840         non-single-successors.
2841         (dump_bitmap_of_names): Removed.
2842         (compute_antic_safe): Renamed and removed rvuse calculation.
2843         Calculate only antic safe.
2844         (insert_into_preds_of_block): Remove assert.
2845         (execute_pre): Update for renamed functions.
2846         (defer_or_phi_translate_block): New function.
2847
2848 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2849
2850         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
2851         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
2852         typos.
2853         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
2854         Follow spelling conventions.
2855
2856         * tree-data-ref.h: Remove the prototype for analyze_array.
2857
2858 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
2859
2860         PR tree-optimization/31041
2861         * tree-vect-transform.c (get_initial_def_for_induction): Call
2862         force_gimple_operand.
2863
2864 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
2865
2866         * ipa-type-escape.c (look_for_casts) : Revert code to use
2867         handled_component_p due to ada test a-numaux.adb.
2868
2869 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2870
2871         * final.c (final_scan_insn): Alter the condition of a
2872         conditional trap if we have nonstandard CC.
2873
2874 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2875
2876         * configure.ac: Remove excess quoting from asm line 0 test.
2877         * configure: Rebuilt.
2878
2879 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2880
2881         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
2882         * c-common.c (convert_and_check): Move warning logic to...
2883         (warnings_for_convert_and_check): ...here. Define.
2884         * c-common.h (warnings_for_convert_and_check): Declare.
2885
2886 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2887
2888         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
2889         (output_call): Likewise.
2890
2891 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2892
2893         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
2894
2895 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2896
2897         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
2898
2899 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
2900
2901         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
2902         opteron, athlon-64 and athlon-fx processor_alias_table entries.
2903
2904 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
2905
2906         PR tree-optimization/31183
2907         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2908         Use double_int instead of unsigned int for representing access_strides.
2909         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
2910
2911 2007-03-16  Richard Guenther  <rguenther@suse.de>
2912
2913         PR tree-optimization/31146
2914         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
2915         to allow recursion of forward_propagate_addr_expr.
2916         (forward_propagate_addr_into_variable_array_index): Likewise.
2917         (forward_propagate_addr_expr): Likewise.
2918         (tree_ssa_forward_propagate_single_use_vars): Likewise.
2919         (forward_propagate_addr_expr_1): Recurse on simple copies
2920         instead of propagating into them.  Do so for useless conversions
2921         as well.
2922         (forward_propagate_addr_expr): Clean up unused statements after
2923         recursion.
2924
2925 2007-03-16  Richard Guenther  <rguenther@suse.de>
2926
2927         * builtins.c (expand_builtin_cexpi): Use the right argument
2928         for the expansion via cexp.
2929
2930 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2931
2932         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
2933         * configure: Rebuilt.
2934
2935 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2936
2937         PR debug/29906
2938         * dwarf2out.c (force_type_die): Adjust comment.
2939         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
2940
2941 2007-03-15  DJ Delorie  <dj@redhat.com>
2942
2943         * config/frv/predicates.md (minmax_operator): Don't check operands
2944         here.
2945
2946 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2947
2948         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
2949         Update constant estimates of number of iterations.
2950         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
2951         argument renamed to "realistic".
2952         (compute_estimated_nb_iterations): Removed.
2953         (record_niter_bound): New function.
2954         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
2955         call record_nonwrapping_iv with upper = false.
2956         (infer_loop_bounds_from_signedness): Pass upper argument to
2957         record_nonwrapping_iv.
2958         (estimate_numbers_of_iterations_loop): Do not call
2959         compute_estimated_nb_iterations.  Record estimate based on profile
2960         information.  Initialize the constant estimates of number of
2961         iterations.
2962         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
2963         estimates.
2964         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
2965         number of iterations is too small.
2966         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
2967         (EST_NOT_AVAILABLE): Removed.
2968         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
2969         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
2970         fields.
2971
2972 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2973
2974         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
2975         Handle NE_EXPR guards.
2976
2977 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2978
2979         PR c++/24924
2980         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
2981         Set also -pedantic-errors by default for the  preprocessor unless
2982         -fpermissive is given.
2983
2984 2007-03-15  Richard Guenther  <rguenther@suse.de>
2985
2986         PR middle-end/29719
2987         PR middle-end/31161
2988         * builtins.c (expand_builtin_cexpi): As a fallback if we
2989         don't have builtins for sincos or cexp create a function
2990         declaration for cexp and expand to a call to that.
2991         (expand_builtin_int_roundingfn): Always fall
2992         back to floor/ceil and its variants even if they may be
2993         not available.
2994
2995 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
2996
2997         PR middle-end/31159
2998         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
2999         jump tables, move the call to delete_dead_jumptables from here...
3000         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
3001         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
3002         don't allow merging of blocks that try_redirect_by_replacing_jump
3003         also does not handle when not optimizing.
3004
3005 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
3006             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
3007
3008         * config/i386/i386.md (x86_sahf_1): Correctly handle
3009         HAVE_AS_IX86_SAHF.
3010
3011 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
3012
3013         PR target/31167
3014         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
3015         x86_64_general_operand as operand[2] predicate.  Remove "iF"
3016         from operand constraints and use "e" constraint instead.
3017         (*subti3_1, *subti3_1 splitter): Ditto.
3018         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
3019         operand[1] predicate.
3020
3021 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
3022
3023         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
3024         arrays, multiply the access strides by the size of the sub-array.
3025         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
3026
3027 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
3028
3029         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
3030         the configured assembler supports the sahf mnemonic.
3031         * configure: Regenerate.
3032         * config.in: Regenerate.
3033
3034         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
3035         emit "sahf" or ".byte\t0x9e" as asm template.
3036
3037 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
3038
3039         PR 31018
3040         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
3041         option to replace hard coded TARGET_xxx in md file.
3042         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
3043         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
3044         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
3045         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
3046         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
3047         (X86_TUNE_NOT_VECTORMODE): Ditto.
3048         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
3049         (TUNE_AVOID_VECTOR_DECODE): Ditto.
3050         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
3051         (TUNE_SLOW_IMUL_IMM8): Ditto.
3052         (TUNE_MOVE_M1_VIA_OR): Ditto.
3053         (TUNE_NOT_UNPAIRABLE): Ditto.
3054         (TUNE_NOT_VECTORMODE): Ditto.
3055
3056         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
3057         options.
3058
3059         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
3060         tuning options instead of hard coded TARGET_xxx.
3061         (fix ssemode peephole2's): Ditto.
3062         (imul peephole2's): Ditto.
3063         (movsi_or): Ditto.
3064         (movdi_or_rex64): Ditto.
3065         (move peephole2): Ditto.
3066         (not peephole2's): Ditto.
3067
3068 2007-03-14  Dirk Mueller  <dmueller@suse.de>
3069
3070         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
3071         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
3072         * c-parser.c (c_parser_if_body): Always add an empty statement in case
3073         of empty body.
3074         * c-parser.c (c_parser_do_statement): Warn about empty body in
3075         do/while statement.
3076         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
3077         * doc/invoke.texi (-Wempty-body): Update documentation.
3078
3079 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3080
3081         PR c/21438
3082         * c-common.h (warn_for_div_by_zero): Declare.
3083         * c-common.c (warn_for_div_by_zero): Define.
3084         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
3085         warning.
3086
3087 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
3088
3089         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
3090         to PREFIX and STANDARD_PREFIX.
3091
3092 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
3093             Phil Edwards  <phil@codesourcery.com>
3094
3095         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
3096         (__gthread_once_t): Remove busy field for RTPs.
3097         (__GTHREAD_ONCE_INIT): Update accordingly.
3098
3099 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
3100
3101         * doc/invoke.texi: Document VxWorks options.
3102
3103 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
3104
3105         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
3106
3107 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
3108
3109         PR tree-optimization/30590
3110         * tree-nrv.c (tree_nrv): Check for the partial update of the
3111         return value.
3112
3113 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
3114
3115         * flags.h (flag_random_seed): Remove declaration, in favor of...
3116         * toplev.h (get_random_seed, set_random_seed): ... these.
3117         * tree.c (get_file_function_name): Use the former.
3118         * opts.c (common_handle_option): Use the latter.
3119         * toplev.c
3120
3121 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
3122
3123         PR middle-end/31127
3124         * cse.c (cse_find_path): Do not bail out if a basic block that
3125         we already visited now becomes part of a path that starts at a
3126         different basic block.  Just disallow this, to make sure we
3127         visit each basic block at most once.
3128
3129 2007-03-13  Jan Hubicka  <jh@suse.cz>
3130
3131         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
3132         when profile esitmate is present, calls with very low frequency are
3133         cold.
3134
3135 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
3136
3137         PR tree-optimization/30730
3138         PR tree-optimization/26900
3139         * tree-ssa-loop-niter.c: Include gmp.h.
3140         (bounds): New type.
3141         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
3142         split_to_var_and_offset, determine_value_range,
3143         bound_difference_of_offsetted_base, refine_bounds_using_guard,
3144         bound_difference, bounds_add, bounds_negate,
3145         number_of_iterations_ne_max, dump_affine_iv): New functions.
3146         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
3147         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
3148         difference of initial and final value of control iv to validate
3149         results.
3150         (number_of_iterations_cond): Add loop parameter.  Determine bounds
3151         on the difference of the extremes of the control iv.  Add dumps.
3152         (expand_simple_operations): Handle phi nodes.
3153         (simplify_using_initial_conditions): Do not record used conditions.
3154         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
3155         Do not set additional_info.
3156         (implies_nonnegative_p, implies_ge_p): Removed.
3157         (derive_constant_upper_bound): Do not use parameter `additional'.
3158         (record_estimate): Parameter `additional' removed.  Parameter
3159         `i_bound' added.  Do not call derive_constant_upper_bound.
3160         (record_nonwrapping_iv): Use derive_constant_upper_bound to
3161         bound the number of iterations estimate.
3162         (estimate_numbers_of_iterations_loop): Pass the estimate from
3163         the number of iterations analysis to record_estimate.
3164         * tree.h (multiple_of_p): Declare.
3165         * tree-scalar-evolution.c (expression_expensive_p): Removed.
3166         (scev_const_prop): Do not check expression_expensive_p.
3167         * fold-const.c (multiple_of_p): Exported.
3168         * double-int.c (double_int_mask): Exported.
3169         * double-int.h (double_int_mask): Declare.
3170         * tree-flow.h (struct tree_niter_desc): Removed additional_info
3171         field.  Added max field.
3172
3173 2007-03-13  David Taylor  <taylor@candd.org>
3174
3175         PR driver/12448:
3176         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
3177         default -MQ.
3178
3179 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3180
3181         PR target/31123
3182         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
3183         two unamed patterns.
3184
3185 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
3186
3187         * config/i386/i386.opt (mcx16, msahf): New options.
3188         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
3189         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
3190
3191         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
3192         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
3193         Output -mcx16 and -msahf options when corresponding bit is set.
3194
3195         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
3196         and -msahf options.
3197
3198 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
3199
3200         * configure.ac: Test for assembler tolerance to # 0 "".
3201         * configure, config.in: Rebuilt.
3202         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
3203
3204 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
3205
3206         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
3207
3208         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
3209         (handle_syscall): Handle direct system calls.
3210         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
3211
3212 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
3213
3214         * doc/invoke.texi: Fix cpp.info cross-reference.
3215         * doc/passes.texi: Fix gcc.info cross-reference.
3216
3217 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
3218
3219         PR tree-optimization/30835
3220         * lambda-code.c (can_convert_to_perfect_nest): Check whether
3221         bb_for_stmt is not NULL before accessing it.
3222
3223 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
3224
3225         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
3226         some multilibs.
3227
3228 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
3229
3230         PR 30635
3231         * doc/install.texi: Document --enable-stage1-languages
3232
3233 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
3234
3235         * tree-pass.h (pass_into_cfg_layout_mode,
3236         pass_outof_cfg_layout_mode): Declare.
3237         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
3238         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
3239         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
3240         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
3241
3242 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
3243
3244         * c-decl.c (warn_variable_length_array): New function.
3245         Refactored from grokdeclarator to handle warn_vla
3246         and handle unnamed array case.
3247         (grokdeclarator): Refactored VLA warning case.
3248         * c.opt (Wvla): New flag.
3249         * doc/invoke.texi (Wvla): New warning.
3250
3251 2007-03-12  Richard Henderson  <rth@redhat.com>
3252
3253         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
3254         (TARGET_SECTION_TYPE_FLAGS): New.
3255
3256 2007-03-12  Richard Henderson  <rth@redhat.com>
3257
3258         * config/darwin.c (machopic_reloc_rw_mask): New.
3259         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
3260         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
3261
3262 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
3263
3264         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
3265         * cppdefault.h (cpp_PREFIX): Document.
3266         (cpp_PREFIX_len): Likewise.
3267         (cpp_EXEC_PREFIX): New variable.
3268         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
3269         * c-incpath.c (add_standard_paths): Correct logic for relocating
3270         paths within prefix.
3271
3272 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
3273
3274         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
3275         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
3276         mode macro.
3277         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
3278         fix_truncdfdi_sse using SSEMODEF mode macro.
3279         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
3280         fix_truncdfsi_sse using SSEMODEF mode macro.
3281         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
3282         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
3283
3284 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
3285
3286         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
3287         elfos.h to tm_file.
3288
3289 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
3290
3291         * tree.h : Add multiple_of_p declaration.
3292         * fold-const.c (multiple_of_p): Make multiple_of_p public.
3293         * ipa-type-escape.c (results_of_malloc): Redundant.
3294         (visited_stmts): New. Visited stmt for walk_use_def_chains.
3295         (cast_type): Extended with new members.
3296         (check_cast): Returns cast_type.
3297         (cast): New structure for data of walk_use_def_chains.
3298         (is_malloc_result, is_cast_from_non_pointer_1,
3299         is_cast_from_non_pointer,
3300         is_array_access_through_pointer_and_index): New functions.
3301         (look_for_casts): Returns cast types.
3302         (check_call): Returns void.
3303         (okay_pointer_operation): Use support of pointer plus index,
3304         pointer plus constant and allow all multiplications.
3305
3306 2007-03-11  Richard Guenther  <rguenther@suse.de>
3307
3308         PR tree-optimization/31115
3309         * tree-vrp.c (extract_range_from_binary_expr): Make sure
3310         the shift count is positive and non-anti-range for RSHIFT_EXPR.
3311         A shift count of zero is not special as with *_DIV_EXPR.
3312         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
3313         direction.
3314
3315 2007-03-11  Ian Lance Taylor  <iant@google.com>
3316
3317         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
3318         the *_DIV_EXPR codes correctly with overflow infinities.
3319
3320 2007-03-11  Ira Rosen  <irar@il.ibm.com>
3321
3322         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
3323         indicate success/failure of the analysis. Add negation to subtrahend
3324         in case of subtraction. Fail if both operands contain constants.
3325         (create_data_ref): Fail if analyze_offset fails.
3326
3327 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
3328
3329         * config/i386/i386.md (frndintxf2): Rename to ...
3330         (rintxf2): ... this. Remove expander having same name.
3331         (rintsf2, rintdf2): Implement using SSEMODEF macro.
3332         (roundsf2, rounddf2): Ditto.
3333         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
3334         (lround<mode>di2, lround<mode>si2): Ditto.
3335
3336 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
3337
3338         * lower-subreg.c: Include except.h.
3339         (decompose_multiword_subregs): Verify that the only control flow
3340         insns we can split are loads to multi-words pseudos.
3341         Handle breaking such blocks after splitting, instead of calling
3342         find_many_sub_basic_blocks.
3343
3344         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
3345         on the new basic block.  Add a lengthy comment explaining why we
3346         thought this was necessary.
3347         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
3348
3349 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
3350
3351         PR c++/30924
3352         * tree.c (walk_type_fields): Recurse into the element type of
3353         ARRAY_TYPEs if there is a pointer set.
3354
3355 2007-03-10  Dirk Mueller  <dmueller@suse.de>
3356
3357         * c-common.c (warn_logical_operator): Fix condition.
3358
3359 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
3360
3361         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
3362         quotation mark.
3363         * config/darwin.c (machopic_select_section): Remove superfluous
3364         argument in call to categorize_decl_for_section.  Remove unused
3365         variable shlib.
3366
3367 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
3368
3369         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
3370         defined.
3371         * configure: Regenerate.
3372
3373 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
3374
3375         PR target/31101
3376         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
3377         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
3378         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
3379         Add LABEL_NUSES to emitted label.
3380         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
3381         branch probability value to emitted jump insn.
3382         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
3383         Do not check life information and do not re-arrange input operands
3384         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
3385
3386 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3387
3388         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
3389         the change of decode_asm_operands.
3390
3391 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3392
3393         * mode-switching.c (create_pre_exit): Skip blockage insn.
3394
3395 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
3396
3397         * tree-pass.h (TODO_update_smt_usage): Remove.
3398         Update all users.
3399         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
3400         argument SOME.
3401         Update all users.
3402
3403 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3404
3405         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
3406         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
3407         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
3408         SOM target.
3409
3410 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
3411
3412         * gcc.c: Document %{, in big comment at top.
3413         (input_suffix_matches): Remove special handling for .s and
3414         .S.
3415         (input_spec_matches): New.
3416         (handle_braces): Handle %{,.
3417         (validate_switches): ',' indicates a value which is not a switch.
3418         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
3419         to detect assembler input.
3420         * config/i386/sol2.h (CPP_SPEC): Likewise.
3421         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
3422         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
3423         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
3424         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
3425         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
3426         -m64 causes deployment target to default to 10.5.
3427         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
3428
3429 2007-03-09  Richard Henderson  <rth@redhat.com>
3430
3431         PR target/26090
3432         * target.h (targetm.asm.out.reloc_rw_mask): New.
3433         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
3434         (TARGET_ASM_OUT): Use it.
3435         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
3436         * varasm.c (categorize_decl_for_section): Remove shlib argument;
3437         use the new reloc_rw_mask target hook instead.
3438         (default_section_type_flags_1): Merge into...
3439         (default_section_type_flags): ... here.
3440         (decl_readonly_section_1): Merge into...
3441         (decl_readonly_section): ... here.
3442         (default_elf_select_section_1): Merge into...
3443         (default_elf_select_section): ... here.
3444         (default_unique_section_1): Merge into...
3445         (default_unique_section): ... here.
3446         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
3447         (default_select_rtx_section): Use it.
3448         (default_elf_select_rtx_section): Likewise.
3449         * output.h: Update to match.
3450         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
3451         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
3452         (TARGET_ASM_RELOC_RW_MASK): New.
3453         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
3454         to categorize_decl_for_section.
3455         (x86_64_elf_unique_section): Likewise.
3456         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
3457         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
3458         (TARGET_ASM_RELOC_RW_MASK): New.
3459         * config/ia64/ia64.c (ia64_rwreloc_select_section,
3460         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
3461         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
3462         (TARGET_RWRELOC): Remove.
3463         (ia64_section_type_flags): Adjust call to default_section_type_flags.
3464         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
3465         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
3466         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
3467         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
3468         (rs6000_xcoff_select_section): Use decl_readonly_section.
3469         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
3470         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
3471         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
3472         (TARGET_SECTION_TYPE_FLAGS): Remove.
3473         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
3474
3475 2007-03-09  Roger Sayle  <roger@eyesopen.com>
3476
3477         * fold-const.c (fold_comparison): Remove compile-time evaluation of
3478         complex constant equality/inequality comparisons for here.
3479         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
3480         known at compile-time or can be simplified to a scalar comparison.
3481         (fold_relational_const): Move compile-time evaluation of complex
3482         constant equality/inequality comparisons to here.
3483
3484 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3485
3486         PR rtl-optimization/30643
3487         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
3488         dest_addr_elt.
3489         (fold_rtx): Recurse, like before 2006-11-03.
3490
3491 2007-03-09  DJ Delorie  <dj@redhat.com>
3492
3493         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
3494         m32c-pragma.o.
3495
3496 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
3497
3498         PR tree-optimization/30375
3499         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
3500         LHS of statements is not the same.
3501         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
3502
3503 2007-03-09  Chao-ying Fu  <fu@mips.com>
3504
3505         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
3506         REV 2.
3507         * doc/invoke.texi (-mdspr2): Document new option.
3508         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
3509         New unspec for DSP REV 2.
3510         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
3511         these instructions are extended in DSP REV 2.
3512         (mips-dspr2.md): Include.
3513         * config/mips/mips.opt (mdspr2): New option.
3514         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
3515         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
3516         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
3517         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
3518         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
3519         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
3520         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
3521         and 2 builtins.
3522         (bdesc_map): Add one field of unsupported_target_flags.
3523         (bdesc_arrays):  Update entries to have extra fields.  Add
3524         dsp_32only_bdesc.
3525         (mips_init_builtins): Initialize new function types.
3526         Check unsupported_target_fileds to filter out builtins.
3527         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
3528         TARGET_DSPR2.
3529         (ASM_SPEC): Pass mdspr2 to the assembler.
3530         * config/mips/mips-dspr2.md: New file.
3531
3532 2007-03-09  Sa Liu  <saliu@de.ibm.com>
3533
3534         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
3535
3536 2007-03-09  Ian Lance Taylor  <iant@google.com>
3537
3538         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
3539         argument) like -Wstrict-overflow=2.
3540         * doc/invoke.texi (Warning Options): Update documentation.
3541
3542 2007-03-09  Dirk Mueller  <dmueller@suse.de>
3543
3544         PR c++/17946
3545         * doc/invoke.texi (-Wlogical-op): Document.
3546         * common.opt (-Wlogical-op): New.
3547         * c-common.h (warn_logical_operator): Declare.
3548         * c-common.c (warn_logical_operator): Define.
3549         * c-typeck.c (parser_build_binary_op): Call
3550         warn_logical_operator.
3551
3552 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3553
3554         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
3555         * final.c (final_scan_insn): Test for non-"" file name.
3556
3557 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
3558
3559         * doc/loop.texi: Document the Omega linear constraints solver.
3560         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
3561         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
3562         omega-hash-table-size, omega-max-keys, and
3563         omega-eliminate-redundant-constraints.
3564         * tree-pass.h (pass_check_data_deps): Declared.
3565         * omega.c: New.
3566         * omega.h: New.
3567         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
3568         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
3569         pass_check_data_deps): New.
3570         * tree-data-ref.c (init_data_ref): Remove declaration.
3571         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
3572         (analyze_array): Renamed init_array_ref, move up initializations.
3573         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
3574         Removed arguments that are set to NULL.
3575         (analyze_indirect_ref): Correct indentation, correct call to
3576         init_pointer_ref.
3577         (object_analysis): Call init_array_ref instead of analyze_array.
3578         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
3579         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
3580         of DR_ACCESS_FNS_ADDR.
3581         (init_omega_eq_with_af, omega_extract_distance_vectors,
3582         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
3583         ddr_consistent_p): New.
3584         (compute_affine_dependence): Check consistency of ddrs when
3585         flag_check_data_deps is passed.
3586         (analyze_all_data_dependences): Uncomment.
3587         (tree_check_data_deps): New.
3588         * tree-data-ref.h: Include omega.h.
3589         (DR_ACCESS_FNS_ADDR): Removed.
3590         (data_dependence_relation): Add inner_loop.
3591         (DDR_INNER_LOOP): New.
3592         * common.opt (fcheck-data-deps): New.
3593         * tree-flow.h (tree_check_data_deps): Declare.
3594         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
3595         (OBJS-common): Depend on omega.o.
3596         (omega.o): Define.
3597         * passes.c (pass_check_data_deps): Scheduled.
3598         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
3599         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
3600         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
3601         PARAM_VECT_MAX_VERSION_CHECKS,
3602         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
3603
3604 2007-03-09  Richard Guenther  <rguenther@suse.de>
3605
3606         PR tree-optimization/30904
3607         PR middle-end/31058
3608         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
3609         the same way as *_DIV_EXPR.
3610
3611 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3612
3613         * recog.c (decode_asm_operands): No mixed declarations and code.
3614
3615 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3616
3617         * rtl.def (ASM_INPUT): Add location.
3618         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
3619         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
3620         (decode_asm_operands): Add loc operand.
3621         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
3622         * stmt.c (expand_asm): Rename to...
3623         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
3624         gen_rtx_ASM_INPUT_loc.
3625         (expand_asm_expr): Adjust.
3626         * recog.c (decode_asm_operands): Add loc operand.
3627         (check_asm_operands, extract_insn): Adjust.
3628         * reload1.c (maybe_fix_stack_asms): Likewise.
3629         * final.c (asm_insn_count): Likewise.
3630         (final_scan_insn): Output # line before and after asm.
3631
3632 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
3633
3634         * tree-ssa-structalias.c (variable_info): Remove
3635         finished_solution.
3636         (new_var_info): Ditto.
3637         (shared_bitmap_info_t): New structure.
3638         (shared_bitmap_table): New variable.
3639         (shared_bitmap_hash): New function.
3640         (shared_bitmap_eq): Ditto
3641         (shared_bitmap_lookup): Ditto.
3642         (shared_bitmap_add): Ditto.
3643         (merge_smts_into): Change to take bitmap directly.
3644         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
3645         (init_alias_vars): Init shared bitmap hashtable.
3646         (delete_points_to_sets): Delete shared bitmap hashtable.
3647         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
3648         is_aliased removal as a change that was still necessary was
3649         deleted.
3650
3651 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
3652
3653         * config/i386/i386.h (override_options): Conditionally disable
3654         x86_sahf for 64bit targets only.
3655
3656 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3657
3658         PR C/31072
3659         * c-decl.c (merge_decls): Don't call make_var_volatile.
3660         * varasm.c (make_var_volatile): Remove.
3661         * output.h (make_var_volatile): Remove.
3662
3663 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
3664
3665         PR tree-optimization/31085
3666         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
3667
3668 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3669
3670         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
3671         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
3672         ATTR_CONST_NOTHROW_LIST.
3673
3674         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
3675         FIX_TRUNC_EXPR.
3676
3677 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
3678
3679         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
3680
3681 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
3682
3683         PR 31013
3684         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
3685         is declared.
3686         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
3687         passed, use shared libgcc.
3688
3689 2007-03-08  Roger Sayle  <roger@eyesopen.com>
3690
3691         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
3692         instead of calling build2 with a GIMPLE_MODIFY_STMT.
3693         (honor_protect_cleanup_actions, lower_try_finally_switch):
3694         Likewise.
3695         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
3696         ifc_temp_var): Likewise.
3697         * tree-inline.c (setup_one_parameter): Likewise.
3698         * tree-mudflap.c (mf_decl_cache_locals,
3699         mf_build_check_statement_for): Likewise.
3700         * tree-nested.c (init_tmp_var, save_tmp_var,
3701         finalize_nesting_tree_1): Likewise.
3702         * tree-outof-ssa.c (insert_copy_on_edge,
3703         insert_backedge_copies): Likewise.
3704         * tree-profile.c (tree_gen_edge_profiler,
3705         tree_gen_ic_profiler): Likewise.
3706         * tree-scalar-evolution.c (scev_const_prop): Likewise.
3707         * tree-sra.c (sra_build_assignment): Likewise.
3708         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
3709         * tree-ssa-math-opts.c (insert_reciprocals,
3710         execute_cse_sincos_1): Likewise.
3711         * tree-tailcall.c (adjust_accumulator_values,
3712         adjust_return_value): Likewise.
3713         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
3714         * tree-vect-transform.c (vect_create_data_ref_ptr,
3715         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
3716         vect_create_epilog_for_reduction, vectorizable_reduction,
3717         vectorizable_call, vectorizable_conversion,
3718         vectorizable_assignment, vectorizable_operation,
3719         vectorizable_type_demotion, vect_gen_widened_results_half,
3720         vect_permute_store_chain, vectorizable_store,
3721         vect_setup_realignment, vect_permute_load_chain,
3722         vectorizable_load, vectorizable_condition,
3723         vect_create_cond_for_align_checks): Likewise.
3724         * tree-vrp.c (build_assert_expr_for): Likewise.
3725
3726 2007-03-08  Ian Lance Taylor  <iant@google.com>
3727
3728         * tree-vrp.c: Include "intl.h".
3729         (usable_range_p): New static function.
3730         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
3731         overflowed values, juts set *strict_overflow_p.
3732         (compare_values): Only return -2 if one of the operands is not a
3733         constant.
3734         (compare_ranges): Call usable_range_p.
3735         (compare_range_with_value): Likewise.
3736         (vrp_evaluate_conditional_warnv): Rename from
3737         vrp_evaluate_conditional.  Make static.  Change all callers.
3738         (vrp_evaluate_conditional): New function.
3739         (simplify_div_or_mod_using_ranges): Issue warning about reliance
3740         on signed overflow.
3741         (simplify_abs_using_ranges): Likewise.
3742         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
3743         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
3744         within_stmt parameter.
3745         * tree-ssa-propagate.c (fold_predicate_in): Update call to
3746         vrp_evaluate_conditional.
3747         * tree-ssa-threadedge.c
3748         (record_temporary_equivalences_from_stmts_at_dest): Change
3749         simplify parameter to take a second tree parameter.
3750         (simplify_control_stmt_condition): Likewise.
3751         (thread_across_edge): Likewise.
3752         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3753         (thread_across_edge): Likewise.
3754         * Makefile.in (tree-vrp.o): Depend upon intl.h.
3755
3756 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
3757
3758         * config/i386/i386.h (TARGET_SAHF): New define.
3759         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
3760         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
3761         (x86_sahf): New global variable.
3762         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
3763         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
3764         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
3765         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
3766         for 64-bit.
3767         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
3768         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
3769         when expanding fcomi/sahf based tests.
3770         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
3771         expanding sahf based alternative. Emit sahf based sequence when
3772         optimizing for code size.
3773         * config/i386/i386.md (x86_sahf_1): Do not disable for
3774         TARGET_64BIT, enable for TARGET_SAHF.
3775
3776 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
3777
3778         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
3779         spurious whitespace from error message.
3780
3781 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
3782
3783         PR c++/30852
3784         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
3785
3786 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
3787
3788         * c-decl.c (grokdeclarator): Disable warnings for anonymous
3789         bitfields.
3790         * tree-sra.c (instantiate_element): Propagate disabled warnings
3791         from the element itself to the created variable.
3792
3793 2007-03-07  Richard Henderson  <rth@redhat.com>
3794
3795         PR target/30848
3796         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
3797         silently fix up the stack in the case of a missing register.
3798
3799 2007-03-07  Paul Brook  <paul@codesourcery.com>
3800
3801         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
3802
3803 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
3804
3805         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
3806         New.
3807         (phase1_vrs): Use them.
3808         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
3809         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
3810         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
3811         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
3812         __gnu_Unwind_Restore_WMMXC if required.
3813         (_Unwind_VRS_Pop): Implement iWMMXt support.
3814         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
3815         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
3816         gnu_Unwind_Save_WMMXC): Define.
3817
3818 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3819
3820         * config/vxworks.h (vxworks_override_options): Declare.
3821         (VXWORKS_OVERRIDE_OPTIONS): Use it.
3822         * config/vxworks.c: Include target.h and toplev.h.
3823         (vxworks_override_options): New function.
3824         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
3825
3826 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3827
3828         * config/s390/s390.c (override_options): Don't emit an error when
3829         -mstack-size is used without providing -mstack-guard.
3830         (s390_emit_prologue): Choose stack_guard value automatically if not
3831         provided via command line.
3832         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
3833
3834 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3835
3836         * config/i386/i386.c (output_set_got): Add a GOT initialization
3837         sequence for VxWorks PIC.
3838         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
3839         around labels as well as symbols.  Use gotoff_operand instead
3840         of local_symbolic_operand.
3841         (legitimize_pic_address): Use gotoff_operand instead of
3842         local_symbolic_operand.  Use @GOT accesses for labels as
3843         well as symbols.
3844         (ix86_output_addr_diff_elt): Use PC-relative rather than
3845         GP-relative offsets for VxWorks PIC.
3846         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
3847         no_new_pseudos.  Check whether the returned register is op0.
3848         * config/i386/i386.md (tablejump): Use PC-relative rather than
3849         GP-relative offsets for VxWorks PIC.
3850         * config/i386/predicates.md (gotoff_operand): New predicate.
3851
3852 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3853
3854         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
3855         before defining.
3856         * config/vxworks-dummy.h: New file.
3857         * config/i386/i386.h: Include it.
3858
3859 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
3860
3861         * dwarf2out.c (is_inlined_entry_point): New
3862         (add_high_low_attributes): Emit DW_AT_entry_pc along with
3863         DW_AT_ranges if the first subblock is the entry point.
3864
3865 2007-03-06  David Daney  <ddaney@avtrex.com>
3866
3867         * doc/install.texi (mips-*-*): Change recommended binutils
3868         version.
3869
3870 2007-03-06  Anatoly Sokolov <aesok@post.ru>
3871
3872         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
3873         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
3874         devices.
3875         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3876         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3877
3878 2007-03-06  Jan Hubicka  <jh@suse.cz>
3879
3880         * errors.h (warning, error, fatal, internal_error): Mark as cold.
3881         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
3882         are hot.
3883         (probably_cold_bb_p): Cold functions are cold.
3884         (probably_never_executed_bb_p): Cold functions are cold.
3885         (tree_bb_level_predictions): Predict calls to cold functions as not
3886         taken.
3887         (compute_function_frequency): Check hot/cold attributes.
3888         * function.h (function_frequency): Update comments.
3889         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
3890         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
3891         (c_common_att): Add cold and hot.
3892
3893         * doc/extend.texi (hot,cold attributes): Document.
3894
3895 2007-03-06  Andrew Haley  <aph@redhat.com>
3896
3897         * function.c (expand_function_end): Move blockage to just after we
3898         emit the label for the naked return from the function.
3899
3900 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3901
3902         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
3903         before redefining.
3904
3905 2007-03-06  Jan Hubicka  <jh@suse.cz>
3906
3907         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
3908         loaded for constant large models.  Non-large 64bit PIC can do.
3909         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
3910         * cmodel.h: Add LARGE PIC.
3911         * i386.md (UNSPEC_PLTOFF): New.
3912         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
3913         needed.
3914         (*call_1_rex64): Disable for large models.
3915         (*call_1_rex64_large): New.
3916         (*call_value_1_rex64): Disable for large models.
3917         (*call_value_1_rex64_large): New.
3918         (set_rip_rex4): New.
3919         (set_got_offset_rex64): New.
3920         * predicates.md (constant_call_address_operand): For large model
3921         constant calls are not possible.
3922         * i386-protos.h (construct_plt_address): Declare.
3923         * i386.c (override_options): Accept large models.
3924         (ix86_expand_prologue): Expand large PIC GOT pointer load.
3925         (legitimate_constant_p): Add new UNSPECs.
3926         (legitimate_pic_operand_p): Likewise.
3927         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
3928         (legitimize_pic_address): Do easy RIP relative way for TLS only for
3929         non-large model.
3930         (output_pic_addr_const): Add PLTOFF.
3931         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
3932         (ix86_expand_move): Legitimize pic address when in PIC mode.
3933         (construct_plt_address): New function.
3934         (ix86_expand_call): Offload the address to register and use GOT pointer
3935         for large model.
3936         * invoke.texi (mcmodel=large): Update documentation.
3937
3938 2007-03-06  Richard Henderson  <rth@redhat.com>
3939
3940         * config/i386/i386.c (x86_use_leave, x86_push_memory,
3941         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
3942         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
3943         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
3944         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
3945         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
3946         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
3947         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
3948         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
3949         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
3950         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3951         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
3952         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3953         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3954         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
3955         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
3956         x86_schedule, x86_use_bt, x86_pad_returns,
3957         x86_use_xchgb): Merge into ...
3958         (ix86_tune_features): ... here.  New array.
3959         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3960         x86_bswap): Merge into ...
3961         (ix86_arch_features): ... here.  New array.
3962         (x86_3dnow_a): Remove.
3963         (x86_accumulate_outgoing_args): Make static.
3964         (x86_arch_always_fancy_math_387): Make static.
3965         (ix86_tune_mask, ix86_arch_mask): Move ...
3966         (override_options): ... to local variables here.  Apply the
3967         appropriate mask to each element of ix86_arch_features and
3968         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
3969         as were done in the old macros.
3970         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
3971         * config/i386/i386.h (x86_use_leave, x86_push_memory,
3972         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
3973         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
3974         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
3975         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
3976         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
3977         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
3978         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
3979         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
3980         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
3981         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3982         x86_accumulate_outgoing_args, x86_prologue_using_move,
3983         x86_epilogue_using_move, x86_decompose_lea,
3984         x86_arch_always_fancy_math_387, x86_shift1,
3985         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3986         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3987         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
3988         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3989         x86_use_incdec, x86_pad_returns, x86_bswap,
3990         x86_partial_flag_reg_stall): Remove.
3991         (enum ix86_tune_indices): New.
3992         (ix86_tune_features): New.
3993         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
3994         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
3995         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
3996         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
3997         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
3998         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
3999         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
4000         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
4001         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
4002         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
4003         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
4004         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
4005         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
4006         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
4007         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
4008         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
4009         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
4010         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
4011         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
4012         TARGET_EXT_80387_CONSTANTS): Use it.
4013         (enum ix86_arch_indices): New.
4014         (ix86_arch_features): New.
4015         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
4016         TARGET_BSWAP): Use it.
4017         (ix86_tune_mask, ix86_arch_mask): Remove.
4018
4019 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
4020
4021         PR bootstrap/31020
4022         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
4023         Define using $${sysroot_headers_suffix}.
4024         * configure: Regenerate.
4025         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
4026         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
4027         defined.
4028         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
4029         * gcc.c (print_sysroot_headers_suffix): New.
4030         (option_map): Include --print-sysroot-headers-suffix.
4031         (display_help): Mention -print-sysroot-headers-suffix.
4032         (process_command): Handle -print-sysroot-headers-suffix.
4033         (do_spec_1): Append multilib directory to include-fixed path if
4034         sysroot suffixes in use.
4035         (main): Handle -print-sysroot-headers-suffix.
4036         * Makefile.in (start.encap): Don't depend on xlimits.h
4037         (xlimits.h): Remove.
4038         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
4039         limits.h for each multilib in fixinc_list.
4040         (fixinc_list, s-fixinc_list): New.
4041         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
4042         generate them for each multilib in fixinc_list.
4043         (stmp-fixproto): Use include-fixed.  Run fixproto for each
4044         multilib in fixinc_list.
4045         (mostlyclean): Don't remove xlimits.h.
4046         (clean): Remove include-fixed.
4047         (real-install-headers-tar, real-install-headers-cpio,
4048         real-install-headers-cp): Don't copy include, only include-fixed.
4049         (install-mkheaders): Depend on fixinc_list.  Don't depend on
4050         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
4051         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
4052         SYSTEM_HEADER_DIR setting in mkheaders.conf.
4053
4054 2007-03-06  Jan Hubicka  <jh@suse.cz>
4055
4056         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
4057         NANs easilly.
4058
4059 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
4060
4061         * configure.ac: Allow tm_file to contain build-directory files.
4062         * configure: Regenerate.
4063         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
4064         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
4065         * config/m68k/print-sysroot-suffix.sh: New file.
4066
4067 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
4068
4069         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
4070         of pic_offset_table_rtx if reload_completed.
4071         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
4072         PIC_OFFSET_TABLE_REGNUM.
4073         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
4074         return true.
4075         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
4076         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
4077
4078 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
4079
4080         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
4081         functions that call eh_return.
4082
4083 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
4084
4085         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
4086         functions that need a constant pool.
4087
4088 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
4089
4090         PR target/28181
4091         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
4092         (m68k_preferred_reload_class): Likewise.
4093         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
4094         (SECONDARY_RELOAD_CLASS): Define.
4095         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
4096         (LIMIT_RELOAD_CLASS): Delete.
4097         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
4098         registers from storing bytes.
4099         (m68k_secondary_reload_class): New function.
4100         (m68k_preferred_reload_class): Likewise.
4101
4102 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
4103
4104         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
4105         leaf functions.
4106         (m68k_expand_prologue): Likewise.
4107
4108 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
4109
4110         * config/m68k/m68k-protos.h (output_sibcall): Declare.
4111         (mips_expand_epilogue): Add a bool parameter.
4112         (m68k_legitimize_sibcall_address): Declare.
4113         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
4114         (m68k_expand_epilogue): Add a parameter to select between sibling
4115         and normal epilogues.  Only generate a return for the latter.
4116         (m68k_ok_for_sibcall_p): New function.
4117         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
4118         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
4119         (sibcall_value, *sibcall_value): Likewise.
4120         (*call, *call_value): Require !SIBLING_CALL_P.
4121         (epilogue): Update call to m68k_expand_epilogue.
4122         (sibcall_epilogue): New pattern.
4123         * config/m68k/predicates.md (const_call_operand): Say that this
4124         predicate applies to sibling calls too.
4125         (sibcall_operand): New predicate.
4126
4127 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
4128
4129         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
4130         alternatives as movsi_cf.
4131         (movsf_cf_hard): Add commentary.
4132
4133 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
4134             Richard Sandiford  <richard@codesourcery.com>
4135
4136         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
4137         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
4138         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
4139         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
4140         as being live on exit from an interrupt function.
4141         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
4142         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
4143         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
4144         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
4145         (m68k_interrupt_function_p): Globalize.
4146         (m68k_compute_frame_layout): Remove reverse mask code.
4147         (m68k_emit_movem, m68k_set_frame_related): New functions.
4148         (m68k_output_function_prologue): Delete in favor of...
4149         (m68k_expand_prologue): ...this new function.
4150         (m68k_output_function_epilogue): Delete in favor of...
4151         (m68k_expand_epilogue): ...this new function.
4152         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
4153         functions.
4154         (print_operand): Handle %?.
4155         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
4156         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
4157         (prologue, epilogue): New patterns.
4158         (return): Turn into a define_expand.
4159         (*return): New pattern, derived from old "return" pattern.  Use rte
4160         rather than rts for interrupt functions.  Only use rtd if the pop
4161         count is nonzero.
4162         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
4163         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
4164         (link, *link, unlink, *unlink, load_got): Likewise.
4165
4166 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
4167
4168         PR target/23482
4169         PR target/17114
4170         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
4171         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
4172         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
4173         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
4174         and m68k_matches_u_p.
4175         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
4176         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
4177         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
4178         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
4179         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
4180         (REG_STRICT_P): New macro.
4181         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
4182         PCREL_GENERAL_OPERAND_OK.
4183         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
4184         m68k_legitimate_base_reg_p.
4185         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
4186         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
4187         (PIC_CASE_VECTOR_ADDRESS): Update comment.
4188         * config/m68k/m68k.c (m68k_address): New structure.
4189         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
4190         (m68k_decompose_index, m68k_legitimate_constant_address_p)
4191         (m68k_jump_table_ref_p, m68k_decompose_address)
4192         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
4193         (m68k_matches_u_p): New functions.
4194         (print_operand_address): Rewrite to use m68k_decompose_index.
4195
4196 2007-03-05  David Taylor  <dtaylor@emc.com>
4197
4198         * gcc.c: Correct copyright date in --version output.
4199
4200 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4201
4202         * pa.md: In unamed move patterns, disparge copies between general
4203         and floating point registers using '?' modifier.  Don't include 'f'
4204         constraint for register preferences in DImode, SImode, HImode and
4205         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
4206         Remove constraints for copies between general and floating registers
4207         in soft-float DFmode pattern.
4208         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
4209         floating register.
4210         (movsf): Likewise.
4211
4212 2007-03-05  Mike Stump  <mrs@apple.com>
4213
4214         * c-common.c (targetcm): Add.
4215         * c-opts.c (c_common_handle_option): Handle language specific
4216         target options.
4217         * opts.c (handle_option): Verify language for target options, if
4218         any are given.
4219         * opth-gen.awk: Add CL_LANG_ALL.
4220         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
4221         (TARGETCM_INITIALIZER): Add.
4222         * target.h (struct gcc_targetcm): Add.
4223         (targetcm): Add.
4224         * targhooks.c (default_handle_c_option): Add.
4225         * targhooks.h (default_handle_c_option): Add.
4226         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
4227
4228         * config/darwin.opt (iframework): Add.
4229         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
4230         * config/darwin-c.c (handle_c_option): Add.
4231         (TARGET_HANDLE_C_OPTION): Add.
4232         (targetcm): Add.
4233         * doc/invoke.texi (Darwin Options): Add -iframework.
4234
4235 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4236
4237         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
4238         conversion.
4239
4240 2007-03-05  Ian Lance Taylor  <iant@google.com>
4241
4242         * c.opt (fgnu89-inline): New option.
4243         * c-opts.c (c_common_post_options): Set default value for
4244         flag_gnu89_inline.
4245         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
4246         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
4247         inline functions.
4248         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
4249         (grokdeclarator, start_function): Likewise.
4250         * c-cppbuiltin.c (c_cpp_builtins): Define either
4251         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
4252         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
4253         (C Dialect Options): Document -fgnu89-inline.
4254         * doc/extend.texi (Function Attributes): Explain what the
4255         gnu_inline attribute does.
4256         * doc/cpp.texi (Common Predefined Macros): Document
4257         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
4258
4259 2007-03-05  Ian Lance Taylor  <iant@google.com>
4260
4261         PR tree-optimization/31034
4262         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
4263         half-range if the other side is an overflow infinity.
4264
4265 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
4266
4267         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
4268         (bfin*-linux-uclibc*): New configuration.
4269         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
4270         defining.
4271         * config/bfin/linux.h: New file.
4272         * config/bfin/libgcc-bfin.ver: New file.
4273         * config/bfin/t-bfin-uclinux: New file.
4274         * config/bfin/t-bfin-linux: New file.
4275         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
4276         (TARGET_OS_CPP_BUILTINS): New macro.
4277
4278 2007-03-05  Richard Guenther  <rguenther@suse.de>
4279
4280         * fold-const.c (fold_binary): Remove duplicate folding
4281         of comparison of non-null ADDR_EXPR against null.
4282
4283 2007-03-05  Richard Guenther  <rguenther@suse.de>
4284             Dorit Nuzman  <dorit@il.ibm.com>
4285
4286         PR tree-optimization/26420
4287         * tree-vectorizer.c (vectorize_loops): Bail out early if there
4288         are no loops in the function.  Only print the number of
4289         vectorized loops if it is greater than zero or we are supposed
4290         to print information about unvectorized loops.
4291
4292 2007-03-05  Revital Eres  <eres@il.ibm.com>
4293
4294         * gcc.dg/var-expand1.c: New test.
4295         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
4296         when an accumulator is expanded.
4297
4298 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4299
4300         PR other/30465
4301         * c-common.c (convert_and_check): Don't give warnings for
4302         conversion if 'expr' already overflowed.
4303
4304 2007-03-04  Roger Sayle  <roger@eyesopen.com>
4305
4306         PR middle-end/30744
4307         * fold-const.c (fold_comparison): Enforce type consistency when
4308         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
4309
4310 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
4311
4312         * tree-ssa-address.c (create_mem_ref): Do not put an expression
4313         containing a cast to the base of TARGET_MEM_REF.
4314
4315 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
4316
4317         * tree.c (tree_contains_struct_check_failed): Remove spurious
4318         whitespace from error message.
4319
4320 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
4321
4322         PR target/30406
4323         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
4324         instead of precision.
4325
4326 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
4327             Nathan Sidwell  <nathan@codesourcery.com>
4328
4329         * emit-rtl.c (find_auto_inc): New.
4330         (try_split): recreate REG_INC notes,
4331         Use regular for loops rather than whiles.
4332
4333 2007-03-03  Andreas Schwab  <schwab@suse.de>
4334
4335         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
4336         * configure: Regenerate.
4337
4338 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4339
4340         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
4341         flag_rounding_math, not flag_unsafe_math_optimizations.
4342
4343         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
4344         fold_build2.
4345         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
4346         alpha_fold_vector_minmax): Likewise.
4347         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
4348         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
4349
4350 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4351
4352         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
4353         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
4354         if the lhs has side-effects.
4355         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
4356
4357 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4358
4359         * config/i386/i386.h (TUNEMASK): Remove define.
4360         (ARCHMASK): Remove define.
4361         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
4362          Use ix86_arch_mask variable instead of ARCHMASK.
4363         * config/i386/i386.c (override_options): Ditto.
4364         (standard_80387_constant_p): Ditto.
4365
4366 2007-03-02  Ian Lance Taylor  <iant@google.com>
4367
4368         Used signed infinities in VRP.
4369         * tree-vrp.c (uses_overflow_infinity): New static function.
4370         (supports_overflow_infinity): New static function.
4371         (make_overflow_infinity): New static function.
4372         (negative_overflow_infinity): New static function.
4373         (positive_overflow_infinity): New static function.
4374         (is_negative_overflow_infinity): New static function.
4375         (is_positive_overflow_infinity): New static function.
4376         (is_overflow_infinity): New static function.
4377         (overflow_infinity_range_p): New static function.
4378         (compare_values_warnv): New function split out of compare_values.
4379         (compare_value): Call it.
4380         (set_value_range_to_nonnegative): Add overflow_infinity
4381         parameter.  Change caller.
4382         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
4383         Change callers.
4384         (vrp_expr_computes_nonzero): Likewise.
4385         (compare_ranges, compare_range_with_value): Likewise.
4386         (compare_name_with_value, compare_names): Likewise.
4387         (vrp_evaluate_conditional): Likewise.
4388         (set_value_range): Handle infinity
4389         (vrp_operand_equal_p, operand_less_p): Likewise.
4390         (extract_range_from_assert): Likewise.
4391         (vrp_int_const_binop): Likewise.
4392         (extract_range_from_binary_expr): Likewise.
4393         (extract_range_from_unary_expr): Likewise.
4394         (extract_range_from_comparison): Likewise.
4395         (extract_range_from_expr): Likewise.
4396         (dump_value_range): Likewise.
4397         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
4398         (test_for_singularity): Likewise.
4399         (vrp_int_const_binop): Remove inline qualifier.
4400         (adjust_range_with_scev): Add comment.
4401         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
4402
4403 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
4404
4405         * tree-ssa-structalias.c (could_have_pointers): Tidy.
4406         (get_constraint_for): Likewise.
4407         (do_structure_copy): Likewise.
4408         (find_func_aliases): Fix references to MODIFY_EXPR.
4409         (intra_create_variable_infos): Tidy.
4410         * tree-ssa-operands.c (add_virtual_operand): Add argument
4411         IS_CALL_SITE.
4412         When adding members of alias sets, if IS_CALL_SITE is true and
4413         the symbol is not call-clobbered, skip it.
4414         Adjust all callers.
4415
4416 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4417
4418         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
4419         entry by means of emit_insn_at_entry.
4420
4421 2007-03-02  Richard Henderson  <rth@redhat.com>
4422
4423         * expr.h (promoted_input_arg): Remove decl.
4424         * function.c (promoted_input_arg): Merge into ...
4425         * combine.c (setup_incoming_promotions): ... only caller.
4426         Rearrange to avoid double loop.
4427
4428 2007-03-02  Ben Elliston  <bje@au.ibm.com>
4429             Peter Bergner  <bergner@vnet.ibm.com>
4430             Janis Johnson  <janis187@us.ibm.com>
4431
4432         * config/rs6000/dfp.md: New file.
4433         * config/rs6000/rs6000.md: Include dfp.md.
4434         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
4435         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
4436         and TDmode decimal float modes in FP registers.
4437         (num_insns_constant): Likewise.
4438         (rs6000_legitimate_offset_address_p): Likewise.
4439         (rs6000_legitimize_address): Likewise.
4440         (rs6000_legitimize_reload_address): Likewise.
4441         (rs6000_legitimate_address): Likewise.
4442         (rs6000_emit_move): Likewise.
4443         (function_arg_boundary): Likewise.
4444         (function_arg_advance): Likewise.
4445         (rs6000_darwin64_record_arg_recurse): Likewise.
4446         (function_arg): Likewise.
4447         (rs6000_gimplify_va_arg): Likewise.
4448         (rs6000_split_multireg_move): Likewise.
4449         (rs6000_output_function_epilogue): Likewise.
4450         (rs6000_output_function_epilogue): Likewise.
4451         (rs6000_register_move_cost): Likewise.
4452         (rs6000_function_value): Likewise.
4453         (rs6000_libcall_value): Likewise.
4454
4455 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
4456
4457         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
4458
4459 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
4460
4461         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
4462         Use $MULTIDIR to choose between the kernel and RTP headers,
4463         and use $WIND_BASE and $WIND_USR to locate them.
4464
4465 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4466
4467         * config/i386/i386.c (override_options): Put initialization of
4468         ix86_tune_mask and ix86_arch_mask to the correct place.
4469
4470 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
4471             Michael Meissner  <michael.meissner@amd.com>
4472
4473         PR target/31019
4474         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
4475         (ARCHMASK): Define.
4476         (TARGET_CMOVE): Use ARCHMASK.
4477         (TARGET_CMPXCHG): Ditto.
4478         (TARGET_CMPXCHG8B): Ditto.
4479         (TARGET_XADD): Ditto.
4480         (TARGET_BSWAP): Ditto.
4481         * config/i386/i386.c (ix86_tune_mask): New global variable.
4482         (ix86_arch_mask): Ditto.
4483         (override_options): Initialize ix86_tune_mask and
4484         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
4485         target_flags.
4486
4487 2007-03-02  Ben Elliston  <bje@au.ibm.com>
4488
4489         PR 30992
4490         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
4491
4492 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
4493
4494         * target.h (init_dwarf_reg_sizes_extra): New target hook.
4495         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
4496         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
4497         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
4498         hook.
4499         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
4500         rs6000_init_dwarf_reg_sizes_extra): New.
4501         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
4502         SPE register high parts.
4503
4504 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
4505
4506         * Makefile.in: Add install-pdf target as
4507         copied from automake v1.10 rules.
4508         * configure.ac: Add install-pdf to target list.
4509         * configure: Regenerate.
4510
4511 2007-03-01  Paul Brook  <paul@codesourcery.com>
4512
4513         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
4514         modes to LDRD for DImode.
4515         (output_move_double): Fixup out of range ldrd/strd.
4516         (vfp_secondary_reload_class): Rename...
4517         (coproc_secondary_reload_class): ... to this.  Add wb argument.
4518         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
4519         coproc_secondary_reload_class for CLASS_IWMMXT.
4520         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
4521         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
4522
4523 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
4524
4525         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
4526         factor by the estimated number of iterations.
4527         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
4528         prefetch latency.
4529
4530         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
4531         decode_caches_intel, detect_caches_intel): New functions.
4532         (host_detect_local_cpu): Use detect_caches_amd and
4533         detect_caches_intel.
4534
4535 2007-03-01  Richard Henderson  <rth@redhat.com>
4536
4537         * expr.c (emit_move_complex_push): Export.
4538         (emit_move_complex_parts): Split out from ...
4539         (emit_move_complex): ... here.
4540         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
4541         * config/i386/i386.md (movcdi): New.
4542
4543 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
4544
4545         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
4546         size of mode1 to check for tieable modes in MMX case.
4547
4548 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
4549
4550         * Makefile.in (rtlanal.o): Depend on tree.h.
4551         * rtl.h (offset_within_section_p, split_const): Declare.
4552         * rtlanal.c: Include tree.h.
4553         (offset_within_block_p): New function, taken from
4554         mips_offset_within_object_p.
4555         (split_const): New function, taken from mips_split_const.
4556         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
4557         Declare.
4558         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
4559         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
4560         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
4561         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
4562         (m68k_illegitimate_symbolic_constant_p): New function.
4563         * config/m68k/m68k.md (movsi): Remove misleading predicates.
4564         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
4565         symbolic constant that might be outside the symbol's section,
4566         move the symbol first and then add the offset.
4567         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
4568         Override.
4569         * config/mips/mips.c (mips_split_const): Delete.
4570         (mips_offset_within_object_p): Delete.
4571         (mips_symbolic_constant_p): Use offset_within_section_p and
4572         split_const instead of mips_offset_within_object_p and
4573         mips_split_const.
4574         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
4575         (mips_legitimize_const_move, print_operand_reloc)
4576         (mips_dangerous_for_la25_p): Use split_const instead of
4577         mips_split_const.
4578
4579 2007-02-28  Eric Christopher  <echristo@apple.com>
4580
4581         * Makefile.in (install-include-dir): Don't rm -rf include.
4582
4583 2007-02-28  Richard Guenther  <rguenther@suse.de>
4584
4585         PR middle-end/30364
4586         * fold-const.c (fold_binary): Do not associate expressions
4587         with more than one variable for integer types that do not wrap.
4588
4589 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
4590
4591         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
4592         Delete, and replace with...
4593         (fold_builtin_call_array): This.  Update callers to use it.
4594         * fold-const.c (fold_build_call_list): Delete, and replace with...
4595         (fold_build_call_array): This.
4596         (fold_build_call_list_initializer): Delete, and replace with...
4597         (fold_build_call_array_initializer): This.
4598         * tree.h: Update declarations to reflect above changes.
4599
4600         * c-typeck.c (build_function_call): Store converted arguments
4601         in a stack-allocated array instead of building a list.
4602         (convert_arguments): Store arguments in the array passed in as an
4603         argument, and return the actual number of arguments.
4604         * c-format.c: (check_function_format): Pass arguments in an
4605         array instead of a list.
4606         * c-common.c (check_function_nonnull): Likewise.
4607         (check_function_sentinel): Likewise.
4608         (check_function_arguments): Likewise.
4609         * c-common.h: Update declarations to reflect above changes.
4610
4611 2007-02-28  Jan Hubicka  <jh@suse.cz>
4612
4613         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
4614         PRED_NEGATIVE_RETURN): Update outcomes.
4615
4616 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
4617
4618         * calls.c (emit_library_call_value_1): Handle partial registers
4619         correctly when building up CALL_INSN_FUNCTION_USAGE.
4620
4621 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4622
4623         * pa/predicates.md (move_src_operand): Allow zero for mode.
4624         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
4625         move pattern.
4626
4627 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
4628
4629         PR target/30970
4630         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
4631         *movv2df_internal): Enable pattern only for valid operand
4632         combinations.
4633         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
4634         tie only 128bit modes. For MMX registers, tie only 64bit modes.
4635
4636 2007-02-27  Mike Stump  <mrs@apple.com>
4637
4638         * config/darwin-crt3.c: Avoid compilation when compiling for a
4639         kext multilib.
4640
4641 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
4642
4643         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
4644         FIXED_INCLUDE_DIR.
4645         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
4646         for fixed headers and limits.h.
4647         (install-include-dir, install-headers-tar, install-headers-cpio,
4648         install-headers-cp, real-install-headers-tar,
4649         real-install-headers-cpio, real-install-headers-cp): Handle
4650         include-fixed as well as include.
4651         (install-mkheaders): Don't install files that go only in include
4652         not include-fixed.
4653         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
4654         from GCC_INCLUDE_DIR.
4655         * gcc.c (process_command): Remove special -BstageN/ handling.
4656         (do_spec_1): Add include-fixed directories.
4657
4658 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4659
4660         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
4661         _smulsi3_highpart.
4662         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
4663         New functions.
4664         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
4665         patterns.
4666
4667 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
4668
4669         * c-common.c (get_priority): Add check for
4670         SUPPORTS_INIT_PRIORITY.
4671
4672 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4673
4674         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
4675
4676         * config/bfin/bfin.c: Include "cfglayout.h".
4677         (MAX_LSETUP_DISTANCE): New macro.
4678         (struct loop_info): New members incoming, incoming_src and
4679         incoming_dest.  Delete member predecessor.
4680         (length_for_loop): New function.
4681         (bfin_optimize_loop): Handle more different loop structures.
4682         (bfin_discover_loop): Rework detection of predecessor blocks by
4683         examining incoming edges.
4684         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
4685         bfin_reorg_loops.
4686         (bfin_reorder_loops): New function.
4687         (bfin_reorg_loops): Use these three new functions.
4688
4689         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
4690         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
4691         (CONSTRAINT_LEN): Add entry for 'q'.
4692         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
4693         Add 'q' constraints.
4694         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
4695         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
4696
4697         * config/bfin/bfin.md (add_with_carry): New pattern.
4698         (s_or_u, su_optab, su_modifier): New code macros/attrs.
4699         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
4700         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
4701         support unsigned multiplies too.  Removed incorrect commutativity from
4702         operand 1 constraint where appropriate.
4703         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
4704         patterns.
4705         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
4706         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
4707         New patterns.
4708         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
4709         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
4710         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
4711         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
4712         usmulhisi_hh_huh): New patterns.
4713
4714         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
4715         lshifthi3): Fix output template to use half reg for operand 2.
4716
4717         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
4718         instead of R2.
4719
4720         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
4721
4722 2007-02-27  Andreas Schwab  <schwab@suse.de>
4723
4724         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
4725
4726 2007-02-27  Jan Hubicka  <jh@suse.cz>
4727
4728         * predict.c (last_basic_block_p): Remove.
4729         (tree_estimate_probability): Update return heuristic for commonized
4730         return blocks.
4731
4732 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4733
4734         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
4735
4736 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4737
4738         * doc/include/gcc-common.texi (versionsubtitle): New macro.
4739         * doc/cpp.texi: Standardize title page.
4740         * doc/cppinternals.texi: Likewise.
4741         * doc/gcc.texi: Standardize title page, remove version number
4742         from copyright page.
4743         * doc/gccint.texi: Likewise.
4744         * doc/install.texi: Standardize title page, add table of
4745         contents.
4746
4747 2007-02-26  Jan Hubicka  <jh@suse.cz>
4748
4749         * predict.def: Set outcomes according to more recent results.
4750         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
4751         Remove dead predictors.
4752         * predict.c (return_prediction): Fix pasto.
4753
4754 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4755
4756         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
4757         change; avoid a memory leak when returning early.
4758
4759 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
4760
4761         * c-decl.c (static_ctors): Move to c-common.c.
4762         (static_dtors): Likewise.
4763         (finish_function): Use c_record_cdtor_fn.
4764         (build_cdtor): Move to c-common.c.
4765         (c_write_global_declarations): Use c_build_cdtor_fns.
4766         * c-common.h (static_ctors): Declare.
4767         (static_dtors): Likewise.
4768         (c_record_cdtor_fn): Likewise.
4769         (c_build_cdtor_fns): Likewise.
4770         * c-common.c (static_ctors): New variable.
4771         (static_dtors): Likewise.
4772         (c_record_cdtor_fn): New function.
4773         (build_cdtor): Move from c-decl.c
4774         (c_build_cdtor_fns): New function.
4775
4776         * output.h (assemble_addr_to_section): Declare.
4777         (get_cdtor_priority_section): Likewise.
4778         * varasm.c (assemble_addr_to_section): New function.
4779         (get_cdtor_priority_section): Likewise.
4780         (default_named_section_asm_out_destructor): Use them.
4781         (destor_dtor_section_asm_out_destructor): Likewise.
4782         (default_named_section_asm_out_constructor): Likewise.
4783         (default_ctor_section_asm_out_constructor): Likewise.
4784         * config.gcc (*-*-vxworks*): Include vxworks.o.
4785         * config/t-vxworks (vxworks.o): New target.
4786         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
4787         (TARGET_ASM_CONSTRUCTOR): Define.
4788         (TARGET_ASM_DESTRUCTOR): Likewise.
4789         (vxworks_asm_out_constructor): Declare.
4790         (vxworks_asm_out_destructor): Likewise.
4791
4792         * c-common.c (get_priority): Check that we have not just an
4793         INTEGER_CST, but an integer constant with integeral type.
4794
4795 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
4796
4797         PR tree-optimization/30938
4798         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
4799         use &dt[nargs-1] instead of &dt[nargs] in the call to
4800         vect_is_simple_use().
4801
4802 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
4803
4804         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
4805         from register elimination as PRE_MODIFY / POST_MODIFY increments.
4806         Do not attempt to handle MEM inside auto-inc expressions.
4807         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
4808         of a register modified by an auto-inc expression.  However, do handle
4809         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
4810         (elimination_effects): Prohibit elimination of a register modified
4811         by an auto-inc expression.  Disable register elimination rules whose
4812         target register is modified by an auto-inc expression with variable
4813         increment.
4814
4815 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
4816
4817         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
4818         off-by-one error.
4819         (array_at_struct_end_p): New function.
4820         (idx_infer_loop_bounds): Use it.
4821         (estimate_numbers_of_iterations_loop): Export.
4822         * predict.c (predict_loops): Use estimated_loop_iterations_int.
4823         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
4824         (tree_estimate_probability): Call record_loop_exits.
4825         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
4826         (estimated_loop_iterations, estimated_loop_iterations_int,
4827         estimated_loop_iterations_tree): New functions.
4828         (analyze_siv_subscript_cst_affine,
4829         compute_overlap_steps_for_affine_1_2,
4830         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
4831         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
4832         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
4833         (PRED_LOOP_ITERATIONS_GUESSED): New.
4834         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
4835         * cfgloop.h (estimate_numbers_of_iterations_loop,
4836         estimated_loop_iterations_int): Declare.
4837
4838 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
4839
4840         * doc/extend.texi: Document optional priority argument to
4841         constructors and destructors.
4842         * tree.c (init_priority_for_decl): Adjust GTY markers.
4843         (init_ttree): Use priority-info hash functions for
4844         init_priority_for_decl.
4845         (tree_map_eq): Rename to ...
4846         (tree_map_base_eq): ... this.
4847         (tree_map_marked_p): Rename to ...
4848         (tree_map_base_marked_p): ... this.
4849         (tree_map_base_hash): New function.
4850         (decl_init_priority_lookup): Rework.
4851         (decl_fini_priority_lookup): New function.
4852         (decl_priority_info): New function.
4853         (decl_init_priority_insert): Use it.
4854         (decl_fini_priority_insert): Likewise.
4855         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
4856         hierarchy.
4857         (decl_restrict_base_insert): Likewise.
4858         (decl_debug_expr_insert): Likewise.
4859         (decl_value_expr_lookup): Likewise.
4860         (decl_value_expr_insert): Likewise.
4861         * tree.h (priority_type): New type.
4862         (decl_init_priority_lookup): Use priority_type.
4863         (decl_fini_priority_lookup): New function.
4864         (decl_init_priority_insert): Use priority_type.
4865         (decl_fini_priority_insert): New function.
4866         (DECL_HAS_INIT_PRIORITY): Tweak comments.
4867         (DECL_INIT_PRIORITY): Likewise.
4868         (SET_DECL_INIT_PRIORITY): Add comment.
4869         (DECL_FINI_PRIORITY): New macro.
4870         (SET_DECL_FINI_PRIORITY): Likewise.
4871         (DEFAULT_INIT_PRIORITY): Document.
4872         (MAX_INIT_PRIORITY): Likewise.
4873         (MAX_RESERVED_INIT_PRIORITY): Likewise.
4874         (tree_map_base): New type.
4875         (tree_map_base_eq): New function.
4876         (tree_map_base_hash): Likewise.
4877         (tree_map_base_marked_p): Likewise.
4878         (tree_map): Inherit from tree_map_base.
4879         (tree_map_eq): Make it a macro.
4880         (tree_map_marked_p): Likewise.
4881         (tree_int_map): Inherit from tree_map_base.
4882         (tree_int_map_eq): Make it a macro.
4883         (tree_int_map_hash): Likewise.
4884         (tree_int_map_marked_p): Likewise.
4885         (tree_priority_map): New type.
4886         (tree_priority_map_eq): New macro.
4887         (tree_priority_map_hash): Likewise.
4888         (tree_priority_map_marked_p): Likewise.
4889         * varasm.c (emults_decl): Adjust for refactoring of tree_map
4890         hierarchy.
4891         (emutls_common_1): Likewise.
4892         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
4893         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
4894         of tree_map hierarchy.
4895         * tree-cfg.c (move_stmt_r): Likewise.
4896         (new_label_mapper): Likewise.
4897         * c-tree.h (c_expand_body): Move to ...
4898         * c-common.h (c_expand_body): ... here.
4899         * c-decl.c (c_expand_body): Move to ...
4900         * c-common.c (c_expand_body): ... here.
4901         (c_common_attribute_table): Allow 1 argument for the constructor
4902         and destructor attributes.
4903         (get_priority): New function.
4904         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
4905         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
4906
4907 2007-02-24  Jan Hubicka  <jh@suse.cz>
4908
4909         PR middle-end/30509
4910         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
4911
4912 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4913             Jan Hubicka  <jh@suse.cz>
4914
4915         PR target/30778
4916         * i386.c (counter_mode): New function.
4917         (expand_set_or_movmem_via_loop): Use it.
4918         (expand_movmem_epilogue): Likewise; fix pasto.
4919         (ix86_expand_movmem): Do emit guard even for constant counts.
4920         (ix86_expand_setmem): Likewise.
4921
4922 2007-02-25  Nick Clifton  <nickc@redhat.com>
4923
4924         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
4925         (JUMP_TABLES_IN_TEXT_SECTION): Define.
4926
4927 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4928
4929         PR target/30770
4930         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
4931         count argument with 0x10, not with 0x16.
4932         (expand_setmem_epilogue): Ditto.
4933
4934 2007-02-24  Mike Stump  <mrs@apple.com>
4935
4936         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
4937         symbols.
4938
4939 2007-02-24  Richard Guenther  <rguenther@suse.de>
4940
4941         PR middle-end/30951
4942         * fold-const.c (fold_binary): Fold x +- CST op x for
4943         EQ_EXPR and NE_EXPR.
4944
4945 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4946
4947         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
4948
4949 2007-02-24  Jan Hubicka  <jh@suse.cz>
4950
4951         * cgraphunit.c (decide_is_function_needed): Honor
4952         -fkeep-inline-functions.
4953
4954 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4955
4956         * builtins.c (fold_builtin_modf): New.
4957         (fold_builtin_2): Use it.
4958
4959 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
4960
4961         * loop-iv.c (implies_p): Detect additional cases where A implies B.
4962         (determine_max_iter): Take additional LOOP arg; all callers changed.
4963         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
4964         one using simplifications.
4965         (simplify_using_initial_values): Return if the expression becomes
4966         invalid due to altered regs.
4967
4968 2007-02-23  DJ Delorie  <dj@redhat.com>
4969
4970         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
4971
4972 2007-02-23  Mike Stump  <mrs@apple.com>
4973
4974         * tlink.c (scan_linker_output): Parse linker messages from
4975         darwin9's linker better.
4976
4977 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
4978
4979         PR debug/29614
4980         * varpool.c (varpool_assemble_pending_decls):  Set
4981         varpool_last_needed_node to null.
4982
4983 2007-02-23  DJ Delorie  <dj@redhat.com>
4984
4985         * config/i386/i386.c (ix86_data_alignment): Don't specify an
4986         alignment bigger than the object file can handle.
4987
4988 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
4989
4990         PR target/30825
4991         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
4992         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
4993         (*movsf_1): Penalize MMX moves.
4994
4995 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
4996
4997         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
4998         2^32-1 or more times unless flag_unsafe_loop_optimizations.
4999
5000         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
5001
5002 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5003
5004         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
5005         (fold_builtin_1): Use them.
5006         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
5007         BUILT_IN_SIGNIFICAND.
5008
5009 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
5010
5011         * config/i386/i386.c (bdesc_1arg): Initialize
5012         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
5013         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
5014         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
5015         and IX86_BUILTIN_MOVSLDUP.
5016
5017 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
5018
5019         PR rtl-optimization/30841
5020         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
5021
5022 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5023
5024         * builtins.c (fold_builtin_frexp): New.
5025         (fold_builtin_2): Use it.
5026
5027 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
5028
5029         * doc/invoke.texi (Spec Files): Document getenv spec function.
5030
5031         * gcc.c (getenv_spec_function): New function.
5032         (static_spec_functions): Add it.
5033         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
5034         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
5035         header files.
5036
5037 2007-02-22  Michael Matz  <matz@suse.de
5038
5039         PR c++/29433
5040         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
5041         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
5042
5043 2007-02-22  Ian Lance Taylor  <iant@google.com>
5044
5045         PR debug/30898
5046         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
5047         (mem_loc_descriptor): Call it.
5048
5049 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
5050             Ira Rosen  <irar@il.ibm.com>
5051
5052         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
5053
5054 2007-02-22  Ira Rosen  <irar@il.ibm.com>
5055
5056         PR tree-optimization/30843
5057         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
5058         stores only after all the group is vectorized.
5059
5060 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
5061
5062         PR tree-optimization/30858
5063         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
5064         in the reduction cycle have a single use in the loop.
5065         * tree-vectorizer.h (relevant): Add documentation.
5066
5067 2007-02-20  Mike Stump  <mrs@apple.com>
5068
5069         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
5070         * configure: Regenerate.
5071
5072 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5073
5074         Change the defaults of some parameters and options.
5075         * config/spu/spu-protos.h (spu_optimization_options): Declare.
5076         * config/spu/spu.c (spu_optimization_options): Add.
5077         (spu_override_options): Change params in spu_optimization_options.
5078         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
5079
5080         Register 127 is only 16 byte aligned when used as a frame pointer.
5081         * config/spu/spu-protos.h (spu_init_expanders): Declare.
5082         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
5083         HARD_FRAME_POINTER_REGNUM.
5084         (spu_legitimate_address):  Use regno_aligned_for_reload.
5085         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
5086         aligned when frame_pointer_needed is true.
5087         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
5088         to 8 bits.
5089         * config/spu/spu.h (INIT_EXPANDERS): Define.
5090
5091         Make sure shift and rotate instructions have valid immediate operands.
5092         * config/spu/predicates.md (spu_shift_operand): Remove.
5093         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
5094         * config/spu/constraints.md (W, O): Extend range.
5095         * config/spu/spu.md (umask, nmask): Define.
5096         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
5097         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
5098         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
5099         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
5100         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
5101         (lshr<mode>3_reg):  Fix rtl description.
5102
5103         Make sure mulhisi immediate operands are valid.
5104         * config/spu/predicates.md (imm_K_operand): Add.
5105         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
5106
5107         Generate constants using fsmbi and andi.
5108         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
5109         (print_operand, spu_split_immediate, classify_immediate,
5110         fsmbi_const_p): Handle IC_FSMBI2.
5111
5112         Correctly handle a CONST_VECTOR containing symbols.
5113         * config/spu/spu.c (print_operand): Handle HIGH correctly.
5114         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
5115         (immediate_load_p): Allow symbols that use 2 instructions to create.
5116         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
5117         with symbols when flag_pic is set.
5118         (const_vector_immediate_p): New.
5119         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
5120         accept a CONST_VECTOR with symbols.
5121         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
5122         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
5123         correctly.
5124         * config/spu/spu.md (high, low): Delete.
5125         (low_<mode>): Define.
5126
5127         Remove INTRmode and INTR_REGNUM, which didn't work.
5128         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
5129         of INTR_REGNUM.
5130         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
5131         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
5132         peephole2 pattern): Don't use INTR or 131.
5133         (movintrcc): Delete.
5134         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
5135         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
5136         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
5137         (UNSPEC_SET_INTR): Add.
5138         * config/spu/spu-modes.def (INTR): Remove.
5139
5140         More accurate warnings about run-time relocations.
5141         * config/spu/spu.c (reloc_diagnostic): Test in_section.
5142
5143         Correctly warn about immediate arguments to specific intrinsics.
5144         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
5145         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
5146         the instruction predicate.
5147
5148         Fix tree check errors with latest update.
5149         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
5150         CALL_EXPR_ARG.
5151         (spu_expand_builtin): Use CALL_EXPR_FN.
5152
5153         Add missing specific intrinsics.
5154         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
5155         si_bislede.
5156         * config/spu/spu_internals.h: Ditto.
5157
5158         Fix incorrect operand modifiers.
5159         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
5160         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
5161
5162         Optimize one case of zero_extend of a vec_select.
5163         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
5164
5165         Accept any immediate for hbr.
5166         * config/spu/spu.md (hbr):  Change s constraints to i.
5167
5168 2007-02-21  Paul Brook  <paul@codesourcery.com>
5169
5170         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
5171         condexec_count when skipping USE and CLOBBER.
5172
5173 2007-02-21  Nick Clifton  <nickc@redhat.com>
5174
5175         * common.opt (Warray-bounds): Add Warning attribute.
5176         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
5177         Likewise.
5178         (fsized-zeroes): Add Optimization attribute.
5179         (fsplit-wide-types, ftree-scev-cprop): Likewise.
5180         * c.opt (Wc++0x-compat): Add Warning attribute.
5181
5182 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
5183
5184         PR middle-end/30761
5185         * reload1.c (eliminate_regs_in_insn): In the single_set special
5186         case, attempt to re-recognize the insn before falling back to
5187         having reload fix it up.
5188
5189 2007-02-20  Eric Christopher  <echristo@gmail.com>
5190
5191         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
5192         Rewrite accordingly.
5193         (frv_read_iacc_argument): Ditto.
5194         (frv_expand_set_builtin): Take a call instead of arglist, update for
5195         above changes.
5196         (frv_expand_unop_builtin): Ditto.
5197         (frv_expand_binop_builtin): Ditto.
5198         (frv_expand_cut_builtin): Ditto.
5199         (frv_expand_binopimm_builtin): Ditto.
5200         (frv_expand_voidbinop_builtin): Ditto.
5201         (frv_expand_int_void2arg): Ditto.
5202         (frv_expand_prefetches): Ditto.
5203         (frv_expand_voidtriop_builtin): Ditto.
5204         (frv_expand_voidaccop_builtin): Ditto.
5205         (frv_expand_load_builtin): Ditto.
5206         (frv_expand_store_builtin): Ditto.
5207         (frv_expand_mdpackh_builtin): Ditto.
5208         (frv_expand_mclracc_builtin): Ditto.
5209         (frv_expand_mrdacc_builtin): Ditto.
5210         (frv_expand_mwtacc_builtin): Ditto.
5211         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
5212         calls for above.
5213
5214 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
5215
5216         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
5217         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
5218         cmpb instruction.
5219         (HAVE_GAS_DFP): Check for assembler support of decimal floating
5220         point instructions.
5221         * configure: Regenerate.
5222         * config.in: Regenerate.
5223         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
5224         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
5225         masks to power6 and power6x and to POWERPC_MASKS.
5226         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
5227         _ARCH_PWR6.
5228         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
5229         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
5230         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
5231         Access PROTOTYPE as variable, not mask.
5232
5233 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
5234
5235         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
5236         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
5237         * combine.c (adjust_for_new_dest): Use it.
5238         * postreload.c (reload_combine): Likewise.
5239
5240 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
5241
5242         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
5243         notes on an insn with multiple sets, even if single_set returns
5244         non-NULL for that insn.
5245
5246 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5247
5248         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
5249         scalbn and scalbln.
5250
5251 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
5252
5253         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
5254         if user didn't pass it.
5255         * config/i386/darwin.h (CC1_SPEC): Likewise.
5256         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
5257         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
5258         -mmacosx-version-min.
5259
5260 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5261             Uros Bizjak  <ubizjak@gmail.com>
5262
5263         * optabs.h (enum optab_index): Add new OTI_scalb.
5264         (scalb_optab): Define corresponding macro.
5265         * optabs.c (init_optabs): Initialize scalb_optab.
5266         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
5267         patterns.
5268         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
5269         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
5270         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
5271         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
5272         flag_unsafe_math_optimizations is set.
5273
5274         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
5275         to implement scalbf, scalb and scalbl built-ins as inline x87
5276         intrinsics.
5277
5278 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5279             DJ Delorie <dj@redhat.com>
5280
5281         PR other/30824
5282         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
5283         (diagnostic_report_diagnostic): ... here, and turn them into real
5284         errors. If warnings are inhibited, no need to do anything.
5285
5286 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
5287
5288         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
5289         better code generation.
5290
5291 2007-02-20  Ben Elliston  <bje@au.ibm.com>
5292
5293         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
5294
5295 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
5296
5297         * config/alpha/alpha.c, config/alpha/alpha.md,
5298         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
5299         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
5300         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
5301         config/arm/lib1funcs.asm: Follow spelling conventions.
5302
5303         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
5304         config/fr30/fr30.md, config/i386/i386.h,
5305         config/iq2000/iq2000.h, config/iq2000/predicates.md,
5306         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
5307         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
5308         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
5309         config/rs6000/altivec.md, config/rs6000/rs6000.c,
5310         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
5311         config/sparc/sparc.c, config/sparc/sparc.h,
5312         config/sparc/sparc.md, config/spu/constraints.md,
5313         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
5314         conventions.
5315
5316 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
5317
5318         PR target/29943
5319         * varasm.c (use_blocks_for_decl_p): Return false for decls with
5320         alias attribute.
5321
5322 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
5323
5324         * doc/invoke.texi (-ftree-lrs): Remove.
5325
5326 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
5327
5328         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
5329         NULL.
5330
5331 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
5332
5333         * config/ia64/ia64.c (ia64_expand_builtin): Use the
5334         new CALL_EXPR_FN macro for retrieving the function
5335         declaration of the input expression.
5336
5337 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5338
5339         * c.opt (Waddress): New.
5340         * common.opt (Walways-true): Delete.
5341         (Wstring-literal-comparison): Delete.
5342         * doc/invoke.texi (Warning Options): Delete -Walways-true and
5343         -Wstring-literal-comparison. Add -Waddress.
5344         (Waddress): New.
5345         (Walways-true): Delete.
5346         (Wstring-literal-comparison): Delete.
5347         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
5348         consistently instead of -Walways-true in example.
5349         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
5350         * c-typeck.c (parser_build_binary_op): Replace
5351         -Wstring-literal-comparison and -Walways-true with -Waddress.
5352         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
5353         with -Waddress.
5354
5355 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
5356
5357         * tree-cfg.c (dump_function_to_file): Be prepared for functions
5358         without DECL_STRUCT_FUNCTION initialized.
5359
5360 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
5361
5362         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
5363         due to calls to functions taking pointers as parameters.
5364
5365 2007-02-19  Richard Henderson  <rth@redhat.com>
5366
5367         PR debug/29558
5368         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
5369         in memory.
5370
5371 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
5372
5373         * config/s390/s390.c (s390_call_saved_register_used,
5374         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
5375         accessed to the new scheme.
5376
5377 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
5378
5379         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
5380         (cris_print_index, cris_print_operand, cris_print_operand_address)
5381         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
5382         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
5383         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
5384         GET_CODE () == xxx.
5385         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
5386         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
5387         GO_IF_LEGITIMATE_ADDRESS): Ditto.
5388         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
5389         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
5390         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
5391         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
5392         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
5393         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
5394         (uminsi3, call, call_value): Ditto.
5395         (define_split: indir_to_reg_split, unnamed): Ditto.
5396
5397 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
5398
5399         PR tree-optimization/30975
5400         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
5401         wrong assert.
5402
5403 2007-02-18  Eric Christopher  <echristo@gmail.com>
5404
5405         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
5406         Remove use of arglist.
5407         (mips_expand_builtin): Remove use of arglist, pass in expr.
5408         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
5409         (mips_expand_builtin_movtf): Ditto.
5410         (mips_expand_builtin_compare): Ditto.
5411
5412 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
5413
5414         * tree-sra.c (sra_build_assignment): Replace assertion
5415         checking with a comment explaining why it can't be done.
5416
5417 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
5418
5419         PR middle-end/30833
5420         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
5421         during CALL_EXPR representation conversion.
5422         * tree-ssa-propagate.c (set_rhs): Likewise.
5423
5424 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
5425
5426         * tree-sra.c (sra_build_assignment): Disable assertion checking
5427         for now.
5428
5429 2007-02-18  Roger Sayle  <roger@eyesopen.com>
5430
5431         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
5432         instead of calling build2 with a GIMPLE_MODIFY_STMT.
5433         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
5434         Likewise.
5435         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
5436         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
5437         gimplify_init_ctor_eval_range, gimple_push_cleanup,
5438         gimplify_omp_for, gimplify_omp_atomic_pipeline,
5439         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
5440         force_gimple_operand): Likewise.
5441         * ipa-cp.c (constant_val_insert): Likewise.
5442         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
5443         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
5444         perfect_nestify): Likewise.
5445         * langhooks.c (lhd_omp_assignment): Likewise.
5446         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
5447         lower_copyprivate_clauses, lower_send_clauses,
5448         lower_send_shared_vars, expand_parallel_call,
5449         expand_omp_for_generic, expand_omp_for_static_nochunk,
5450         expand_omp_for_static_chunk, expand_omp_sections,
5451         lower_omp_single_copy, lower_omp_for_lastprivate,
5452         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
5453         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
5454         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
5455         Likewise.
5456
5457 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
5458
5459         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
5460         config/sh/sh.md: Follow spelling conventions.
5461
5462         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
5463         config/frv/predicates.md: Follow spelling conventions.
5464
5465         * config/m68k/linux-unwind.h: Fix a comment typo.
5466         * target.h: Follow spelling conventions.
5467
5468 2007-02-18  Roger Sayle  <roger@eyesopen.com>
5469
5470         PR rtl-optimization/28173
5471         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
5472         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
5473         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
5474         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
5475         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
5476
5477 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5478
5479         * builtins.c (fold_builtin_load_exponent): New.
5480         (fold_builtin_2): Use it.
5481
5482 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
5483
5484         PR rtl-optimization/30773
5485         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
5486         if we fail to attach a REG_EQUIV note.
5487
5488 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
5489             Roger Sayle  <roger@eyesopen.com>
5490
5491         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
5492
5493 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
5494
5495         * calls.c (initialize_argument_information): Pass original EXP
5496         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
5497         code to split complex arguments here, as part of initializing the
5498         ARGS array.
5499         (expand_call): Remove code that builds a list of arguments and
5500         inserts implicit arguments into it.  Instead, just count how many
5501         implicit arguments there will be so we can determine the size of
5502         the ARGS array, and let initialize_argument_information do the work.
5503         (split_complex_values): Delete unused function.
5504
5505 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
5506
5507         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
5508
5509 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
5510
5511         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
5512         for arg pointer based indexed addressing.
5513
5514 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
5515
5516         * config/ia64/ia64.h, config/ia64/ia64.md,
5517         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
5518         spelling conventions.
5519
5520 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5521
5522         * config/m68k/m68k.c (split_di): New.
5523         * config/m68k/m68k-protos.h: Declare split_di.
5524         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
5525           Improve predicate handling and split constant shifts.
5526
5527 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5528
5529         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
5530         parameter for register bitfield operations, general predicates
5531         cleanup
5532
5533 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
5534
5535         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
5536         * config/m68k/linux-unwind.h: New file.
5537
5538 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
5539
5540         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
5541         config/i386/athlon.md, config/ia64/ia64.md,
5542         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
5543         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
5544         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
5545         tree-ssa-loop-niter.c, tree-vect-analyze.c,
5546         tree-vect-transform.c: Fix comment typos.
5547
5548 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
5549
5550         * sched-deps.c (find_insn_list): Remove.
5551         * sched-int.h: Remove the prototype for find_insn_list.
5552
5553 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
5554
5555         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
5556         to linker.
5557         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
5558         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
5559         darwin_rs6000_override_options.
5560         (C_COMMON_OVERRIDE_OPTIONS): Expect
5561         darwin_macosx_version_min to be non-NULL always.
5562         (TARGET_C99_FUNCTIONS): Likewise.
5563         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
5564         (DARWIN_MINVERSION_SPEC): New.
5565         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
5566         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
5567         to cc1*.
5568         (DARWIN_MINVERSION_SPEC): New.
5569         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
5570         value.
5571         * config/darwin-c.c (darwin_cpp_builtins): Expect
5572         darwin_macosx_version_min to be non-NULL always.
5573
5574         * config/rs6000/rs6000.c: Clean up trailing whitespace.
5575
5576 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
5577
5578         * config/i386/i386.h (x86_use_xchgb): New.
5579         (TARGET_USE_XCHGB): New macro.
5580         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
5581         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
5582         Split after reload into bswaphi for shifts of 8.
5583         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
5584         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
5585         or when optimizing for size.
5586
5587 2007-02-16  Richard Guenther  <rguenther@suse.de>
5588             Christian Bruel  <christian.bruel@st.com>
5589
5590         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
5591         DECLs but prefer SSA_NAMEs over DECLs.
5592
5593 2007-02-16  Richard Guenther  <rguenther@suse.de>
5594
5595         * tree-flow-inline.h (single_imm_use_p): Remove.
5596         (zero_imm_uses_p): Likewise.
5597         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
5598         instead of single_imm_use_p.
5599         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
5600         zero_imm_uses_p.
5601
5602 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5603
5604         PR other/27843
5605         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
5606         nested double- and backquotes.
5607
5608 2007-02-15  Roger Sayle  <roger@eyesopen.com>
5609
5610         PR middle-end/30391
5611         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
5612         should be unreachable.
5613         (build2_stat): Allow construction of MODIFY_EXPR at any time.
5614         For the time being redirect GIMPLE_MODIFY_STMT to the new
5615         (renamed) build_gimple_modify_stmt_stat.
5616         (build2_gimple_stat): Rename to...
5617         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
5618         Always build a GIMPLE_MODIFY_STMT node.
5619         * tree.h (build2_gimple, build2_gimple_stat): Delete.
5620         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
5621         declarations.
5622
5623         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
5624         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
5625         * tree-complex.c (set_component_ssa_name, expand_complex_move,
5626         expand_complex_div_wide): Likewise.
5627         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
5628         * tree-ssa-loop-im.c (schedule_sm): Likewise.
5629         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
5630         * tree-ssa-loop-manip.c (create_iv): Likewise.
5631         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
5632         abs_replacement): Likewise.
5633         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
5634         realify_fake_stores): Likewise.
5635
5636         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
5637         node rather than a GIMPLE_MODIFY_STMT node.
5638         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
5639         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
5640         Likewise.
5641         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
5642         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
5643         GIMPLE_MODIFY_STMT.
5644
5645 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5646
5647         PR middle-end/30433
5648         * fold-const.c (fold_comparison): Add back the
5649         folding of constant complex comparisions.
5650
5651 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5652
5653         PR middle-end/30729
5654         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
5655         effects unknown to this function, return early.
5656
5657 2007-02-15  Ian Lance Taylor  <iant@google.com>
5658
5659         * lower-subreg.c (move_eh_region_note): New static function.
5660         (resolve_simple_move): Call it.
5661         (decompose_multiword_subregs): Track blocks for which we resolve a
5662         simple move which is also a control flow insn.  Pass them to
5663         find_many_sub_basic_blocks.
5664         (pass_lower_subreg): Add TODO_verify_flow.
5665         (pass_lower_subreg2): Likewise.
5666
5667 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5668             Brooks Moses  <brooks.moses@codesourcery.com>
5669             Lee Millward  <lee.millward@codesourcery.com>
5670
5671         * tree.h (enum tree_code_class): Add tcc_vl_exp.
5672         (VL_EXP_CLASS_P): New.
5673         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
5674         TREE_CODE_LENGTH.
5675         (TREE_OPERAND_CHECK_CODE): Likewise.
5676         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
5677         (TREE_RTL_OPERAND_CHECK): Likewise.
5678         (tree_operand_check_failed): Make second parameter the whole tree
5679         instead of its code.  Fixed callers.
5680         (VL_EXP_CHECK): New.
5681         (TREE_OPERAND_LENGTH): New.
5682         (VL_EXP_OPERAND_LENGTH): New.
5683         (CALL_EXPR_FN): New.
5684         (CALL_EXPR_STATIC_CHAIN): New.
5685         (CALL_EXPR_ARGS): New.
5686         (CALL_EXPR_ARG): New.
5687         (call_expr_nargs): New.
5688         (CALL_EXPR_ARGP): New.
5689         (build_nt_call_list): Declare.
5690         (build_vl_exp_stat): Declare.
5691         (build_vl_exp): New.
5692         (build_call_list): Declare.
5693         (build_call_nary): Declare.
5694         (build_call_valist): Declare.
5695         (build_call_array): Declare.
5696         (call_expr_arg): Declare.
5697         (call_expr_argp): Declare.
5698         (call_expr_arglist): Declare.
5699         (fold_build_call_list): Declare.
5700         (fold_build_call_list_initializer): Declare.
5701         (fold_call_expr): Declare to replace fold_builtin.
5702         (fold_builtin_fputs): Update to agree with modified definition.
5703         (fold_builtin_strcpy): Likewise.
5704         (fold_builtin_strncpy): Likewise.
5705         (fold_builtin_memory_chk): Likewise.
5706         (fold_builtin_stxcpy_chk): Likewise.
5707         (fold_builtin_strncpy_chk): Likewise.
5708         (fold_builtin_next_arg): Likewise.
5709         (fold_build_call_expr): Declare.
5710         (fold_builtin_call_list): Declare.
5711         (fold_builtin_call_valist): Declare.
5712         (build_call_expr): Declare.
5713         (validate_arglist): Update to agree with modified definition.
5714         (tree_operand_length): New.
5715         (call_expr_arg_iterator): New.
5716         (init_call_expr_arg_iterator): New.
5717         (next_call_expr_arg): New.
5718         (first_call_expr_arg): New.
5719         (more_call_expr_args_p): New.
5720         (FOR_EACH_CALL_EXPR_ARG): New.
5721
5722         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
5723         and tcc_gimple_stmt.
5724         (tree_code_size): Update documentation.  Use sizeof (tree) rather
5725         than sizeof (char *).
5726         (tree_size): Likewise.  Add case for tcc_vl_exp.
5727         (tree_node_structure): Add case for tcc_vl_exp.
5728         (contains_placeholder_p): Likewise.
5729         (substitute_in_expr): Likewise.
5730         (substitute_placeholder_in_expr): Likewise.
5731         (stabilize_reference_1): Likewise.
5732         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
5733         to diagnose breakage of this interface for constructing CALL_EXPRs.
5734         (build_nt): Add similar assertion here.
5735         (build_nt_call_list): New.
5736         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
5737         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
5738         TREE_CODE_LENGTH.
5739         (get_callee_fndecl): Use new CALL_EXPR accessors.
5740         (tree_operand_check_failed): Change parameters to pass entire node
5741         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
5742         (process_call_operands): New.
5743         (build_vl_exp_stat): New.
5744         (build_call_list): New.
5745         (build_call_nary): New.
5746         (build_call_valist): New.
5747         (build_call_array): New.
5748         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5749         (call_expr_arglist): New.
5750
5751         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
5752         tcc_vl_exp instead of a fixed-size tcc_expression.
5753
5754         * doc/c-tree.texi (CALL_EXPR): Document new representation and
5755         accessors for CALL_EXPRs.
5756         (AGGR_INIT_EXPR): Likewise.
5757
5758 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5759             Brooks Moses  <brooks.moses@codesourcery.com>
5760             Lee Millward  <lee.millward@codesourcery.com>
5761
5762         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
5763         (expand_builtin_nonlocal_goto): Change parameter to be entire
5764         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
5765         (expand_builtin_prefetch): Likewise.
5766         (expand_builtin_classify_type): Likewise.
5767         (mathfn_built_in): Return NULL_TREE instead of 0.
5768         (expand_errno_check): Use new CALL_EXPR accessors.
5769         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
5770         Return NULL_RTX instead of 0.
5771         (expand_builtin_mathfn_2): Likewise.
5772         (expand_builtin_mathfn_3): Likewise.
5773         (expand_builtin_interclass_mathfn): Likewise.
5774         (expand_builtin_sincos): Likewise.
5775         (expand_builtin_cexpi): Likewise.
5776         (expand_builtin_int_roundingfn): Likewise.
5777         (expand_builtin_int_roundingfn_2): Likewise.
5778         (expand_builtin_pow): Likewise.
5779         (expand_builtin_powi): Likewise.
5780         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
5781         of arglist, fixing callers appropriately.  Use new CALL_EXPR
5782         accessors and constructors.  Return NULL_RTX instead of 0.
5783         (expand_builtin_strstr): Likewise.
5784         (expand_builtin_strchr): Likewise.
5785         (expand_builtin_strrchr): Likewise.
5786         (expand_builtin_strpbrk): Likewise.
5787         (expand_builtin_memcpy): Likewise.
5788         (expand_builtin_mempcpy): Likewise.
5789         (expand_builtin_mempcpy_args): New.
5790         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
5791         (expand_builtin_memmove_args): New.
5792         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
5793         (expand_movstr): Likewise.
5794         (expand_builtin_strcpy): Likewise.
5795         (expand_builtin_strcpy_args): New.
5796         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
5797         (expand_builtin_strncpy): Likewise.
5798         (expand_builtin_memset): Likewise.
5799         (expand_builtin_memset_args): New.
5800         (expand_builtin_bzero): Similarly to expand_builtin_memset.
5801         (expand_builtin_memcmp): Likewise.
5802         (expand_builtin_strcmp): Likewise.
5803         (expand_builtin_strncmp): Likewise.
5804         (expand_builtin_strcat): Likewise.
5805         (expand_builtin_strncat): Likewise.
5806         (expand_builtin_strspn): Likewise.
5807         (expand_builtin_strcspn): Likewise.
5808         (expand_builtin_args_info): Likewise.
5809         (expand_builtin_va_start): Likewise.
5810         (gimplify_va_arg_expr): Likewise.
5811         (expand_builtin_va_end): Likewise.
5812         (expand_builtin_va_copy): Likewise.
5813         (expand_builtin_frame_address): Likewise.
5814         (expand_builtin_alloca): Likewise.
5815         (expand_builtin_bswap): Likewise.
5816         (expand_builtin_unop): Likewise.
5817         (expand_builtin_fputs): Likewise.
5818         (expand_builtin_expect): Likewise.
5819         (expand_builtin_fabs): Likewise.
5820         (expand_builtin_copysign): Likewise.
5821         (expand_builtin_printf): Likewise.
5822         (expand_builtin_fprintf): Likewise.
5823         (expand_builtin_sprintf): Likewise.
5824         (expand_builtin_init_trampoline): Likewise.
5825         (expand_builtin_signbit): Likewise.
5826         (expand_builtin_fork_or_exec): Likewise.
5827         (expand_builtin_sync_operation): Likewise.
5828         (expand_builtin_compare_and_swap): Likewise.
5829         (expand_builtin_lock_test_and_set): Likewise.
5830         (expand_builtin_lock_release): Likewise.
5831         (expand_builtin): Likewise.
5832         (builtin_mathfn_code): Likewise.
5833
5834         (fold_builtin_constant_p): Pass call arguments individually instead
5835         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5836         accessors and constructors.  Return NULL_TREE instead of 0.
5837         (fold_builtin_expect): Likewise.
5838         (fold_builtin_classify_type): Likewise.
5839         (fold_builtin_strlen): Likewise.
5840         (fold_builtin_nan): Likewise.
5841         (integer_valued_real_p): Likewise.
5842         (fold_trunc_transparent_mathfn): Likewise.
5843         (fold_fixed_mathfn): Likewise.
5844         (fold_builtin_cabs): Likewise.
5845         (fold_builtin_sqrt): Likewise.
5846         (fold_builtin_cbrt): Likewise.
5847         (fold_builtin_cos): Likewise.
5848         (fold_builtin_cosh): Likewise.
5849         (fold_builtin_tan): Likewise.
5850         (fold_builtin_sincos): Likewise.
5851         (fold_builtin_cexp): Likewise.
5852         (fold_builtin_trunc): Likewise.
5853         (fold_builtin_floor): Likewise.
5854         (fold_builtin_ceil): Likewise.
5855         (fold_builtin_round): Likewise.
5856         (fold_builtin_int_roundingfn): Likewise.
5857         (fold_builtin_bitop): Likewise.
5858         (fold_builtin_bswap): Likewise.
5859         (fold_builtin_logarithm): Likewise.
5860         (fold_builtin_hypot): Likewise.
5861         (fold_builtin_pow): Likewise.
5862         (fold_builtin_powi): Likewise.
5863         (fold_builtin_exponent): Likewise.
5864         (fold_builtin_memset): Likewise.
5865         (fold_builtin_bzero): Likewise.
5866         (fold_builtin_memory_op): Likewise.
5867         (fold_builtin_bcopy): Deleted; call site changed to invoke
5868         fold_builtin_memory_op directly.
5869         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
5870         (fold_builtin_strncpy): Likewise.
5871         (fold_builtin_memcmp): Likewise.
5872         (fold_builtin_strcmp): Likewise.
5873         (fold_builtin_strncmp): Likewise.
5874         (fold_builtin_signbit): Likewise.
5875         (fold_builtin_copysign): Likewise.
5876         (fold_builtin_isascii): Likewise.
5877         (fold_builtin_toascii): Likewise.
5878         (fold_builtin_isdigit): Likewise.
5879         (fold_builtin_fabs): Likewise.
5880         (fold_builtin_abs): Likewise.
5881         (fold_builtin_fmin_fmax): Likewise.
5882         (fold_builtin_carg): Likewise.
5883         (fold_builtin_classify): Likewise.
5884         (fold_builtin_unordered_cmp): Likewise.
5885
5886         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
5887         New functions split out from fold_builtin_1.
5888         (fold_builtin_n): New.
5889         (fold_builtin_varargs): New.
5890         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
5891         instead.
5892         (fold_call_expr): New.
5893         (build_function_call_expr): Rewrite to use new helper function.
5894         (fold_builtin_call_list): New.
5895         (build_call_expr): New.
5896         (fold_builtin_call_valist): New.
5897         (rewrite_call_expr): New.
5898         (validate_arg): New.
5899         (validate_arglist): Change parameter to be entire CALL_EXPR instead
5900         of an arglist.  Change return type to bool.  Use new CALL_EXPR
5901         accessors.
5902
5903         (fold_builtin_strstr):  Pass call arguments individually instead
5904         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5905         accessors and constructors.  Return NULL_TREE instead of 0.
5906         (fold_builtin_strchr): Likewise.
5907         (fold_builtin_strrchr): Likewise.
5908         (fold_builtin_strpbrk): Likewise.
5909         (fold_builtin_strcat): Likewise.
5910         (fold_builtin_strncat): Likewise.
5911         (fold_builtin_strspn): Likewise.
5912         (fold_builtin_strcspn): Likewise.
5913         (fold_builtin_fputs): Likewise.
5914         (fold_builtin_next_arg): Likewise.
5915         (fold_builtin_sprintf): Likewise.
5916
5917         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
5918         NULL_RTX instead of 0.
5919         (expand_builtin_memory_chk): Likewise.
5920         (maybe_emit_chk_warning): Likewise.
5921         (maybe_emit_sprintf_chk_warning): Likewise.
5922
5923         (fold_builtin_object_size): Pass call arguments individually instead
5924         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5925         accessors and constructors.  Return NULL_TREE instead of 0.
5926         (fold_builtin_memory_chk): Likewise.
5927         (fold_builtin_stxcpy_chk): Likewise.
5928         (fold_builtin_strncpy_chk): Likewise.
5929         (fold_builtin_strcat_chk): Likewise.
5930         (fold_builtin_strcat_chk): Likewise.
5931         (fold_builtin_strncat_chk): Likewise.
5932         (fold_builtin_sprintf_chk): Likewise.
5933         (fold_builtin_snprintf_chk): Likewise.
5934         (fold_builtin_printf): Likewise.
5935         (fold_builtin_vprintf): Likewise.
5936
5937         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
5938         constructors.
5939         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
5940         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5941         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
5942         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
5943         (fold_unary): Likewise.
5944         (fold_binary): Likewise.
5945         (fold_ternary): Remove CALL_EXPR case, since they are no longer
5946         ternary expressions.
5947         (fold): Add logic for tcc_vl_exp.
5948         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
5949         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5950         (fold_build3_stat): Add assertion to flag broken interface for
5951         constructing CALL_EXPRs.
5952         (fold_build_call_list): New.
5953         (fold_build_call_list_initializer): New.
5954         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
5955         constructors.
5956         (fold_strip_sign_ops): Likewise.
5957
5958 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5959             Brooks Moses  <brooks.moses@codesourcery.com>
5960             Lee Millward  <lee.millward@codesourcery.com>
5961
5962         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
5963         accessors and dump arguments explicitly.
5964
5965         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
5966         TREE_CODE_LENGTH.
5967         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
5968         explicitly.
5969         (print_call_name): Use new CALL_EXPR accessors.
5970
5971         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
5972         CALL_EXPR arguments explicitly instead of as a list.  Use
5973         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5974
5975         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
5976         (vrp_visit_stmt): Likewise.
5977
5978         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
5979         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
5980         TREE_CODE_LENGTH.
5981         (force_move_till_expr): Likewise.
5982
5983         * targhooks.c (default_external_stack_protect_fail): Use
5984         build_call_expr instead of build_function_call_expr.
5985         (default_hidden_stack_protect_fail): Likewise.
5986
5987         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
5988         build the call.
5989
5990         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
5991         and walk arguments explicitly.
5992
5993         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
5994         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5995         (expand_simple_operations): Likewise.
5996         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
5997
5998         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
5999         of TREE_CODE_LENGTH.
6000         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
6001
6002         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
6003         instead of TREE_CODE_LENGTH.
6004
6005         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
6006         (tree_ic_transform): Likewise.
6007         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
6008         parameter instead of arglist.  Fix callers.
6009         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
6010         (tree_stringops_transform): Likewise.
6011         (tree_indirect_call_to_profile): Likewise.
6012         (tree_stringops_values_to_profile): Likewise.
6013
6014         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
6015         (eliminate_tail_call): Likewise.
6016
6017         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
6018
6019         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
6020         Use TREE_OPERAND_LENGTH and generalize to handle any number of
6021         operands.
6022         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
6023
6024         * omp-low.c (build_omp_barrier): Use build_call_expr.
6025         (lower_rec_input_clauses): Likewise.
6026         (lower_reduction_clauses): Likewise.
6027         (expand_parallel_call): Likewise.
6028         (maybe_catch_exception): Likewise.
6029         (expand_omp_for_generic): Likewise.
6030         (expand_omp_for_static_nochunk): Likewise.
6031         (expand_omp_sections): Likewise.
6032         (lower_omp_single_simple): Likewise.
6033         (lower_omp_single_copy): Likewise.
6034         (lower_omp_master): Likewise.
6035         (lower_omp_ordered): Likewise.
6036         (lower_omp_critical): Likewise.
6037
6038         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
6039         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
6040
6041         * tree-gimple.c (is_gimple_call_addr): Fix doc.
6042         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
6043         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
6044
6045         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
6046         and generalize to handle any number of operands.
6047         (chrec_contains_undetermined): Likewise.
6048         (tree_contains_chrecs): Likewise.
6049         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
6050
6051         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
6052
6053         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
6054         fold_call_expr instead of fold_builtin.
6055         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
6056         match declarations there.
6057         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
6058         updates.
6059
6060         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
6061         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
6062
6063         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
6064         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
6065
6066         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
6067         accessors.
6068
6069         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
6070         (execute_cse_sincos): Use new CALL_EXPR accessors.
6071
6072         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
6073
6074         * gimple-low.c (lower_function_body): Use build_call_expr.
6075         (lower_builtin_setjmp): Likewise.
6076
6077         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
6078         (set_storage_via_libcall): Likewise.
6079         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
6080         instead of TREE_CODE_LENGTH.
6081         (expand_expr_real_1): Use new CALL_EXPR accessors.
6082
6083         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
6084         generalize to handle any number of operands.
6085         (TB_parent_eq): Likewise.
6086
6087         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
6088         (strip_builtin_expect): Likewise.
6089
6090         * function.c (gimplify_parameters): Use build_call_expr.
6091
6092         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
6093         instead of TREE_CODE_LENGTH.
6094
6095         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
6096         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
6097
6098         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
6099         iterators.
6100
6101         * gimplify.c (build_stack_save_restore): Use build_call_expr.
6102         (gimplify_decl_expr): Likewise.
6103         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
6104         Use new CALL_EXPR iterators.
6105         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
6106         (gimplify_modify_expr_to_memset): Likewise.
6107         (gimplify_variable_sized_compare): Likewise.
6108         (gimplify_omp_atomic_fetch_op): Likewise.
6109         (gimplify_omp_atomic_pipeline): Likewise.
6110         (gimplify_omp_atomic_mutex): Likewise.
6111         (gimplify_function_tree): Likewise.
6112
6113         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
6114         (call_expr_flags): Likewise.
6115         (expand_call): Likewise.
6116
6117         * except.c (expand_builtin_eh_return_data_regno): Pass entire
6118         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
6119         accessors.
6120
6121         * coverage.c (create_coverage): Use build_call_expr.
6122
6123         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
6124         (temp_call_expr_obstack): New.
6125         (pool_copy_list): Delete.
6126         (temp_copy_call_expr): New.
6127         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
6128         CALL_EXPR accessors.  Get rid of special goo for copying argument
6129         lists and use temp_copy_call_expr instead.
6130         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
6131         CALL_EXPR accessors.
6132         (create_expression_by_pieces): Likewise.  Use build_call_array
6133         to construct the result instead of fold_build3.
6134         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
6135         dealing with argument lists.
6136         (init_pre): Remove references to expression_node_pool and
6137         list_node_pool.  Init temp_call_expr_obstack instead.
6138         (fini_pre): Remove references to expression_node_pool and
6139         list_node_pool.
6140
6141         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
6142         and walk arguments explicitly instead of as a list.
6143
6144         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
6145         (mx_register_decls): Likewise.
6146         (mudflap_register_call): Likewise.
6147         (mudflap_finish_file): Likewise.
6148
6149         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
6150         (ipa_callsite_compute_param): Likewise.
6151
6152         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
6153         accessors and constructor.
6154
6155         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
6156         accessors and constructor.
6157         (convert_tramp_reference): Likewise.
6158         (convert_call_expr): Likewise.
6159         (finalize_nesting_tree_1): Likewise.
6160
6161         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
6162         accessors.
6163
6164         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
6165
6166         * tree-inline.c (initialize_inlined_parameters): Pass entire
6167         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
6168         accessors.
6169         (estimate_num_insns_1): Use new CALL_EXPR accessors.
6170         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
6171
6172         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
6173         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
6174         (vectorizable_reduction): Likewise.
6175         (vectorizable_call): Use new CALL_EXPR iterators.
6176         (vectorizable_conversion): Use build_call_expr.
6177         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
6178         (vect_gen_widened_results_half): Use build_call_expr.
6179         (vect_setup_realignment): Likewise.
6180         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
6181
6182         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
6183         (pass_through_call): Likewise.
6184         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
6185         fold_builtin.
6186
6187         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
6188         (tree_gen_pow2_profiler): Likewise.
6189         (tree_gen_one_value_profiler): Likewise.
6190         (tree_gen_ic_func_profiler): Likewise.
6191         (tree_gen_average_profiler): Likewise.
6192         (tree_gen_ior_profiler): Likewise.
6193
6194         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
6195         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
6196         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
6197
6198         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
6199         of TREE_CODE_LENGTH.
6200
6201         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
6202         of TREE_CODE_LENGTH.
6203
6204         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
6205         constructor.
6206         (convert_to_integer): Likewise.
6207
6208         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
6209         accessors.
6210
6211 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
6212             Brooks Moses  <brooks.moses@codesourcery.com>
6213             Lee Millward  <lee.millward@codesourcery.com>
6214
6215         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
6216         accessors.
6217         * config/frv/frv.c (frv_expand_builtin): Likewise.
6218         * config/s390/s390.c (s390_expand_builtin): Likewise.
6219
6220         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
6221         (sparc_expand_builtin): Use new CALL_EXPR accessors.
6222
6223         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
6224         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
6225         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
6226         (ix86_expand_store_builtin): Likewise.
6227         (ix86_expand_unop_builtin): Likewise.
6228         (ix86_expand_unop1_builtin): Likewise.
6229         (ix86_expand_sse_compare): Likewise.
6230         (ix86_expand_sse_comi): Likewise.
6231         (ix86_expand_vec_init_builtin): Likewise.
6232         (ix86_expand_vec_ext_builtin): Likewise.
6233         (ix86_expand_vec_set_builtin): Likewise.
6234         (ix86_expand_builtin): Use new CALL_EXPR accessors.
6235
6236         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
6237         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
6238
6239         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
6240         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
6241         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
6242
6243         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
6244         build_call_expr.
6245         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
6246         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
6247         arglist.  Use new CALL_EXPR accessors.  Fix callers.
6248         (altivec_expand_abs_builtin): Likewise.
6249         (rs6000_expand_binop_builtin): Likewise.
6250         (altivec_expand_predicate_builtin): Likewise.
6251         (altivec_expand_lv_builtin): Likewise.
6252         (spe_expand_stv_builtin): Likewise.
6253         (altivec_expand_stv_builtin): Likewise.
6254         (rs6000_expand_ternop_builtin): Likewise.
6255         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
6256         (altivec_expand_st_builtin): Likewise.
6257         (altivec_expand_dst_builtin): Likewise.
6258         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
6259         arglist.  Use new CALL_EXPR accessors.  Fix callers.
6260         (altivec_expand_vec_set_builtin): Likewise.
6261         (altivec_expand_vec_ext_builtin): Likewise.
6262         (altivec_expand_builtin): Use new CALL_EXPR accessors.
6263         (spe_expand_builtin): Likewise.
6264         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
6265         arglist.  Use new CALL_EXPR accessors.  Fix callers.
6266         (spe_expand_evsel_builtin): Likewise.
6267         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
6268         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
6269
6270         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
6271         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
6272         (arm_expand_unop_builtin): Likewise.
6273         (arm_expand_builtin): Use new CALL_EXPR accessors.
6274
6275         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
6276         accessors.
6277
6278         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
6279         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
6280         (bfin_expand_unop_builtin): Likewise.
6281         (bfin_expand_builtin): Use new CALL_EXPR accessors.
6282
6283 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
6284             Brooks Moses  <brooks.moses@codesourcery.com>
6285             Lee Millward  <lee.millward@codesourcery.com>
6286
6287         * c-semantics.c (build_stmt): Add internal diagnostic check.
6288
6289         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
6290         accessors.  Print arguments explicitly instead of as a list.
6291
6292         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
6293
6294         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
6295         (c_finish_omp_flish): Likewise.
6296
6297         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
6298         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
6299         instead of TREE_CODE_LENGTH.
6300         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
6301         (c_warn_unused_result): Likewise.
6302
6303 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6304
6305         PR c/26494
6306         * doc/invoke.texi (Warning Options): Remove
6307         -Werror-implicit-function-declaration.
6308         (Wimplicit-function-declaration): Update description.
6309         * opts.c (common_handle_option): Move handling of -Werror=* to...
6310         (enable_warning_as_error): ...here.
6311         * opts.h (enable_warning_as_error): Declare.
6312         * c-decl.c (implicit_decl_warning): Unless
6313         -Wno-implicit-function-declaration is given, emit a pedwarn if
6314         -std=c99 or emit a warning if -Wimplicit-function-declaration.
6315         * c.opt (Wimplicit-function-declaration): Replace
6316         mesg_implicit_function_declaration with
6317         warn_implicit_function_declaration.
6318         * c-opts.c (c_common_handle_option):
6319         -Werror-implicit-function-declaration is exactly equal as
6320         -Werror=implicit-function-declaration.
6321         (set_Wimplicit): Replace mesg_implicit_function_declaration with
6322         warn_implicit_function_declaration.
6323         (c_common_post_options): -Wimplict-function-declaration is enabled
6324         by default by -std=c99, otherwise is disabled by default.
6325         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
6326
6327 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
6328
6329         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
6330         DECL on the rhs to a DECL on the lhs for debug info purposes if the
6331         former is ignored but not the latter.
6332
6333 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
6334
6335         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
6336         is made and the reference doesn't use the alias set of its type,
6337         do not create the temporary using that type.
6338
6339 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
6340
6341         * jump.c: Remove prototypes for delete_computation and
6342         delete_prior_computation.
6343
6344 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
6345
6346         * jump.c (get_label_after): Delete.
6347         (get_label_before, delete_computation, delete_jump,
6348         delete_prior_computation, follow_jumps): Move...
6349         * reorg.c (delete_computation, delete_prior_computation): ... here...
6350         (get_label_before, delete_jump): ... making these static ...
6351         (follow_jumps): ... and simplifying this since it only runs after
6352         reload.
6353         * rtl.h (get_label_after, get_label_before, delete_jump,
6354         follow_jumps): Delete prototypes.
6355
6356 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
6357
6358         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
6359
6360 2007-02-15  Nick Clifton  <nickc@redhat.com>
6361
6362         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
6363         order to prevent it from being munged by the target.
6364
6365 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
6366
6367         * config/i386/i386.md: Remove misleading comment.
6368
6369 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6370
6371         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
6372         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
6373         invalid patterns.
6374
6375 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6376
6377         * tree-sra.c (instantiate_missing_elements): Canonicalize
6378         bit-field types.
6379         (sra_build_assignment): New.
6380         (generate_copy_inout, generate_element_copy,
6381         generate_element_zero, generate_one_element_init): Use it.
6382
6383 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6384
6385         * tree-sra.c (instantiate_missing_elements): Canonicalize
6386         bit-field types.
6387         (sra_build_assignment): New.
6388         (generate_copy_inout, generate_element_copy,
6389         generate_element_zero, generate_one_element_init): Use it.
6390
6391 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
6392
6393         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
6394         limbo die nodes.
6395
6396 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
6397
6398         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
6399         types as aggregates not scalars.
6400         * function.c (assign_stack_temp_for_type): Likewise.
6401
6402 2007-02-14  Roger Sayle  <roger@eyesopen.com>
6403             Zdenek Dvorak  <dvorakz@suse.cz>
6404
6405         * tree-dump.c (dump_switch_p_1): Require exact match of the option
6406         name.
6407
6408 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
6409
6410         * passes.c (next_pass_1): Clear the next field of the copied
6411         pass structure.
6412
6413 2007-02-14  Richard Henderson  <rth@redhat.com>
6414
6415         * tree-sra.c (early_sra): New.
6416         (decl_can_be_decomposed_p): Deny va_list if early_sra.
6417         (tree_sra_early, pass_sra_early): New.
6418         * tree-pass.h (pass_sra_early): Declare.
6419         * passes.c (init_optimization_passes): Use it.
6420
6421 2007-02-14  Richard Guenther  <rguenther@suse.de>
6422
6423         * flags.h (issue_strict_overflow_warning): Convert to a macro.
6424
6425 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
6426
6427          PR tree-optimization/30771
6428         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
6429         also phi nodes.
6430         (vect_analyze_operations): Induction phis can now be marked as
6431         used_in_loop.
6432         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
6433         Update documentation accordingly.
6434
6435 2007-02-14  Nick Clifton  <nickc@redhat.com>
6436
6437         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
6438         most 3 arguments are supported.
6439         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
6440
6441 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
6442
6443         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
6444         Ensure dst->current is valid.
6445
6446 2007-02-13  Paul Brook  <paul@codesourcery.com>
6447
6448         * config.gcc: Add arm*-*-uclinux-*eabi.
6449         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
6450         (SUBTARGET_EXTRA_LINK_SPEC): Define.
6451         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
6452         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
6453         (LINK_SPEC): Define.
6454         (LIB_SPEC): Define.
6455         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
6456         register.
6457         * config/arm/uclinux-eabi.h: New file.
6458         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
6459         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
6460         based targets.
6461
6462 2007-02-13  Ian Lance Taylor  <iant@google.com>
6463
6464         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
6465         * flags.h (warn_strict_overflow): Declare.
6466         (enum warn_strict_overflow_code): Define.
6467         (issue_strict_overflow_warning): New static inline function.
6468         * opts.c (warn_strict_overflow): New variable.
6469         (common_handle_option): Handle OPT_Wstrict_overflow and
6470         OPT_Wstrict_overflow_.
6471         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
6472         OPT_Wall.
6473         * fold-const.c: Include intl.h.
6474         (fold_deferring_overflow_warnings): New static variable.
6475         (fold_deferred_overflow_warning): New static variable.
6476         (fold_deferred_overflow_code): New static variable.
6477         (fold_defer_overflow_warnings): New function.
6478         (fold_undefer_overflow_warnings): New function.
6479         (fold_undefer_and_ignore_overflow_warnings): New function.
6480         (fold_deferring_overflow_warnings_p): New function.
6481         (fold_overflow_warning): New static function.
6482         (make_range): Add strict_overflow_p parameter.  Change all
6483         callers.
6484         (extract_muldiv, extract_muldiv_1): Likewise.
6485         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
6486         tree_expr_nonnegative_p.
6487         (fold_negate_expr): Call fold_overflow_warning.
6488         (fold_range_test): Likewise.
6489         (fold_comparison): Likewise.
6490         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
6491         instead of tree_expr_nonnegative_p.
6492         (tree_expr_nonnegative_warnv_p): Rename from
6493         tree_expr_nonnegative_p, add strict_overflow_p parameter.
6494         (tree_expr_nonnegative_p): New function.
6495         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
6496         strict_overflow_p parameter.
6497         (tree_expr_nonzero_p): New function.
6498         * passes.c (verify_interpass_invariants): New static function.
6499         (execute_one_pass): Call it.
6500         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
6501         warnings.
6502         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
6503         (estimate_numbers_of_iterations): Likewise.
6504         (scev_probably_wraps_p): Likewise.
6505         * tree-ssa-ccp.c: Include "toplev.h".
6506         (evaluate_stmt): Defer fold overflow warnings until we know we are
6507         going to optimize.
6508         (struct fold_stmt_r_data): Add stmt field.
6509         (fold_stmt_r): Defer fold overflow warnings until we know we
6510         optimized.
6511         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
6512         (fold_stmt_inplace): Likewise.
6513         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
6514         (cleanup_control_expr_graph): Defer fold overflow warnings until
6515         we know we are going to optimize.
6516         * tree-cfg.c (fold_cond_expr_cond): Likewise.
6517         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
6518         Likewise.
6519         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
6520         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
6521         * tree-ssa-loop-manip.c (create_iv): Likewise.
6522         * c-typeck.c (build_conditional_expr): Likewise.
6523         (build_binary_op): Likewise.
6524         * tree-vrp.c (vrp_expr_computes_nonzero): Call
6525         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
6526         (extract_range_from_unary_expr): Likewise.
6527         * simplify-rtx.c (simplify_const_relational_operation): Warn when
6528         assuming that signed overflow does not occur.
6529         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
6530         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
6531         (fold_defer_overflow_warnings): Declare.
6532         (fold_undefer_overflow_warnings): Declare.
6533         (fold_undefer_and_ignore_overflow_warnings): Declare.
6534         (fold_deferring_overflow_warnings_p): Declare.
6535         (tree_expr_nonzero_warnv_p): Declare.
6536         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
6537         of warning options.
6538         (Warning Options): Document -Wstrict-overflow.
6539         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
6540         (tree-ssa-ccp.o): Likewise.
6541         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
6542         (fold-const.o): Depend on intl.h.
6543
6544 2007-02-13  Ian Lance Taylor  <iant@google.com>
6545
6546         PR middle-end/30751
6547         * lower-subreg.c (resolve_simple_move): Decompose subregs in
6548         addresses.
6549
6550 2007-02-13  Stuart Hastings  <stuart@apple.com>
6551
6552         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
6553
6554 2007-02-13  Richard Henderson  <rth@redhat.com>
6555
6556         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
6557         handled_component_p before looking for the indirect_ref.
6558
6559 2007-02-13  Richard Henderson  <rth@redhat.com>
6560
6561         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
6562         remove flags clobber.
6563         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
6564         (bswaphi_lowpart): New.
6565         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
6566         remove TARGET_BSWAP test.  Delete expander of the same name.
6567
6568         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
6569         (expand_unop): Use them.
6570
6571 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
6572
6573         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
6574         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
6575         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
6576         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
6577         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
6578         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
6579         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
6580         assembler dialect choice from asm templates.
6581
6582 2007-02-12  Richard Henderson  <rth@redhat.com>
6583
6584         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
6585         (fixuns_trunc<SSEMODEF>si2): Use it.
6586         * config/i386/sse.md (vec_setv4sf_0): Export.
6587         * config/i386/i386.c (ix86_build_const_vector): Export.
6588         (ix86_split_convert_uns_si_sse): Rename from
6589         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
6590         * config/i386/i386-protos.h: Update.
6591
6592 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6593
6594         PR c/29521
6595         * c-typeck.c (c_finish_return): Improve warning message.
6596
6597 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6598
6599         * alias.c (find_symbolic_term): Delete unused function.
6600
6601 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
6602
6603         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
6604         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
6605         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
6606
6607 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
6608
6609         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
6610         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
6611         the function, temporarily point the debug interface to the null one.
6612
6613 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
6614
6615         * dwarf2out.c (round_up_to_align): New static function.
6616         (field_byte_offset): Use it to round the offset.
6617
6618 2007-02-12  Richard Henderson  <rth@redhat.com>
6619
6620         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
6621         (inswl_const): Export.
6622
6623 2007-02-12  Richard Henderson  <rth@redhat.com>
6624
6625         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
6626         result mode of the libcall, convert back to outmode.
6627
6628 2007-02-12  Roger Sayle  <roger@eyesopen.com>
6629
6630         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
6631         (bswapdi2): New define_expand to implement 32-bit implementation.
6632
6633 2007-02-12  Nick Clifton  <nickc@redhat.com>
6634
6635         * doc/invoke.texi (Overall Options): Document --help=.
6636         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
6637         (cc1_options): Pass --help= on to cc1.
6638         (display_help): Add description of --help=.
6639         (process_command): Add code to handle --help=.  Allow translated
6640         --help and --target-help switches to be passed on to compiler
6641         sub-process.
6642         (main): Remove unused if statement.
6643         * opts.c (columns): Remove.
6644         (LEFT_COLUMN): Define.
6645         (wrap_help): Add columns argument.
6646         (print_filtered_help): Change parameters to be an include bitmask,
6647         an exclude bitmask, an any bitmask and the column width.  Move the
6648         code to display the params list here.  Add code to display the
6649         status of options rather than their descriptions if the quiet flag
6650         is not active.
6651         (print_specific_help): Change parameters to be an include bitmask,
6652         an exclude bitmask and an any bitmask.  Move code to look up the
6653         column width here.  Decide upon the title for an options listing.
6654         (common_handle_options): Add code to handle --help=.  Adapt code
6655         for --help and --target-help to use the revised form of the
6656         print_specific_help function.
6657         (print_help): Delete.
6658         (print_param_help): Delete.
6659         (print_switch): Delete.
6660         * opts.h (cl_lang_count): Add prototype.
6661         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
6662         CL_MAX_OPTION_CLASS): New defines.
6663         * optc-gen.awk: Add construction of cl_lang_count.
6664         * c.opt: Add Warning attribute to warning options and Optimization
6665         attribute to optimization options.
6666         * common.opt: Likewise.
6667         Add --help=.
6668         Add -fhelp and -ftarget-help as aliases for the transformed --help
6669         and --target-help options.
6670         * opt-functions.awk: Add code to handle Warning and Optimization
6671         attributes.
6672
6673 2007-02-12  Richard Henderson  <rth@redhat.com>
6674
6675         * config/alpha/constraints.md: New file.
6676         * config/alpha/alpha.c: Include tm-constrs.h.
6677         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
6678         alpha_extra_constraint): Remove.
6679         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
6680         * config/alpha/alpha-protos.h: Update.
6681         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
6682         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
6683         (EXTRA_CONSTRAINT): Remove.
6684         * config/alpha/alpha.md: Include constraints.md.
6685         (adddi splitter): Use satisfies_constraint_*.
6686         * config/alpha/predicates.md (add_operand): Likewise.
6687         (sext_add_operand, addition_operation): Likewise.
6688
6689 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
6690
6691         PR tree-optimization/29145
6692         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
6693         in our handling of restrict qualified pointers.
6694
6695 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6696
6697         PR middle-end/7651
6698         * doc/invoke.texi (Wunused-value): Update description.
6699         (Wextra): Delete item.
6700         * opts.c (set_Wextra): Don't use the value of Wextra to set the
6701         value of Wunused-value.
6702         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
6703         (c_finish_stmt_expr): Don't check extra_warnings.
6704         (emit_side_effect_warnings): The caller is responsible to check
6705         warn_unused_value.
6706
6707 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6708             Matt Thomas  <matt@3am-software.com>
6709
6710         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
6711
6712 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6713
6714         * simplify-rtx.c (simplify_relational_operation_1): Optimize
6715         comparisons of POPCOUNT against zero.
6716         (simplify_const_relational_operation): Likewise.
6717
6718 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6719
6720         * doc/invoke.texi (Wextra): Delete outdated paragraph.
6721
6722 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6723
6724         * dwarf2out.c (root_type): Delete unused function.
6725
6726 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6727
6728         * genattrtab.c (contained_in_p): Delete unused function.
6729         (write_expr_attr_cache): Likewise.
6730
6731 2007-02-11  Jan Hubicka  <jh@suse.cz>
6732
6733         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
6734         previous patch.
6735
6736 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
6737
6738         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
6739         to add the REG_EQ* note.
6740         * see.c (see_merge_one_use_extension): Likewise.
6741         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
6742         turn REG_EQUAL notes into REG_EQUIV notes if the target
6743         register may have more than one set.
6744         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
6745         * gcse.c (try_replace_reg): Likewise.
6746         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
6747         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
6748         more than one REG_EQUIV note.
6749         * reload1.c (gen_reload): Use set_unique_reg_note.
6750
6751 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
6752
6753         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
6754         (ix86_builtin_conversion): New function.
6755
6756 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
6757
6758         PR target/29487
6759         * tree.h (DECL_REPLACEABLE_P): New macro.
6760         * except.c (set_nothrow_function_flags): Likewise.
6761
6762 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
6763             Ira Rosen  <irar@il.ibm.com>
6764             Dorit Nuzman  <dorit@il.ibm.com>
6765
6766         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
6767         * targhooks.c (default_builtin_vectorized_conversion): New.
6768         * targhooks.h (default_builtin_vectorized_function): New declaration.
6769         * target.h (struct vectorize): Add builtin_conversion field.
6770         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
6771         stmt_vec_info_type value.
6772         (vectorizable_conversion): New declaration.
6773         * tree-vect-analyze.c (vect_analyze_operations): Add
6774         vectorizable_conversion call.
6775         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
6776         * tree-vect-transform.c (vectorizable_conversion): New function.
6777         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
6778         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
6779         mode.
6780         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
6781         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
6782         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
6783         or ALTIVEC_BUILTIN_VCFSX.
6784
6785 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6786
6787         PR target/30634
6788         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
6789         CONST_DOUBLE and operand 0 is a hard register.
6790         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
6791         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
6792         is a hard floating-point register.
6793
6794 2007-02-10  Richard Henderson  <rth@redhat.com>
6795             Jakub Jelinek  <jakub@redhat.com>
6796             Alexandre Oliva  <aoliva@redhat.com>
6797
6798         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
6799         * builtin-types.def (BT_WORD): Make unsigned.
6800         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
6801         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
6802         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
6803         * c-decl.c (grokdeclarator): Don't error if !have_tls.
6804         * c-parser.c (c_parser_omp_threadprivate): Likewise.
6805         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
6806         emulated tls.
6807         * expr.c (emutls_var_address): New.
6808         (expand_expr_real_1): Expand emulated tls.
6809         (expand_expr_addr_expr_1): Likewise.
6810         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
6811         * output.h (emutls_finish): Declare.
6812         * toplev.c (compile_file): Call it.
6813         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
6814         address before wrapping in CONST.
6815         * varasm.c (emutls_htab, emutls_object_type): New.
6816         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
6817         (get_emutls_object_name, get_emutls_object_type): New.
6818         (get_emutls_init_templ_addr, emutls_decl): New.
6819         (emutls_common_1, emutls_finish): New.
6820         (assemble_variable): When emulating tls, swap decls; generate
6821         constructor for the emutls objects.
6822         (do_assemble_alias): When emulating tls, swap decl and target name.
6823         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
6824         for emulated tls.
6825         * varpool.c (decide_is_variable_needed): Look at force_output.
6826         Recurse for emulated tls.
6827         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
6828         with decide_is_variable_needed.
6829         * emutls.c: New file.
6830         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
6831         tls_object for real tls.
6832
6833 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6834
6835         PR rtl-optimization/29599
6836         * reload1.c (eliminate_regs_in_insn): Take the destination
6837         mode into account when computing the offset.
6838
6839 2007-02-09  Stuart Hastings  <stuart@apple.com>
6840             Richard Henderson  <rth@redhat.com>
6841
6842         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6843         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6844         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
6845         fixuns_truncdfhi2): New.
6846         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
6847         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
6848         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
6849         (floatunssidf2): Allow nonimmediate source.
6850         * config/i386/sse.md (movdi_to_sse): New.
6851         (vec_concatv2di): Drop '*'.
6852         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
6853         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6854         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
6855         New.
6856         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
6857         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6858         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
6859         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
6860         (ix86_build_signbit_mask): Fix decl of v, refactor to call
6861         ix86_build_const_vector.
6862         (x86_emit_floatuns): Rewrite.
6863
6864 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6865
6866         * genautomata.c (longest_path_length): Delete unused function.
6867         (struct state): Delete unused longest_path_length.
6868         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
6869         (get_free_state): Delete unused.
6870
6871 2007-02-09  Jan Hubicka  <jh@suse.cz>
6872
6873         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
6874         * doc/invoke.texi (inline-unit-growth): Update default value.
6875
6876         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
6877         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
6878         (rebuild_cgraph_edges): Likewise.
6879         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
6880         (dump_cgraph_node): Dump frequencies.
6881         (cgraph_clone_edge): Add frequency scales.
6882         (cgraph_clone_node): Add freuqnecy.
6883         * cgraph.h (cgraph_edge): Add freuqnecy argument.
6884         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
6885         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
6886         * tree-pass.h (TODO_rebuild_frequencies): New constant.
6887         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
6888         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
6889         (save_inline_function_body): Likewise.
6890         * ipa-inline.c: inluce rtl.h
6891         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
6892         (cgraph_edge_badness): Use frequencies.
6893         (cgraph_decide_recursive_inlining): Update clonning.
6894         (cgraph_decide_inlining_of_small_function): Dump frequency.
6895         * predict.c (estimate_bb_frequencies): Export.
6896         * predict.h (estimate_bb_frequencies): Declare.
6897         * tree-inline.c (copy_bb): Watch overflows.
6898         (expand_call_inline): Update call of cgraph_create_edge.
6899         (optimize_inline_calls): Use TODO flags to update frequnecies.
6900         * passes.h: Include predict.h
6901         (init_optimization_passes): Move profile ahead.
6902         (execute_function_todo): Handle TODO_rebuild_frequencies.
6903
6904 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6905
6906         * config/alpha/alpha.c (emit_insxl): Force the first operand of
6907         the insbl or inswl pattern into a register.
6908
6909 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6910
6911         * config/ia64/ia64.md (bswapdi2): New define_insn.
6912
6913 2007-02-09  Richard Henderson  <rth@redhat.com>
6914
6915         * config/i386/constraints.md (Ym): New constraint.
6916         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
6917         (movdi_1_rex64): Split sse and xmm general register moves from
6918         memory move alternatives.  Use conditional register constraints.
6919         (movsf_1, movdf_integer): Likewise.
6920         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
6921         (movdf_integer_rex64): New.
6922         (pushsf_rex64): Fix output constraints.
6923         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
6924         (sse2_stored): Likewise.
6925         (sse2_storeq_rex64): New.
6926         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
6927         amd and not generic.
6928         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
6929         for optimize_size.  Remove SF/DFmode hack.
6930
6931 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6932
6933         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
6934         (bit_SSE4a): New.
6935
6936 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
6937             Richard Sandiford  <richard@codesourcery.com>
6938
6939         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
6940         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
6941         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
6942         m68k/t-mlib to tmake_file.
6943         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
6944         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
6945         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
6946         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
6947         variable is not empty, add t-$m68k_arch_family to tmake_file.
6948         Add t-mlibs to tmake_file.
6949         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
6950         * config/m68k/t-cf: New file.
6951         * config/m68k/t-m68k: Likewise.
6952         * config/m68k/t-mlibs: Likewise.
6953         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6954         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6955         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6956         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6957         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
6958         Delete.
6959         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
6960         (INSTALL_LIBGCC): Delete.
6961         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6962         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6963         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6964         (M68K_MLIB_CPU): Define.
6965         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6966         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6967         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
6968
6969 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
6970             Richard Guenther  <rguenther@suse.de>
6971
6972         PR middle-end/23361
6973         * fold-const.c (fold_comparison): Handle obfuscated comparisons
6974         against INT_MIN/INT_MAX.
6975         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
6976         file if a loop is removed.
6977
6978 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
6979
6980         * calls.c (store_one_arg): Pass correct alignment to
6981         emit_push_insn for non-BLKmode values.
6982         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
6983         unaligned stack slot via a suitably aligned slot.
6984
6985 2007-02-08  DJ Delorie  <dj@redhat.com>
6986
6987         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
6988         warnings.
6989         (legal_subregs): Use unsigned char, make const.
6990         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
6991
6992 2007-02-08  Paul Brook  <paul@codesourcery.com>
6993
6994         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
6995         special interworking needed.
6996
6997 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
6998
6999         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
7000         conditional to __SSE2__.
7001         (Entries below should have been added to first ChangeLog
7002         entry for amdfam10 dated 2007-02-05)
7003         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
7004         defined.
7005         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
7006         defined.
7007         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
7008         defined.
7009
7010 2007-02-08  DJ Delorie  <dj@redhat.com>
7011
7012         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
7013         * config/m32c/m32c.c (legal_subregs): New.
7014         (m32c_illegal_subreg_p): New.
7015         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
7016         unsupported subregs of hard regs.
7017
7018 2007-02-08  Jan Hubicka  <jh@suse.cz>
7019
7020         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
7021         the same one; always update histograms.
7022
7023 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
7024
7025         * passes.c (init_optimization_passes): Tidy comment.
7026
7027 2007-02-08  Roger Sayle  <roger@eyesopen.com>
7028
7029         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
7030         strip zero_extend, bswap and rotates from POCOUNT's argument.
7031         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
7032         zero_extend and rotates from PARITY's argument.
7033         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
7034         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
7035         of an integer constant at compile-time.
7036
7037 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
7038
7039         PR 30562
7040         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
7041         Update all users.
7042         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
7043         users.
7044         (init_alias_info):
7045         * tree-ssa-live.c (remove_unused_locals): Do not remove
7046         TREE_ADDRESSABLE variables.
7047         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
7048         * tree-ssa-operands.c (add_virtual_operand): Remove argument
7049         FOR_CLOBBER.  Update all users.
7050         If VAR has an associated alias set, add a virtual operand for
7051         it if no alias is found to conflict with the memory reference.
7052
7053 2007-02-07  Jan Hubicka  <jh@suse.cz>
7054             Robert Kidd <rkidd@crhc.uiuc.edu>
7055
7056         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
7057
7058 2007-02-07  Ian Lance Taylor  <iant@google.com>
7059
7060         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
7061
7062 2007-02-07  Roger Sayle  <roger@eyesopen.com>
7063
7064         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
7065         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
7066         tablejumpdi, movsi_to_cr_one): Remove constraints from
7067         define_expand's match_operands.
7068
7069 2007-02-07  Roger Sayle  <roger@eyesopen.com>
7070
7071         * global.c (compute_regsets): Move declatation of "i" inside of
7072         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
7073
7074 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
7075
7076         PR c++/30703
7077         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
7078         of INDIRECT_REF <RESULT_DECL>.
7079
7080         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
7081
7082 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
7083             Kaz Kojima  <kkojima@gcc.gnu.org>
7084
7085         PR target/29746
7086         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
7087         properly.
7088         (sh_initialize_trampoline): Add parentheses to avoid a warning.
7089
7090 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
7091
7092         * doc/loop.texi: Document possibility not to perform disambiguation
7093         of loops with multiple latches.
7094         * cfgloopmanip.c (alp_enum_p): Removed.
7095         (add_loop): Handle subloops.  Use get_loop_body_with_size.
7096         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
7097         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
7098         the new forwarder block.
7099         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
7100         Handle the case latch is NULL.
7101         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
7102         when marking loop exits.
7103         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
7104         be modified.
7105         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
7106         disambiguate_loops_with_multiple_latches.
7107         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
7108         before fix_loop_structure.
7109         * cfgloop.c: Include pointer-set.h and output.h.
7110         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
7111         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
7112         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
7113         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
7114         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
7115         disambiguate_multiple_latches, get_loop_body_with_size,
7116         disambiguate_loops_with_multiple_latches): New functions.
7117         (flow_loop_dump): Dump multiple latch edges.
7118         (flow_loop_nodes_find): Handle loops with multiple latches.
7119         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
7120         (glb_enum_p): Modified.
7121         (get_loop_body): Use get_loop_body_with_size.
7122         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
7123         (AVOID_CFG_MODIFICATIONS): New constant.
7124         (disambiguate_loops_with_multiple_latches, add_loop,
7125         get_loop_body_with_size): Declare.
7126         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
7127
7128 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
7129
7130         PR inline-asm/28686
7131         * global.c (compute_regsets): New function.
7132         (global_alloc): Refactored ELIMINABLE_REGSET
7133         and NO_GLOBAL_ALLOC_REGS computation out.
7134         (rest_of_handle_global_alloc): Call compute_regsets()
7135         for non-optimizing case.
7136
7137 2007-02-06  Richard Henderson  <rth@redhat.com>
7138
7139         * config/i386/constraints.md (Y2): Rename from Y.
7140         (Yi): New constraint.
7141         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
7142         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
7143         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
7144         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
7145         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
7146         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
7147         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
7148         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
7149         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
7150         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
7151         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
7152         vec_extractv2si_1): Change Y constraints to Y2.
7153         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
7154         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
7155         Change Y constraints to Y2.
7156         (sse2_loadld): Change Y constraints to x.
7157
7158 2007-02-06  Roger Sayle  <roger@eyesopen.com>
7159
7160         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
7161         (parity<mode>2): New define_expand using rs6000_emit_parity.
7162         * config/rs6000/rs6000.c (rs6000_emit_popcount,
7163         rs6000_emit_parity): New functions.
7164         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
7165         rs6000_emit_parity): Prototype here.
7166
7167 2007-02-06  Ian Lance Taylor  <iant@google.com>
7168
7169         * lower-subreg.c (simple_move_operand): Reject CONST.
7170         (resolve_clobber): Call validate_change rather than directly
7171         assigning to XEXP (pat, 0).
7172
7173 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
7174
7175         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
7176         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
7177         (tree-cfg.o): Remove hashtab.h dependency.
7178
7179         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
7180         (struct ivopts_data): Change niters to pointer_map_t.
7181         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
7182         (niter_for_exit): Create pointer_map on demand.  Change for
7183         pointer_map API.
7184         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
7185         (free_loop_data): Destroy data->niters if created and reset field.
7186         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
7187         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
7188
7189         * tree-ssa-reassoc.c: Include pointer-set.h.
7190         (bb_rank): Change to long *.
7191         (operand_rank): Change to pointer_map_t.
7192         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
7193         (insert_operand_rank): Accept long.
7194         (operand_entry_hash, operand_entry_eq): Remove.
7195         (get_rank): Return long.  Adjust for changes above.
7196         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
7197         and operand_rank.
7198         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
7199
7200         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
7201         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
7202         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
7203         is not NULL.
7204         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
7205         directly since it cannot be NULL.
7206         (get_vi_for_tree): Rewrite for pointer_map API.
7207         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
7208         (init_alias_vars): Create vi_for_tree as pointer_map.
7209         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
7210
7211         * tree-cfg.c: Don't include hashtab.h.
7212         (edge_to_cases): Declare as pointer_map.
7213         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
7214         Delete.
7215         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
7216         (start_recording_case_labels): Create edge_to_cases as pointer_map.
7217         (end_recoding_case_labels): Cleanup edge_to_cases manually before
7218         destroying it.
7219         (record_switch_edge): Delete.
7220         (get_cases_for_edge): Adjust for pointer_map API, inline
7221         record_switch_edge (rewritten for new API), remove goto.
7222
7223 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
7224
7225         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
7226         * tree-nested.c: Include pointer-set.h.
7227         (var_map_elt, var_map_eq, var_map_hash): Delete.
7228         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
7229         to pointer_map_t's.
7230         (nesting_info_bitmap_obstack): New.
7231         (lookup_field_for_decl): Adjust for pointer_map API.
7232         (lookup_tramp_for_decl): Adjust for pointer_map API.
7233         (get_nonlocal_debug_decl): Adjust for pointer_map API.
7234         (get_local_debug_decl): Adjust for pointer_map API.
7235         (convert_nl_goto_reference): Adjust for pointer_map API.
7236         (convert_nl_goto_receiver): Adjust for pointer_map API.
7237         (create_nesting_tree): Create outside GGC space.  Create bitmap on
7238         the new obstack.  Create field_map and var_map as pointer_maps.
7239         (free_nesting_tree): Adjust for changes to create_nesting_tree.
7240         (root): Delete.
7241         (lower_nested_functions): Move root here, no need to NULL it.
7242         Initialize and release the obstack.
7243
7244 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
7245
7246         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
7247         Remove prototypes and make them non-static.
7248         (struct tree_int_map): Remove.
7249         * tree.h (struct tree_int_map): Move here, turning TO into an
7250         unsigned int.
7251         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
7252
7253         * tree.h (TREE_COMPLEXITY): Remove.
7254         (struct tree_exp): Remove complexity field.
7255         * tree.c (build1_stat): Don't set it.
7256
7257 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
7258             Victor Kaplansky  <victork@il.ibm.com>
7259
7260         * tree-vectorizer.c (vect_is_simple_use): Support induction.
7261         (vect_is_simple_reduction): Support reduction with induction as
7262         one of the operands.
7263         (vect_is_simple_iv_evolution): Fix formatting.
7264         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
7265         formatting.  Don't mark induction phis for vectorization.
7266         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
7267         * tree-vect-transform.c (get_initial_def_for_induction): New function.
7268         (vect_get_vec_def_for_operand): Support induction.
7269         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
7270         induction case.
7271         (vectorizable_reduction): Support reduction with induction as one of
7272         the operands.
7273         (vectorizable_type_demotion): Use def-type of stmt argument rather
7274         than dummy def-type.
7275
7276         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
7277         flag_tree_scev_cprop.
7278         * common.opt (tree-scev-cprop): New flag.
7279
7280         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
7281         call to vect_get_new_vect_var.
7282
7283 2007-02-06  Ira Rosen  <irar@il.ibm.com>
7284
7285         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
7286         vectype is not NULL.
7287         (vect_pattern_recog_1): Likewise.
7288
7289 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7290
7291         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
7292         (fold_negate_expr): Likewise.
7293
7294 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
7295
7296         PR debug/30189
7297         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
7298         even if cv-qualification is the same.
7299
7300 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
7301
7302         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
7303         __enable_execute_stack on completion.
7304
7305 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7306
7307         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
7308         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
7309         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
7310         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
7311         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
7312         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
7313         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
7314         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
7315
7316 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7317
7318         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
7319         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
7320         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
7321         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
7322         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
7323         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
7324         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
7325         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
7326         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
7327         umuldi3_highpart_rex64, umulsi3_highpart_insn,
7328         umulsi3_highpart_zext, smuldi3_highpart_rex64,
7329         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
7330         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
7331         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
7332         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
7333         sqrtextenddfxf2_i387): Added amdfam10_decode.
7334
7335         * config/i386/athlon.md (athlon_idirect_amdfam10,
7336         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
7337         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
7338         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
7339         athlon_ivector_store_amdfam10): New define_insn_reservation.
7340         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
7341         amdfam10.
7342
7343 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7344
7345         * config/i386/athlon.md (athlon_call_amdfam10,
7346         athlon_pop_amdfam10, athlon_lea_amdfam10): New
7347         define_insn_reservation.
7348         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
7349         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
7350         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
7351
7352 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7353
7354         * config/i386/athlon.md (athlon_sseld_amdfam10,
7355         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
7356         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
7357
7358 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7359
7360         * config/i386/athlon.md (athlon_sseins_amdfam10): New
7361         define_insn_reservation.
7362         * config/i386/i386.md (sseins): Added sseins to define_attr type
7363         and define_attr unit.
7364         * config/i386/sse.md: Set type attribute to sseins for insertq
7365         and insertqi.
7366
7367 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7368
7369         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
7370         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
7371         ssecomi_load_amdfam10, ssecomi_amdfam10,
7372         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
7373         define_insn_reservation.
7374         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
7375
7376 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7377
7378         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
7379         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
7380         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
7381         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
7382         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
7383         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
7384         define_insn_reservation.
7385
7386         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
7387         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
7388         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
7389         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
7390         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
7391
7392 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7393
7394         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
7395         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
7396         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
7397         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
7398         athlon_ssemul_load_k8): Added amdfam10.
7399
7400 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7401
7402         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
7403         (x86_sse_unaligned_move_optimal): New variable.
7404
7405         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
7406         m_AMDFAM10.
7407         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
7408         for unaligned vector SSE double/single precision loads for AMDFAM10.
7409
7410 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7411
7412         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
7413         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
7414         Define TARGET_CPU_DEFAULT_amdfam10.
7415         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
7416         (processor_type): Add PROCESSOR_AMDFAM10.
7417
7418         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
7419         processor_type in config/i386/i386.h.
7420         Enable imul peepholes for TARGET_AMDFAM10.
7421
7422         * config.gcc: Add support for --with-cpu option for amdfam10.
7423
7424         * config/i386/i386.c (amdfam10_cost): New variable.
7425         (m_AMDFAM10): New macro.
7426         (m_ATHLON_K8_AMDFAM10): New macro.
7427         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
7428         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
7429         x86_promote_QImode, x86_integer_DFmode_moves,
7430         x86_partial_reg_dependency, x86_memory_mismatch_stall,
7431         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
7432         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
7433         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
7434         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
7435         Enable/disable for amdfam10.
7436         (override_options): Add amdfam10_cost to processor_target_table.
7437         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
7438         processor_alias_table.
7439         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
7440         (ix86_adjust_cost): Add code for amdfam10.
7441
7442 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
7443
7444         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
7445         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
7446         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
7447         * config/i386/i386.h: Add builtin definition for SSE4A.
7448         * config/i386/i386.md: Add support for ABM instructions
7449         (popcnt and lzcnt).
7450         * config/i386/sse.md: Add support for SSE4A instructions
7451         (movntss, movntsd, extrq, insertq).
7452         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
7453         Add -march=amdfam10 flag.
7454         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
7455         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
7456         and amdfam10.
7457         * doc/extend.texi: Add documentation for SSE4A builtins.
7458
7459 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
7460
7461         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
7462
7463 2007-02-05  Richard Guenther  <rguenther@suse.de>
7464
7465         * tree-vectorizer.h (vectorizable_function): Add argument type
7466         argument, change return type.
7467         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
7468         * tree-vect-transform.c (vectorizable_function): Handle extra
7469         argument, return vectorized function decl.
7470         (build_vectorized_function_call): Remove.
7471         (vectorizable_call): Handle calls with result and argument types
7472         differing.  Handle loop vectorization factor correctly.
7473         * targhooks.c (default_builtin_vectorized_function): Adjust for
7474         extra argument.
7475         * targhooks.h (default_builtin_vectorized_function): Likewise.
7476         * target.h (builtin_vectorized_function): Add argument type
7477         argument.
7478         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
7479         extra argument, allow vectorizing of lrintf.
7480         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
7481         documentation of target hook.
7482
7483 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
7484
7485         PR target/30665
7486         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
7487         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
7488         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
7489
7490 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7491
7492         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
7493         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
7494         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
7495         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
7496         before canonicalizing sincos to cexpi.
7497         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
7498
7499 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7500
7501         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
7502         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
7503         (alpha_init_builtins): Use alpha_add_builtins to process tables.
7504
7505 2007-02-05  Roger Sayle  <roger@eyesopen.com>
7506
7507         * mips-tfile.c (initialize_init_file): Correct endianness test.
7508
7509 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
7510
7511         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
7512         the 'y' constraint.
7513
7514 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
7515
7516         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
7517         saves in a PARALLEL before the register assignments.
7518
7519 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
7520
7521         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
7522         DWARF_FRAME_RETURN_COLUMN to be a general register.
7523         * dwarf2out.c (init_return_column_size): New function, split from...
7524         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
7525         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
7526         to be nongeneral registers.
7527         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
7528         integer registers.
7529         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
7530         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
7531
7532 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
7533
7534         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
7535
7536 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
7537
7538         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
7539         (remove_path): Use can_remove_branch_p and remove_branch instead
7540         of loop_delete_branch_edge.
7541         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
7542         (tree_transform_and_unroll_loop): Remove dead branches immediately.
7543         Update profile using scale_dominated_blocks_in_loop.
7544         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
7545         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
7546         (can_remove_branch_p, remove_branch): Declare.
7547         * tree-cfg.c (tree_can_remove_branch_p): New function.
7548         (tree_cfg_hooks): Add tree_can_remove_branch_p.
7549         * cfgrtl.c (rtl_can_remove_branch_p): New function.
7550         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
7551
7552 2007-02-05  Jan Hubicka  <jh@suse.cz>
7553
7554         PR middle-end/30696
7555         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
7556         nodes in cgraph, don't remove offline copy of the function.
7557
7558 2007-02-04  Jan Hubicka  <jh@suse.cz>
7559
7560         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
7561         vectors might cause maybe_lookup_element_for_expr to be called
7562         on non-sra-candidate.
7563
7564 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7565
7566         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
7567         config/bfin/bfin.md, config/bfin/predicates.md: Follow
7568         spelling conventions.
7569
7570 2007-02-04  Richard Guenther  <rguenther@suse.de>
7571
7572         PR middle-end/30636
7573         * fold-const.c (try_move_mult_to_index): Make sure to not
7574         overflow one dimension of a multi-dimensional array access.
7575
7576 2007-02-04  Jan Hubicka  <jh@suse.cz>
7577
7578         * passes.c (init_optimization_passes): Reindent.
7579
7580 2007-02-04  Jan Hubicka  <jh@suse.cz>
7581             Eric Botcazou  <ebotcazou@adacore.com>
7582
7583         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
7584         (execute_fixup_cfg): Break out the abnormal goto code.
7585         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
7586         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
7587         (optimize_inline_calls): Call make_nonlocal_label_edges.
7588
7589 2007-02-04  Jan Hubicka  <jh@suse.cz>
7590
7591         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
7592         true when something was changed.
7593         (rename_ssa_copies): When something was changed, do
7594         TODO_remove_unused_locals.
7595         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
7596         add TODO_remove_unused_locals when instruction was removed.
7597
7598 2007-02-04  Jan Hubicka  <jh@suse.cz>
7599
7600         * ipa-inline.c (try_inline): Improve debug output; work on already
7601         inline edges too.
7602         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
7603         call try_inline for already inlined edges too when flattening;
7604         inline also functions that make callee growth but overall unit size
7605         reduce.
7606
7607 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7608
7609         * config/m32c/bitops.md, config/m32c/jump.md,
7610         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
7611         config/m32r/m32r.h, config/m32r/m32r.md,
7612         config/m32r/predicates.md, config/m68hc11/larith.asm,
7613         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
7614         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
7615         config/mips/mips-protos.h, config/mips/mips.c,
7616         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
7617         config/mn10300/mn10300.h, config/mn10300/predicates.md,
7618         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
7619         spelling conventions.
7620
7621         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
7622         Follow spelling conventions.
7623
7624 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
7625
7626         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
7627         warn about C++0x compatibility.
7628
7629 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7630
7631         * config/h8300/h8300.c, config/h8300/h8300.h,
7632         config/h8300/h8300.md: Follow spelling conventions.
7633
7634 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
7635
7636         PR middle-end/30667
7637         * combine.c (try_combine): Do not substitute source operand
7638         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
7639
7640 2007-02-03  Jan Hubicka  <jh@suse.cz>
7641
7642         PR gcov-profile/30650
7643         * value-prof.c (stringop_block_profile): Fix handling of size counter;
7644         do not divide by zero for never executed counters.
7645         (tree_find_values_to_profile): Fix counters.
7646         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
7647
7648 2007-02-03  Ian Lance Taylor  <iant@google.com>
7649
7650         * lower-subreg.c (simple_move_operand): New static function,
7651         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
7652         operands.
7653         (simple_move): Call simple_move_operand.
7654         (find_decomposable_subregs): Add special handling of MEMs.
7655         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
7656         meaning of return value.  If we see a hard register, test whether
7657         it can store a word_mode value.  Change all callers.
7658
7659 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7660
7661         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
7662         ftrapv insns and expanders.
7663         (subdi3): Change define_expand operand 1 to arith11_operand, and
7664         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
7665         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
7666         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
7667         respectively.
7668
7669         PR middle-end/30174
7670         * varasm.c (notice_global_symbol): Treat global objects as weak when
7671         flag_shlib is true.
7672
7673 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7674
7675         * emit-rtl.c (dconstpi): Delete.
7676         (dconstsqrt2): New.
7677         (init_emit_once): Delete dconstpi and init dconstsqrt2.
7678         * real.h (dconstpi): Delete.
7679         (dconstsqrt2): New.
7680         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
7681         (fold_builtin_hypot): Likewise.
7682
7683 2007-02-03  Tom Tromey  <tromey@redhat.com>
7684
7685         PR driver/30246
7686         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
7687         -gcoff3, -gxcoff3, -gvms3 implies -dD.
7688
7689 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
7690
7691         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
7692         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
7693         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
7694         config/rs6000/cell.md, config/rs6000/darwin.h,
7695         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
7696         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
7697         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
7698         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
7699         typos.  Follow spelling conventions.
7700         * doc/invoke.texi: Follow spelling conventions.
7701
7702 2007-02-03  Roger Sayle  <roger@eyesopen.com>
7703
7704         * simplify-rtx.c (simplify_relational_operation_1): Implement some
7705         canonicalization transformations that attempt to simplify integer
7706         constant comparisons to become comparisons against zero.
7707
7708 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7709
7710         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
7711         fabs(x)*sqrt(2).
7712         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
7713         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
7714
7715 2007-02-02  Mike Stump  <mrs@apple.com>
7716
7717         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
7718         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
7719         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
7720         generate a branch island.
7721
7722 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
7723
7724         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
7725         (xtensa_legitimate_address_p): New.
7726         (xtensa_legitimize_address): New.
7727         (xtensa_output_addr_const_extra): New.
7728         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
7729         (BASE_REG_P): New.
7730         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
7731         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
7732         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
7733         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
7734         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
7735         (xtensa_legitimize_address): New.
7736         (xtensa_output_addr_const_extra): New.
7737
7738 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
7739
7740         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
7741
7742 2007-02-02  Ian Lance Taylor  <iant@google.com>
7743
7744         * expmed.c (expand_divmod): Add comment.
7745
7746 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
7747
7748         * emit-rtl.c (renumber_insns): Remove.
7749         * flags.h: Remove the extern for flag_renumber_insns.
7750         * rtl.h: Remove the prototype for renumber_insns.
7751         * toplev.c (flag_renumber_insns): Remove.
7752
7753 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
7754
7755         Revert for x86 darwin:
7756         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
7757
7758         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
7759         code before the following patch under TARGET_MACHO.
7760         (ix86_function_value_regno_p): Likewise.
7761
7762 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7763
7764         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
7765         COMPLEX_EXPR.
7766
7767 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7768
7769         PR target/29682
7770         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
7771         general or fp registers.  Add comments.
7772         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
7773
7774 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
7775
7776         * pointer-set.c (insert_aux): Only return insertion slot.
7777         (pointer_set_insert): Adjust.
7778         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
7779         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
7780         pointer_map_traverse): New.
7781         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
7782         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
7783         pointer_map_contains, pointer_map_traverse): Declare.
7784
7785 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
7786
7787         PR middle-end/30473
7788         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
7789         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
7790
7791 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7792
7793         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
7794
7795         (struct _dep): New type.
7796         (dep_t): New typedef.
7797         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
7798         (DEP_STATUS): New access macro.  The macro with the same name was
7799         renamed to DEP_LINK_STATUS.
7800         (dep_init): Declare function
7801
7802         (struct _dep_link): New type.
7803         (dep_link_t): New typedef.
7804         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
7805         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
7806         (DEP_LINK_STATUS): New macro.
7807         (debug_dep_links): New debug function.
7808
7809         (struct _deps_list): New type.
7810         (deps_list_t): New typedef.
7811         (DEPS_LIST_FIRST): New access macro.
7812         (FOR_EACH_DEP_LINK): New cycle macro.
7813         (create_deps_list, free_deps_list, delete_deps_list): Declare
7814         functions.
7815         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
7816         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7817         (copy_deps_list_change_con): Ditto.
7818
7819         (move_dep_link): Declare function.
7820
7821         (struct _dep_node): New type.
7822         (dep_node_t): New typedef.
7823         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
7824
7825         (struct haifa_insn_data.back_deps): New field to hold backward
7826         dependencies of the insn.
7827         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
7828         to deps_list_t.
7829         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
7830         Change its type to deps_list_t.
7831         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
7832         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
7833         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
7834
7835         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
7836
7837         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
7838
7839         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
7840         all callers.
7841         (dep_cost): Declare.
7842
7843         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
7844         (ds_to_dk, dk_to_ds): New functions.
7845
7846         (init_dep_1): New static function.
7847         (init_dep): New function.
7848         (copy_dep): New static function.
7849
7850         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
7851         functions.
7852         (detach_dep_link): New static function.
7853         (move_dep_link): New function.
7854
7855         (dep_links_consistent_p, dump_dep_links): New static functions.
7856         (debug_dep_links): New debugging function.
7857
7858         (deps_obstack, dl_obstack, dn_obstack): New static variables.
7859
7860         (alloc_deps_list, init_deps_list): New static functions.
7861         (create_deps_list): New function.
7862         (clear_deps_list): New static function.
7863         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
7864         (deps_list_consistent_p, dump_deps_list): New static functions.
7865         (debug_deps_list): New function.
7866         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
7867         functions.
7868         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
7869
7870         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
7871         use new scheduler dependencies lists.
7872         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
7873         (sched_analyze): Ditto.  Initialize dependencies lists.
7874         (add_forw_dep, compute_forward_dependences): Update to use new
7875         scheduler dependencies lists.
7876
7877         (init_dependency_caches): Init deps_obstack.
7878         (free_dependency_caches): Free deps_obstack.
7879
7880         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
7881         new scheduler dependencies lists.
7882         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
7883         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7884
7885         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
7886         Update to use new scheduler dependencies lists.
7887         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
7888         (debug_dependencies): Ditto.
7889         (schedule_region): Update comments.
7890
7891         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
7892         scheduler dependencies lists.
7893         (schedule_ebb): Update comments.
7894
7895         * rtl.def (DEPS_LIST): Remove.
7896
7897         * lists.c (unused_deps_list): Remove.
7898         (free_list): Update assertions.
7899
7900         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
7901         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7902
7903         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
7904         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7905
7906         * haifa-sched.c (comments): Update.
7907         (insn_cost1): Remove.  Inline the code into insn_cost ().
7908         (insn_cost): Update to use new scheduler dependencies lists.  Move
7909         processing of the dependency cost to dep_cost ().
7910         (dep_cost): New function.  Use it instead of insn_cost () when
7911         evaluating cost of the dependency.  Use compatible interface to
7912         interact with the target.
7913         (priority): Update to use new scheduler dependencies lists.
7914         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
7915         with greater number of insns that depend on the insn.
7916         (schedule_insn): Update to use new scheduler dependencies lists.  Add
7917         code to free backward dependencies lists.  Inline and optimize code
7918         from resolve_dep () - see PR28071.
7919         (ok_for_early_queue_removal): Update to use new scheduler dependencies
7920         lists.  Update call to targetm.sched.is_costly_dependence hook.
7921
7922         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
7923         scheduler dependencies lists.
7924
7925         (resolve_dep): Remove.  Move the logic to schedule_insn ().
7926         (init_h_i_d): Initialize dependencies lists.
7927
7928         (process_insn_depend_be_in_spec): Rename to
7929         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
7930         dependencies lists.
7931         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
7932         Update to use new scheduler dependencies lists.
7933         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
7934
7935         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
7936         new scheduler dependencies lists.
7937         (build_intra_loop_deps): Ditto.
7938
7939         * target.h (struct _dep): Declare to use in
7940         gcc_target.sched.is_costly_dependence.
7941         (struct gcc_target.sched.adjust_cost): Fix typo.
7942         (struct gcc_target.sched.is_costly_dependence): Change signature to use
7943         single dep_t parameter instead of an equivalent triad.
7944         (struct gcc_target.sched.adjust_cost_2): Remove.
7945
7946         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
7947
7948         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
7949
7950         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
7951         documentation.
7952         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
7953
7954         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
7955         (REG_DEP_TRUE): Document.
7956
7957         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
7958         Change signature to correspond to the targetm.sched.adjust_cost hook.
7959         Update use in TARGET_SCHED_ADJUST_COST_2.
7960         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
7961         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
7962         new scheduler dependencies lists.
7963         (ia64_gen_check): Ditto.
7964
7965         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
7966         dependencies lists.
7967
7968         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
7969         signature to correspond to the targetm.sched.is_costly_dependence hook.
7970         (is_costly_group): Update to use new scheduler dependencies lists.
7971
7972         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
7973         instead of INSN_COST () macro.
7974
7975 2007-02-01  Ian Lance Taylor  <iant@google.com>
7976
7977         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
7978
7979 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
7980
7981         * pa.md (tp_load): Correct mfctl instruction syntax.
7982
7983 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
7984
7985         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
7986         altivec_padding_size calculation on AIX.  Improve comment, add
7987         assert to verify that it's right.
7988
7989         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
7990         64-bit.
7991
7992 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
7993
7994         PR inline-asm/28686
7995         * global.c (global_alloc): Add mising initialization of
7996         ELIMINABLE_REGSET.
7997
7998 2007-02-01  Roger Sayle  <roger@eyesopen.com>
7999
8000         * alias.c (init_alias_analysis): Correct whitespace.
8001         * bb-reorder.c (fix_edges_for_rarely_executed_code,
8002         partition_hot_cold_basic_blocks): Likewise.
8003         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
8004         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
8005         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
8006         fold_builtin_snprintf_chk, fold_builtin_printf,
8007         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
8008         do_mpfr_arg3, do_mpfr_sincos): Likewise.
8009         * cfgcleanup.c (cleanup_cfg): Likewise.
8010         * cfgexpand.c (tree_expand_cfg): Likewise.
8011         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
8012         * function.c (get_next_funcdef_no): Likewise.
8013         * gengtype.c (main): Likewise.
8014         * genmodes.c (main): Likewise.
8015         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
8016         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
8017         * ifcvt.c (noce_emit_move_insn): Likewise.
8018         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
8019         Likewise.
8020         * stor-layout.c (get_best_mode): Likewise.
8021         * tree-ssa-loop-niter.c (get_val_for): Likewise.
8022         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
8023         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
8024         perform_var_substitution, solve_graph): Likewise.
8025         * tree-vrp.c (vrp_finalize): Likewise.
8026
8027 2007-02-01  Ian Lance Taylor  <iant@google.com>
8028
8029         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
8030         high part of a paradoxical subreg, return a constant zero.
8031
8032 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
8033
8034         * toplev.c (lang_dependent_init): Call init_set_costs.
8035         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
8036
8037 2007-02-01  Richard Guenther  <rguenther@suse.de>
8038
8039         PR middle-end/30656
8040         * fold-const.c (fold_negate_expr): Allow negating a
8041         constant if overflow does not change.
8042
8043 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8044
8045         * doc/c-tree.texi (Expression trees): Improve markup.
8046         * doc/tm.texi (Register Classes, Addressing Modes)
8047         (Floating Point): Fix spacing after abbreviations.  Fix some
8048         typos.
8049
8050 2007-02-01  Ben Elliston  <bje@au.ibm.com>
8051
8052         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
8053         * doc/contrib.texi: Likewise.
8054         * doc/install.texi: Likewise.
8055
8056 2007-01-31  Richard Henderson  <rth@redhat.com>
8057             Ian Lance Taylor  <iant@google.com>
8058
8059         * lower-subreg.c: New file.
8060         * rtl.def (CONCATN): Define.
8061         * passes.c (init_optimization_passes): Add pass_lower_subreg and
8062         pass_lower_subreg2.
8063         * emit-rtl.c (update_reg_offset): New static function, broken out
8064         of gen_rtx_REG_offset.
8065         (gen_rtx_REG_offset): Call update_reg_offset.
8066         (gen_reg_rtx_offset): New function.
8067         * regclass.c: Revert patch of 2006-03-05, restoring
8068         reg_scan_update.
8069         (clear_reg_info_regno): New function.
8070         * dwarf2out.c (concatn_loc_descriptor): New static function.
8071         (loc_descriptor): Handle CONCATN.
8072         * common.opt (fsplit_wide_types): New option.
8073         * opts.c (decode_options): Set flag_split_wide_types when
8074         optimizing.
8075         * timevar.def (TV_LOWER_SUBREG): Define.
8076         * rtl.h (gen_reg_rtx_offset): Declare.
8077         (reg_scan_update): Declare.
8078         * regs.h (clear_reg_info_regno): Declare.
8079         * tree-pass.h (pass_lower_subreg): Declare.
8080         (pass_lower_subreg2): Declare.
8081         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
8082         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
8083         -fsplit-wide-types.
8084         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
8085         * Makefile.in (OBJS-common): Add lower-subreg.o.
8086         (lower-subreg.o): New target.
8087
8088 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
8089
8090         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
8091
8092 2007-01-31  Anatoly Sokolov <aesok@post.ru>
8093
8094         PR target/19087
8095         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
8096
8097 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8098
8099         PR middle-end/29335
8100         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
8101
8102 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
8103
8104         * cfgloop.h: Include vec-prim.h.
8105         (enum li_flags): Remove LI_ONLY_OLD.
8106         (loop_iterator): Changed.
8107         (fel_next, fel_init): Iterate over loop tree.
8108         (FOR_EACH_LOOP_BREAK): New macro.
8109         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
8110         FOR_EACH_LOOP.
8111         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
8112         * modulo-sched.c (sms_schedule): Ditto.
8113         * tree-vectorizer.c (vectorize_loops): Ditto.
8114         * doc/loop.texi: Update information on loop numbering and behavior of
8115         FOR_EACH_LOOP wrto new loops.
8116         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
8117         add_to_evolution_1): Test nestedness of loops instead of comparing
8118         their numbers.
8119         * tree-chrec.c (chrec_fold_plus_poly_poly,
8120         chrec_fold_multiply_poly_poly, chrec_evaluate,
8121         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
8122         reset_evolution_in_loop): Ditto.
8123         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
8124
8125 2007-01-31  Dirk Mueller  <dmueller@suse.de>
8126
8127         * c-common.c (warn_about_parentheses): Separate warning about
8128         un-parenthized sequence of comparison operators from the one
8129         which is supposed to warn about x <= y <= z.
8130
8131 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
8132
8133         * optabs.h (enum optab_index): Add new OTI_isinf.
8134         (isinf_optab): Define corresponding macro.
8135         * optabs.c (init_optabs): Initialize isinf_optab.
8136         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
8137         patterns.
8138         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
8139         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
8140         using isinf_optab.
8141         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
8142         expand_builtin_interclass_mathfn.
8143         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
8144         * config/i386/i386.md (UNSPEC_FXAM): New constant.
8145         (fxam<mode>2_i387): New insn pattern.
8146         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
8147         built-in functions as x87 inline asm.
8148
8149 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
8150
8151         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
8152
8153 2007-01-30  Eric Christopher  <echristo@apple.com>
8154
8155         * config.gcc: Add geode.
8156
8157 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
8158
8159         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
8160         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
8161         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
8162         value-prof.c: Fix comment typos.
8163
8164 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8165
8166         PR c++/24745
8167         * doc/invoke.texi (Wpointer-arith): Document warning.
8168
8169 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
8170
8171         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
8172         the list of discrepancies from the draft TR.
8173
8174 2007-01-30  Dirk Mueller  <dmueller@suse.de>
8175
8176         PR c++/30601
8177         * doc/invoke.texi (-Wreturn-type): Update description to
8178         match new behavior.
8179
8180 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
8181
8182         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
8183
8184 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
8185
8186         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
8187         to handle optabs that operate on floating point input argument and
8188         output to integer output.
8189         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
8190         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
8191         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
8192         expand_builtin_interclass_mathfn ().
8193         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
8194         (ilogbsi2): Remove.
8195         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
8196         ilogbl built-in functions as x87 intrinsics.
8197
8198 2007-01-30  Richard Guenther  <rguenther@suse.de>
8199
8200         PR middle-end/27657
8201         * dwarf2out.c (reference_to_unused): Query varpool if the
8202         variable was output.
8203
8204 2007-01-30  Richard Guenther  <rguenther@suse.de>
8205
8206         PR middle-end/30313
8207         * passes.c (execute_one_pass): Reset in_gimple_form to not
8208         confuse non-unit-at-a-time mode.
8209
8210 2007-01-29  Roger Sayle  <roger@eyesopen.com>
8211             Richard Guenther  <rguenther@suse.de>
8212
8213         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
8214         avoid undefined behaviour on overflow.  Use force_fit_type_double
8215         to construct the constant with the specified TREE_OVERFLOW.
8216
8217 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
8218
8219         * config/dfp-bit.c: Add parameterized support for fp exceptions.
8220         * config/dfp-bit.h: Ditto.
8221
8222 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8223
8224         * c-decl.c (pop_scope): Replace warnings with call to
8225         warn_for_unused_label.
8226         * c-common.h (warn_for_unused_label): Declare.
8227         * c-common.c (warn_for_unused_label): Define.
8228
8229 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8230
8231         * tree-optimize.c (update_inlined_to_pointers): Delete unused
8232         function.
8233
8234 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
8235
8236         * Makefile.in (USER_H): Remove decfloat.h.
8237         * ginclude/decfloat.h: Delete, moving contents to ...
8238         * ginclude/float.h: Add support for decimal floating point,
8239         guarded by __STDC_WANT_DEC_FP__.
8240
8241 2007-01-29  Mike Stump  <mrs@apple.com>
8242
8243         * doc/gccint.texi (Top): Rename Loop Representation to Loop
8244         Analysis and Representation to resolve case insensitive conflict.
8245         * doc/loop.texi (Loop Analysis and Representation): Likewise.
8246
8247 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
8248
8249         * tree.h (struct tree_memory_tag): Add aliases member.
8250         (MTAG_ALIASES): New macro.
8251         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
8252         (add_may_alias): Remove pointer-set. Update for may_aliases being
8253         a bitmap.
8254         (mark_aliases_call_clobbered): Update for may_aliases being a
8255         bitmap.
8256         (compute_tag_properties): Ditto.
8257         (create_partition_for): Ditto.
8258         (compute_memory_partitions): Ditto.
8259         (dump_may_aliases_for): Ditto.
8260         (is_aliased_with): Ditto.
8261         (add_may_alias_for_new_tag): Ditto.
8262         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
8263         (compute_is_aliased): New function.
8264         (compute_may_aliases): Call compute_is_aliased).
8265         (init_alias_info): Initialize alias_bitmap_obstack.
8266         (union_alias_set_into): New function.
8267         (compute_flow_sensitive_aliasing): Use union_aliases_into.
8268         (have_common_aliases_p): Rewrite to take two bitmaps and use
8269         intersection.
8270         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
8271         Update for bitmaps.
8272         (finalize_ref_all_pointers): Update for add_may_alias changes.
8273         (new_type_alias): Ditto.
8274         * tree-flow-inline.h (may_aliases): Return a bitmap.
8275         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
8276         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
8277         may_aliases being a bitmap.
8278         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
8279         may_aliases now returns a bitmap.
8280         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
8281         being a bitmap.
8282         * tree-ssa-operands.c (add_virtual_operand): Update for
8283         may_aliases being a bitmap.
8284
8285 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
8286
8287         PR tree-optimization/30630
8288         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
8289         variable as changed.
8290
8291 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
8292
8293         PR c++/28266
8294         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
8295         expanded only once even if an error occurs.
8296
8297 2007-01-29  Ben Elliston  <bje@au.ibm.com>
8298
8299         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
8300         (__gcov_average_profiler): Likewise.
8301         (__gcov_ior_profiler): Likewise.
8302         (__gcov_merge_ior): Likewise.
8303
8304 2007-01-28  Jan Hubicka  <jh@suse.cz>
8305
8306         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
8307         * value-prof.c (stringop_block_profile): Likewise.
8308
8309 2007-01-28  Jan Hubicka  <jh@suse.cz>
8310
8311         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
8312         variant handling histograms; add wrapper.
8313         (clear_storage_via_libcall): Export.
8314         (emit_block_move_hints): Break out from ...; add histograms.
8315         (emit_block_move): ... this one.
8316         (clear_storage_hints): Break out from ...; add histograms.
8317         (clear_storage): ... this one.
8318         (set_storage_via_memset): Handle histogram.
8319         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
8320         (clear_storage_hints, clear_storage_via_libcall): Declare.
8321         (set_storage_via_setmem): Update prototype.
8322         * doc/md.texi (movmem, setmem): Document new arguments.
8323
8324         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
8325         new histograms.
8326         (stringop_block_profile): New global function.
8327         (tree_stringops_values_to_profile): Profile block size and alignment.
8328         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
8329         HIST_TYPE_IOR.
8330         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
8331         (stringop_block_profile): Declare.
8332         * builtins.c: Include value-prof.h.
8333         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
8334         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
8335         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
8336         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
8337         * profile.c (instrument_values): Add new counters.
8338         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
8339         calls.
8340         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
8341         (tree_init_edge_profiler): Build new profilers.
8342         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
8343         (pass_tree_profile): Add dump.
8344         (tree_profile_hooks): Update.
8345         * Makefile.in (LIBGCOV): Add new constants.
8346         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
8347         __gcov_ior_profiler): New.
8348         * i386.md (movmem/setmem expanders): Add new optional arguments.
8349
8350 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
8351
8352         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
8353
8354 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
8355
8356         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
8357         (tree_unswitch_single_loop): Pass eni_size_weights to
8358         tree_num_loop_insns.
8359         * tree-ssa-loop-manip.c: Include tree-inline.h.
8360         (can_unroll_loop_p): Pass eni_size_weights to
8361         tree_num_loop_insns.
8362         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
8363         Pass eni_size_weights to estimate_num_insns.
8364         * tree.h (init_inline_once): Export.
8365         * toplev.c (backend_init): Call init_inline_once.
8366         * cgraphunit.c (cgraph_process_new_functions,
8367         cgraph_analyze_function): Pass eni_inlining_weights to
8368         estimate_num_insns.
8369         * ipa-inline.c (compute_inline_parameters): Ditto.
8370         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
8371         to estimate_num_insns.
8372         (try_unroll_loop_completely): Pass eni_size_weights to
8373         tree_num_loop_insns.
8374         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
8375         ot estimate_num_insns.
8376         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
8377         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
8378         * tree-inline.c (eni_inlining_weights, eni_size_weights,
8379         eni_time_weights): New variables.
8380         (init_inline_once): Initialize them.
8381         (struct eni_data): Mew.
8382         (estimate_num_insns_1, estimate_num_insns): Use weights.
8383         * tree-inline.h (struct eni_weights_d): New.
8384         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
8385         (estimate_num_insns): Declaration changed.
8386         * cfgloop.h (tree_num_loop_insns): Declaration changed.
8387         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
8388         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
8389
8390 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
8391
8392         * tree-data-ref.c (conflict_fn): Assert that the number of affine
8393         relations in the conflict function is valid.
8394
8395 2007-01-27  Ian Lance Taylor  <iant@google.com>
8396
8397         * common.opt: Add fstrict-overflow.
8398         * opts.c (decode_options): Set flag_strict_overflow if -O2.
8399         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
8400         (TYPE_OVERFLOW_UNDEFINED): Define.
8401         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
8402         Replace all uses.
8403         * tree.h (TYPE_TRAP_SIGNED): Don't define.
8404         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
8405         (fold_negate_expr): Likewise.
8406         (make_range): Likewise.
8407         (extract_muldiv_1): Likewise.
8408         (maybe_canonicalize_comparison): Likewise.
8409         (fold_comparison): Likewise.
8410         (fold_binary): Likewise.
8411         (tree_expr_nonnegative_p): Likewise.
8412         (tree_expr_nonzero_p): Likewise.
8413         * tree-vrp.c (compare_values): Likewise.
8414         (extract_range_from_binary_expr): Likewise.
8415         (extract_range_from_unary_expr): Likewise.
8416         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
8417         Likewise.
8418         (nowrap_type_p): Likewise.
8419         * tree-scalar-evolution.c (simple_iv): Likewise.
8420         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
8421         (build_range_check): Likewise.
8422         (extract_muldiv_1): Likewise.
8423         (fold_comparison): Likewise.
8424         * tree-vrp.c (vrp_int_const_binop): Likewise.
8425         (extract_range_from_unary_expr): Likewise.
8426         * convert.c (convert_to_integer): Likewise.
8427         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
8428         (fold_comparison): Likewise.
8429         (fold_binary): Likewise.
8430         * optabs.c (optab_for_tree_code): Likewise.
8431         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
8432         * simplify-rtx.c (simplify_const_relational_operation): Check
8433         flag_strict_overflow and flag_trapv.
8434         (simplify_const_relational_operation): Likewise.
8435         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
8436         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
8437         -fstrict-overflow.
8438
8439 2007-01-27  Roger Sayle  <roger@eyesopen.com>
8440
8441         * tree.c (tree_fold_gcd): Delete.
8442         * tree.h (tree_fold_gcd): Remove prototype.
8443         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
8444         test whether one constant integer is a multiple of another.  Instead
8445         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
8446         * fold-const.c (multiple_of_p):  We've determined both TOP and
8447         BOTTOM are integer constants so we can call int_const_binop directly
8448         instead of the more generic const_binop.
8449
8450 2007-01-27  Roger Sayle  <roger@eyesopen.com>
8451
8452         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
8453         1*X check that the constant hasn't overflowed, to preserve the
8454         TREE_OVERFLOW bit.
8455         (round_up): Provide an efficient implementation when rouding-up an
8456         INTEGER_CST to a power-of-two.
8457
8458 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8459
8460         * doc/sourcebuild.texi: Add comma for clarity.
8461         * doc/extend.texi: Fix some typos.
8462         * doc/passes.texi: Likewise.
8463         * doc/cppinternals.texi: Likewise.
8464         * doc/c-tree.texi: Likewise.
8465         * doc/tree-ssa.texi: Likewise.
8466         * doc/install.texi: Likewise.
8467
8468 2007-01-27  Jan Hubicka  <jh@suse.cz>
8469
8470         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
8471         (pass_sra): Do not require alias information.
8472         * passes.c (init_optimization_passes): Add SRA
8473
8474 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
8475
8476         * tracer.c (rest_of_handle_tracer): We already cleaned
8477         up the CFG in tracer() so don't do it here again.
8478         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
8479         cleanup_cfg here, either.  And don't call renumber_insns.
8480
8481         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
8482         and BB_HEAD are in the insn stream here.  Instead make sure
8483         that BB_INSN is valid on all insns.  Also, do check here that
8484         there are no pending branch predictions...
8485         (rtl_verify_flow_info): ...instead of doing it here.  Checks
8486         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
8487         here.
8488
8489 2007-01-26  Roger Sayle  <roger@eyesopen.com>
8490
8491         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
8492         function to simplify/factorize operand order canonicalization.
8493         (ix86_fixup_binary_operands): Reorganize using the above function.
8494         (ix86_binary_operator_ok): Likewise.
8495
8496 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
8497
8498         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
8499         file scope from optimize_attrs.
8500         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
8501         up search.
8502         (optimize_attrs): Clear insn_code_values after freeing it.
8503
8504 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
8505
8506         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
8507         a parts.base assignment.
8508
8509 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
8510
8511         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
8512         (compute_subscript_distance, initialize_data_dependence_relation,
8513         finalize_ddr_dependent, analyze_ziv_subscript,
8514         analyze_siv_subscript_cst_affine,
8515         compute_overlap_steps_for_affine_univar,
8516         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
8517         analyze_siv_subscript, analyze_miv_subscript,
8518         analyze_overlapping_iterations, subscript_dependence_tester_1,
8519         compute_self_dependence, free_dependence_relation): Work
8520         with affine_fn instead of chrecs.
8521         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
8522         common_affine_function, affine_function_base,
8523         affine_function_constant_p, affine_fn_op, affine_fn_plus,
8524         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
8525         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
8526         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
8527         (all_chrecs_equal_p): Removed.
8528         * tree-data-ref.h (affine_fn, conflict_function): New types.
8529         (struct subscript): Change type of conflicting_iterations_in_a
8530         and conflicting_iterations_in_b.
8531
8532 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
8533
8534         PR other/30182
8535         * config/pa/pa.h (TARGET_HPUX_11): New.
8536         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
8537         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
8538
8539 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
8540         Richard Guenther  <rguenther@suse.de>
8541
8542         * tree-ssa-structalias.c (solve_graph): Handle case
8543         we merged the variable to another.
8544
8545 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8546
8547         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
8548         functions.
8549
8550         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
8551         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
8552
8553 2007-01-25  DJ Delorie  <dj@redhat.com>
8554
8555         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
8556         allow changes to modes which don't fit in those registers.
8557
8558         * reload1.c (choose_reload_regs): Check for invalid subregs before
8559         computing their locations, not after.
8560
8561 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
8562
8563         PR 25127
8564         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
8565         save Altivec registers in an eh_return function.
8566         (compute_vrsave_mask): Likewise.
8567         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
8568         for saving Altivec registers.
8569         (rs6000_emit_prologue): Don't allocate stack twice in
8570         eh_return function.  Correct expected value of altivec_save_offset
8571         when using save_world.  Describe save of R0 to stack when using
8572         save_world.  Describe stack pointer adjustment when using
8573         save_world.  Remove duplicated eh_return parameter register saving.
8574         Update sp_offset variable after save_world.
8575         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
8576         darwin-world.asm.
8577         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
8578         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
8579         implies Altivec.
8580
8581 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
8582
8583         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
8584
8585 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
8586
8587         PR other/30182
8588         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
8589         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
8590
8591 2007-01-25  Richard Guenther  <rguenther@suse.de>
8592
8593         * doc/invoke.texi (-Wcoverage-mismatch): Document.
8594         * common.opt (-Wcoverage-mismatch): New warning option.
8595         * coverage.c (get_coverage_counts): Ignore coverage mismatch
8596         if -Wcoverage-mismatch is given.
8597
8598 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
8599
8600         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
8601         (ipcp_driver): Change to static definition.
8602         Add dumping of the ifunctions.
8603         (constant_val_insert): Remove unused parameter. Support for SSA.
8604         (ipcp_propagate_const): Support for SSA.
8605         (ipcp_profile_bb_print): Print only analyzed nodes.
8606         (ipcp_replace_map_create): Remove support for Fortran constant
8607         for now.
8608         * ipa-prop.c (ipa_method_modify_stmt,
8609         ipa_callsite_compute_param): Support for SSA.
8610         * ipa-prop.h (ipcp_driver): Remove declaration.
8611         (IS_VALID_TREE_MAP_INDEX): Add define.
8612
8613 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
8614
8615         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
8616
8617 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8618
8619         PR middle-end/30447
8620         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
8621         constant argument to cabs and do it without checking for
8622         -funsafe-math-optimizations.
8623
8624 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
8625
8626         * c-common.h (RID_FIRST_CXX0X): New.
8627         (RID_LAST_CXX0X): New.
8628         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
8629         by -Wall.
8630         * c.opt (Wc++0x-compat): New.
8631         * doc/invoke.texi (-Wc++0x-compat): Document.
8632
8633 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8634
8635         * builtins.c (fold_builtin_carg): New.
8636         (fold_builtin_1): Use it.
8637
8638 2007-01-24  Jan Hubicka  <jh@suse.cz>
8639
8640         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
8641
8642         * ipa-inline.c (initial_insns, max_insns): Delete.
8643         (compute_max_insns): New function.
8644         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
8645         of insns as base for code growth.
8646         (cgraph_decide_inlining): Make initial_insns local; do not compute
8647         max_insns.
8648         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
8649         * doc/invoke.texi (inline-unit-growth): Update docs.
8650
8651 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
8652
8653         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
8654         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
8655         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
8656         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
8657         for CPUs that have PTA_CX16 set.
8658
8659         PR middle-end/27416
8660         * gimplify.c (omp_check_private): New function.
8661         (gimplify_scan_omp_clauses): Use it for
8662         firstprivate/lastprivate/reduction.
8663
8664         PR middle-end/30494
8665         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
8666         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
8667
8668         PR middle-end/30421
8669         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
8670         If lower_lastprivate_clauses emits some statements, append them
8671         to dlist rather than body_p and to body_p append an initializer.
8672         (lower_omp_for): Adjust caller.
8673
8674 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
8675
8676         * target.h (globalize_decl_name): New.
8677         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
8678         * output.h (default_globalize_decl_name): New.
8679         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
8680         globalize_label.
8681         (globalize_decl): Ditto.
8682         (default_globalize_decl_name): New.
8683         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
8684         (ia64_handle_version_id_attribute): New.
8685         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
8686         (ia64_asm_output_external): Use globalize_decl_name instead
8687         of globalize_label.
8688         * doc/extend.texi (version_id): New pragma.
8689         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
8690
8691 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8692
8693         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
8694         _uleb128_t and _Unwind_SWord with _sleb128_t.
8695         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
8696         uw_frame_state_for, uw_update_context_1): Likewise.
8697         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
8698         * unwind-pe.h (read_uleb128, read_sleb128,
8699         read_encoded_value_with_base): Likewise.
8700         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
8701
8702 2007-01-24  Richard Guenther  <rguenther@suse.de>
8703
8704         * builtins.c (expand_builtin_cexpi): Get the fndecl
8705         for cexp in the correct way.
8706
8707 2007-01-24  Jan Hubicka  <jh@suse.cz>
8708
8709         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
8710
8711 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8712
8713         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
8714         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
8715         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
8716         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
8717         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
8718         __SIZEOF_PTRDIFF_T__.
8719         * doc/cpp.texi: Documentation for the new builtin macros added.
8720
8721 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
8722
8723         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
8724         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
8725         instead of operands[2] to avoid access past the end of array.
8726
8727 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
8728
8729         * reload1.c (emit_reload_insns): Pass the reload register
8730         for a non-spill output reload through forget_old_reloads_1.
8731
8732 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
8733
8734         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
8735         _SOFT_DOUBLE if doubles use software floating-point.
8736         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
8737         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8738         * config/rs6000/darwin-ldouble.c: Also compile functions for
8739         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
8740         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8741         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
8742         commented-out long double override.
8743         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
8744         * config/rs6000/eabispe.h: Likewise.
8745         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
8746         long double for non-SPE.
8747         (rs6000_handle_option): Likewise.
8748         (invalid_e500_subreg): Disallow more subregs involding DImode,
8749         DFmode, TImode or TFmode.
8750         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
8751         E500 double.
8752         (legitimate_lo_sum_address_p): Also check for TFmode for E500
8753         double.
8754         (rs6000_legitimize_address): Also handle TFmode for E500 double.
8755         (rs6000_legitimize_reload_address): Also handle TFmode for E500
8756         double.
8757         (rs6000_legitimate_address): Also check for TFmode for E500
8758         double.
8759         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
8760         (spe_build_register_parallel): Handle TFmode and TCmode.
8761         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
8762         double.
8763         (function_arg): Handle TFmode and TCmode for E500 double.
8764         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
8765         in general.
8766         (print_operand): Handle TFmode and TImode for %y.
8767         (rs6000_generate_compare): Handle TFmode comparisons for E500
8768         double.
8769         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
8770         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
8771         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
8772         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
8773         TFmode for E500 double.
8774         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
8775         (floatsidf2): Enable for E500 double.
8776         (movtf_softfloat): Use rs6000_nonimmediate_operand.
8777         (extenddftf2): Change to extenddftf2_fprs.
8778         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
8779         depending on TARGET_E500_DOUBLE.
8780         (extendsftf2): Enable for E500 double.
8781         (trunctfdf2): Enable for E500 double.
8782         (trunctfsf2): Change to trunctfsf2_fprs.
8783         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
8784         depending on TARGET_E500_DOUBLE.
8785         (floatsitf2): Enable for E500 double.
8786         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
8787         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
8788         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
8789         (negtf2): Change to negtf2_internal.
8790         (negtf2): New expander.
8791         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
8792         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
8793         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
8794         (movdi_internal32): Use rs6000_nonimmediate_operand.
8795         (unnamed splitter): Likewise.
8796         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
8797         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
8798         (SPE64TF, DITI): New mode macros.
8799         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
8800         modes.
8801         (frob_tf_ti): New.
8802         (frob_<mode>_di_2): New.
8803         (frob_tf_di_8_2): New.
8804         (frob_di_df): Change to frob_di_<mode>; allow more modes.
8805         (frob_ti_tf): New.
8806         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
8807         more modes.
8808         (frob_ti_<mode>_8_2): New.
8809         (frob_ti_tf_2): New.
8810         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
8811         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
8812         TFmode.
8813         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
8814         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
8815         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
8816         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
8817         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
8818         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
8819         tsttflt_gp): New.
8820
8821 2007-01-23  Ian Lance Taylor  <iant@google.com>
8822
8823         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
8824         insn-*.o first.
8825         (OBJS-archive): Reformat, alphabetize.
8826         (OBJS): Change out_object_file to OBJS-md.
8827
8828 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
8829
8830         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
8831         JUMP_P and CALL_P predicates where applicable.
8832         * config/i386/i386.c: Ditto.
8833         * config/i386/i386.md: Ditto.
8834         * config/i386/mmx.md: Ditto.
8835         * config/i386/predicates.md: Ditto.
8836
8837 2007-01-22  Andreas Schwab  <schwab@suse.de>
8838
8839         * config/m68k/m68k.h: Fix comment.
8840
8841 2007-01-22  Jan Hubicka  <jh@suse.cz>
8842
8843         * passes.c (init_optimization_passes): Do not rerun
8844         pass_early_warn_uninitialized.
8845
8846 2007-01-22  Richard Guenther  <rguenther@suse.de>
8847
8848         PR tree-optimization/30038
8849         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
8850         function.
8851         (execute_cse_sincos_1): Likewise.
8852         (execute_cse_sincos): Likewise.
8853         (gate_cse_sincos): Likewise.
8854         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
8855         the cexpi() canonicalization of sincos().
8856         * tree-pass.h (pass_cse_sincos): Declare.
8857         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
8858
8859 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
8860
8861         PR rtl-optimization/29329
8862         * combine.c (replaced_rhs_insn): Rename to i2mod.
8863         (replaced_rhs_value): Rename to i2mod_new_rhs.
8864         (i2mod_old_rhs): New global variable.
8865         (combine_instructions): Adjust for above change.  Save a copy of
8866         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
8867         note are substituted in the second instruction.
8868         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
8869         ditch the note if it pertains to the second eliminated register
8870         and this register is mentioned in i2mod_old_rhs.
8871
8872         Revert:
8873         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
8874
8875         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
8876         the insn to which the note was originally attached.
8877
8878 2007-01-21  Jan Hubicka  <jh@suse.cz>
8879
8880         * ipa-inline.c (inlining_mode): Comment, move up.
8881         (cgraph_decide_inlining_incrementally): Do not perform inlining
8882         itself; fix handling of flattening of self recursive functions.
8883         (cgraph_find_cycles): Remove.
8884         (cgraph_flatten_node): Remove.
8885         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
8886         (try_inline): New function.
8887         (cgraph_early_inlining): Update call of
8888         cgraph_decide_inlining_incrementally.  Apply inlining here.
8889         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
8890
8891 2007-01-21  Dirk Mueller  <dmueller@suse.de>
8892
8893         PR bootstrap/30511
8894         * tree-vrp.c (check_array_bounds): do not warn
8895         about ADDR_EXPR's of ARRAY_REF's which are immediately
8896         used in binary expressions.
8897
8898 2007-01-21  Ira Rosen  <irar@il.ibm.com>
8899
8900         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
8901         read_write_dep and macros for its access.
8902         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
8903         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
8904         argument, call vect_check_interleaving for every independent pair of
8905         data-refs. Mark loads that access the same memory location as a store
8906         in the loop.
8907         (vect_check_dependences): Remove.
8908         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
8909         call, fix the call to vect_analyze_data_ref_dependence.
8910         (vect_analyze_data_ref_access): For statements that access the same
8911         data-ref, check that they are not stores; for loads, check that there
8912         is no store that access the same location.
8913
8914 2007-01-20  Roger Sayle  <roger@eyesopen.com>
8915             Joseph Myers  <joseph@codesourcery.com>
8916
8917         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
8918         (-fdump-rtl-stack): Likewise.
8919         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
8920         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
8921         (-mpt-fixed): Use @minus{} for minus sign.
8922         (Using Precompiled Headers): Fix under/overfull hbox.
8923
8924 2007-01-20  Jan Hubicka  <jh@suse.cz>
8925
8926         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
8927         place within annotation.
8928
8929 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8930
8931         * pa.c (output_move_double): Change array size of xoperands to 4.
8932
8933 2007-01-20  Jan Hubicka  <jh@suse.cz>
8934
8935         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
8936         as temporary.
8937
8938 2007-01-19  Ian Lance Taylor  <iant@google.com>
8939
8940         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
8941         constant to unsigned HOST_WIDE_INT before negating.
8942
8943 2007-01-19  Ian Lance Taylor  <iant@google.com>
8944
8945         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
8946         to unsigned.
8947         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
8948         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8949         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
8950         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
8951         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8952         (realloc_vdef, realloc_vuse): Change second parameter to
8953         unsigned.
8954         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
8955         fields to unsigned.
8956         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
8957         unsigned. Change x and lim locals to unsigned.
8958         (realloc_vdef, realloc_vuse): Change num_elem parameter to
8959         unsigned.
8960         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
8961         (copy_virtual_operands): Change i and n locals to unsigned.
8962
8963 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8964
8965         PR middle-end/29335
8966         * builtins.c (fold_builtin_1): Handle builtin fdim.
8967
8968 2007-01-20  Jan Hubicka  <jh@suse.cz>
8969
8970         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
8971         * tree-ssa-structalias.c (compute_points_to_sets): Do call
8972         init_alias_heapvars.
8973         (init_alias_heapvars): Initialize only when not already initialized.
8974         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
8975
8976 2007-01-19  Roger Sayle  <roger@eyesopen.com>
8977
8978         * common.opt (fsigned-zeros): New command line option.
8979         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
8980         of flag_unsafe_math_optimizations.
8981         * opts.c (set_fast_math_flags): The -ffast-math command line option
8982         implies -fno-signed-zeros.
8983         (fast_math_flags_set_p): Likewise.
8984
8985         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
8986         the documentation of -ffast-math appropriately.  Wrap long lines.
8987
8988 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
8989
8990         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
8991         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
8992
8993 2007-01-19  Tomas Bily  <tbily@suse.cz>
8994
8995         * cgraphunit.c (cgraph_finalize_function): Updating of pid
8996         * tree-profile.c:
8997         (tree_init_ic_make_global_vars): New function
8998         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
8999         (tree_gen_ic_profiler): New function
9000         (tree_gen_ic_func_profiler): New function
9001         (tree_profiling): Added calling of tree_gen_ic_func_profiler
9002         (tree_profile_hooks): Added hook for indirec/virtual calls
9003         * value-prof.c (tree_find_values_to_profile): New case for
9004         indirect calls
9005         (tree_values_to_profile): Call for determining indirect/virtual
9006         counters
9007         (tree_indirect_call_to_profile): New function
9008         (tree_ic_transform): New function
9009         (tree_ic): New function
9010         (find_func_by_pid): New function
9011         (init_pid_map): New function
9012         (tree_value_profile_transformations): Added check for
9013         indirect/virtual call transformation
9014         * value-prof.h (enum hist_type): New counter type for
9015         indirect/virtual calls
9016         (profile_hooks): Added new hook for profiling indirect/virtual
9017         calls
9018         * profile.c (instrument_values): New case for indirect/virtual
9019         call added
9020         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
9021         (GCOV_COUNTER_V_INDIR): New counter type
9022         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
9023         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
9024         call added
9025         * cgraph.c: Definition of cgraph_max_pid
9026         (cgraph_create_node): Default init of pid attribute
9027         * cgraph.h: Declaration of cgraph_max_pid
9028         (struct cgraph_node): Added pid attribute
9029         * libgcov.c (__gcov_indirect_call_profiler): New function
9030         (__gcov_one_value_profiler_body): New function
9031         (__gcov_one_value_profiler): Body was moved to
9032         __gcov_one_value_profiler_body and calls it
9033
9034 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
9035
9036         * doc/gty.texi (Options): Document the mark_hook option to GTY.
9037         * gengtype.c (write_types_data, write_func_for_structure,
9038         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
9039         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
9040         (walk_type, write_func_for_structure): Generate the mark_hook if
9041         needed.
9042
9043 2007-01-19  Jan Hubicka  <jh@suse.cz>
9044
9045         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
9046         'early' argument take inlining mode argument specifying whether to
9047         inline for size/speeed or all functions; add support for flattening;
9048         improve dumpting.
9049         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
9050
9051 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9052
9053         PR c++/17947
9054         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
9055         the name of the declared identifier.
9056
9057 2007-01-19  Dirk Mueller  <dmueller@suse.de>
9058
9059         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
9060         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
9061         duplicate evaluation.
9062
9063 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
9064
9065         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
9066         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
9067         to XFMode, use acosxf2 and truncate result to requested mode.
9068         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
9069         (asin<mode>2): Similarly, with asin expanders.
9070         (*fscalexf4_i387): Rename from *fscalexf4.
9071         (expNcorexf3): New expander.
9072         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
9073         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
9074         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
9075         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
9076         patterns for SSE math.
9077         (exp10<mode>2): Similarly, with exp10 expanders.
9078         (exp2<mode>2): Similarly, with exp2 expanders.
9079         (expm1<mode>2): Similarly, with expm1 expanders.
9080         (ldexp<mode>3): Similarly, with ldexp expanders.
9081         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
9082         Use gen_truncxf<mode>2_i387_noop to truncate result.
9083
9084 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
9085
9086         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
9087         for ColdFire targets.
9088
9089 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
9090             Richard Sandiford  <richard@codesourcery.com>
9091
9092         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
9093         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
9094         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
9095         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
9096         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
9097         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
9098
9099 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
9100
9101         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
9102         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
9103         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
9104         (*adddi_dilshr32_cf): New pattern.
9105         (adddi3, subdi3): Remove first alternatives.
9106
9107 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
9108
9109         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
9110         implemented using move.l, do not use its cc result for floating-point
9111         comparisons.
9112
9113 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
9114
9115         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
9116         from accepting 's' constraints if flag_pic.
9117
9118 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
9119
9120         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
9121         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
9122         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
9123         condition from TARGET_68881 to TARGET_HARD_FLOAT.
9124
9125 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
9126
9127         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
9128         ColdFire alternatives.
9129         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
9130         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
9131         architectures that support ff1 instruction.
9132
9133 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
9134             Julian Brown  <julian@codesourcery.com>
9135
9136         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
9137         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
9138         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
9139         Add commentary.
9140
9141 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
9142
9143         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
9144         and return a bool.
9145         (output_move_const_into_data_reg, output_move_simode_const): Delete.
9146         * config/m68k/m68k.c (const_method, const_int_cost): Take a
9147         HOST_WIDE_INT instead of an rtx.
9148         (m68k_rtx_costs): Update call accordingly.
9149         (output_move_const_into_data_reg): Likewise.  Fix formatting.
9150         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
9151         Return a bool.
9152         (output_move_simode_const): Update calls after above changes.
9153         Rework to use automatic variables and predicates like MEM_P.
9154         * config/m68k/m68k.md (pushexthisi_const): Update call to
9155         valid_mov3q_const.
9156
9157 2007-01-19  Dirk Mueller  <dmueller@suse.de>
9158
9159         * tree-ssa-alias.c (perform_var_substitution): Fix typo
9160         in dump_flags test.
9161
9162 2007-01-19  Richard Guenther  <rguenther@suse.de>
9163
9164         * builtins.c (expand_builtin_cexpi): Fall back to expanding
9165         via cexp in case sincos is not available.
9166
9167 2007-01-19  Richard Guenther  <rguenther@suse.de>
9168
9169         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
9170         * defaults.h (TARGET_HAS_SINCOS): Default to off.
9171         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
9172         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
9173         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
9174         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
9175         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
9176         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
9177
9178 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
9179
9180         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
9181         New insn patterns.
9182         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
9183         (atan2xf3): Directly generate RTL pattern.
9184         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
9185         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
9186         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
9187         disable patterns for SSE math.
9188         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
9189         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
9190         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
9191         disable patterns for SSE math.
9192
9193 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
9194
9195         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
9196
9197 2007-01-18  Roger Sayle  <roger@eyesopen.com>
9198
9199         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
9200         VIEW_CONVERT_EXPR to the same type as it's operand.
9201
9202 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
9203
9204         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
9205         configured for long double 128.
9206
9207 2007-01-18  Mike Stump  <mrs@apple.com>
9208
9209         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
9210         error.
9211
9212 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
9213
9214         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
9215         type correct.
9216
9217 2007-01-18  Jan Hubicka  <jh@suse.cz>
9218
9219         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
9220         greater than NUM_VOP_FREE_BUCKETS.
9221
9222 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
9223
9224         * tree-ssa-structalias.c: Update comments.
9225         (ptabitmap_obstack): Removed.
9226         (pta_obstack): New.
9227         (oldpta_obstack): Ditto.
9228         (stats): Add a few members.
9229         (struct variable_info): Remove node, complex, address_taken, and
9230         indirect_target members. Add oldsolution member.
9231         (new_var_info): Do not initialize removed members.
9232         (constraint_expr_type): Remove INCLUDES.
9233         (constraint_graph): Add size, implicit_preds, rep,
9234         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
9235         (FIRST_REF_NODE): New macro.
9236         (LAST_REF_NODE): Ditto.
9237         (FIRST_ADDR_NODE): Ditto.
9238         (find): New function.
9239         (unite): Ditto.
9240         (dump_constraint): Do not handle INCLUDES.
9241         (insert_into_complex): Do not insert duplicate constraints.
9242         (condense_varmap_nodes): Renamed and rewritten into ...
9243         (merge_node_constraints): This. Also fix bug in handling of
9244         offseted copy constraints.
9245         (clear_edges_for_node): No longer need to deal with preds at all,
9246         or removing associated preds/succs.
9247         (merge_graph_nodes): Deal with indirect_cycles.
9248         Don't deal with predecessors.
9249         (add_implicit_graph_edge): New function.
9250         (add_pred_graph_edge): Ditto.
9251         (add_graph_edge): Don't deal with predecessors.
9252         (build_constraint_graph): Removed.
9253         (build_pred_graph): New function.
9254         (build_succ_graph): Ditto.
9255         (struct scc_info): Removed in_component. Added roots, dfs, and
9256         node_mapping. Remove visited_index, unification_queue.
9257         (scc_visit): Deal with union-find we do now.
9258         Deal with cycles with REF nodes.
9259         (collapse_nodes): Renamed and rewritten to ...
9260         (unify_nodes): This.
9261         (process_unification_queue): Removed.
9262         (topo_visit): Cleanup
9263         (do_da_constraint): Use find.
9264         (do_sd_constraint): Ditto.
9265         (do_ds_constraint): Ditto.
9266         (do_complex_constraint): Ditto.
9267         (init_scc_info): Update for removed and added members.
9268         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
9269         (find_indirect_cycles): This.
9270         (equivalence_class): New variable.
9271         (label_visit): New function.
9272         (perform_variable_substitution): Rewritten.
9273         (free_var_substitution_info): New function.
9274         (find_equivalent_node): Ditto.
9275         (move_complex_constraints): Ditto.
9276         (eliminate_indirect_cycles): Ditto.
9277         (solve_graph): Only propagate changed bits.
9278         Use indirect cycle elimination.
9279         Use find.
9280         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
9281         (tree_id_eq): Renamed to ...
9282         (tree_vi_eq): This. Update for member change
9283         (insert_id_for_tree): Renamed and rewritten to ...
9284         (insert_vi_for_tree): This.
9285         (lookup_id_for_tree): Renamed and rewritten to ...
9286         (lookup_vi_for_tree): This.
9287         (get_id_for_tree): Renamed and rewritten to ...
9288         (get_vi_for_tree): Ditto.
9289         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
9290         (process_constraint): Don't handle INCLUDES.
9291         Remove special ADDRESSOF case.
9292         (find_func_aliases): Rewrite to use vi functions instead of id
9293         ones.
9294         (create_function_info_for): Ditto.
9295         (create_variable_info_for): Ditto.
9296         (intra_create_variable_infos): Ditto.
9297         (merge_smts_into): Ditto.
9298         (find_what_p_points_to): Ditto.
9299         (init_base_vars): Ditto.
9300         (init_alias_vars): Ditto.
9301         (remove_preds_and_fake_succs): New function.
9302         (dump_sa_points_to_info): Dump new stats.
9303         (dump_solution_for_var): Use find.
9304         (set_used_smts): Fix formatting.
9305         (compute_points_to_sets): Updated for new functions.
9306         (ipa_pta_execute): Ditto.
9307
9308 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9309             Richard Sandiford  <richard@codesourcery.com>
9310
9311         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
9312         parallels.
9313         * calls.c (expand_call): If the return value is a PARALLEL,
9314         extract its first member.
9315         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
9316         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
9317         use FUNCTION_EXTRA_EPILOGUE.
9318         (m68k_function_value): Return a PARALLEL if the return value
9319         is of a pointer type.
9320         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
9321         (FUNCTION_EXTRA_EPILOGUE): Remove.
9322         * config/m68k/m68k.md (D0_REG): New constant.
9323
9324 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9325
9326         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
9327         output a NOP for empty epilogues.
9328
9329 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9330
9331         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
9332         before function.  Extend register save check to include all
9333         registers, not just integer ones.
9334
9335 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9336
9337         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
9338         (m68k_use_return_insn): ...this.
9339         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
9340         * config/m68k/m68k.c (use_return_insn): Rename to...
9341         (m68k_use_return_insn): ...this.
9342         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
9343         of USE_RETURN_INSN.
9344
9345 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9346
9347         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
9348         nearest even, fix denormal rounding overflow.
9349
9350 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9351
9352         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
9353         f%$smove and f%$move.
9354         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
9355         (extendsfdf2_cf): Use fdmove instead of f%&move.
9356         (truncdfsf2_cf): Use fsmove instead of f%$smove.
9357         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
9358
9359 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9360
9361         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
9362         GPR<-GPR moves.
9363
9364 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9365
9366         * real.h (real_format): Add a canonical_nan_lsbs_set field.
9367         (coldfire_single_format): Declare.
9368         (coldfire_double_format): Likewise.
9369         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
9370         of qnan_msb_set to determine the lower bits of a canonical
9371         NaN significand.
9372         (encode_ieee_double): Likewise.
9373         (encode_ieee_quad): Likewise.
9374         (ieee_single_format): Initialize canonical_nan_lsbs_set.
9375         (mips_single_format): Likewise.
9376         (ieee_double_format): Likewise.
9377         (mips_double_format): Likewise.
9378         (ieee_extended_motorola_format): Likewise.
9379         (ieee_extended_intel_96_format): Likewise.
9380         (ieee_extended_intel_128_format): Likewise.
9381         (ieee_extended_intel_96_round_53_format): Likewise.
9382         (ibm_extended_format): Likewise.
9383         (mips_extended_format): Likewise.
9384         (ieee_quad_format): Likewise.
9385         (mips_quad_format): Likewise.
9386         (vax_f_format): Likewise.
9387         (vax_d_format): Likewise.
9388         (vax_g_format): Likewise.
9389         (i370_single_format): Likewise.
9390         (i370_double_format): Likewise.
9391         (decimal_single_format): Likewise.
9392         (decimal_double_format): Likewise.
9393         (decimal_quad_format): Likewise.
9394         (c4x_single_format): Likewise.
9395         (c4x_extended_format): Likewise.
9396         (real_internal_format): Likewise.
9397         (coldfire_single_format): New real_format.
9398         (coldfire_double_format): Likewise.
9399         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
9400         canonical_nan_lsbs_set.
9401         (pdp11_d_format): Likewise.
9402         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
9403         if TARGET_COLDFIRE_CPU.
9404
9405 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9406
9407         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
9408         (output_call, m68k_legitimize_call_address): Declare.
9409         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
9410         parenthesees.  Add support for a 'W' constraint.
9411         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
9412         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
9413         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
9414         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
9415         variables.
9416         (override_options): Initialize them.  Do not set flag_no_function_cse
9417         for TARGET_ID_SHARED_LIBRARY.
9418         (m68k_output_pic_call): Delete.
9419         (m68k_legitimize_call_address): New function.
9420         (print_operand): Remove the %o prefix.  Handle the %p prefix.
9421         (output_call): New function.
9422         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
9423         target address from the GOT if symbolic jumps are not allowed.
9424         * config/m68k/m68k.md (call, general_operand): Do not set
9425         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
9426         Merge separate flag_pic and !flag_pic define_insns into...
9427         (*call, *call_value): ...these new patterns.  Match the address
9428         rather than the containing MEM and require it to be a call_operand.
9429         Use output_call to generate the asm template.
9430         * config/m68k/predicates.md (const_call_operand): New predicate.
9431         (call_operand): Likewise.
9432
9433 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9434
9435         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
9436         (STACK_GROWS_DOWNWARD): Define to 1.
9437         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
9438         comments, emphasizing that these values are only defaults.
9439         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
9440         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
9441
9442 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9443
9444         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
9445
9446 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
9447             Richard Sandiford  <richard@codesourcery.com>
9448
9449         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
9450         (FP_REGNO_P): New macros.
9451         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
9452         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
9453         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
9454         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
9455
9456 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9457
9458         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9459         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
9460         to $tmake_file.
9461         * config/m68k/t-floatlib: New file, extracting common code from...
9462         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
9463         * config/m68k/t-uclinux: Here.
9464         * config/m68k/fpgnulib.c: Do not compile extendeed precision
9465         routines on ColdFire targets.
9466
9467 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9468
9469         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9470         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
9471         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
9472         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
9473         explicitly set MOTOROLA to 1.
9474         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
9475
9476 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9477             Nathan Sidwell  <nathan@codesourcery.com>
9478
9479         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
9480         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
9481         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
9482         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
9483         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
9484         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
9485         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
9486         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
9487         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
9488         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
9489         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
9490         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
9491         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
9492         (DBX_REGISTER_NUMBER): Delete.
9493         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
9494         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
9495         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
9496
9497 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9498
9499         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
9500         * config/flat.h: New file.
9501         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
9502         OBJECT_FORMAT_FLAT.
9503         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
9504         indirect references for -msep-data or -mid-shared-library.
9505         Do not use PC-relative code addresses either.
9506         * config/m68k/m68k.c (override_options): Restrict -fPIC error
9507         to -mpcrel.
9508         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
9509         for shared libraries and crt1.o for executables.  Use crti.o and
9510         crtbegin.o.
9511         (ENDFILE_SPEC): Use crtend.o and crtn.o.
9512         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
9513         Do not add -elf2flt or -shared-lib-id options here.
9514         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
9515         Pass -shared-lib-id if -mid-shared-library, taking the library
9516         identifier from -mshared-library-id if given, otherwise
9517         defaulting to 0.
9518         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
9519         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
9520         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
9521         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
9522         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
9523         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
9524         and crtend.o.
9525         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
9526         jump sequence for ISA A and ISA A+.
9527         (PICJUMP): Likewise.
9528
9529 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9530
9531         * config.gcc (m68k-*-uclinux*): Base the port on the common
9532         and m68k GNU/Linux files rather than on the generic ELF ones.
9533         * config/m68k/uclinux.h (TARGET_VERSION): Override.
9534         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
9535
9536 2007-01-18  Julian Brown  <julian@codesourcery.com>
9537             Richard Sandiford  <richard@codesourcery.com>
9538
9539         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
9540         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
9541         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
9542         before redefining.
9543         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
9544         80 unconditionally.
9545         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
9546
9547 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
9548
9549         * doc/install.texi: Document m68k-uclinuxoldabi.
9550         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
9551         * config/m68k/uclinux-oldabi.h: New file, copied from
9552         config/m68k/uclinux.h.
9553
9554 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
9555
9556         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
9557         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
9558         (m32r_compute_frame_size): Use unsigned for regno.
9559         (m32r_reload_lr): Use gen_frame_mem.
9560         (pop): New.
9561         (m32r_output_function_epilogue): Don't output the function epilogue
9562         textually here.
9563         (m32r_expand_epilogue): New.
9564         (direct_return): Return false if the function has the interrupt
9565         attribute.
9566         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
9567         * config/m32r/m32r.md (epilogue): New expander.
9568         (return_lr, return_rte): New insns.
9569         (return): Make it expander.
9570         (return_normal): New expander.
9571
9572 2007-01-18  Josh Conner  <jconner@apple.com>
9573
9574         PR target/30485
9575         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
9576         support for UNLE, UNLT, UNGE, and UNGT.
9577
9578 2007-01-18  Jan Hubicka  <jh@suse.cz>
9579
9580         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
9581         * tree-tailcall (add_virtual_phis): Likewise.
9582         (optimize_tail_call): Return TODOs.
9583         (execute_tail_calls): Return TODOs.
9584         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
9585         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
9586         changed.
9587         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
9588         Cleanup cfg using TODO.
9589         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
9590         * passes.c (execute_function_todo): When cleanup did something, remove
9591         unused locals.
9592         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
9593         (make_edges): Don't cleanup_cfg.
9594
9595 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
9596
9597         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
9598         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
9599         operate on the top of stack.
9600         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
9601         register handling of instructions that output to the second
9602         stack slot.
9603         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
9604         (move_for_stack_reg): Special-case check for dead destination
9605         stack slot for constant load of 1.0 inside UNSPEC_TAN.
9606
9607         * config/i386/i386.md (UNSPEC_TAN): New constant.
9608         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
9609         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
9610         to correctly model move of constant 1.0 to top stack slot.
9611         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
9612         (unnamed peephole2 pattern): Remove corresponding peephole2
9613         pattern that optimizes tan insn and loading of constant 1.0.
9614         (tanxf2): Use fptanxf4_i387.
9615         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
9616         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
9617         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
9618         disable patterns for SSE math.
9619         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
9620         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
9621
9622 2007-01-18  Dirk Mueller  <dmueller@suse.de>
9623             Richard Guenther <rguenther@suse.de>
9624
9625         PR diagnostic/8268
9626         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
9627         * common.opt (Warray-bounds): Add new warning option.
9628         * c-opts.c (c_common_handle_option): Define -Warray-bounds
9629         if -Wall is given.
9630         * Makefile.in: make tree-vrp.o depend on toplev.h
9631         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
9632         is enabled.
9633         (check_array_refs, check_array_bounds, check_array_ref): New.
9634
9635 2007-01-18  Jan Hubicka  <jh@suse.cz>
9636
9637         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
9638         (execute_ssa_ccp): Return flags conditionally.
9639         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
9640         changed.
9641         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
9642
9643 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
9644
9645         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
9646         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
9647
9648         * Makefile.c (GTFILES): Add cfglayout.h.
9649         * gengtype.c (open_base_files): Likewise.
9650         * cfglayout.c (cfg_layout_function_footer,
9651         cfg_layout_function_header) Reindent to make gengtype happy.
9652         * cfglayout.h (cfg_layout_function_footer,
9653         cfg_layout_function_header): Add GTY(()) marker.
9654
9655         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
9656
9657 2007-01-18  Ben Elliston  <bje@au.ibm.com>
9658
9659         * genautomata.c (write_automata): Include xstrerror output in the
9660         error message if writing the DFA description file fails.
9661
9662 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
9663
9664         * config/mips/mips-protos.h (mips_output_external): Make it
9665         return void.
9666         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
9667         * config/mips/mips.c (irix_output_external_libcall): Likewise.
9668         (extern_list): Likewise.
9669         (extern_head): Likewise.
9670         (TARGET_ASM_FILE_END): Likewise.
9671         (mips_file_end): Likewise.
9672         (mips_output_external): Rewritten.
9673
9674 2007-01-18  Ben Elliston  <bje@au.ibm.com>
9675
9676         * genpreds.c (write_insn_preds_c): Only write out the function
9677         body for regclass_for_constraint if we have register constraints.
9678
9679 2007-01-17  Tom Tromey  <tromey@redhat.com>
9680
9681         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
9682         * doc/install.texi (Testing): Use sourceware.org.
9683         (Binaries): Likewise.
9684         (Specific): Likewise.
9685         * doc/contrib.texi (Contributors): Use sourceware.org.
9686
9687 2007-01-17  Anatoly Sokolov <aesok@post.ru>
9688
9689         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
9690         (AVR_ENHANCED): Rename to ...
9691         (AVR_HAVE_MUL): ... new.
9692         (avr_enhanced_p): Rename to ...
9693         (avr_have_mul_p): ... new.
9694         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
9695         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
9696         * config/avr/avr.c (avr_enhanced_p): Rename to ...
9697         (avr_have_mul_p): ... new.
9698         (base_arch_s): Rename 'enhanced' to 'have_mul'.
9699         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
9700         'avr_enhanced_p' and 'enhanced'.
9701         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
9702         AVR_HAVE_MUL instead of AVR_ENHANCED.
9703         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
9704         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
9705         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
9706         instead of AVR_ENHANCED.
9707         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
9708         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
9709         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
9710
9711 2007-01-17  Ian Lance Taylor  <iant@google.com>
9712
9713         * vec.h (VEC_reserve_exact): Define.
9714         (vec_gc_p_reserve_exact): Declare.
9715         (vec_gc_o_reserve_exact): Declare.
9716         (vec_heap_p_reserve_exact): Declare.
9717         (vec_heap_o_reserve_exact): Declare.
9718         (VEC_OP (T,A,reserve_exact)): New static inline function, three
9719         versions.
9720         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
9721         negative parameter.
9722         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
9723         (VEC_OP (T,A,copy)) [all versions]: Likewise.
9724         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
9725         * vec.c (calculate_allocation): Add exact parameter.  Change all
9726         callers.
9727         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
9728         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
9729         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
9730         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
9731         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
9732         (vec_heap_p_reserve_exact): New function.
9733         (vec_heap_o_reserve_exact): New function.
9734
9735 2007-01-17  Jan Hubicka  <jh@suse.cz>
9736
9737         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
9738
9739 2007-01-17  Eric Christopher  <echristo@apple.com>
9740
9741         * config.gcc: Support core2 processor.
9742
9743 2007-01-16  Jan Hubicka  <jh@suse.cz>
9744
9745         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
9746         the names, just unlink the chain so we don't crash on dangling pointers
9747         to dead SSA names.
9748
9749 2007-01-16  Jan Hubicka  <jh@suse.cz>
9750
9751         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
9752         * tree-pass.h: Reorder to make IPA passes appear toegher.
9753         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
9754         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
9755         parameters, do not call early inliner.
9756         * ipa-inline.c: Update comments.  Include tree-flow.h
9757         (cgraph_decide_inlining): Do not compute inlining parameters.
9758         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
9759         be called with function context set up.
9760         (pass_ipa_inline): Remove unreachable functions before pass.
9761         (cgraph_early_inlining): Simplify assuming to be called from the
9762         PM as local pass.
9763         (pass_early_inline): New pass.
9764         (cgraph_gate_ipa_early_inlining): New gate.
9765         (pass_ipa_early_inline): Turn into simple wrapper.
9766         (compute_inline_parameters): New function.
9767         (gate_inline_passes): New gate.
9768         (pass_inline_parameters): New pass.
9769         (apply_inline): Move here from tree-optimize.c
9770         (pass_apply_inline): New pass.
9771         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
9772         transforming.
9773         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
9774         doing them by hand.
9775         (tree_function_versioning): Do not allocate dummy struct function.
9776         * tree-inline.h (optimize_inline_calls): Update prototype.
9777         * tree-optimize.c (execute_fixup_cfg): Export.
9778         (pass_fixup_cfg): Remove
9779         (tree_rest_of_compilation): Do not apply inlines.
9780         * tree-flow.h (execute_fixup_cfg): Declare.
9781         * Makefile.in (gt-passes.c): New.
9782         * passes.c: Include gt-passes.h
9783         (init_optimization_passes): New passes.
9784         (nnodes, order): New static vars.
9785         (do_per_function_toporder): New function.
9786         (execute_one_pass): Dump current pass here.
9787         (execute_ipa_pass_list): Don't dump current pass here.
9788
9789 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
9790
9791         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
9792         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
9793
9794 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
9795
9796         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
9797         (strong_alias): Define.
9798         (__gcc_qmul): Provide non-FMA for soft-float.
9799         (__gcc_qdiv): Same.
9800         (__gcc_qneg): New.
9801         (__gcc_qeq): New.
9802         (__gcc_qle): New.
9803         (__gcc_qge): New.
9804         (__gcc_qunord): New.
9805         (__gcc_stoq): New.
9806         (__gcc_dtoq): New.
9807         (__gcc_qtos): New.
9808         (__gcc_qtod): New.
9809         (__gcc_qtoi): New.
9810         (__gcc_qtou): New.
9811         (__gcc_itoq): New.
9812         (__gcc_utoq): New.
9813         (fmsub): New.
9814         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
9815         soft-float functions.
9816         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
9817         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
9818         about long double soft float.
9819
9820 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
9821             Tehila Meyzels  <tehila@il.ibm.com>
9822
9823         * tree-vectorizer.h (is_pattern_stmt_p): New.
9824         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
9825         formatting (tabs instead of spaces). Cleanup and clarify setting
9826         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
9827         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
9828         (vectorizable_type_demotion): Check that types are integral.
9829         (vectorizable_type_promotion): Likewise.
9830         (vectorizable_store): Fix typo.  Eliminate new-line at end of
9831         comments.
9832
9833 2007-01-16  Jan Hubicka  <jh@suse.cz>
9834
9835         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
9836         cgraph edges too.
9837
9838 2007-01-15  Eric Christopher  <echristo@apple.com>
9839
9840         * ifcvt.c: Include vec.h, vecprim.h.
9841         (check_cond_move_block): New argument regs.
9842         Reorganize. Add registers used to regs.
9843         (cond_move_process_if_block): Use regs set above as
9844         loop bounds.
9845
9846 2007-01-15  Eric Christopher  <echristo@apple.com>
9847
9848         * config/darwin.h: Update copyright.
9849         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
9850         (LINK_COMMAND_SPEC): Add -u.
9851         (LINK_SPEC): Fix umbrella for above.
9852
9853 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
9854
9855         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
9856         glibc CVS.
9857
9858 2007-01-15  Tom Tromey  <tromey@redhat.com>
9859
9860         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
9861         * doc/install.texi (Testing): Don't mention jacks.
9862         (Configuration): Document --enable-java-maintainer-mode.  Move
9863         --with-java-home to libgcj-specific section.  Document
9864         --with-ecj-jar.
9865         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
9866
9867 2007-01-15  Jan Hubicka  <jh@suse.cz>
9868
9869         * tree-ssa-dce.c (DCE_TODOs): New.
9870         (propagate_necessity): Return if something changed.
9871         (eliminate_unnecessary_stmts): Likewise.
9872         (perform_tree_ssa_dce): Return TODO flags when needed.
9873         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
9874
9875 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
9876
9877         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
9878         (fyl2x_extend<mode>xf3_i387): New insn pattern.
9879         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
9880         patterns using X87MODEF12 mode macro.  Extend operand 1
9881         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
9882         (log10<mode>2): Ditto.
9883         (log2<mode>2): Ditto.
9884         (log1p<mode>2): Ditto.
9885         (logb<mode>2): Ditto.
9886         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
9887         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
9888         (*fxtractxf3_i387): Rename from *fxtractxf3.
9889         (fxtract_extend<mode>xf3_i387): New insn pattern.
9890         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
9891         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
9892         and gen_fyl2xxf3_i387().
9893
9894 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
9895
9896         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
9897         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
9898         get_loop_exit_edges.  Changed return type to bool.
9899         * cfgloop.h (fix_loop_placement): Declaration removed.
9900
9901 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
9902
9903         * param.h (MIN_VECT_LOOP_BOUND): New.
9904         * params.def (MIN_VECT_LOOP_BOUND): New.
9905         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
9906         argument - minimum threshold for number of iterations.
9907         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
9908         argument to declaration.
9909         * tree-vect-analyze.c (vect_analyze_operations): Check value of
9910         MIN_VECT_LOOP_BOUND.
9911         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
9912         slpeel_tree_peel_loop_to_edge with additional argument.
9913         (vect_do_peeling_for_alignment): Likewise.
9914         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
9915
9916 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
9917
9918         PR target/30413
9919         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
9920         operands of size 1.
9921
9922 2007-01-14  Jan Hubicka  <jh@suse.cz>
9923
9924         * tree-dfa.c (remove_referenced_var): New function.
9925         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
9926         prune referenced vars list too.
9927         * tree-flow.h (remove_referenced_var): Declare.
9928
9929 2007-01-14  Jan Hubicka  <jh@suse.cz>
9930
9931         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
9932         separately.
9933         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
9934         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
9935         * except.h (verify_eh_throw_table_statements): Kill prototype.
9936         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
9937         into call exrepssions.
9938         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
9939         eh trhow verifier.
9940         * tree-cfg.c: Include pointer-set.h.
9941         (verify_node_sharing): Work on pointer set.
9942         (verify_eh_throw_stmt_node): New.
9943         (verify_stmts): Use pointers sets, verify throw_stmt.
9944
9945 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
9946
9947         * ipa-reference.c (analyze_function): Consider also addresses taken
9948         in phi nodes.
9949
9950 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9951
9952         * c-typeck.c (null_pointer_constant_p): Replace use of
9953         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9954         (build_c_cast): Likewise.
9955
9956 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9957
9958         * tree.h (force_fit_type_double): Remove unused final argument.
9959         * c-common.c (constant_expression_warning): Replace use of
9960         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9961         (convert_and_check): Likewise.
9962         (shorten_compare): Update call to force_fit_type_double.
9963         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
9964         * convert.c (convert_to_pointer): Update call to
9965         force_fit_type_double.
9966         * fold-const.c (force_fit_type_double): Remove overflowed_const
9967         argument.
9968         (int_const_binop, fold_convert_const_int_from_int,
9969         fold_convert_const_int_from_real, fold_div_compare,
9970         fold_sign_changed_comparison, fold_unary, fold_negate_const,
9971         fold_abs_const, fold_not_const): Remove the final argument from
9972         calls to force_fit_type_double.
9973
9974 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9975
9976         * configure.ac: Set insn to "nop" for spu-*-* also.
9977         * configure: Regenerate.
9978
9979 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
9980
9981         * builtins.def : Add BUILT_IN_FREE.
9982
9983 2007-01-12  Jan Hubicka  <jh@suse.cz>
9984
9985         PR tree-optimization/30443
9986         * tree-inline.c (tree_function_versioning): Do not optimize when
9987         cloning for inlining.
9988
9989 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
9990
9991         * doc/loop.texi: Document recording of loop exits.
9992         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
9993         (update_single_exits_after_duplication,
9994         update_single_exit_for_duplicated_loop,
9995         update_single_exit_for_duplicated_loops): Removed.
9996         (duplicate_loop_to_header_edge): Do not call
9997         update_single_exits_after_duplication and
9998         update_single_exit_for_duplicated_loops.
9999         (loop_version): Do not update single_exit information.
10000         (fix_loop_structure): Use record_loop_exits instead of
10001         mark_single_exit_loops.
10002         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
10003         the lists of loop exits.
10004         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
10005         split_edge, merge_blocks): Update the lists of loop exits.
10006         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
10007         loop_optimizer_init.
10008         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
10009         of mark_single_exit_loops.
10010         (loop_optimizer_finalize): Call release_recorded_exits.
10011         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
10012         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
10013         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
10014         update single exit information.
10015         * lambda-code.c (perfect_nestify): Ditto.
10016         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
10017         (mark_single_exit_loops): Removed.
10018         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
10019         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
10020         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
10021         functions.
10022         (get_loop_exit_edges, single_exit): Use recorded exit lists.
10023         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
10024         (verify_loop_structure): Verify consistency of the exit lists.
10025         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
10026         (set_single_exit): Removed.
10027         * cfgloop.h (struct loop_exit): New function.
10028         (struct loop): single_exit_ field replaced by exits field.
10029         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
10030         (struct loops): Added exits hash.
10031         (mark_single_exit_loops, set_single_exit): Declaration removed.
10032         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
10033
10034 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
10035
10036         * doc/invoke.texi: Avoid use of @headitem.
10037
10038 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
10039
10040         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
10041
10042 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
10043
10044         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
10045         list of targets.
10046
10047 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
10048             Richard Sandiford  <richard@codesourcery.com>
10049
10050         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
10051         * config/m68k/m68k.opt: Resort options.
10052         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
10053
10054 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
10055             Richard Sandiford  <richard@codesourcery.com>
10056
10057         * doc/invoke.texi: Document the macros that are defined by
10058         m68k's -mtune and -mhard-float options.
10059         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
10060         (m68k_cpp_cpu_family): Likewise.
10061         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
10062         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
10063         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
10064         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
10065         (m68k_cpp_cpu_family): Likewise.
10066
10067 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
10068
10069         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
10070         macros besides mc68000 as tuning macros.  Use a switch statement
10071         to set them and mcpu32.
10072
10073 2007-01-12  Julian Brown  <julian@codesourcery.com>
10074
10075         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
10076         (TARGET_68040_ONLY): Rename to...
10077         (TARGET_68040): ...this.
10078         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
10079         * config/m68k/m68k.md: Likewise.
10080
10081 2007-01-12  Julian Brown  <julian@codesourcery.com>
10082             Nathan Sidwell  <nathan@codesourcery.com>
10083             Richard Sandiford  <richard@codesourcery.com>
10084
10085         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
10086         the -mcpu= argument associated with the --with-cpu setting.
10087         Define M68K_DEFAULT_TUNE to the default -mtune= option,
10088         if different from the one implied by the -mcpu setting.
10089         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
10090         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
10091         * doc/invoke.texi: Mention ColdFire in the introduction to the
10092         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
10093         -mno-div and -mhard-float options.  Make -m68881 a synonym for
10094         -mhard-float.  Document the previously-undocumented -m5206e,
10095         -m528x, -m5307 and -m5407 options.  Tweak the existing option
10096         documentation for consistency.
10097         * doc/install.texi: Mention new --with-cpu arguments.
10098         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
10099         default CPU if neither -mcpu nor -march are specified.
10100         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
10101         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
10102         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
10103         using m68k_tune to decide between families that implement the
10104         same ISA.  Use m68k_tune to set __mcfv4e__.
10105         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
10106         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
10107         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
10108         (FL_ISA_C, FL_ISA_MMU): New macros.
10109         (MASK_COLDFIRE): Delete.
10110         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
10111         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
10112         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
10113         (TARGET_HARD_FLOAT): Do not define here.
10114         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
10115         (TUNE_68000): New macro.
10116         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
10117         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
10118         (TUNE_CFV2): Redefine in terms of m68k_tune.
10119         (uarch_type, target_device, fpu_type): New enums.
10120         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
10121         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
10122         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
10123         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
10124         (FL_FOR_isa_c): New macros.
10125         (m68k_isa): New enum.
10126         (m68k_target_selection): New structure.
10127         (all_devices, all_isas, all_microarchs): New tables.
10128         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
10129         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
10130         (MASK_ALL_CPU_BITS): Delete.
10131         (m68k_find_selection): New function.
10132         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
10133         Map the legacy target options to a combination of the new ones.
10134         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
10135         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
10136         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
10137         settings.
10138         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
10139         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
10140         properties.
10141         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
10142         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
10143         * config/m68k/m68k-devices.def: New file.
10144
10145 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
10146             Nathan Sidwell  <nathan@codesourcery.com>
10147
10148         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
10149         (SUBTARGET_EXTRA_SPECS): New macros.
10150         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
10151         use %(asm_cpu_spec) instead.
10152         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
10153         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
10154         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
10155         (EXTRA_SPECS): Rename to...
10156         (SUBTARGET_EXTRA_SPECS): ...this.
10157
10158 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
10159             Richard Sandiford  <richard@codesourcery.com>
10160             Julian Brown  <julian@codesourcery.com>
10161
10162         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
10163         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
10164         to the configuration's default CPU.
10165         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
10166         Remove default masks.
10167         (m680[012]0-*-*): Set the default with_cpu to the first part of
10168         the target name.
10169         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
10170         (m68k*-*-linux): Extend the --with-cpu handling to...
10171         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
10172         and m68010.  Don't set target_cpu_default2.
10173         * doc/install.texi: Document --with-cpu for m68k.
10174         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
10175         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
10176         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
10177         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
10178         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
10179         (ASM_SPEC): Remove use of %(asm_cpu_default).
10180         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
10181         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
10182         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
10183         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
10184         __HAVE_FPU__ if TARGET_HARD_FLOAT.
10185         (TARGET_DEFAULT): Delete.
10186         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
10187         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
10188         (CPP_CPU_SPEC): Delete.
10189         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
10190         the appropriate string.
10191         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
10192         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
10193         (ASM_SPEC): Don't use %(asm_default_spec).
10194         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
10195         TARGET_DEFAULT and add MASK_68881.
10196         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
10197
10198 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
10199
10200         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
10201         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
10202         MASK_68010 alongside MASK_68020.
10203         * doc/invoke.texi: Document -m68010.
10204         * config/m68k/m68k.opt (m68010): New.
10205         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
10206         if TUNE_68010.
10207         (TUNE_68010): New macro.
10208         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
10209         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
10210         (M68K_CPU_m68332): Add MASK_68010.
10211         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
10212         fallback definition.
10213         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
10214         defines.
10215         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
10216         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
10217         to all entries that use MASK_68020.
10218         (output_move_simode_const, output_move_himode, output_move_qimode)
10219         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
10220         instead of TARGET_68020 to select clr behavior.  Remove comment
10221         about there being no TARGET_68010.
10222         * config/m68k/m68k.md: Likewise throughout.
10223
10224 2007-01-12  Julian Brown  <julian@codesourcery.com>
10225
10226         * config/m68k/m68k.h (TARGET_ISAB): New macro.
10227         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
10228         * config/m68k/m68k.md: Likewise.
10229
10230 2007-01-12  Julian Brown  <julian@codesourcery.com>
10231
10232         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
10233         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
10234
10235 2007-01-12  Julian Brown  <julian@codesourcery.com>
10236
10237         * config/m68k/m68k.h (TUNE_68040_60): New macro.
10238         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
10239         * config/m68k/m68k.md: Likewise.
10240
10241 2007-01-12  Julian Brown  <julian@codesourcery.com>
10242             Richard Sandiford  <richard@codesourcery.com>
10243
10244         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
10245         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
10246         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
10247         TARGET_CPU32.
10248         (TARGET_CPU32): Rename to...
10249         (TUNE_CPU32): ...this.
10250         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
10251         (TUNE_CFV2): New macros.
10252         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
10253         remove conditions that are implied by TARGET_68020.
10254         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
10255         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
10256         (m68k_output_function_epilogue): Likewise.
10257         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
10258         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
10259         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
10260         non-68000 timings.  Refactor multiplication and division costs.
10261         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
10262         TUNE_CPU32 instead of TARGET_CPU32.
10263         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
10264         and TUNE_68060 instead of TARGET_68060.
10265         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
10266         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
10267         TARGET_CPU32.
10268         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
10269         && !TARGET_COLDFIRE" to choose between moveq and clr.
10270         Likewise in the unnamed movsf pattern.
10271         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
10272         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
10273         ashiftrt pattern.
10274
10275 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
10276
10277         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
10278         of tabbing before backslashes.
10279
10280 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10281
10282         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
10283         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
10284         (ASM_OUTPUT_INTERNAL_LABEL): Define.
10285
10286 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
10287
10288         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
10289         find_interesting_uses_cond.
10290         (find_interesting_uses_cond): Use extract_cond_operands.
10291         (rewrite_use_compare): Use extract_cond_operands and
10292         force_gimple_operand_bsi.  Do not call update_stmt.
10293         (determine_use_iv_cost_condition): Use extract_cond_operands.
10294         Return cheaper of using original bound and changing the exit bound.
10295
10296 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
10297
10298         PR tree-optimization/29516
10299         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
10300         most_expensive_mult_to_index, addr_to_parts,
10301         create_mem_ref, maybe_fold_tmr): Make the type of
10302         fields of TARGET_MEM_REF sizetype.
10303         (move_fixed_address_to_symbol, move_pointer_to_base):
10304         New functions.
10305         * tree.def (TARGET_MEM_REF): Add comment on types of
10306         the operands.
10307
10308 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
10309
10310         * c-common.c (vector_types_convertible_p): Treat opaque types as
10311         always convertible if they have the same size, but not otherwise.
10312
10313 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
10314
10315         * ifcvt.c (struct noce_if_info): Add comments to the fields.
10316         Remove the b_unconditional field.
10317         (noce_try_sign_mask): Do not look at b_unconditional.
10318         (noce_process_if_block): Do not use merge_if_blocks.  Update
10319         the CFG here.  Do not set b_unconditional.
10320         (cond_move_process_if_block): Likewise.
10321         (find_cond_trap): Likewise.
10322         (check_cond_move_block): Require simple jump insns at the end
10323         of the basic block.
10324
10325 2007-01-11  Jan Hubicka  <jh@suse.cz>
10326
10327         PR tree-optimization/1046
10328         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
10329         when alias info is not ready.
10330         (pass_tail_recursion): Do not require aliasing.
10331         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
10332         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
10333         * tree-ssa-copy.c (pass_copy_prop): Likewise.
10334         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
10335         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
10336         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
10337         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
10338         before inlining.
10339         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
10340         When aliasing is not build, mark statement as volatile.
10341
10342 2007-01-11  Tom Tromey  <tromey@redhat.com>
10343
10344         PR preprocessor/15185, PR preprocessor/20989:
10345         * doc/cppopts.texi <-MT>: Update description of algorithm for
10346         computing default target.
10347         <-M, -MD>: Reword "basename" text.
10348
10349 2007-01-11  Roger Sayle  <roger@eyesopen.com>
10350
10351         * builtins.c (expand_builtin_pow, expand_builtin_powi,
10352         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
10353         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
10354         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
10355         fold_builtin_bswap, real_constp, fold_builtin_pow,
10356         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
10357         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
10358         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
10359         * convert.c (convert_to_pointer): Likewise.
10360         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
10361         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
10362         const_binop, fold_convert_const_int_from_int,
10363         fold_convert_const_int_from_real,
10364         fold_convert_const_real_from_real, sign_bit_p,
10365         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
10366         fold_sign_changed_comparison, fold_unary, fold_comparison,
10367         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
10368         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
10369         * print-tree.c (print_node_brief, print_node): Likewise.
10370         * stor-layout.c (place_field, layout_type): Likewise.
10371         * tree-chrec.c (keep_cast): Likewise.
10372         * tree.c (build_vector, build_real, build_real_from_int_cst,
10373         build_complex): Likewise.
10374
10375 2007-01-11  Roger Sayle  <roger@eyesopen.com>
10376
10377         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
10378         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
10379
10380 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
10381
10382         * configure.ac (strict1_warn): Rename to strict_warn.
10383         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
10384         cc_set_by_configure, quoted_cc_set_by_configure,
10385         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
10386         all_boot_languages, all_stagestuff): Remove.
10387         (target_list): Remove bootstrap targets.
10388         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
10389         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
10390         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
10391         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
10392         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
10393         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
10394         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
10395         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
10396         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
10397         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
10398         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
10399         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
10400         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
10401         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
10402         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
10403         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
10404         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
10405         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
10406         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
10407         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
10408         (mostlyclean): Adjust.
10409         (clean, distclean): Don't mention bootstrap stuff.
10410         * configure: Regenerate.
10411         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
10412         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
10413         treelang/config-lang.in (stagestuff): Remove.
10414         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
10415         stageprofile, stagefeedback, stagestuff): Remove mention.
10416
10417 2007-01-11  Nick Clifton  <nickc@redhat.com>
10418
10419         * config/mcore/predicates.md (mcore_general_movesrc_operand):
10420         Accept CONSTs.
10421         (mcore_general_movdst_operand): Do not accept CONST_INTs.
10422         (mcore_arith_K_S_operand): Run the test for the S constraint not
10423         the test for the M constraint.
10424         (mcore_addsub_operand): Do not accept integer values that are
10425         larger than 32 bits.
10426         * config/mcore/mcore.md: Remove unused constraints from split.
10427         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
10428         (addsi3): Likewise.
10429         (allocate_stack): Likewise.
10430         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
10431         operands to 32 bits.
10432         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
10433         INTVAL.
10434         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
10435         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
10436         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
10437         mcore_output_bclri, mcore_output_andn, output_inline_const,
10438         mcore_output_move, mcore_output_movedouble): Likewise.
10439         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
10440         (output_inline_const): Likewise.
10441         (output_inline_const): Fix format strings used in sprintf
10442         statements.
10443         * config/mcore/mcore-protos.h: Update prototypes for changed
10444         functions in mcore.c.
10445         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
10446         HOST_WIDE_INT and not int.
10447         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
10448         CONST_OK_FOR_N): Likewise.
10449         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
10450         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
10451         an INTVAL.
10452
10453 2007-01-10  Jan Hubicka  <jh@suse.cz>
10454
10455         * tree-vrp.c (remove_range_assertions): Release defs.
10456         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
10457         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
10458
10459 2007-01-10  Paul Brook  <paul@codesourcery.com>
10460
10461         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
10462         * config/arm/arm.md (mulsi3subsi): New insn.
10463
10464 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
10465
10466         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
10467         (tree_transform_and_unroll_loop): New.
10468         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
10469         Declare.
10470
10471 2007-01-10  Robert Kennedy <jimbob@google.com>
10472
10473         * fold-const.c (fold_comparison): Fold comparisons like (x *
10474         1000 < 0) to (x < 0).
10475
10476 2007-01-10  Ian Lance Taylor  <iant@google.com>
10477
10478         * tree-pretty-print.c (dump_generic_node): Print parentheses when
10479         operands have the same priority.
10480
10481 2007-01-10  Tom Tromey  <tromey@redhat.com>
10482
10483         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
10484         (fold_binary): Likewise.
10485         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
10486         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
10487         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
10488         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
10489         * langhooks.h (struct lang_hooks): Removed field
10490         'can_use_bit_fields_p'.
10491
10492 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
10493
10494         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
10495
10496 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
10497
10498         * function.c (get_last_funcdef_no): New function.
10499         * function.h (get_last_funcdef_no): Declare.
10500         * tree-inline.c (initialize_cfun): Add initialization.
10501         (tree_function_versioning): Cleanup.
10502
10503 2007-01-10  Jan Hubicka  <jh@suse.cz>
10504
10505         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
10506         PHIs.
10507
10508 2007-01-10  Sa Liu  <saliu@de.ibm.com>
10509             Ben Elliston  <bje@au.ibm.com>
10510
10511         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
10512         for SAVE_NONLOCAL and Pmode for any other save level.
10513         * spu-protos.h (spu_restore_stack_block): Declare.
10514         * spu.md (save_stack_block): Remove.
10515         (restore_stack_block): Call spu_restore_stack_block.
10516         * spu.c (spu_restore_stack_block): New function.
10517         (spu_expand_epilogue): Remove old comment.
10518
10519 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
10520
10521         PR tree-optimization/30322
10522         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
10523         (cand_value_at): Return the value as aff_tree.
10524         (may_eliminate_iv): Convert the bound from aff_tree to tree.
10525         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
10526         aff_combination_mult): New functions.
10527         (aff_combination_add): Use aff_combination_add_cst.
10528         (aff_combination_convert): Allow conversions to a wider type.
10529         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
10530         * tree-affine.h (aff_combination_mult): Declare.
10531
10532 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
10533
10534         * doc/tm.texi: Update documentation to reflect reality of exec
10535         and start file search behaviours. Update copyright year.
10536         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
10537         header file directories.
10538
10539 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
10540
10541         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
10542         (*cosxf2): Rename to cosxf2_i387.
10543         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
10544         using X87MODEF12 mode macro. Rename patterns to
10545         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
10546         for SSE math.
10547         (*cosdf2, *cossf2): Ditto.
10548         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
10549         to match extended input operands.
10550         (sincos<mode>3): New expander.
10551         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
10552         insn patterns and corresponding splitters.
10553
10554 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
10555
10556         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
10557         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
10558
10559 2007-01-09  Nicolas Pitre  <nico@cam.org>
10560
10561         PR target/30173
10562         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
10563
10564 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
10565
10566         * target.h (struct gcc_target): New field library_rtti_comdat.
10567         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
10568         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
10569         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
10570         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
10571
10572 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
10573
10574         * doc/invoke.texi (Optimize Options): Correct description of -O0.
10575
10576 2007-01-08  Richard Guenther  <rguenther@suse.de>
10577
10578         * tree.h (force_fit_type_double): Export.
10579         (force_fit_type): Remove.
10580         * fold-const.c (force_fit_type_double): New function.
10581         (force_fit_type): Remove.
10582         (int_const_binop): Use it.
10583         (fold_convert_const_int_from_int): Likewise.
10584         (fold_convert_const_int_from_real): Likewise.
10585         (fold_div_compare): Likewise.
10586         (fold_sign_changed_comparison): Likewise.
10587         (fold_unary): Likewise.
10588         (fold_negate_const): Likewise.
10589         (fold_abs_const): Likewise.
10590         (fold_not_const): Likewise.
10591         * c-common.c (shorten_compare): Use force_fit_type_double.
10592         * convert.c (convert_to_pointer): Likewise.
10593
10594 2007-01-08  Richard Guenther  <rguenther@suse.de>
10595
10596         * tree.h (build_int_cst_wide_type): Export.
10597         * tree.c (build_int_cst_wide_type): New function.
10598         (build_int_cst_wide): Fix comment.
10599         * builtins.c (fold_builtin_object_size): Use build_int_cst
10600         to build -1 or 0 of the correct type.  Use fit_double_type
10601         to check for overflow.
10602         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
10603         to build the mask.
10604         (decode_field_reference): Likewise.
10605         (all_ones_mask_p): Likewise.
10606         (native_interpret_int): Use build_int_cst_wide_type.
10607         (fold_binary): Use build_int_cst_type to build an all-ones
10608         value.
10609         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
10610
10611 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
10612
10613         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
10614
10615 2007-01-09  Ben Elliston  <bje@au.ibm.com>
10616
10617         * genautomata.c (STATS_OPTION): New option.
10618         (stats_flag): New flag.
10619         (gen_automata_option): Handle it.
10620         (initiate_automaton_gen): Ditto.
10621         (write_automata): Output statistics only if stats_flag is
10622         set. Likewise, output time statistics only if time_flag is set.
10623         * doc/md.texi (Processor pipeline description): Document new flag.
10624
10625 2007-01-08  Richard Guenther  <rguenther@suse.de>
10626
10627         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
10628         * tree.c (build_int_cst_type): Likewise.
10629         (size_in_bytes): Don't call force_fit_type on the result.
10630         (int_fits_type_p): Use fit_double_type.
10631         * fold-const.c (fit_double_type): New function.
10632         (force_fit_type): Use it.
10633         * tree.h (fit_double_type): Export.
10634
10635 2007-01-08  Jan Hubicka  <jh@suse.cz>
10636
10637         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
10638         * ipa.c (function_and_variable_visibility): Fix return type.
10639
10640 2007-01-08  Richard Guenther  <rguenther@suse.de>
10641
10642         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
10643         of offset to build the index.
10644         * tree-pretty-print.c (dump_generic_node): Don't build negated
10645         const just for printing.
10646         * c-pretty-print.c (pp_c_integer_constant): Likewise.
10647         * builtins.c (fold_builtin_int_roundingfn): Check if result
10648         fits the type by using force_fit_type and comparing the result.
10649         * predict.c (predict_loops): Use compare_tree_int for comparison.
10650         * tree.c (build_int_cst): Fall back to integer_type_node for
10651         NULL_TREE type.
10652         (build_int_cst_wide): Assert type is non-null.
10653
10654 2007-01-08  Roberto Costa  <roberto.costa@st.com>
10655
10656         * tree-vrp.c (extract_range_from_cond_expr): New.
10657         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
10658         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
10659         as expressions.
10660         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
10661         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
10662         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
10663         used as expressions.
10664         * tree-object-size.c (cond_expr_object_size): New.
10665         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
10666
10667 2007-01-08  Jan Hubicka  <jh@suse.cz>
10668
10669         * tree-ssa-forwprop.c (forward_propagate_into_cond,
10670         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
10671         statement.
10672
10673 2007-01-08  Richard Guenther  <rguenther@suse.de>
10674
10675         PR tree-optimization/23603
10676         * tree-vrp.c (set_value_range_to_truthvalue): New function.
10677         (extract_range_from_binary): Fall back to truthvalue instead of
10678         varying for TRUTH_*_EXPR.
10679         (extract_range_from_comparison): Fall back to truthvalue instead of
10680         varying.
10681         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
10682         if all visited PHI values were constant.
10683
10684 2007-01-08  Jan Hubicka  <jh@suse.cz>
10685
10686         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
10687         (cgraph_analyze_function): break out from ...
10688         (cgraph_finalize_compilation_unit): ... here.
10689         (cgraph_expand_function): Remove forgoten commented out line.
10690         (cgraph_optimize): Analyze functions.
10691
10692 2007-01-08  Jan Hubicka  <jh@suse.cz>
10693
10694         * tree-pas.h (TODO_remove_function): New flag.
10695         (TODO_update*): Renumber.
10696         (pass_ipa_increase_alignment,
10697         pass_ipa_function_and_variable_visibility): New passes.
10698         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
10699         (cgraph_function_and_variable_visibility): Move to ipa.c
10700         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
10701         cgraph_increase_alignment.
10702         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
10703         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
10704         calling tree-inline.
10705         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
10706         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
10707         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
10708         (gate_increase_alignment): New function.
10709         (pass_ipa_increase_alignment): New pass.
10710         * ipa.c: Inline tree-pass.h and timevar.h
10711         (function_and_variable_visibility): Move here from cgraphunit.c
10712         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
10713         * passes.c (init_optimization_passes): Add the two new passes.
10714         (execute_todo): Handle cgraph_remove_functions.
10715
10716 2007-01-08  Nick Clifton  <nickc@redhat.com>
10717
10718         * config/frv/predicates.md (reg_or_0_operand): Accept
10719         CONST_DOUBLEs.
10720
10721 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
10722
10723         * config/bfin/rtems.h, config/bfin/t-rtems: New.
10724         * config.gcc: Add bfin*-rtems*.
10725
10726 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10727
10728         * c.opt: Add -flax-vector-conversions.
10729         * c-typeck.c (convert_for_assignment): Pass flag to
10730         vector_types_convertible_p to allow emission of note.
10731         (digest_init): Likewise.
10732         * c-opts.c: Handle -flax-vector-conversions.
10733         * c-common.c (flag_lax_vector_conversions): New.
10734         (vector_types_convertible_p): Unless -flax-vector conversions
10735         has been passed, disallow conversions between vectors with
10736         differing numbers of subparts and/or element types.  If such
10737         a conversion is disallowed, possibly emit a note on the first
10738         occasion only to inform the user of -flax-vector-conversions.
10739         The new last argument specifies this.
10740         * c-common.h (flag_lax_vector_conversions): New.
10741         (vector_types_convertible_p): Add extra argument.
10742         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
10743         char_type_node for V*QI type vectors.
10744         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
10745         Update to satisfy new typechecking rules.
10746         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
10747         C and C++ variants.
10748         * doc/invoke.texi (C Dialect Options): Document
10749         -flax-vector-conversions.
10750
10751 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10752
10753         PR tree-optimization/29877
10754         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
10755         a register variable on the RHS to not be replaceable.
10756
10757 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
10758         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
10759         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
10760         const_simm15, const_pow2, const_npow2): Added.
10761         * config/score/misc.md (insv, extv, extzv, movmemsi,
10762         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
10763         * config/score/score.c (score_address_cost, score_select_cc_mode):
10764         Added.
10765         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
10766         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
10767         Update score_print_operand.
10768         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
10769         Adjust register allocate order and update some macro define.
10770         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
10771         mdx_block_move_straight, mdx_block_move_loop_head,
10772         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
10773         mdx_block_move): Added.
10774         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
10775         mdp_limm): Updated and fix some bug and typo.
10776         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
10777         (movsf, movdf, doloop_end): Added.
10778
10779 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
10780
10781         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
10782         config/arm/thumb2.md: Fix comment typos.
10783         * doc/extend.texi: Fix a typo.
10784
10785 2007-01-07  Eric Christopher  <echristo@apple.com>
10786
10787         * configure.ac: Check for __stack_chk_fail for darwin.
10788         * configure: Regenerate.
10789
10790 2007-01-07  Richard Guenther  <rguenther@suse.de>
10791
10792         * tree-vrp.c (extract_range_from_assert): CSE calls to
10793         compare_values where possible.
10794         (extract_range_from_unary_expr): Likewise.
10795
10796 2007-01-07  Anatoly Sokolov <aesok@post.ru>
10797
10798         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
10799         * config/avr/avr.c (call_insn_operand): Delete function.
10800         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
10801         instead of register number. Use predicates.
10802         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
10803         call_insn_operand): Add.
10804
10805 2007-01-06  Jan Hubicka  <jh@suse.cz>
10806
10807         * tree-pass.h (pass_build_cgraph_edges): Declare.
10808         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
10809         (visited_nodes): Remove.
10810         (cgraph_create_edges): Move to cgraphbuild.c; rename to
10811         build_cgrpah_edges; make visited_nodes local.
10812         (cgraph_process_new_functions): DO not call initialize_inline_failed.
10813         (record_references_in_initializer): Move to cgraphbuild.c
10814         (initialize_inline_failed, rebuild_cgraph_edges,
10815         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
10816         (verify_cgraph_node): Make visited_nodes local.
10817         (cgraph_analyze_function): Do not call cgraph_create_edges and
10818         initialize_inline_failed.
10819         (cgraph_expand_function): Do not call cgraph_lower_function;
10820         assert that function is already lowered.
10821         * Makefile.in (cgraphbuild.o): New.
10822         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
10823         at the end of lowering passes.
10824
10825 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
10826
10827         * ifcvt.c (cond_move_convert_if_block): New function, code
10828         factored out from...
10829         (cond_move_process_if_block): ...here.  Call the new function
10830         on the THEN and ELSE blocks.
10831         (merge_if_block): Do not copy global_live_at_end, merge_blocks
10832         already takes care of this.
10833
10834 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10835
10836         PR c/19978
10837         * tree.h (TREE_OVERFLOW_P): New.
10838         * c-typeck.c (parser_build_unary_op): Warn only if result
10839         overflowed and operands did not.
10840         (parser_build_binary_op): Likewise.
10841         (convert_for_assignment): Remove redundant overflow_warning.
10842         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
10843
10844 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10845
10846         * c-typeck.c (store_init_value): Split over two lines to follow
10847         the GNU coding style.
10848
10849 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
10850
10851         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
10852         __GXX_EXPERIMENTAL_CXX0X__.
10853         * doc/cpp.texi: Same.
10854
10855 2007-01-05  Richard Guenther  <rguenther@suse.de>
10856
10857         PR middle-end/27826
10858         * tree.c (get_narrower): Do not construct COMPONENT_REFs
10859         with mismatched types.  Instead explicitly build a
10860         conversion NOP_EXPR.
10861
10862 2007-01-05  Ian Lance Taylor  <iant@google.com>
10863
10864         * c-common.c (decl_with_nonnull_addr_p): New function.
10865         (c_common_truthvalue_conversion): Call it.
10866         * c-typeck.c (build_binary_op): Likewise.
10867         * c-common.h (decl_with_nonnull_addr_p): Declare.
10868
10869 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
10870
10871         PR c/30360
10872         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
10873         denom against 0.0.
10874
10875 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
10876
10877         * doc/install.texi (Final install): Document the fact that
10878         the GNAT runtime should not be stripped.
10879
10880 2007-01-04  Jan Hubicka  <jh@suse.cz>
10881
10882         * tree-inline.c (fold_marked_statements): Update operand caches
10883         and EH after folding
10884
10885 2007-01-04  Ian Lance Taylor  <iant@google.com>
10886
10887         * c-common.c (check_function_nonnull): Whitespace fix.
10888
10889 2007-01-04  Jan Hubicka  <jh@suse.cz>
10890
10891         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
10892         comitted older version of patch.
10893         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
10894         function, celanup cfg and collect garbage.
10895
10896 2007-01-04  Mike Stump  <mrs@apple.com>
10897
10898         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
10899         (clean): Likewise.
10900
10901 2007-01-04  Eric Christopher  <echristo@apple.com>
10902
10903         * libgcc2.c (__bswapsi2): Use SItype.
10904         (__bswapdi2): Use DItype.
10905         * libgcc2.h: Update for above.
10906
10907 2007-01-04  Paul Brook  <paul@codesourcery.com>
10908
10909         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
10910         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
10911         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
10912         umulsidi3, umulsidi3adddi, smulsi3_highpart,
10913         umulsi3_highpart): Make conditional on !arm_arch6.
10914         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
10915         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
10916         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
10917         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
10918         umulsi3_highpart_v6): New insns.
10919
10920 2007-01-04  Roger Sayle  <roger@eyesopen.com>
10921
10922         * fold-const.c (fold_convert): When casting an expression to void,
10923         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
10924         have a type.  Instead of attempting to build a NOP_EXPR, return
10925         these "special" trees directly.
10926
10927 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
10928
10929         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
10930         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
10931         rs6000_cost->fp not 0 as adjustment for outer NEG.
10932
10933 2007-01-04  Jan Hubicka  <jh@suse.cz>
10934
10935         * cgraph.c (cgraph_release_function_body): New function.
10936         (cgraph_remove_node): Use it.
10937         * cgraph.h (cgraph_release_function_body): Declare.
10938         * cgraphunit.c (cgraph_expand_function): Use it.
10939         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
10940         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
10941         is initialized and while compilation of other function is running.
10942         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
10943         statement CFG annotations from here to ...
10944         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
10945
10946 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
10947
10948         * cfgloop.h (enum li_flags): Make the constants powers of two.
10949
10950 2007-01-04  Jan Hubicka  <jh@suse.cz>
10951
10952         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
10953         set.
10954         (fold_marked_statements): New function.
10955         (optimize_inline_calls, tree_function_versioning): Fold new statements.
10956         * tree-inline.h (copy_body_data): Add statements_to_fold.
10957
10958 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
10959
10960         * config.gcc: Mention libgcc/config.host.
10961         * Makefile.in: Update comments mentioning libgcc.
10962         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
10963         (all.cross, start.encap, rest.encap, rest.cross): Update
10964         dependencies for libgcc move.
10965         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
10966         (clean-target, clean-target-libgcc): Delete.
10967         (srcdirify, GCC_EXTRA_PARTS): New macros.
10968         (libgcc-support, libgcc.mvars): New rules.
10969         (distclean): Remove mention of mklibgcc.
10970         (install): Don't reference INSTALL_LIBGCC.
10971         (install-common): Don't reference EXTRA_PARTS.
10972         (install-libgcc, install-multilib): Delete rules.
10973         * mklibgcc.in: Delete file.
10974         * doc/configfiles.texi: Don't mention mklibgcc.
10975
10976         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
10977         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
10978         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
10979         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
10980         (mklibgcc, ldblspecs): Likewise.
10981
10982         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
10983         (posixpre.def): Use $(T).
10984         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
10985         (SHLIB_SRC, SHLIB_INSTALL): Delete.
10986         (SHLIB_LINK): Make dummy.
10987         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
10988
10989         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
10990
10991         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
10992         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
10993         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
10994         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
10995
10996         * configure.ac (all_outputs): Remove mklibgcc.
10997         * configure: Regenerated.
10998
10999 2007-01-03  Josh Conner  <jconner@apple.com>
11000
11001         PR middle-end/29683
11002         * calls.c (compute_argument_addresses): Set stack and stack_slot
11003         for partial args, too.
11004         (store_one_arg): Use locate.size.constant for the size when
11005         generating a save_area.
11006
11007 2007-01-03  Robert Kennedy <jimbob@google.com>
11008
11009         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
11010         whose definitions are deleted due to basic block merging.
11011
11012 2007-01-03  Paul Brook  <paul@codesourcery.com>
11013
11014         PR target/16634
11015         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
11016         functions.
11017         (use_return_insn): Return 0 for Thumb interrupt functions.
11018         (print_multi_reg): Add rfe argument for IRQ returns.
11019         (arm_output_epilogue): Pop interrupt return address directly into PC.
11020         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
11021
11022 2007-01-03  Paul Brook  <paul@codesourcery.com>
11023
11024         Merge from sourcerygxx-4_1.
11025         * config/arm/thumb2.md: New file.
11026         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
11027         Thumb-2.
11028         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
11029         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
11030         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
11031         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
11032         tables.
11033         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
11034         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
11035         comptibility.
11036         * config/arm/ieee754-sf.S: Ditto.
11037         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
11038         (thumb1_base_register_rtx_p): ... to this.
11039         (thumb_index_register_rtx_p): Rename...
11040         (thumb1_index_register_rtx_p): ... to this.
11041         (thumb_output_function_prologue): Rename...
11042         (thumb1_output_function_prologue): ... to this.
11043         (thumb_legitimate_address_p): Rename...
11044         (thumb1_legitimate_address_p): ... to this.
11045         (thumb_rtx_costs): Rename...
11046         (thumb1_rtx_costs): ... to this.
11047         (thumb_compute_save_reg_mask): Rename...
11048         (thumb1_compute_save_reg_mask): ... to this.
11049         (thumb_final_prescan_insn): Rename...
11050         (thumb1_final_prescan_insn): ... to this.
11051         (thumb_expand_epilogue): Rename...
11052         (thumb1_expand_epilogue): ... to this.
11053         (arm_unwind_emit_stm): Rename...
11054         (arm_unwind_emit_sequence): ... to this.
11055         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
11056         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
11057         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
11058         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
11059         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
11060         thumb2_output_casesi): New functions.
11061         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
11062         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
11063         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
11064         THUMB2_WORK_REGS): Define.
11065         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
11066         arm_condexec_mask, arm_condexec_masklen)): New variables.
11067         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
11068         (arm_override_options): Check new CPU capabilities.
11069         Set new architecture flag variables.
11070         (arm_isr_value): Handle v7m interrupt functions.
11071         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
11072         Thumb-2.
11073         (const_ok_for_arm): Handle Thumb-2 constants.
11074         (arm_gen_constant): Ditto.  Use movw when available.
11075         (arm_function_ok_for_sibcall): Return false for v7m interrupt
11076         functions.
11077         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
11078         (thumb_find_work_register, arm_load_pic_register,
11079         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
11080         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
11081         print_multi_reg, output_mov_long_double_fpa_from_arm,
11082         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
11083         output_mov_double_fpa_from_arm, output_move_double,
11084         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
11085         output_return_instruction, arm_output_function_prologue,
11086         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
11087         arm_output_mi_thunk, thumb_set_return_address): Ditto.
11088         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
11089         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
11090         (arithmetic_instr, shift_op): Use arm_shift_nmem.
11091         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
11092         '!' and 'L'.
11093         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
11094         (thumb_expand_prologue): Use thumb_set_frame_pointer.
11095         (arm_file_start): Output directive for unified syntax.
11096         (arm_unwind_emit_set): Handle stack alignment instruction.
11097         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
11098         Add v6t2, v7, v7a, v7r and v7m.
11099         (RETLDM): Add Thumb-2 code.
11100         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
11101         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
11102         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
11103         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
11104         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
11105         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
11106         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
11107         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
11108         ADJUST_INSN_LENGTH): Define.
11109         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
11110         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
11111         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
11112         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
11113         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
11114         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
11115         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
11116         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
11117         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
11118         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
11119         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
11120         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
11121         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
11122         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
11123         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
11124         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
11125         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
11126         cortex-m3.
11127         * config/arm/arm-tune.md: Regenerate.
11128         * config/arm/arm-protos.h: Update prototypes.
11129         * config/arm/vfp.md: Enable patterns for Thumb-2.
11130         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
11131         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
11132         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
11133         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
11134         * config/arm/libunwind.S: Add Thumb-2 code.
11135         * config/arm/constraints.md: Update include Thumb-2.
11136         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
11137         * config/arm/ieee754-df.S: Ditto.
11138         * config/arm/bpabi.S: Ditto.
11139         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
11140         * config/arm/predicates.md (low_register_operand,
11141         low_reg_or_int_operand, thumb_16bit_operator): New.
11142         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
11143         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
11144         * config/arm/t-arm-elf: Add armv7 multilib.
11145         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
11146         Include thumb2.md.
11147         (UNSPEC_STACK_ALIGN, ce_count): New.
11148         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
11149         arm_zero_extendsidi2, arm_zero_extendqidi2): New
11150         insns/expanders.
11151         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
11152         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
11153         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
11154         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
11155         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
11156         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
11157         insns.
11158         * doc/extend.texi: Document ARMv7-M interrupt functions.
11159         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
11160
11161 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
11162
11163         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
11164         (struct _Unwind_Context): Rename args_size to flags, remove
11165         signal_frame field, add a new args_size field and version field.
11166         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
11167         _Unwind_IsExtendedContext): New inline functions.
11168         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
11169         Assume by_value array is only present if _Unwind_IsExtendedContext.
11170         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
11171         _Unwind_IsSignalFrame.
11172         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
11173         (uw_update_context_1): Use _Unwind_SetSignalFrame.
11174         (uw_init_context_1): Initialize context->flags to
11175         EXTENDED_CONTEXT_BIT.
11176         * config/rs6000/linux-unwind.h (frob_update_context): Use
11177         _Unwind_SetSignalFrame.
11178
11179 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11180
11181         PR middle-end/30353
11182         * gimplify.c (gimplify_modify_expr_complex_part): Move below
11183         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
11184         the value.
11185
11186 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
11187
11188         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
11189         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
11190         RET, AT_SP): Remove.
11191         * config/i386/i386.md (*sse_prologue_save_insn): Use return
11192         instead of RET.
11193
11194         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
11195         * cfgbuild.c (find_basic_blocks): Likewise.
11196         * cfgrtl.c (rtl_create_basic_block): Likewise.
11197         * function.c (temp_slots_at_level): Likewise.
11198         * reg-stack.c (stack_regs_mentioned): Likewise.
11199         * regclass.c (allocate_reg_info): Likewise.
11200         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
11201         set_bb_for_stmt, move_block_to_fn): Likewise.
11202         * tree-complex.c (tree_lower_complex): Likewise.
11203         * vec.h (VEC_safe_grow_cleared): New.
11204
11205         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
11206
11207 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
11208
11209         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
11210         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
11211         to loop_version.
11212         * cfgloopmanip.c (scale_loop_frequencies): Export.
11213         (loopify): Scale the frequencies by prescribed coefficients.
11214         (set_zero_probability): New function.
11215         (duplicate_loop_to_header_edge): Improve updating of frequencies.
11216         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
11217         and frequencies according to arguments.
11218         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
11219         correctly.
11220         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
11221         * modulo-sched.c (sms_schedule): Set probabilities for entering
11222         versioned loop correctly.
11223         * tree-vect-transform.c (vect_transform_loop): Ditto.
11224         * cfgloop.h (loopify, loop_version): Declaration changed.
11225         (scale_loop_frequencies): Declared.
11226
11227 2007-01-02  Jan Hubicka  <jh@suse.cz>
11228
11229         * cgraph.c: Include tree-flow.h
11230         (cgraph_add_new-function): Handle IPA_SSA mode; execute
11231         early_local_passes.
11232         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
11233         * tree-pass.h (pass_all_early_optimizations): Declare.
11234         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
11235         early_local_passes.
11236         (cgraph_analyze_function): Do early_local_passes.
11237         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
11238         Do not add referenced vars.
11239         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
11240         SSA form.
11241         (gate_all_early_local_passes): New gate.
11242         (pass_early_local_passes): Use new gate.
11243         (execute_early_local_optimizations): New functions.
11244         (gate_all_early_optimizations): New gate.
11245         (pass_all_early_optimizations): New pass.
11246         (execute_free_datastructures): Free SSA only when initialized.
11247         (gate_init_datastructures): Init only when optimizing.
11248         (tree_lowering_passes): Do early local passes when called late.
11249         * tree-profile.c (do_tree_profiling): Don't profile functions added
11250         late.
11251         (do_early_tree_profiling, pass_early_tree_profile): Kill.
11252         * tree-cfg.c (update_modified_stmts): Do not update when operands are
11253         not active.
11254         * passes.c (init_optimizations_passes): Reorder so we go into SSA
11255         during early_local_passes.
11256         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
11257
11258
11259 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
11260
11261         * Makefile.in: Update copyright year.
11262
11263 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
11264
11265         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
11266         in $(lang_checks) and check-consistency targets.
11267
11268 2007-01-02  Jan Hubicka  <jh@suse.cz>
11269
11270         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
11271         Do not add referenced vars.
11272         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
11273         are not active.
11274         * passes.c (init_optimization_passes): Put mudflap_2 after
11275         free_datastructures.
11276
11277 2007-01-02  Jan Hubicka  <jh@suse.cz>
11278
11279         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
11280         Set NOTHROW flag on call statements proved to be nothrow.
11281         Update statement of local calls so new pure/const functions are
11282         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
11283         goto receivers.
11284         (tree_rest_of_compilation): Register hooks and initialize bitmap
11285         early. Do not set after_inlining flag.
11286
11287 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
11288
11289         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
11290         HOST_BITS_PER_LONGLONG
11291
11292 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
11293
11294         PR c/19977
11295         * c-typeck.c (store_init_value): Don't emit pedantic overflow
11296         warning for non-static initializers.
11297
11298 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
11299
11300         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
11301         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
11302         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
11303         Always use set_unique_reg_note to add REG_EQUAL notes.
11304
11305 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
11306
11307         Revert:
11308         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
11309
11310         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
11311         * cfgbuild.c (find_basic_blocks): Likewise.
11312         * cfgrtl.c (rtl_create_basic_block): Likewise.
11313         * function.c (temp_slots_at_level): Likewise.
11314         * reg-stack.c (stack_regs_mentioned): Likewise.
11315         * regclass.c (allocate_reg_info): Likewise.
11316         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
11317         set_bb_for_stmt, move_block_to_fn): Likewise.
11318         * tree-complex.c (tree_lower_complex): Likewise.
11319         * vec.h (VEC_safe_grow_cleared): New.
11320
11321 2007-01-02  Ian Lance Taylor  <iant@google.com>
11322
11323         * c-common.c (c_common_truthvalue_conversion): When warning about
11324         using an assignment as a truth value, set TREE_NO_WARNING.
11325
11326 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11327
11328         PR middle-end/7651
11329         * c.opt (Wold-style-declaration): New.
11330         * doc/invoke.texi (C-only Warning Options): New.
11331         (Wold-style-declaration): Document it.
11332         (Wextra): Enabled by -Wextra.
11333         * c-opts.c (c_common_post_options): Enabled by -Wextra.
11334         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
11335         -Wold-style-declaration.
11336
11337 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
11338
11339         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
11340         * cfgbuild.c (find_basic_blocks): Likewise.
11341         * cfgrtl.c (rtl_create_basic_block): Likewise.
11342         * function.c (temp_slots_at_level): Likewise.
11343         * reg-stack.c (stack_regs_mentioned): Likewise.
11344         * regclass.c (allocate_reg_info): Likewise.
11345         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
11346         set_bb_for_stmt, move_block_to_fn): Likewise.
11347         * tree-complex.c (tree_lower_complex): Likewise.
11348         * vec.h (VEC_safe_grow_cleared): New.
11349
11350 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
11351
11352         * c-common.c (c_common_nodes_and_builtins): Since variants of
11353         void_type_node get built before it is given a name, we need to
11354         give those variants the name, too.
11355         (complete_array_type): We need to work with the canonical main
11356         type of the array, from which we will build the qualified version.
11357         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
11358         * print-tree.c (print_node): Display canonical type information
11359         for each type.
11360         * stor-layout.c (layout_type): When we don't know the
11361         alignment of a type for which we're building an array, we end up
11362         guessing wrong, so make the type require structural equality.
11363         * tree.c (make_node_stat): When we build a new type, it is its
11364         own canonical type.
11365         (build_type_attribute_qual_variant): When building an attribute
11366         variant, its canonical type is the non-attribute variant. However,
11367         if the attributes are target-dependent and they differ, we need to
11368         use structural equality checks for this type.
11369         (build_qualified_type): A qualified type is not equivalent to its
11370         unqualified variant; set the canonical type appropriately.
11371         (build_distinct_type_copy): When building a distinct type from
11372         another type, the new type is its own canonical type.
11373         (build_variant_type_copy): When building a new type variant, we
11374         assume that it is equivalent to the original type.
11375         (build_pointer_type_for_mode): When building a pointer type, also
11376         build a canonical type pointer.
11377         (build_reference_type_for_mode): When building a reference type,
11378         also build a canonical type reference.
11379         (build_index_type): When we can't hash an index type (e.g.,
11380         because its maximum value is negative), the index type requires
11381         structural equality tests.
11382         (build_array_type): Build the canonical form of an array type.
11383         (build_function_type): Function types require structural equality,
11384         because they contain default arguments, attributes, etc.
11385         (build_method_type_directly): Ditto for method types.
11386         (build_offset_type): Build the canonical offset type.
11387         (build_complex_type): Build the canonical vector type.
11388         (make_vector_type): Build the canonical vector type.
11389         * tree.h (TYPE_CANONICAL): New.
11390         (TYPE_STRUCTURAL_EQUALITY_P): New.
11391         (SET_TYPE_STRUCTURAL_EQUALITY): New.
11392         (struct tree_type): Added "canonical" field.
11393         * params.h (VERIFY_CANONICAL_TYPES): New.
11394         * doc/c-tree.texi (TYPE_CANONICAL): Document.
11395         (TYPE_STRUCTURAL_EQUALITY_P): Document.
11396         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
11397         * doc/invoke.texi (verify-canonical-types): Document --param
11398         parameter for verifying canonical types.
11399
11400 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11401
11402         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
11403         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
11404         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
11405         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
11406         tm_file.
11407         * config/rs6000/e500.h: New.
11408         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
11409         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
11410         Remove.
11411         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
11412         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
11413         TARGET_E500_DOUBLE): Remove.
11414         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
11415         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
11416         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
11417         * config/rs6000/rs6000.c (rs6000_override_options): Use
11418         CHECK_E500_OPTIONS.
11419
11420 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11421
11422         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
11423         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
11424         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
11425         rs6000_emit_cmove): Don't check TARGET_E500.
11426         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
11427         sordered): Don't check TARGET_E500.
11428
11429 2007-01-01  Eric Christopher  <echristo@apple.com>
11430
11431         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
11432         HARD_REGISTER_NUM_P.
11433
11434 2007-01-01  Roger Sayle  <roger@eyesopen.com>
11435
11436         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
11437         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
11438         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
11439         eq/ne Y".
11440
11441 2007-01-01  Mike Stump  <mrs@apple.com>
11442
11443         * configure.ac: Remove support for building with Apple's gcc-3.1.
11444
11445 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
11446
11447         PR middle-end/30311
11448         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
11449         REG is a hard register.  Do not modify REG before calling
11450         subreg_nregs.
11451         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
11452         multiple of the size of YMODE for certain lowpart cases.
11453
11454 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11455
11456         PR middle-end/30253
11457         * gimplify (voidify_wrapper_expr): Update for
11458         GIMPLE_MODIFY_STMT.
11459
11460 2007-01-01  Andreas Schwab  <schwab@suse.de>
11461
11462         PR target/29166
11463         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
11464         save of BR0 in extra_spill_size instead of spill_size.
11465         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
11466         area.
11467         (ia64_expand_epilogue): Restore BR0 from its new location.
11468
11469 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11470
11471         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
11472         Use a temporary variable if the left hand side is not a gimple
11473         register.
11474
11475 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
11476
11477         * gimplify.c (gimplify_return_expr): Make the temporary variable
11478         for the return expression, a gimple register variable.
11479
11480 2007-01-01  Jan Hubicka  <jh@suse.cz>
11481
11482         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
11483         INSN_LIST.
11484
11485 2007-01-01  Mike Stump  <mrs@apple.com>
11486
11487         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
11488         .literal16.
11489         * config/darwin.c (machopic_select_rtx_section): Use
11490         HAVE_GAS_LITERAL16.
11491         (darwin_mergeable_constant_section): Likewise.
11492         * configure: Regenerate.
11493         * config.in: Regenerate.
11494
11495 2007-01-01  Jan Hubicka  <jh@suse.cz>
11496             Andrew Pinski  <pinskia@gmail.com>
11497
11498         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
11499         before starting IPA passes.