OSDN Git Service

* config/bfin/bfin-protos.h (enum bfin_cpu): Add
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
2
3         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
4         argument of type bool.
5         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
6         argument. Safely select temporary P register according to it.
7         (do_link): Change call site of add_to_reg accordingly.
8         (do_unlink): Add epilogue_p as a fourth argument and pass it
9         to add_to_reg.
10         (expand_interrupt_handler_epilogue): Change call of do_unlink
11         accordingly.
12         (bfin_expand_prologue): Add a third argument sibcall_p.
13         * config/bfin/bfin.md (epilogue): Change call of
14         bfin_expand_epilogue accordingly.
15         (sibcall_epilogue): Likewise.
16         (eh_return_internal): Likewise.
17                 
18         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
19         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
20         * config/bfin/bfin.c (bfin_handle_option): Handle
21         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
22         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
23         Support bf534, bf536 and bf561.
24         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
25
26 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
27
28         PR target/31854
29         * config/i386/i386.c (ix86_function_regparm): Process local
30         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
31         
32 2007-05-07  Mike Stump  <mrs@apple.com>
33
34         * doc/invoke.texi (Warning Options): Document that -Wempty-body
35         also checks for and while statements in C++.
36
37 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
38
39         * gcc.c (at_file_supplied): New variable.
40         (main): Set it if we expanded argv.
41         (do_spec_1): Pass an @-file to the linker if we were called with
42         an @-file argument and HAVE_GNU_LD.
43         * collect2.c (at_file_supplied): New variable.
44         (response_file): New variable.
45         (collect_exit): Unlink response_file if necessary.
46         (handler): Likewise.
47         (do_wait): Likewise.
48         (main): Set at_file_supplied if we expanded argv.
49         (collect_execute): Pass an @-file to subprocesses if we were called
50         with an @-file argument.
51         * configure.ac: Add define for HAVE_GNU_LD.
52         * configure: Regenerate.
53         * config.in: Regenerate.
54
55 2007-05-07   Naveen.H.S  <naveen.hs@kpitcummins.com>
56
57         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
58         operand to HI mode.
59         (mulsi3): New.
60         (divsi3): New.
61         (udivsi3): New.
62
63 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
64
65         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
66         (TARGET_ENCODE_SECTION_INFO): Re-define.
67         (m32c_encode_section_info): New
68         (function_vector_handler): New
69         (current_function_special_page_vector): New
70         (m32c_special_page_vector_p): New.
71         * config/m32c/m32c-protos.h (m32c_special_page_vector_p): 
72         Prototype.
73         * config/m32c/jump.md: Added instruction JSRS for functions 
74         with attribute "function_vector".
75         * doc/extend.texi (function_vector): Added description 
76         for M16C, M32C targets.
77
78 2007-05-07  DJ Delorie  <dj@redhat.com>
79
80         PR 31794
81         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
82         ashrpsi3, lshrpsi3): Update shift count constraint.
83
84 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
85             Nathan Froyd  <froydnj@codesourcery.com>
86
87         PR 22133
88         * c-incpath.c (add_path): Strip trailing path separators.
89
90 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
91
92         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
93         Free dominance info before purging EH edges.
94         (eliminate_degenerate_phis): Likewise.
95         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
96
97 2007-05-07  Jan Hubicka  <jh@suse.cz>
98
99         * gimplify.c (gimplify_expr): Do not crash when folding
100         (void *)(int)&a + 4.
101
102 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
103
104         PR driver/31694
105         * c-opts.c (lang_fortran): Make it non static.
106         * c-common.h (lang_fortran): New prototype.
107         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
108         -lang-fortran option was passed by the driver.
109
110 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
111
112         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
113         of ASSERT_CHECKING.  Tweak message.
114
115 2007-05-06  Revital Eres  <eres@il.ibm.com>
116
117         PR 30957
118         * loop-unroll.c (insert_var_expansion_initialization):
119         Initialize the expansions with -zero instead of +zero.
120
121 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
122
123         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
124         into pic and non-pic versions. Mark r19 as used for 
125         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used 
126         for tgd_load, tld_load and tie_load .
127         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
128         version of tgd_load, tld_load and tie_load depending on the 
129         value of flag_pic.
130
131 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
132             Jakub Jelinek  <jakub@redhat.com>
133
134         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
135         (__do_global_dtors_aux): Use more paranoid loop to run
136         destructors if HIDDEN_DTOR_LIST_END.
137         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
138
139 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
140
141         * varasm.c (align_variable): Don't increase alignment for
142         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
143         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
144
145 2007-05-04  Josh Conner  <jconner@apple.com>
146
147         * basic-block.h (cdi_direction): Assign values to all enumeration
148         constants.
149         (dom_computed): Remove.
150         (dom_info_state): New.
151         (set_dom_info_availability): New.
152         * tree-ssa-loop-im.c (determine_invariantness): Initialize
153         walk_data.dom_direction.
154         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
155         instead of dom_computed[].
156         (split_edge): Likewise.
157         (create_basic_block): Likewise.
158         (merge_blocks): Likewise.
159         * ifcvt.c (find_if_header): Likewise.
160         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
161         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
162         * tree-ssa.c (verify_ssa): Likewise.
163         * tree-cfg.c (tree_verify_flow_info): Likewise.
164         (remove_edge_and_dominated_blocks): Likewise.
165         * dominance.c (dom_computed): Make static.
166         (calc_dfs_tree_nonrec): Change third param to a bool.
167         (calc_dfs_tree): Change second param to a bool.
168         (calc_idioms): Change second param to a bool.  Use
169         dom_convert_dir_to_idx.
170         (init_dom_info): Validate dir before using.
171         (dom_convert_dir_to_idx): New.
172         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
173         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
174         (free_dominance_info): Use dom_convert_dir_to_idx.
175         (get_immediate_dominator): Likewise.
176         (set_immediate_dominator): Likewise.
177         (get_dominated_by): Likewise.
178         (redirect_immediate_dominators): Likewise.
179         (nearest_common_denominator): Likewise.
180         (dominated_by_p): Likewise.
181         (bb_dom_dfs_in): Likewise.
182         (bb_dom_dfs_out): Likewise.
183         (recount_dominator): Likewise.
184         (iterate_fix_dominators): Likewise.
185         (add_to_dominance_info): Likewise.
186         (delete_from_dominance_info): Likewise.
187         (first_dom_son): Likewise.
188         (next_dom_son): Likewise.
189         (dom_info_available_p): Likewise.
190         (dom_info_state): New.
191         (set_dom_info_availability): New.
192
193 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
194
195         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
196         Expander removed.
197         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
198
199 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
200         
201         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
202         (subdi3, subdi_carry): Delete.
203         
204 2007-05-04  Jan Hubicka  <jh@suse.cz>
205             Richard Guenther  <rguenther@suse.de>
206
207         * opts.c (decode_options): Do not fiddle with inlining
208         parameters in case of optimizing for size.
209         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
210         for size do nothing.
211         (cgraph_decide_inlining_of_small_function): When optimizing for
212         size never inline functions increasing caller size.
213         (cgraph_early_inlining): Inline for size when optimizing for size.
214
215 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
216
217         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
218         logical operations piecewise.
219         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
220         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
221         subdi_sesidi_di): Delete.
222         (add_with_carry): Produce carry in CC instead of a DREG to shorten
223         the generated sequence.  Allow three-reg add in constraints.  Rewrite
224         the rtl expression for carry to avoid zero_extend of a constant.
225         (sub_with_carry): New pattern.
226         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
227         different sequence not involving jumps.
228         (notbi): Now a named pattern.
229
230 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
231
232         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
233         Add the note about a significant loss of accuracy of some
234         mathematical routines when these options are used.
235
236 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
237
238         * haifa-sched.c (rtx_vec_t): New typedef.
239         (contributes_to_priority_p): Extract piece of priority () into new
240         static function.
241         (priority): Use the function.  Add assertion.
242         (rank_for_schedule, set_priorities): Add assertion to check that
243         insn's priority is initialized.
244         (clear_priorities, calc_priorities): Change signature.  Make it update
245         all relevant insns.  Update all callers ('add_to_speculative_block ()'
246         and 'create_block_check_twin ()').
247         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
248         Add new field 'priority_status'.
249         (INSN_PRIORITY_STATUS): New macro.
250         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
251
252 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
253
254         * sched-ebb.c (debug_ebb_dependencies): New static function.
255         (init_ready_list): Use it.
256
257         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
258         with changed signature and 'debug_rgn_dependencies ()'.
259         (debug_rgn_dependencies): New static function.
260         (init_ready_list): Use it.
261         
262         * sched-int.h (debug_dependencies): Declare.
263
264 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
265
266         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
267
268 2007-05-04  Dirk Mueller  <dmueller@suse.de>
269
270         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
271
272 2007-05-03  Jan Hubicka  <jh@suse.cz>
273
274         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
275         for pointer type in more cases than before.
276
277         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
278
279         * tree-object-size.c (plus_expr_object_size): When operand size is
280         unknown, return unknown.
281
282 2007-05-03  Dirk Mueller  <dmueller@suse.de>
283
284         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
285
286         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
287         options.
288
289         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
290
291 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
292
293         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
294
295 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
296
297         * config/soft-fp/double.h, config/soft-fp/extended.h,
298         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
299         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
300         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
301         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
302         glibc CVS.
303
304 2007-05-03  Ian Lance Taylor  <iant@google.com>
305
306         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
307         MASK_PPC_GFXOPT for 8540 or 8548.
308
309 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
310
311         * tree-vect-transform.c (vect_update_inits_of_drs): Use
312         vect_print_dump_info() to output debug information.
313
314 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
315
316         PR target/31768
317         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
318         operands of size 2 when operand is not MEM_P.
319
320 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
321
322         PR tree-optimization/30565
323         * lambda-code.c (perfect_nestify): Fix updating of dominators.
324
325 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
326
327         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
328         (umulsi3_highpart): Use them.
329         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
330         for final accumulator to D regisster tranfser.
331
332 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
333
334         PR tree-optimization/31699
335         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
336         code.
337         (vect_enhance_data_refs_alignment): Compute peel amount using 
338         TYPE_VECTOR_SUBPARTS instead of vf.     
339         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
340
341 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
342
343         PR bootstrap/31776
344         * system.h: Remove inclusion of double-int.h
345         * tree.h: Include double-int.h
346         * gengtype.c: Likewise
347         * cfgloop.h: Likewise
348         * Makefile.in: Adjust dependencies on double-int.h
349
350 2007-05-02  Eric Christopher  <echristo@apple.com>
351
352         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
353         -shared to -Zdynamiclib.
354
355 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
356
357         PR c++/31663
358         * c-common.c (strip_pointer_or_array_types): New function.
359         * c-common.h (strip_pointer_or_array_types): New function declaration.
360
361 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
362
363         PR tree-optimization/31771
364         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
365
366 2007-05-02  Paul Brook  <paul@codesourcery.com>
367
368         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
369
370 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
371
372         PR middle-end/29715
373         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
374         transformation.
375
376 2007-05-02  Nick Clifton  <nickc@redhat.com>
377
378         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
379
380 2007-05-02  Richard Guenther  <rguenther@suse.de>
381
382         PR tree-optimization/31146
383         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
384         argument, single_use_p.  If we have a single use that is
385         a conversion to the definition rhs type, propagate that rhs.
386         (forward_propagate_addr_expr): Pass single_use_p argument
387         to forward_propagate_addr_expr_1.
388
389 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
390
391         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
392         variable.
393
394 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
395
396         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
397         'AMD Family 10 core'.
398
399 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
400
401         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
402         and athlon64-sse3 as improved versions of k8, opteron and athlon64
403         with SSE3 instruction set support.
404         * doc/invoke.texi: Likewise.
405
406 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
407
408         * config/i386/i386.c (override_options): Tuning 32-byte loop
409         alignment for amdfam10 architecture. Increasing the max loop
410         alignment to 24 bytes.
411
412 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
413
414         * config/m68k/constraints.md: New.
415         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
416         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
417         EXTRA_CONSTRAINT): Remove.
418         * config/m68k/m68k.md: Include constraints.md.
419         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
420
421 2007-05-01  Ian Lance Taylor  <iant@google.com>
422
423         PR tree-optimization/31739
424         * tree-vrp.c (vrp_val_is_max): New static function.
425         (vrp_val_is_min): New static function.
426         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
427         copying the node.
428         (set_value_range): Use vrp_val_is_{max,min}.
429         (extract_range_from_assert): Likewise.
430         (extract_range_from_binary_expr): Likewise.
431         (extract_range_from_unary_expr): Likewise.
432         (dump_value_range, vrp_meet): Likewise.
433         (vrp_visit_phi_node): Likewise.
434         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
435
436 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
437
438         * config/i386/gmon-sol2.c (size_t): New type.
439         (intptr_t): Likewise.
440         (s_textsize): Declare as size_t.
441         (sbrk): Declare.
442         (monstartup): Use size_t for sizes.
443         (_mcount): Save and restore registers.
444         (internal_mcount): Pass 0 as the first argument to monstartup
445         in 64-bit mode.
446         (moncontrol): Convert pointer to appropriately sized integer
447         before passing to profil.
448
449 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
450
451         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
452         __NO_FPRS__, not just if _SOFT_DOUBLE.
453         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
454         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
455         also for E500 double.
456         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
457         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
458         && !TARGET_FPRS).
459
460 2007-05-01  Richard Guenther  <rguenther@suse.de>
461
462         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
463         is NULL.
464
465 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
466
467         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
468
469 2007-05-01  Jan Hubicka  <jh@suse.cz>
470
471         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
472         invariant.
473
474 2007-05-01  Jan Hubicka  <jh@suse.cz>
475
476         * tree.h (maybe_fold_offset_to_component_ref): Remove.
477         (maybe_fold_offset_to_reference): Declare.
478         * fold-const.c (fold_unary): Do not fold
479         (type *)&A into &A->field_of_type_and_offset_0
480         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
481         size is unknown, give up.
482         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
483         offsets.
484         (maybe_fold_offset_to_reference): New.
485         (maybe_fold_stmt_indirect): Use it.
486         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
487         * gimplify.c (gimplify_conversion): Canonicalize conversions to
488         field references.
489         (gimplify_expr): Likewise for plus_expr.
490
491 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
492
493         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
494         bsi_after_labels.  Always insert statements before bsi.
495         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
496         * predict.c (apply_return_prediction): Check for empty blocks.
497         * cfgexpand.c (lab_rtx_for_bb): New variable.
498         (label_rtx_for_bb): Do not create new tree labels.
499         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
500         (tree_expand_cfg): Initialize lab_rtx_for_bb.
501         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
502         creating edges.
503         (label_for_bb): Add field used.
504         (update_eh_label, main_block_label): Mark the label used.
505         (cleanup_dead_labels): Remove unused labels.
506
507 2007-05-01  Richard Guenther  <rguenther@suse.de>
508
509         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
510         if it is not about to be set.
511         (get_value_range): Do not pre-allocate equiv bitmap.
512         (update_value_range): No need to clear equiv field.
513         (add_equivalence): Change prototype to get bitmap pointer.
514         Allocate bitmap here if it is not already.
515         (extract_range_from_assert): Do not allocate bitmap here.
516         Update callers to add_equivalence.
517         (extract_range_from_ssa_name): Likewise.
518         (get_vr_for_comparison): New static helper.
519         (compare_name_with_value): Handle NULL equiv bitmap by
520         peeling the first iteration of the comparison loop.
521         Use get_vr_for_comparison.
522         (compare_names): Handle NULL equiv bitmaps by using fake
523         ones.  Use get_vr_for_comparison.
524
525 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
526
527         * double-int.c (mpz_set_double_int): Moved from
528         tree-ssa-loop-niter.c.
529         (mpz_get_double_int): Likewise; also, add option to wrap
530         out-of-range integers.
531         * double-int.h: New prototypes for above.
532         * tree.c (get_static_type_bounds): Moved from
533         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
534         TYPE_MAX_VALUE if they exist..
535         * tree.h: New prototype for above.
536         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
537         get_type_bounds calls.
538         (mpz_set_double_int): Move to double-int.c.
539         (get_type_bounds): Move to tree.c, rename to
540         get_static_type_bounds.
541         (mpz_to_double_int): Move to double-int.c, rename to
542         mpz_get_double_int.
543
544 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
545
546         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
547         DIV0 exception can fall through to a normal return.
548
549 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
550
551         PR middle-end/22156
552         Temporarily revert:
553         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
554         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
555         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
556         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
557         initialize align to silence bogus warning.
558         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
559         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
560         all_no_warning.
561         (struct sra_walk_fns): Remove use_all parameter from use.
562         (sra_hash_tree): Handle BIT_FIELD_REFs.
563         (sra_elt_hash): Don't hash bitfld blocks.
564         (sra_elt_eq): Skip them in parent compares as well.  Handle
565         BIT_FIELD_REFs.
566         (sra_walk_expr): Don't maintain or pass down use_all_p.
567         (scan_use): Remove use_all parameter.
568         (scalarize_use): Likewise.  Re-expand assignment to
569         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
570         output, and re-scalarize after output.  Don't mark anything
571         for no warning.
572         (scalarize_ldst): Adjust.
573         (scalarize_walk_gimple_modify_statement): Likewise.
574         (build_element_name_1): Handle BIT_FIELD_REFs.
575         (instantiate_element): Don't warn for any element whose parent
576         is used as a whole.
577         (instantiate_missing_elements_1): Return the sra_elt.
578         (canon_type_for_field): New.
579         (try_instantiate_multiple_fields): New.
580         (instantiate_missing_elemnts): Use them.
581         (mark_no_warning): Removed.
582         (generate_one_element_ref): Handle BIT_FIELD_REFs.
583         (REPLDUP, sra_build_elt_assignment): New.
584         (generate_copy_inout): Use them.
585         (generate_element_copy): Likewise.  Handle bitfld differences.
586         (generate_element_zero): Don't recurse for blocks.  Use
587         sra_build_elt_assignment.
588         (generate_one_element_int): Take elt instead of var.  Use
589         sra_build_elt_assignment.
590         (generate_element_init_1): Adjust.
591         (scalarize_use, scalarize_copy): Use REPLDUP.
592         (scalarize_ldst): Move assert before dereference.
593         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
594
595 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
596
597         PR C++/31721
598         * tree.c (reconstruct_complex_type): Reconstruct a reference
599         correctly.
600         Also use the same mode for the pointer as the old pointer type.
601
602 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
603
604         * doc/trouble.texi (Interoperation): Remove note about Ultrix
605         Fortran compiler.
606
607 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
608
609         PR rtl-optimization/31676
610         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
611         (df_refs_record): Call it.
612
613 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
614
615         * rtl.def (SS_ABS): New code.
616         * config/bfin/bfin.c (print_operand): New modifier 'v'.
617         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
618         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
619         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
620         (bfin_init_builtins): Define them.
621         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
622         (bfin_expand_builtin): ... and handle the others here.
623         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
624         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
625         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
626         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
627         operand is only HImode.
628
629 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
630
631         * regclass.c (scan_one_insn): Remove splitting of
632         two address insns.
633
634 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
635             Nigel Stephens  <nigel@mips.com>
636
637         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
638
639 2007-04-28  Jan Hubicka  <jh@suse.cz>
640
641         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
642         insn_locators_alloc instead of insn_locators_initialize;
643         call reset_block_changes.
644         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
645         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
646         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
647         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
648         * config/score/score.c (th_output_mi_thunk): Likewise.
649         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
650         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
651         tolerate uninitialized locator info.
652
653         Re-apply:
654         * function.c (init_function_start): Don't init line number info.
655         (expand_function_end): Update.
656         (reset_block_changes, record_block_change, finalize_block_changes,
657         check_block_change, free_block_changes): Kill.
658         * function.h (reset_block_changes, record_block_change,
659         finalize_block_changes, check_block_change, free_block_changes): Remove
660         prototypes.
661         (struct function): Remove ib_boundaries_block.
662         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
663         Use curr_insn_locator to initialize locator.
664         (emit_line_note): Remove.
665         * cfgexpand.c (expand_gimple_cond_expr): Update.
666         (construct_exit_block): Likewise.
667         (tree_expand_cfg): Initialize/finalize locators.
668         * expr.c (expand_expr_real): Update.
669         * cfglayout.c (line_locators_locs, line_locators_lines,
670         file_locators_locs, file_locators_files): Remove.
671         (set_block_levels): Move to cfgexpand.c.
672         (insn_locators_initialize): Remove.
673         (pass_insn_locators_initialize): Remove.
674         (locations_locators_locs, locations_locators_vals): New static vars.
675         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
676         Likewise.
677         (insn_locators_alloc, insn_locators_finalize,
678         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
679         New functions.
680         (locator_location): New.
681         (locator_line, locator_file): Rewrite.
682         * rtl.h (emit_line_note): Kill.
683         (insn_locators_alloc, insn_locators_finalize,
684         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
685         Declare.
686         * tree-inline.c (initialize_cfun): Do not initialize
687         ib_boundaries_block.
688         * passes.c (pass_insn_locators_initialize): Remove.
689
690 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
691
692         * tree-cfg.c (move_block_to_fn): Release bb from dominance
693         info.  Update last_basic_block correctly.
694
695 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
696
697         PR target/31701
698         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
699         register itself to hold the offset constant.  Tell flow the use
700         of r4 and r5 when they are used.
701
702 2007-04-27  Richard Guenther  <rguenther@suse.de>
703
704         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
705         if we simplified anything.
706         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
707         warnings until we did a simplification and the stmt was not
708         marked as TREE_NO_WARNING.
709
710 2007-04-27  Mike Stump  <mrs@apple.com>
711
712         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
713
714 2007-04-27  Ian Lance Taylor  <iant@google.com>
715
716         PR middle-end/31710
717         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
718         TYPE_MAX_VALUE exist, convert them to the new type.
719
720 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
721
722         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
723         if it claims to be available.
724         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
725         edge is redirected.
726         (perform_tree_ssa_dce): Always free postdominators.
727
728 2007-04-27  Richard Henderson  <rth@redhat.com>
729
730         * config/alpha/predicates.md (aligned_memory_operand): Mark
731         as define_special_predicate.
732         (unaligned_memory_operand, normal_memory_operand): Likewise.
733         (reg_or_unaligned_mem_operand): Remove.
734         (any_memory_operand): Match the documentation and check for
735         non-renumbered pseudos during reload.
736         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
737         alpha_secondary_reload_class, update to new interface, make static.
738         Handle CQImode like HImode.  Remove FP subreg check.
739         (alpha_expand_mov): Use replace_equiv_address.
740         (alpha_expand_mov_nobwx): Use any_memory_operand.
741         (TARGET_SECONDARY_RELOAD): New.
742         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
743         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
744         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
745         * config/alpha/alpha.md: ... here.
746         (RELOAD12, reloadmode): New.
747         (movcqi): New.
748         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
749         Don't handle the aligned case here.
750         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
751         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
752         reload_inhi_help.  Don't expect a scratch register.
753         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
754         reload_outhi_help.
755         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
756
757 2007-04-27  Richard Guenther  <rguenther@suse.de>
758
759         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
760
761 2007-04-27  Richard Guenther  <rguenther@suse.de>
762
763         PR tree-optimization/30965
764         PR tree-optimization/30978
765         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
766         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
767         (find_equivalent_equality_comparison): Likewise.
768         (simplify_cond): Likewise.
769         (get_prop_source_stmt): New helper.
770         (get_prop_dest_stmt): Likewise.
771         (can_propagate_from): Likewise.
772         (remove_prop_source_from_use): Likewise.
773         (combine_cond_expr_cond): Likewise.
774         (forward_propagate_comparison): New function.
775         (forward_propagate_into_cond): Rewrite to use fold for
776         tree combining.
777         (tree_ssa_forward_propagate_single_use_vars): Call
778         forward_propagate_comparison to propagate comparisons.
779
780 2007-04-27  Richard Guenther  <rguenther@suse.de>
781
782         PR tree-optimization/31715
783         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
784         sure to do computation on the offset in an appropriate
785         signed type.
786
787 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
788
789         * reload.h (elimination_target_reg_p): Declare.
790         * reload.c (find_reloads): Don't apply the reg_rtx move
791         optimization if the SET_DEST satisfies elimination_target_reg_p.
792         * reload1.c (elimination_target_reg_p): New function.
793         (gen_reload): In the move/add2 fallback, make sure that op0
794         does not overlap the destination register.
795
796 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
797
798         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
799         transform only GIMPLE_MODIFY_STMTs.
800         * tree-complex.c (expand_complex_operations_1): Ditto.
801         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
802         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
803         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
804         branches.
805         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
806         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
807         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
808         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
809         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
810         slpeel_add_loop_guard): Ditto.
811         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
812         * lambda-code.c (perfect_nestify): Ditto.
813         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
814         before the first statement.
815         * tree-optimize.c (execute_free_datastructures): Fix comments.
816         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
817         * tree-flow.h (disband_implicit_edges): Declaration removed.
818         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
819         branches.
820         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
821         without gotos.
822         (disband_implicit_edges, has_label_p): Removed.
823         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
824         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
825         branches.
826         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
827         side effects.
828         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
829         also for COND_EXPRs.
830         * cfgexpand.c (label_rtx_for_bb): New function.
831         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
832         Use label_rtx_for_bb to find the labels.
833         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
834         last block.  Detect fallthru edges.
835
836 2007-04-26  Ian Lance Taylor  <iant@google.com>
837
838         PR target/28675
839         * reload.c (find_reloads_subreg_address): If the address was valid
840         in the original mode but not in the new mode, reload the whole
841         address.
842
843 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
844
845         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
846         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
847         (cleanup_control_expr_graph): Do not invalidate dominance info.
848         Record altered blocks.
849         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
850         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
851         cleanup_tree_cfg_bb): New functions.
852         (remove_forwarder_block): Do not maintain the worklist of blocks.
853         Record altered blocks.
854         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
855         not over whole cfg.
856         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
857         delete_unreachable_blocks if dominators are not available.
858         * tree-inline.c (optimize_inline_calls): Free dominance information
859         earlier.
860         * tree-flow.h (remove_edge_and_dominated_blocks,
861         cfgcleanup_altered_bbs): Altered.
862         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
863         blocks.
864         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
865         functions.
866         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
867         do not invalidate dominators.
868
869 2007-04-26  Anatoly Sokolov <aesok@post.ru>
870
871         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
872         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
873         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
874         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
875
876 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
877
878         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
879
880 2007-04-26  Richard Guenther  <rguenther@suse.de>
881
882         PR tree-optimization/31703
883         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
884         the right type for the target of the bittest.
885
886 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
887
888         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
889         ix86_sol10_return_in_memory.
890
891 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
892
893         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
894         variables.
895
896 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
897
898         PR c++/31598
899         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
900
901         PR tree-optimization/30558
902         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
903         clear this_state.prev_try.
904
905 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
906             Mark Mitchell  <mark@codesourcery.com>
907
908         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
909         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
910         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
911
912 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
913
914         PR driver/31107
915         * doc/invoke.texi (%:print-asm-header): Document.
916         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
917         and -ftarget-help.
918         (static_spec_functions): Add print-asm-header.
919         (main): Print a banner before the --target-help linker options.
920         (print_asm_header_spec_function): New function.
921
922 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
923
924         PR target/31403
925         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
926         (movsf_ie): Likewise.
927
928 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
929
930         * doc/extend.texi ([Type Traits]): Adjust per N2255.
931
932 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
933
934         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
935         for divide-by-zero.
936         (__umodsi3, __modsi3): Likewise.
937
938 2007-04-25  Dirk Mueller  <dmueller@suse.de>
939
940         * c-typeck.c (build_compound_expr): Annotate warning()
941         call with OPT_Wunused_value.
942         * tree-ssa.c (warn_uninit): Annotate warning with
943         OPT_Wunintialized.
944         * c-common.c (handle_sentinel_attribute): Annotate warning
945         call with OPT_Wattributes.
946
947 2007-04-25  Thiemo Seufer  <ths@mips.com>
948
949         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
950         (mips16): Fix typo.
951         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
952         on to the assembler.  Improve handling of -mno-mips16.  Add handling
953         of -mno-mips3d, -mno-dsp, -mno-dspr2.
954         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
955         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
956         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
957
958 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
959
960         PR target/31680
961         * config/i386/winnt.c (i386_pe_file_end): Strip only
962         USER_LABEL_PREFIX when writing export name.
963
964 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
965
966         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
967         sh/elf.h, vx-common.h and vxworks.h.
968         * config/sh/sh.h: Include config/vxworks-dummy.h.
969         (SUBTARGET_OVERRIDE_OPTIONS): Define.
970         (OVERRIDE_OPTIONS): Use it.
971         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
972         (vxworks_picreg): New pattern.
973         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
974         VXWORKS_OS_CPP_BUILTINS.
975         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
976         to their VXWORKS_* equivalents.
977         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
978         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
979         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
980         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
981         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
982         -mrtp/-fPIC multilibs.
983         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
984         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
985         (MULTILIB_OSDIRNAMES): Delete.
986
987 2007-04-25  Anatoly Sokolov <aesok@post.ru>
988
989         PR target/18989
990         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
991
992 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
993
994         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
995         rounding mode to be specified by the caller.
996         (real_to_mpfr) Likewise.
997         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
998         include new arguments.
999         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
1000
1001 2007-04-24  Ian Lance Taylor  <iant@google.com>
1002
1003         PR tree-optimization/31605
1004         * tree-vrp.c (set_value_range): Check that min and max are not
1005         both overflow infinities.
1006         (set_value_range_to_value): New static function.
1007         (extract_range_from_binary_expr): Call set_value_range_to_value.
1008         (extract_range_from_cond_expr): Likewise.
1009         (extract_range_from_expr): Likewise.
1010         (extract_range_from_unary_expr): Likewise.  Don't create a range
1011         which overflows on both sides.
1012         (vrp_meet): Check for a useless range.
1013         (vrp_visit_phi_node): If we see a constant which looks like an
1014         overflow infinity, turn off the TREE_OVERFLOW flag.
1015
1016 2007-04-24  Ian Lance Taylor  <iant@google.com>
1017
1018         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
1019
1020 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
1021
1022         PR diagnostic/25923
1023         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
1024         diagnostic message is being built.
1025         * tree-pretty-print.c (dump_generic_node): Only write the
1026         formatted text into BUFFER's stream if we are not building a
1027         diagnostic message.
1028         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
1029         dump_generic_node.
1030         * Makefile.in (toplev.o): Depend on tree-pass.h.
1031
1032 2007-04-24  Ian Lance Taylor  <iant@google.com>
1033
1034         PR tree-optimization/31602
1035         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
1036         conditionals in the copied loop header.
1037         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
1038         warnings if TREE_NO_WARNING is set.
1039         * doc/invoke.texi (Warning Options): Clarify that
1040         -Wstrict-overflow does not warn about loops.
1041
1042 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
1043
1044         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
1045         expand on the comment about _Decimal128 arguments and check the
1046         integer result of the modulus operation; for 64-bit ELF ABI, ensure
1047         that _Decimal128 argument uses even/odd register pair.
1048         (function_arg): Ditto.
1049
1050 2007-04-24  Hui-May Chang <hm.chang@apple.com>
1051
1052         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
1053         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
1054
1055 2007-04-24  Richard Guenther  <rguenther@suse.de>
1056             Olga Golovanevsky  <olga@il.ibm.com>
1057
1058         * fold-const.c (multiple_of_p): Check for bottom
1059         to be zero.
1060
1061 2007-04-24  Richard Henderson  <rth@redhat.com>
1062
1063         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
1064         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
1065         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
1066         looking for non-zero bits shifted out.  Avoid a recursive call
1067         when constructing the scalar.
1068         (__floatundisf): Likewise.
1069
1070 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
1071
1072         * dwarf2out.c (field_byte_offset): Move the existing logic
1073         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
1074         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
1075
1076 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
1077
1078         PR target/31641
1079         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
1080         argument of 0 for memset.
1081         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
1082         unsigned shift instead of the signed variant.
1083
1084 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
1085
1086         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
1087         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
1088         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
1089         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
1090         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
1091         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
1092         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
1093         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
1094         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
1095         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
1096         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
1097         "mul<mode>3", "div<mode>3"): Insn definitions added.
1098         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
1099         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
1100         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
1101         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
1102         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
1103         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
1104         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
1105         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
1106         TARGET_FLOAT_FORMAT): Macro definitions removed.
1107         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
1108         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
1109         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
1110         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
1111         (s390_gen_rtx_const_DI): Function removed.
1112         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
1113
1114 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
1115
1116         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
1117         over an external ffs function.
1118
1119 2007-04-24  Chao-ying Fu  <fu@mips.com>
1120             Richard Sandiford  <richard@nildram.co.uk>
1121
1122         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
1123         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
1124         (smadd_widen_optab, umadd_widen_optab): Define.
1125         * optabs.c (init_optabs): Initialize smadd_widen_optab and
1126         umadd_widen_optab.
1127         * genopinit.c (optabs): Fill in smadd_widen_optab and
1128         umadd_widen_optab.
1129         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
1130         and umadd_widen_optab to implement multiply-add sequences.
1131         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
1132         (<u>maddsidi4): ...this.  Extend condition to include
1133         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
1134         of operand 0 to "ka" and use the three-operand form of madd<u>
1135         for TARGET_DSPR2.
1136         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
1137         to define_expands.
1138         * config/mips/constraints.md (ka): New register constraint.
1139
1140 2007-04-24  Jan Hubicka  <j@suse.cz>
1141
1142         Revert:
1143
1144         2007-04-23  Jan Hubicka  <jh@suse.cz>
1145         * function.c (init_function_start): Don't init line number info.
1146         (expand_function_end): Update.
1147         (reset_block_changes, record_block_change, finalize_block_changes,
1148         check_block_change, free_block_changes): Kill.
1149         * function.h (reset_block_changes, record_block_change,
1150         finalize_block_changes, check_block_change, free_block_changes): Remove
1151         prototypes.
1152         (struct function): Remove ib_boundaries_block.
1153         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
1154         Use curr_insn_locator to initialize locator.
1155         (emit_line_note): Remove.
1156         * cfgexpand.c (expand_gimple_cond_expr): Update.
1157         (construct_exit_block): Likewise.
1158         (tree_expand_cfg): Initialize/finalize locators.
1159         * expr.c (expand_expr_real): Update.
1160         * cfglayout.c (line_locators_locs, line_locators_lines,
1161         file_locators_locs, file_locators_files): Remove.
1162         (set_block_levels): Move to cfgexpand.c.
1163         (insn_locators_initialize): Remove.
1164         (pass_insn_locators_initialize): Remove.
1165         (locations_locators_locs, locations_locators_vals): New static vars.
1166         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
1167         Likewise.
1168         (insn_locators_alloc, insn_locators_finalize,
1169         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
1170         New functions.
1171         (locator_location): New.
1172         (locator_line, locator_file): Rewrite.
1173         * rtl.h (emit_line_note): Kill.
1174         (insn_locators_alloc, insn_locators_finalize,
1175         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
1176         Declare.
1177         * tree-inline.c (initialize_cfun): Do not initialize
1178         ib_boundaries_block.
1179         * passes.c (pass_insn_locators_initialize): Remove.
1180
1181 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
1182
1183         * doc/invoke.texi: Removed leading '-' from option index entries.
1184
1185 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
1186
1187         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
1188         Use phi_nodes_ptr.
1189         (create_phi_node): Use set_phi_nodes.
1190         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
1191         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
1192         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
1193         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
1194         (bsi_start, bsi_last): Use bb_stmt_list.
1195         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
1196         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
1197         Traverse the statements using tsi iterator.
1198         * basic-block.h (struct basic_block_def): Fields stmt_list
1199         and phi_nodes moved to ...
1200         (struct tree_bb_info): ... new structure.
1201         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
1202         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
1203         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
1204         (tree_verify_flow_info): Verify that il.tree is not set for
1205         entry and exit block.
1206         (tree_split_block): Use set_bb_stmt_list.
1207
1208 2007-04-23  Mike Stump  <mrs@apple.com>
1209
1210         * config/i386/i386.c (ix86_tune_features
1211         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
1212         nocona and core2.
1213
1214 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
1215
1216         * config/i386/i386.md (prefix_extra): New attribute.
1217         (length): Add prefix_extra.
1218
1219         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
1220         (sse2_movntv2di): Likewise.
1221         (sse2_cvtps2dq): Likewise.
1222         (sse2_cvtpd2pi): Likewise.
1223         (sse2_cvttpd2pi): Likewise.
1224         (*sse2_cvtpd2ps): Likewise.
1225         (*add<mode>3): Likewise.
1226         (sse2_ssadd<mode>3): Likewise.
1227         (sse2_usadd<mode>3): Likewise.
1228         (*sub<mode>3): Likewise.
1229         (sse2_sssub<mode>3): Likewise.
1230         (sse2_ussub<mode>3): Likewise.
1231         (*mulv8hi3): Likewise.
1232         (*smulv8hi3_highpart): Likewise.
1233         (*umulv8hi3_highpart): Likewise.
1234         (sse2_umulv2siv2di3): Likewise.
1235         (sse2_pmaddwd): Likewise.
1236         (ashr<mode>3): Likewise.
1237         (lshr<mode>3): Likewise.
1238         (ashl<mode>3): Likewise.
1239         (sse2_ashlti3): Likewise.
1240         (sse2_lshrti3): Likewise.
1241         (*umaxv16qi3): Likewise.
1242         (*smaxv8hi3): Likewise.
1243         (*uminv16qi3): Likewise.
1244         (*sminv8hi3): Likewise.
1245         (sse2_eq<mode>3): Likewise.
1246         (sse2_gt<mode>3): Likewise.
1247         (*and<mode>3): Likewise.
1248         (sse2_nand<mode>3): Likewise.
1249         (*ior<mode>3): Likewise.
1250         (*xor<mode>3): Likewise.
1251         (sse2_packsswb): Likewise.
1252         (sse2_packssdw): Likewise.
1253         (sse2_packuswb): Likewise.
1254         (sse2_punpckhbw): Likewise.
1255         (sse2_punpcklbw): Likewise.
1256         (sse2_punpckhwd): Likewise.
1257         (sse2_punpcklwd): Likewise.
1258         (sse2_punpckhdq): Likewise.
1259         (sse2_punpckldq): Likewise.
1260         (sse2_punpckhqdq): Likewise.
1261         (sse2_punpcklqdq): Likewise.
1262         (*sse2_pinsrw): Likewise.
1263         (*sse2_pextrw): Likewise.
1264         (sse2_pshufd_1): Likewise.
1265         (sse2_uavgv16qi3): Likewise.
1266         (sse2_uavgv8hi3): Likewise.
1267         (sse2_psadbw): Likewise.
1268         (sse2_pmovmskb): Likewise.
1269         (*sse2_maskmovdqu): Likewise.
1270         (*sse2_maskmovdqu_rex64): Likewise.
1271         (sse4a_extrqi): Likewise.
1272         (sse4a_extrq): Likewise.
1273         (sse3_lddqu): Set prefix_rep.
1274         (sse3_addsubv4sf3): Likewise.
1275         (sse3_haddv4sf3): Likewise.
1276         (sse3_hsubv4sf3): Likewise.
1277         (sse_cvtss2si): Likewise.
1278         (sse_cvtss2si_2): Likewise.
1279         (sse_cvtss2siq): Likewise.
1280         (sse_cvtss2siq_2): Likewise.
1281         (sse_cvttss2si): Likewise.
1282         (sse_cvttss2siq): Likewise.
1283         (sse2_cvttps2dq): Likewise.
1284         (sse3_movshdup): Likewise.
1285         (sse3_movsldup): Likewise.
1286         (sse2_cvtsd2si): Likewise.
1287         (sse2_cvtsd2si_2): Likewise.
1288         (sse2_cvtsd2siq): Likewise.
1289         (sse2_cvtsd2siq_2): Likewise.
1290         (sse2_cvttsd2si): Likewise.
1291         (sse2_cvttsd2siq): Likewise.
1292         (*sse2_cvtpd2dq): Likewise.
1293         (*sse2_cvttpd2dq): Likewise.
1294         (sse2_pshuflw_1): Likewise.
1295         (sse2_pshufhw_1): Likewise.
1296         (sse4a_insertqi): Likewise.
1297         (sse4a_insertq): Likewise.
1298         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
1299         (ssse3_phadddv4si3): Likewise.
1300         (ssse3_phaddswv8hi3): Likewise.
1301         (ssse3_phsubwv8hi3): Likewise.
1302         (ssse3_phsubdv4si3): Likewise.
1303         (ssse3_phsubswv8hi3): Likewise.
1304         (ssse3_pmaddubswv8hi3): Likewise.
1305         (ssse3_pmulhrswv8hi3): Likewise.
1306         (ssse3_pshufbv16qi3): Likewise.
1307         (ssse3_psign<mode>3): Likewise.
1308         (ssse3_palignrti): Likewise.
1309         (abs<mode>2): Likewise.
1310         (ssse3_phaddwv4hi3): Set prefix_extra.
1311         (ssse3_phadddv2si3): Likewise.
1312         (ssse3_phaddswv4hi3): Likewise.
1313         (ssse3_phsubwv4hi3): Likewise.
1314         (ssse3_phsubdv2si3): Likewise.
1315         (ssse3_phsubswv4hi3): Likewise.
1316         (ssse3_pmaddubswv4hi3): Likewise.
1317         (ssse3_pmulhrswv4hi3): Likewise.
1318         (ssse3_pshufbv8qi3): Likewise.
1319         (ssse3_psign<mode>3): Likewise.
1320         (ssse3_palignrdi): Likewise.
1321         (abs<mode>2): Likewise.
1322         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
1323         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
1324         (sse2_pmovmskb): Set mode to SI instead of V2DF.
1325
1326 2007-04-23  Nick Clifton  <nickc@redhat.com>
1327
1328         * params.def: Fix formatting of emacs local variables.
1329
1330 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
1331
1332         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
1333         move if inter-unit move isn't allowed.
1334         Don't split moving the first element of V2DI to DI to inter-unit
1335         move if inter-unit move isn't allowed.
1336
1337 2007-04-23  Richard Guenther  <rguenther@suse.de>
1338
1339         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
1340         and CDI_POST_DOMINATORS separately.
1341
1342 2007-04-23  Nick Clifton  <nickc@redhat.com>
1343
1344         * c.opt (Wformat-contains-nul): Add warning attribute.
1345
1346 2007-04-23  Jan Hubicka  <jh@suse.cz>
1347
1348         * function.c (init_function_start): Don't init line number info.
1349         (expand_function_end): Update.
1350         (reset_block_changes, record_block_change, finalize_block_changes,
1351         check_block_change, free_block_changes): Kill.
1352         * function.h (reset_block_changes, record_block_change,
1353         finalize_block_changes, check_block_change, free_block_changes): Remove
1354         prototypes.
1355         (struct function): Remove ib_boundaries_block.
1356         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
1357         Use curr_insn_locator to initialize locator.
1358         (emit_line_note): Remove.
1359         * cfgexpand.c (expand_gimple_cond_expr): Update.
1360         (construct_exit_block): Likewise.
1361         (tree_expand_cfg): Initialize/finalize locators.
1362         * expr.c (expand_expr_real): Update.
1363         * cfglayout.c (line_locators_locs, line_locators_lines,
1364         file_locators_locs, file_locators_files): Remove.
1365         (set_block_levels): Move to cfgexpand.c.
1366         (insn_locators_initialize): Remove.
1367         (pass_insn_locators_initialize): Remove.
1368         (locations_locators_locs, locations_locators_vals): New static vars.
1369         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
1370         Likewise.
1371         (insn_locators_alloc, insn_locators_finalize,
1372         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
1373         New functions.
1374         (locator_location): New.
1375         (locator_line, locator_file): Rewrite.
1376         * rtl.h (emit_line_note): Kill.
1377         (insn_locators_alloc, insn_locators_finalize,
1378         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
1379         Declare.
1380         * tree-inline.c (initialize_cfun): Do not initialize
1381         ib_boundaries_block.
1382         * passes.c (pass_insn_locators_initialize): Remove.
1383
1384 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1385
1386         PR middle-end/31448
1387         * expr.c (reduce_to_bit_field_precision): Handle
1388         CONST_INT rtx's.
1389
1390 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
1391
1392         PR tree-optimization/24659
1393         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
1394         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
1395         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
1396         * genopinit.c (optabs): Rename vec_pack_mod_optab
1397         to vec_pack_trunc_optab.
1398         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
1399         early for scalar floating point operands for NOP_EXPR.
1400         (vectorizable_type_promotion): Ditto.
1401         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
1402         vec_pack_trunc_optab.
1403         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
1404
1405         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
1406         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
1407         Rename from VEC_PACK_MOD_EXPR.
1408         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
1409         * expr.c (expand_expr_real_1): Ditto.
1410         * tree-inline.c (estimate_num_insns_1): Ditto.
1411         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
1412
1413         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
1414         (vec_unpacks_lo_v4sf): Ditto.
1415         (vec_pack_trunc_v2df): Ditto.
1416         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
1417         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
1418         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
1419
1420         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
1421         vec_pack_mod_v8hi.
1422         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
1423
1424         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
1425         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
1426         packing of floating point operands.
1427         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
1428         represent unpacking of floating point operands.
1429         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
1430         [vec_unpacks_hi]: Ditto.
1431         [vec_unpacks_lo]: Ditto.
1432
1433 2007-04-22  Jan Hubicka  <jh@suse.cz>
1434
1435         * final.c (rest_of_handle_final): Call
1436         targetm.asm_out.constructor/targetm.asm_out.destructor
1437         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
1438         proper priority via decl_*_priority_insert.
1439         * c-common.c (c_expand_body): Likewise.
1440
1441 2007-04-22  Richard Guenther  <rguenther@suse.de>
1442
1443         PR tree-optimization/29789
1444         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
1445         (rewrite_reciprocal): New helper split out from
1446         determine_invariantness_stmt.
1447         (rewrite_bittest): Likewise.
1448         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
1449         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
1450         is not.
1451
1452 2007-04-22  Revital Eres  <eres@il.ibm.com>
1453
1454         * loop-unroll.c (var_to_expand): New field to support also
1455         insns of the form x = something + x.
1456         (analyze_insn_to_expand_var): Use it.
1457         (expand_var_during_unrolling): Likewise.
1458
1459 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
1460
1461         * predict.c: Include pointer-set.h.
1462         (bb_predictions): New variable.
1463         (tree_predicted_by_p, tree_predict_edge,
1464         remove_predictions_associated_with_edge): Use bb_predictions map
1465         instead of bb->predictions.
1466         (clear_bb_predictions, assert_is_empty): New functions.
1467         (combine_predictions_for_bb): Use bb_predictions map.  Call
1468         clear_bb_predictions.
1469         (tree_estimate_probability): Create and free bb_predictions map.
1470         * Makefile.in (predict.o): Add pointer-set.h dependency.
1471         * basic-block.h (struct basic_block_def): Remove predictions
1472         field.
1473         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
1474
1475 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
1476
1477         PR target/31480
1478         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
1479         is null.
1480
1481 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1482
1483         * timevar.c (timevar_print): Change reference of --disable-checking to
1484         --enable-checking=release.  Also warn if assert checking is disabled.
1485
1486 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1487
1488         PR C/30265
1489         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
1490         decl as addressable if the compound literal was marked as
1491         addressable.
1492         Mark the decl as a gimple register if it is a complex or
1493         vector decl and does not live in memory.
1494
1495 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1496
1497         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
1498         (GENERIC_NEXT): New function macro.
1499         (PHI_CHAIN): Use phi_node's new chain variable.
1500         (tree_phi_node): Change tree_common to tree_base
1501         and add the chain field.
1502         * tree-phinodes.c (make_phi_node): Don't set
1503         TREE_TYPE on the new node.
1504         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
1505         instead of checking GIMPLE_TUPLE_P in chain_next.
1506         * tree-vect-transform.c
1507         (get_initial_def_for_induction): Look at
1508         PHI_RESULT_TREE for the type of the phi node.
1509         (update_vuses_to_preheader): Use PHI_CHAIN
1510         instead of TREE_CHAIN on the phi node.
1511         * tree-ssa-structalias.c (compute_points_to_sets):
1512         Likewise.
1513         (ipa_pta_execute): Likewise.
1514
1515 2007-04-21  Richard Guenther  <rguenther@suse.de>
1516
1517         PR middle-end/31136
1518         * fold-const.c (fold_unary): Call fold_convert_const on the
1519         original tree.
1520
1521 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
1522
1523         * gcse.c (store_killed_in_insn): Handle PARALLELs.
1524         (store_killed_in_pat): New.
1525
1526 2007-04-20  Richard Henderson  <rth@redhat.com>
1527
1528         PR target/31628
1529         * config/i386/i386.c (type_has_variadic_args_p): Look for any
1530         TREE_LIST with a void_type_node value, not void_list_node exactly.
1531
1532 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
1533
1534         * doc/standards.texi: Re-arrange into language-specific
1535         subsections. Add a C++ section, documenting which standards we
1536         support.
1537
1538 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
1539
1540         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
1541         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
1542
1543 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
1544
1545         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
1546         ecrti.o and crtbegin.o.
1547         (LIB_DEFAULT_SPEC): Include -lc.
1548         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
1549
1550 2007-04-20  Richard Henderson  <rth@redhat.com>
1551
1552         PR target/28623
1553         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
1554         argument; update all callers.
1555         (get_unaligned_offset): New.
1556         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
1557         get_unaligned_address, just pass on the address directly.
1558         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
1559         the subreg in the helper patterns.
1560         (unaligned_extendqidi_le): Use get_unaligned_offset.
1561         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
1562         (unaligned_extendhidi_be): Likewise.
1563         (unaligned_extendhidi): Tidy.
1564         * config/alpha/alpha-protos.h: Update.
1565
1566 2007-04-20  Richard Henderson  <rth@redhat.com>
1567
1568         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
1569         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
1570         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
1571         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
1572         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
1573         (CPP_SPEC): Don't include %(cpp_subtarget).
1574         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
1575         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
1576         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
1577
1578 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
1579
1580         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
1581         for __builtin_ia32_cmpordss.
1582
1583         PR tree-optimization/31632
1584         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
1585         and arg1 for optimizations of comparison against min/max values.
1586         Fold arg0 to arg1's type for optimizations of comparison against
1587         min+1 and max-1 values.
1588
1589 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
1590
1591         * reload.c (combine_reloads): When trying to use a dying register,
1592         check whether it's uninitialized and don't use if so.
1593
1594 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
1595
1596         * fold-const.c: Remove prototypes for native_encode_expr and
1597         native_interpret_expr.
1598         (native_encode_expr): Make non-static.
1599         (native_interpret_expr): Likewise.
1600         * tree.h: Add prototypes for the above.
1601
1602 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
1603
1604         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
1605         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
1606         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
1607         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
1608         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
1609         Add length attributes.
1610
1611 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
1612
1613         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
1614         not that it is 1.
1615
1616         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
1617         __STDC_WANT_DEC_FP__.
1618
1619 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
1620
1621         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
1622         for long double compatibility.
1623         * configure: Regenerate.
1624
1625 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
1626
1627         PR rtl-optimization/29841
1628         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
1629         trap instructions.
1630         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
1631         that may cause control flow transfer from being moved.
1632
1633 2007-04-18  Jan Hubicka  <jh@suse.cz>
1634
1635         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
1636         types.
1637
1638 2007-04-18  Eric Christopher  <echristo@apple.com>
1639
1640         * config/rs6000/darwin.md (load_macho_picbase): Use link register
1641         only. Update operands.
1642         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
1643         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
1644         link register to pic register.
1645
1646 2007-04-18  Dirk Mueller  <dmueller@suse.de>
1647
1648         PR diagnostic/31227
1649         * tree-vrp.c (search_for_addr_array): New.
1650         (check_array_bounds): Suppress warning about
1651         address taken of array refs if its not de-referenced.
1652
1653 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
1654
1655         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
1656         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
1657
1658         * tree-vectorizer.h (NITERS_KNOWN_P): New.
1659         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
1660         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
1661
1662         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
1663         dump print.
1664         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
1665         print message.
1666         (vect_analyze_scalar_cycles): Fix indentation.
1667         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
1668         (vect_mark_relevant): Include phis in relevance analysis.
1669
1670         * tree-vect-transform.c (vect_transform_loop): Add an assert.
1671
1672 2007-04-18  Anatoly Sokolov <aesok@post.ru>
1673
1674         * config/avr/avr.c (ptrreg_to_str): Replace error() with
1675         output_operand_lossage().
1676
1677 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
1678
1679         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
1680         the unused code for reduction without adjust-in-epilog to simplify the
1681         function.
1682
1683 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
1684
1685         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
1686         (S390_TDC_NEGATIVE_ZERO): New constant.
1687         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
1688         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
1689         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
1690         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
1691         (S390_TDC_POSITIVE_INFINITY): New constant.
1692         (S390_TDC_NEGATIVE_INFINITY): New constant.
1693         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
1694         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
1695         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
1696         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
1697         (S390_TDC_INFINITY): New constant.
1698         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
1699         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
1700         optimization for UNSPEC_CCZ_TO_INT.
1701         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
1702         ("*ccz_to_int"): New insn.
1703         ("isinf<mode>2"): New insn.
1704         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
1705         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
1706         (UNSPEC_CCZ_TO_INT): New constant.
1707
1708 2007-04-18  Richard Guenther  <rguenther@suse.de>
1709
1710         PR tree-optimization/19431
1711         PR tree-optimization/21463
1712         * tree-pass.h (pass_phiprop): Declare.
1713         * passes.c (init_optimization_passes): New phiprop pass.
1714         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
1715         (phivn_valid_p): New helper function.
1716         (phiprop_insert_phi): Likewise.
1717         (propagate_with_phi): Likewise.
1718         (tree_ssa_phiprop): New propagator propagating loads
1719         through phi nodes if profitable.
1720
1721 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
1722
1723         * tree-vect-analyze.c (process_use): New function.
1724         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
1725         Check phis in all bbs.
1726         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
1727         assert.
1728
1729 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
1730
1731         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
1732         we use REG_EQUAL.
1733
1734 2007-04-17  Anatoly Sokolov <aesok@post.ru>
1735
1736         PR target/30483
1737         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
1738         error().
1739
1740 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
1741
1742         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
1743         on "0".
1744         (sse_vmmulv4sf3): Likewise.
1745         (sse2_vmaddv2df3): Likewise.
1746         (sse2_vmmulv2df3): Likewise.
1747
1748 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
1749
1750         PR rtl-optimization/31360
1751         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
1752         (target_reg_cost): New.
1753         (init_set_costs): Initialize target_reg_cost.  Add comments
1754         regarding the rationale of the costs.
1755         (global_cost_for_size): Renamed to...
1756         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
1757         of register pressure.
1758         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
1759         estimate_reg_pressure_cost.  Add number of ivs.
1760         (determine_set_costs): Dump target_reg_cost.
1761         * loop-invariant.c (gain_for_invariant):  Use
1762         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
1763         (best_gain_for_invariant, find_invariants_to_move): Remove
1764         n_inv_uses.
1765         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
1766         (target_reg_cost): Declare.
1767         (global_cost_for_size): Declaration removed.
1768         (estimate_reg_pressure_cost): Declare.
1769
1770 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
1771
1772         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
1773         regnos into even/odd register pairs.
1774         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
1775         TDmode similar to the other floating point modes.
1776         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
1777         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
1778         define_expand's.
1779         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
1780         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
1781         (movdd_hardfloat64): Use TARGET_MFPGPR.
1782
1783 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
1784
1785         * reload1.c (delete_output_reload): Don't count output in n_inherited.
1786
1787         Revert
1788         2005-01-05  Richard Henderson  <rth@redhat.com>
1789         PR rtl-opt/10692
1790         * reload1.c (do_input_reload): Restrict the optimization deleteing
1791         a previous output reload to RELOAD_FOR_INPUT.
1792
1793 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
1794
1795         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
1796         induc_vec_info_type.
1797         (vectorizable_induction): New function declaration.
1798         * tree-vect-transform.c (get_initial_def_for_induction): No need to
1799         check if already vectorized.  Find first place in BB where new stmts
1800         can be inserted.  Takes only one argument.
1801         (vectorizable_induction): New function.
1802         (vect_transform_stmt): Add case for induc_vec_info_type to call
1803         vectorizable_induction.
1804         (vect_transform_loop): Consider phis for vectorization.
1805         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
1806         condition.
1807         (analyze_operations): Call vectorizable_induction when analyzing phis.
1808         Fix comment.
1809         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
1810         (vect_mark_relevant): Include phis in relevance analysis.
1811         (vect_mark_stmts_to_be_vectorize): Likewise.
1812         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
1813
1814 2007-04-16  Lawrence Crowl  <crowl@google.com>
1815
1816         * doc/invoke.texi (Debugging Options): Add documentation for the
1817         -femit-struct-debug options -femit-struct-debug-baseonly,
1818         -femit-struct-debug-reduced, and
1819         -femit-struct-debug-detailed[=...].
1820
1821         * c-opts.c (c_common_handle_option): Add
1822         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
1823         and OPT_femit_struct_debug_detailed_.
1824         * c.opt: Add specifications for
1825         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
1826         and -femit-struct-debug-detailed[=...].
1827         * opts.c (set_struct_debug_option): Parse the
1828         -femit-struct-debug-... options.
1829         * opts.c (matches_main_base, main_input_basename,
1830         main_input_baselength, base_of_path, matches_main_base): Add
1831         variables and functions to compare header base name to compilation
1832         unit base name.
1833         * opts.c (should_emit_struct_debug): Add to determine to emit a
1834         structure based on the option.
1835         (dump_struct_debug) Also disabled function to debug this
1836         function.
1837         * opts.c (handle_options): Save the base name of the
1838         compilation unit.
1839
1840         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
1841         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
1842         This hook indicates if a type is generic.  Set it by default
1843         to "never generic".
1844         * langhooks.h (struct lang_hooks_for_types): Add a new hook
1845         to determine if a struct type is generic or not.
1846         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
1847         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
1848         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
1849         with live C++ hook.
1850
1851         * flags.h (enum debug_info_usage): Add an enumeration to describe
1852         a program's use of a structure type.
1853         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
1854         to indicate the program's usage of the type.  Filter structs based
1855         on the -femit-struct-debug-... specification.
1856         (gen_type_die): Split into two routines, gen_type_die and
1857         gen_type_die_with_usage.  gen_type_die is now a wrapper
1858         that assumes direct usage.
1859         (gen_type_die_with_usage): Replace calls to gen_type_die
1860         with gen_type_die_with_usage adding the program usage of
1861         the referenced type.
1862         (dwarf2out_imported_module_or_decl): Suppress struct debug
1863         information using should_emit_struct_debug when appropriate.
1864
1865 2007-04-16  Ian Lance Taylor  <iant@google.com>
1866
1867         PR tree-optimization/31522
1868         * tree-vrp.c (vr_phi_edge_counts): New static variable.
1869         (vrp_initialize): Allocate vr_phi_edge_counts.
1870         (vrp_visit_phi_node): Don't push to infinity if we saw a new
1871         executable edge.  Drop test for all constants.
1872         (vrp_finalize): Free vrp_phi_edge_counts.
1873
1874         * doc/cpp.texi (Common Predefined Macros): Clarify description of
1875         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
1876
1877         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
1878         predecessors at head rather than tail.
1879
1880 2007-04-16  Matthias Klose  <doko@debian.org>
1881
1882         * config/alpha/linux.h (CPP_SPEC): Define.
1883         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
1884
1885 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
1886
1887         * function.h: Remove sequence_stack extern declaration.
1888
1889 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
1890
1891         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
1892         TARGET_FIDOA.
1893         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
1894         defined.
1895
1896 2007-04-16  Anatoly Sokolov <aesok@post.ru>
1897
1898         * config/avr/avr.c (avr_arch_types): Rearranging  array.
1899         (enum avr_arch): Add.
1900         (avr_mcu_types): Use avr_arch enumeration constants instead of
1901         numbers.
1902         * config/avr/avr.h (LINK_SPEC): Simplify.
1903
1904 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
1905
1906         * config/m68k/m68k.c (m68k_libcall_value,
1907         m68k_function_value): Use macros for register names more.
1908
1909         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
1910         instead.
1911         (M68K_REGNAME): Use A6_REG.
1912         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
1913
1914 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1915
1916         PR middle-end/28071
1917         * sched-int.h (struct deps): Split field 'pending_lists_length' into
1918         'pending_read_list_length' and 'pending_write_list_length'.  Update
1919         comment.
1920         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
1921         to handle two length counters instead of one.  Update all uses.
1922         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
1923         two length counters instead of one.
1924         * sched-rgn.c (propagate_deps): Update to handle two length counters
1925         instead of one.
1926
1927 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
1928
1929         PR target/31582
1930         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
1931         copy of source, pass it to ix86_expand_vector_set and return
1932         it as target.
1933
1934 2007-04-16  David Ung  <davidu@mips.com>
1935             Joseph Myers  <joseph@codesourcery.com>
1936
1937         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
1938         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
1939         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
1940         Add 74K processor information.
1941         * config/mips/mips.md: Include 74k.md.
1942         (cpu): Add 74kc,74kf,74kx.
1943         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
1944         * config/mips/74k.md: New.
1945         * doc/invoke.texi (MIPS Options): Document 74K support.
1946
1947 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
1948
1949         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
1950         vectorizable_* functions.
1951         * tree-vect-transform.c (vectorizable_call): Add check for
1952         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
1953         (vectorizable_store): likewise.
1954         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
1955         Add comments.
1956         (vectorizable_operation, vectorizable_type_demotion): Likewise.
1957         (vectorizable_type_promotion, vectorizable_load): Likewise.
1958         (vectorizable_live_operation, vectorizable_condition): Likewise.
1959         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
1960         STMT_VINFO_LIVE_P.
1961         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
1962
1963 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1964
1965         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
1966         register numbers more.
1967         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
1968         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
1969         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
1970         FUNCTION_VALUE_REGNO_P): Likewise.
1971         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
1972         STATIC_CHAIN_REGNUM): Likewise.
1973         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
1974         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
1975         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
1976         * config/m68k/m68k.md (FP_REG): New.
1977
1978 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1979
1980         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
1981         alignment on fido.
1982
1983 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1984
1985         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
1986         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
1987         comment typos.
1988
1989 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
1990
1991         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
1992         cold loops.
1993
1994 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1995
1996         PR c/31520
1997         * c-decl.c (finish_decl): Grab the type of the decl after the call
1998         to store_init_value.
1999
2000 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
2001
2002         * common.opt (fforward-propagate): Fix "Optimization" annotation.
2003
2004 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
2005
2006         PR c++/25874
2007         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
2008         post dominators and cleanup cfg before returning.
2009
2010 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
2011
2012         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
2013         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
2014
2015 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
2016
2017         * config.gcc: Recognize fido.
2018         * config/m68k/m68k-devices.def (fidoa): New.
2019         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
2020         __mfido__.
2021         (FL_FIDOA, TARGET_FIDOA): New.
2022         * config/m68k/m68k.opt (mfidoa): New.
2023
2024 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2025
2026         PR middle-end/31322
2027         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
2028         when a personality function is used.
2029
2030 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
2031
2032         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
2033
2034 2007-04-13  Mike Stump  <mrs@apple.com>
2035
2036         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
2037         we can...
2038         * config/darwin.opt (fapple-kext): Make C++ only.
2039         * config/darwin.c (darwin_override_options): Remove code to ensure
2040         -fapple-kext is given for C++ only.
2041
2042 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
2043
2044         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
2045         * config/mips/mips.c (override_options): Call
2046         SUBTARGET_OVERRIDE_OPTIONS, if defined.
2047
2048 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
2049
2050         * config/i386/i386.opt (msvr3-shlib): Removed.
2051
2052         * doc/invoke.texi: Remove -msvr3-shlib.
2053
2054 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
2055
2056         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
2057         with "popcnt" instruction.
2058
2059 2007-04-13  Richard Guenther  <rguenther@suse.de>
2060
2061         PR tree-optimization/21258
2062         * tree-vrp.c (compare_case_labels): New helper.
2063         (find_switch_asserts): New function.
2064         (find_assert_locations): Call it for SWITCH_EXPRs.
2065
2066 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
2067
2068         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
2069         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
2070         check is now implied in X87_FLOAT_MODE_P.
2071         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
2072         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
2073         (fix_trunc<mode>_i386_fisttp): Ditto.
2074         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
2075         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
2076         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
2077         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
2078         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
2079         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
2080         (unnamed_splitters): Ditto.
2081         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
2082         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
2083         FIRST_SSE_REG for local functions when SSE math is enabled or
2084         for functions with sseregparm attribute.
2085         (standard_80387_constant_p): Return -1 if mode is not
2086         X87_FLOAT_MODE_P.
2087         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
2088         (ix86_expand_compare): Ditto.
2089         (ix86_expand_carry_flag_compare): Ditto.
2090         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
2091         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
2092         DECIMAL_FLOAT_MODE_P.
2093         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
2094         of SCALAR_FLOAT_MODE_P.
2095         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
2096         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
2097         checks before FLOAT_MODE_P.
2098         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
2099         before FLOAT_MODE_P.
2100         [DIV]: Ditto.
2101         [NEG]: Ditto.
2102         [ABS]: Ditto.
2103         [SQRT]: Ditto.
2104         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
2105
2106 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
2107             Charles Wilson  <libtool@cwilson.fastmail.fm>
2108
2109         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
2110         (libgcc.mvars): Don't depend on them.
2111         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
2112         * exec-tool.in: New.
2113
2114 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
2115
2116         * doc/invoke.text (--help): Document --help=common.
2117
2118 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
2119
2120         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
2121
2122 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2123
2124         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
2125         * genemit.c (main): Emit #include "integrate.h".
2126         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
2127         (LOADGP_RTP): New mips_loadgp_style.
2128         * config/mips/mips.h: Include config/vxworks-dummy.h.
2129         (TARGET_RTP_PIC): New macro.
2130         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
2131         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
2132         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
2133         for TARGET_RTP_PIC.
2134         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
2135         -mvxworks-pic when using -mrtp and a PIC option.
2136         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
2137         for RTP PIC.
2138         (mips_symbolic_constant_p, mips_symbolic_address_p)
2139         (mips_symbol_insns): Handle SYMBOL_HALF.
2140         (override_options): Warn about -G and -mrtp being used together.
2141         Initialize mips_lo_relocs[SYMBOL_HALF].
2142         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
2143         (mips_emit_loadgp): Handle LOADGP_RTP.
2144         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
2145         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
2146         (tablejump): Handle function-relative case table entries if
2147         TARGET_RTP_PIC.
2148         * config/mips/predicates.md (symbol_ref_operand): New predicate.
2149
2150 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2151
2152         * config/mips/mips.md (load_call<mode>): Allow any general register.
2153         destination.
2154         (sibcall_value_internal, sibcall_value_multiple_internal)
2155         (call_value_internal, call_value_split, call_value_multiple_internal)
2156         (call_value_multiple_split): Remove constraints from operand 0.
2157
2158 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2159
2160         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
2161         rather than loadgp_noshared.
2162         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
2163         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
2164         gen_loadgp.
2165         * config/mips/mips.md (loadgp): Rename to...
2166         (loadgp_newabi): ...this.
2167         (loadgp_noshared): Rename to...
2168         (loadgp_absolute): ...this.
2169
2170 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2171
2172         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
2173         false for locally-binding symbols.
2174         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
2175
2176 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2177
2178         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
2179         (SYMBOL_GOT_PAGE_OFST): ...this.
2180         (SYMBOL_GOT_GLOBAL): Rename to...
2181         (SYMBOL_GOT_DISP): ...this.
2182         (SYMBOL_GOTOFF_GLOBAL): Rename to...
2183         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
2184         * config/mips/mips.c (mips_global_symbol_p): New function.
2185         (mips_symbol_binds_local_p): Likewise.
2186         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
2187         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
2188         and mips_symbol_binds_local_p.
2189         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
2190         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
2191         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
2192         SYMBOL_GOTOFF_DISP.
2193         (mips_ok_for_lazy_binding_p): New function.
2194         (mips_load_call_address, mips_expand_call): Use it.
2195         (mips_dangerous_for_la25_p): Likewise.
2196         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
2197         (*got_disp<mode>): Use got_disp_operand instead of
2198         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
2199         SYMBOL_GOTOFF_GLOBAL.
2200         (*got_page<mode>): Use got_page_ofst_operand instead of
2201         local_got_operand.
2202         * config/mips/predicates.md (const_call_insn_operand): Use
2203         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
2204         (global_got_operand): Rename to...
2205         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
2206         SYMBOL_GOT_GLOBAL.
2207         (local_got_operand): Rename to...
2208         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
2209         of SYMBOL_GOT_LOCAL.
2210
2211 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2212
2213         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
2214         TARGET_CALL_CLOBBERED_GP.
2215         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
2216         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
2217         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
2218         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
2219         of TARGET_ABICALLS && !TARGET_NEWABI.
2220         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
2221         * config/mips/mips.c (mips_load_call_address): Check
2222         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
2223         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
2224         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
2225         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
2226         TARGET_ABICALLS && TARGET_NEWABI.
2227         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
2228         TARGET_ABICALLS.
2229         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
2230         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
2231         TARGET_ABICALLS && TARGET_NEWABI.
2232         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
2233         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
2234         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
2235         whether indirect calls must use $25.
2236         (mips_extra_live_on_entry): Check TARGET_GOT instead of
2237         TARGET_ABICALLS.
2238         * config/mips/mips.md (jal_macro): Check flag_pic and
2239         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
2240         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
2241         instead of TARGET_ABICALLS.
2242         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
2243         TARGET_ABICALLS && TARGET_OLDABI.
2244         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
2245         (sibcall): In the comment above the define_insn, mention
2246         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
2247         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
2248         instead of TARGET_ABICALLS.
2249
2250 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2251
2252         * doc/md.texi (Blackfin family constraints): Document PA and PB.
2253         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
2254         (MACFLAGS_MATCH_P): New macro.
2255         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
2256         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
2257         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
2258         the other MACFLAG constants.
2259         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
2260         (flag_machi): Tighten constraints.  Renumber some of the operands.
2261         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
2262         output template.
2263         (flag_machi_parts_acconly): New pattern.
2264         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
2265         used.
2266         (flag_macinit1hi): Tighten constraints.
2267         (flag_mul_macv2hi_parts_acconly): New pattern.
2268
2269         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
2270         Use a more efficient implementation.
2271         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
2272         inline sequences when not optimizing for size.
2273
2274         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
2275         movhi_high2low): Delete, merge functionality into...
2276         (packv2hi): ... this pattern.
2277
2278         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
2279         * config/bfin/bfin.opt (msim): New option.
2280         (mcpu=): New option.
2281         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
2282         (bfin_cpu_t): Typedef of enum bfin_cpu.
2283         (bfin_cpu_type): New declaration.
2284         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
2285         -msim and -mcpu= options.
2286         (LIB_SPEC): Likewise.
2287         * config/bfin/bfin.c (bfin_cpu_type): Define.
2288         (bfin_handle_option): Handle -mcpu= option.
2289         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
2290         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
2291         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
2292
2293 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2294
2295         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
2296         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
2297         (powerpc-wrs-vxworksae): Use ${tm_file}.
2298         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
2299         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
2300         * config/i386/vx-common.h: New file.
2301
2302 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2303
2304         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
2305         of crt0.o%s.
2306
2307 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
2308
2309         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
2310         ldxtr.
2311
2312 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
2313
2314         PR c++/31078
2315         PR c++/31103
2316         * c-common.c (c_build_qualified_type): Set canonical type
2317         appropriately.
2318
2319 2007-04-12  Richard Guenther  <rguenther@suse.de>
2320
2321         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
2322         lower bound and element size if lower bound is not zero
2323         or either of the ARRAY_REF operands is set.
2324
2325 2007-04-12  Richard Guenther  <rguenther@suse.de>
2326
2327         PR tree-optimization/24689
2328         PR tree-optimization/31307
2329         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
2330         indices by value.
2331         * gimplify.c (canonicalize_addr_expr): To be consistent with
2332         gimplify_compound_lval only set operands two and three of
2333         ARRAY_REFs if they are not gimple_min_invariant.  This makes
2334         it never at this place.
2335         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
2336
2337 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2338
2339         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
2340         null before emitting a .nsubspa directive.
2341
2342 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
2343
2344         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
2345         need_to_partition_p if there are no memory statements in the
2346         function.
2347
2348 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
2349
2350         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
2351         (gcd_of_steps_may_divide_p): New function.
2352         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
2353
2354 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2355
2356         * reload.c (find_reloads_toplev, find_reloads_address,
2357         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
2358         not a pointer equality test, to decide if we need to call
2359         push_reg_equiv_alt_mem.
2360
2361 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
2362
2363         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
2364         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
2365         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
2366
2367 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
2368
2369         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
2370         vector to be positive.
2371
2372 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
2373
2374         PR 30735
2375         PR 31090
2376         * doc/invoke.texi: Document --params max-aliased-vops and
2377         avg-aliased-vops.
2378         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
2379         debug_memory_partitions): Move to tree-flow.h
2380         * params.h (AVG_ALIASED_VOPS): Define.
2381         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
2382         users.
2383         (mp_info_t): Likewise.
2384         (get_mem_sym_stats_for): New.
2385         (set_memory_partition): Move from tree-flow-inline.h.
2386         (mark_non_addressable): Only clear the set of symbols for the
2387         partition if it exists.
2388         (dump_memory_partitions): Move from tree-ssa-operands.c
2389         (debug_memory_partitions): Likewise.
2390         (need_to_partition_p): New.
2391         (dump_mem_ref_stats): New.
2392         (debug_mem_ref_stats): New.
2393         (dump_mem_sym_stats): New.
2394         (debug_mem_sym_stats): New.
2395         (update_mem_sym_stats_from_stmt): New.
2396         (compare_mp_info_entries): New.
2397         (mp_info_cmp): Call it.
2398         (sort_mp_info): Change argument to a list of mem_sym_stats_t
2399         objects.
2400         (get_mpt_for): Move from tree-ssa-operands.c.
2401         (find_partition_for): New.
2402         (create_partition_for): Remove.
2403         (estimate_vop_reduction): New.
2404         (update_reference_counts): New.
2405         (build_mp_info): New.
2406         (compute_memory_partitions): Refactor.
2407         Document new heuristic.
2408         Call build_mp_info, update_reference_counts,
2409         find_partition_for and estimate_vop_reduction.
2410         (compute_may_aliases): Populate virtual operands before
2411         calling debugging dumps.
2412         (delete_mem_sym_stats): New.
2413         (delete_mem_ref_stats): New.
2414         (init_mem_ref_stats): New.
2415         (init_alias_info): Call it.
2416         (maybe_create_global_var): Remove alias_info argument.
2417         Get number of call sites and number of pure/const call sites
2418         from gimple_mem_ref_stats().
2419         (dump_alias_info): Call dump_memory_partitions first.
2420         (dump_points_to_info_for): Show how many times a pointer has
2421         been dereferenced.
2422         * opts.c (decode_options): For -O2 set --param
2423         max-aliased-vops to 500.
2424         For -O3 set --param max-aliased-vops to 1000 and --param
2425         avg-aliased-vops to 3.
2426         * fortran/options.c (gfc_init_options): Remove assignment to
2427         MAX_ALIASED_VOPS.
2428         * tree-flow-inline.h (gimple_mem_ref_stats): New.
2429         * tree-dfa.c (dump_variable): Dump memory reference
2430         statistics.
2431         Dump NO_ALIAS* settings.
2432         (referenced_var_lookup): Tidy.
2433         (mem_sym_stats): New.
2434         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
2435         and ORIG are different SSA names for a memory partition.
2436         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
2437         * tree-flow.h (struct mem_sym_stats_d): Define.
2438         (mem_sym_stats_t): Define.
2439         (struct mem_ref_stats_d): Define.
2440         (struct gimple_df): Add field mem_ref_stats.
2441         (enum noalias_state): Define.
2442         (struct var_ann_d): Add bitfield noalias_state.
2443         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
2444         debug_mem_ref_stats, debug_memory_partitions,
2445         debug_mem_sym_stats): Declare.
2446         * tree-ssa-structalias.c (update_alias_info): Update call
2447         sites, pure/const call sites and asm sites in structure
2448         returned by gimple_mem_ref_stats.
2449         Remove local variable IS_POTENTIAL_DEREF.
2450         Increase NUM_DEREFS if the memory expression is a potential
2451         dereference.
2452         Call update_mem_sym_stats_from_stmt.
2453         If the memory references memory, call
2454         update_mem_sym_stats_from_stmt for all the direct memory
2455         symbol references found.
2456         (intra_create_variable_infos): Set noalias_state field for
2457         pointer arguments according to the value of
2458         flag_argument_noalias.
2459         * tree-ssa-structalias.h (struct alias_info): Remove fields
2460         num_calls_found and num_pure_const_calls_found.
2461         (update_mem_sym_stats_from_stmt): Declare.
2462         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
2463         Set default value to 100.
2464         (PARAM_AVG_ALIASED_VOPS): Define.
2465
2466 2007-04-11  Richard Guenther  <rguenther@suse.de>
2467
2468         PR middle-end/31530
2469         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
2470         a * -b + c as c - a * b if we honor sign dependent rounding.
2471
2472 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2473
2474         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
2475         bfin_expand_strmov.
2476         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
2477         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
2478         variables.
2479         (initialize_trampoline): Don't use old-style function definition.
2480         (bfin_secondary_reload): Mark IN_P argument as unused.
2481
2482 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
2483
2484         PR tree-optimization/31343
2485         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
2486         (build_polynomial_chrec): Return a scalar when the evolution is zero.
2487         * testsuite/gcc.dg/vect/pr31343.c: New.
2488
2489 2007-04-10  Eric Christopher  <echristo@apple.com>
2490
2491         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
2492         * config/i386/i386.md (*cmpfp0): Use.
2493         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
2494         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
2495         (fix_trunc<mode>_i386_fisttp): Ditto.
2496         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
2497         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
2498         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
2499         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
2500         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
2501         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
2502         (unnamed_splitters): Ditto.
2503         * config/i386/i386.c (output_fix_trunc): Assert that
2504         we're not being passed a TFmode operand.
2505
2506 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
2507
2508         PR tree-optimization/31526
2509         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
2510         n_basic_blocks to find newly added blocks.
2511
2512 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
2513
2514         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
2515         alternative.
2516         (fix_trunc<mode>si_sse): Ditto.
2517         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
2518         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
2519         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
2520         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
2521         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
2522         expander using SSEMODEF mode macro.
2523         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
2524         expander using SSEMODEF mode macro.
2525         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
2526         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
2527         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
2528         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
2529         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
2530         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
2531         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
2532         Macroize insn using X87MODEF mode macro.
2533
2534 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
2535
2536         * config/i386/sse.md (sse2_pinsrw): Removed.
2537         (sse2_pextrw): Renamed to ...
2538         (*sse2_pextrw): This.
2539
2540 2007-04-09  Jan Hubicka  <jh@suse.cz>
2541
2542         PR target/27869
2543         * config/i386/sse.md
2544         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
2545         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
2546         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
2547         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
2548
2549 2007-04-09  Jan Hubicka  <jh@suse.cz>
2550
2551         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
2552         multiple fields of union.
2553
2554 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
2555
2556         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
2557         (create_preheaders): Check that loops are available.
2558         (fix_loop_structure): Clean up, improve comments.
2559         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
2560         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
2561         state flags.
2562         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
2563         * predict.c (tree_estimate_probability): Do not call
2564         calculate_dominance_info.  Call create_preheaders.
2565         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
2566         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
2567         flags.
2568         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
2569         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
2570         * tree-cfg.c (tree_split_edge): Make an assert more precise.
2571         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
2572         arguments.
2573
2574 2007-04-08  Jan Hubicka  <jh@suse.cz>
2575
2576         * tree.h (maybe_fold_offset_to_component_ref): Declare.
2577         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
2578         * fold-const.c (fold_unary): Use it.
2579
2580 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2581
2582         * varasm.c (assemble_variable): Remove call to
2583         lang_hooks.decls.prepare_assemble_variable.
2584         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
2585         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
2586         * langhooks.h (lang_hooks_for_decls): Remove
2587         prepare_assemble_variable.
2588
2589 2007-04-08  Mike Stump  <mrs@apple.com>
2590
2591         * config/i386/i386.c: Use inc/dec on Core2.
2592
2593 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
2594
2595         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
2596         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
2597         lhd_tree_inlining_end_inlining): Remove.
2598         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
2599         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
2600         end_inlining hooks.
2601         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
2602         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
2603         lhd_tree_inlining_end_inlining): Remove prototypes.
2604         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
2605         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
2606         LANG_HOOKS_TREE_INLINING_START_INLINING,
2607         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
2608
2609         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
2610         not set it.
2611
2612 2007-04-08  Anatoly Sokolov <aesok@post.ru>
2613
2614         PR target/29932
2615         * config/avr/predicates.md (io_address_operand): Delete predicate.
2616         (low_io_address_operand): Don't use 'mode' argument.
2617         (higth_io_address_operand): Rename ...
2618         (high_io_address_operand): ... to this. Don't use 'mode' argument.
2619         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
2620         for above change.
2621
2622 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
2623
2624         Revert change removing staticp.
2625
2626 2007-04-07  Anatoly Sokolov <aesok@post.ru>
2627
2628         PR target/30289
2629         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
2630         earlyclobber.
2631
2632 2007-04-07  Bruce Korb  <bkorb@gnu.org>
2633
2634         * c.opt: Add -Wformat-contains-nul.
2635         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
2636           -Wformat setting.
2637         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
2638         the NUL byte warning.
2639
2640 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
2641
2642         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
2643
2644 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
2645
2646         * tree.c (staticp): No longer use staticp langhook.
2647         * langhooks.c (lhd_staticp): Removed.
2648         * langhooks.h (struct lang_hooks): Remove staticp.
2649         * c-common.c (c_staticp): Remove.
2650         * c-common.h (c_staticp): Ditto.
2651         * langhooks-defs.h (lhd_staticp): Ditto.
2652         (LHD_HOOKS_STATICP): Ditto
2653         * tree.h (gcc_assert_lowered): New macro.
2654
2655 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
2656
2657         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
2658         argument "reliable".
2659         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
2660         Add argument "reliable".  Propagate it through calls.
2661         (infer_loop_bounds_from_undefined):  Derive number of iterations
2662         estimates from references in blocks that do not dominate loop latch.
2663         (gcov_type_to_double_int): New function.
2664         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
2665         and expected_loop_iterations_unbounded.
2666         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
2667         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
2668         * tree-data-ref.c (estimated_loop_iterations): Export.
2669         (get_references_in_stmt): Fix -- do not return addresses of local
2670         objects.
2671         * cfgloop.h (expected_loop_iterations_unbounded,
2672         estimated_loop_iterations): Declare.
2673
2674 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
2675
2676         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
2677
2678 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
2679
2680         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
2681         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
2682         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
2683         Use output_387_reg_move().
2684         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
2685         expander using X87MODEF12 mode macro.
2686         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
2687         choosing register preferences.  Use output_387_reg_move().
2688         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
2689         instead of "x".  Use output_387_reg_move().
2690         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
2691         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
2692         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
2693         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
2694         Use output_387_reg_move().
2695         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
2696         mode macro.
2697         (*truncxf?f_i387 splitter): Ditto.
2698
2699 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
2700
2701         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
2702         LANG_HOOKS_SAFE_FROM_P.
2703         * expr.c (safe_from_p): Remove langhook call.
2704         * langhooks.h (lang_hooks): Remove safe_from_p.
2705         (lhd_safe_from_p): Remove prototype.
2706         * langhooks.c (lhd_safe_from_p): Remove.
2707
2708 2007-04-06  Jan Hubicka  <jh@suse.cz>
2709
2710         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
2711         functions.
2712
2713 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
2714
2715         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
2716         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
2717         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
2718         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
2719         alternative.
2720         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
2721         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
2722
2723 2007-04-05  Richard Henderson  <rth@redhat.com>
2724
2725         * config/alpha/alpha.c (print_operand) [+]: Remove.
2726         (alpha_end_function): Print nop if call at end of function.
2727         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
2728         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
2729         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
2730         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
2731         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
2732         the call pattern. Update peepholes to match.
2733
2734 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
2735
2736         * doc/extend.texi (Other Builtins): Add decimal float variants
2737         of signbit.
2738         * builtins.def: Ditto.
2739         * builtins.c (expand_builtin): Ditto.
2740
2741 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
2742             H.J. Lu  <hongjiu.lu@intel.com>
2743
2744         PR target/31478
2745         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
2746         of V8HImode when calling ix86_binary_operator_ok.
2747         (sse2_pmaddwd): Call ix86_binary_operator_ok.
2748         (sdot_prodv8hi): Operands 1 and 2 must be register.
2749
2750 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2751
2752         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
2753         initialize align to silence bogus warning.
2754
2755 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2756
2757         PR middle-end/22156
2758         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
2759         all_no_warning.
2760         (struct sra_walk_fns): Remove use_all parameter from use.
2761         (sra_hash_tree): Handle BIT_FIELD_REFs.
2762         (sra_elt_hash): Don't hash bitfld blocks.
2763         (sra_elt_eq): Skip them in parent compares as well.  Handle
2764         BIT_FIELD_REFs.
2765         (sra_walk_expr): Don't maintain or pass down use_all_p.
2766         (scan_use): Remove use_all parameter.
2767         (scalarize_use): Likewise.  Re-expand assignment to
2768         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
2769         output, and re-scalarize after output.  Don't mark anything
2770         for no warning.
2771         (scalarize_ldst): Adjust.
2772         (scalarize_walk_gimple_modify_statement): Likewise.
2773         (build_element_name_1): Handle BIT_FIELD_REFs.
2774         (instantiate_element): Don't warn for any element whose parent
2775         is used as a whole.
2776         (instantiate_missing_elements_1): Return the sra_elt.
2777         (canon_type_for_field): New.
2778         (try_instantiate_multiple_fields): New.
2779         (instantiate_missing_elemnts): Use them.
2780         (mark_no_warning): Removed.
2781         (generate_one_element_ref): Handle BIT_FIELD_REFs.
2782         (REPLDUP, sra_build_elt_assignment): New.
2783         (generate_copy_inout): Use them.
2784         (generate_element_copy): Likewise.  Handle bitfld differences.
2785         (generate_element_zero): Don't recurse for blocks.  Use
2786         sra_build_elt_assignment.
2787         (generate_one_element_int): Take elt instead of var.  Use
2788         sra_build_elt_assignment.
2789         (generate_element_init_1): Adjust.
2790         (scalarize_use, scalarize_copy): Use REPLDUP.
2791         (scalarize_ldst): Move assert before dereference.
2792         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
2793
2794 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
2795
2796         * regmove.c: Fix unused variable warnings due to previous commit.
2797
2798 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
2799
2800         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
2801         (regmove_bb_head): Remove.
2802         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
2803         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
2804         problems with fixup_match_1.
2805         Don't initialize/free regmove_bb_head.
2806
2807         (reg_is_remote_constant_p): If an insn is in the same basic block
2808         but not before INSN, consider it remote, too.
2809
2810 2007-04-05  Anatoly Sokolov <aesok@post.ru>
2811
2812         PR target/25448
2813         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
2814         DECL_ASSEMBLER_NAME, not the DECL_NAME.
2815
2816 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
2817
2818         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
2819         (CONDITIONAL_REGISTER_USAGE): Likewise.
2820
2821 2007-04-04  Richard Henderson  <rth@redhat.com>
2822
2823         * config/alpha/lib1funcs.asm: Remove unused file.
2824
2825 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2826
2827         PR other/31356
2828         * opts.c (print_specific_help): Fix --help=<language>
2829         header line.
2830         (common_handle_option): Support --help=common.
2831
2832 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2833
2834         PR other/31353
2835         * gcc.c (main): Do not run the linker if
2836         print_subprocess_help indicates that it shouldn't be
2837         run.
2838
2839 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2840
2841         PR doc/31355
2842         * doc/invoke.texi (--help=): Document <languages> value, fix
2843         formatting in tables of values.
2844
2845 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
2846
2847         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
2848         dllimport attribute of virtual methods.
2849
2850 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
2851
2852         * config/score/crti.asm: Change _bss_start to __bss_start.
2853         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
2854         (OUTGOING_REG_PARM_STACK_SPACE) update.
2855         * config/score/score.opt: add options to make backend support
2856         score5, score5u, score7 and score7d.
2857         * config/score/score.md: Likewise.
2858         * config/score/misc.md: Likewise.
2859         * config/score/mac.md: Likewise.
2860         * doc/invoke.texi: Likewise.
2861         * doc/md.texi: update constraints define.
2862
2863 2007-04-03  Richard Henderson  <rth@redhat.com>
2864
2865         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
2866         an appropriate type, use the mode instead.
2867
2868 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
2869
2870         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
2871         Set the default --with-arch setting to mips2.
2872         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
2873         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2874         (MULTILIB_OSDIRNAMES): Delete.
2875         (MULTILIB_DIRNAMES): Define.
2876         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
2877         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
2878         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
2879         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
2880         VXWORKS_OS_CPP_BUILTINS.
2881         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
2882         (MIPS_DEBUGGING_INFO): Undefine.
2883         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
2884
2885 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
2886
2887         PR middle-end/30704
2888         * fold-const.c (native_encode_real): Encode real.c provided longs
2889         as a series of 32-bit native integers.
2890         (native_interpret_real): Interpret buffer as a series of 32-bit
2891         native integers.
2892
2893 2007-04-03  Richard Guenther  <rguenther@suse.de>
2894
2895         * genpreds.c (write_insn_constraint_len): Write function
2896         optimized for CONSTRAINT_LEN implementation.
2897         (write_tm_preds_h): Output insn_constraint_len inline and
2898         use it for CONSTRAINT_LEN.
2899         (write_insn_preds_c): Don't output insn_constraint_len.
2900         * doc/md.texi (define_register_constraint): Document multi-letter
2901         constraints shall have the same length if they start with the same
2902         letter.
2903
2904 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
2905
2906         PR target/31175
2907         * config/i386/i386.md (isinf<mode>2): Expand only when
2908         TARGET_C99_FUNCTIONS is set.
2909
2910 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
2911
2912         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
2913         (x86_64-*-linux*): Ditto.
2914         * config/i386/i386.opt (mpc): New option.
2915         * config/i386/i386.c (overrride_options): Handle
2916         ix87_precision_string.
2917         * config/i386/crtprec.c: New file.
2918         * config/i386/t-crtpc: Ditto.
2919         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
2920         and -mpc80 options.
2921         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
2922         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
2923         crtprec32.o, crtprec64.o and crtprec80.o.
2924
2925         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
2926         and -mpc80 options.
2927         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
2928
2929 2007-04-02  Eric Christopher  <echristo@apple.com>
2930
2931         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
2932         limitations on darwin.
2933
2934 2007-04-02  Anatoly Sokolov <aesok@post.ru>
2935
2936         PR target/31137
2937         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
2938
2939 2007-04-02  Dave Korn  <dave.korn@artimi.com>
2940
2941         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
2942
2943 2007-04-02  Dave Korn  <dave.korn@artimi.com>
2944
2945         * libgcc2.h (exception_descriptor): Don't forward-declare.
2946         (__get_eh_table_language, __get_eh_table_version): Delete
2947         prototypes of long-dead functions.
2948
2949 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
2950
2951         * ebitmap.h: New file
2952         * ebitmap.c: New file
2953         * Makefile.in (ebitmap.o): New target.
2954
2955 2007-04-01  Jan Hubicka  <jh@suse.cz>
2956
2957         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
2958         before very first instruction.
2959
2960 2007-04-01  Jan Hubicka  <jh@suse.cz>
2961
2962         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
2963         waring on 64bit hosts.
2964         * bitmap.h: Fix typo in bitmap_head_def.
2965
2966 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
2967
2968         PR rtl-optimization/31391
2969         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
2970         into a DELETED_LABEL note, and the label is in an empty basic
2971         block, update BB_END as well as BB_HEAD.
2972
2973 2007-04-01  Richard Henderson  <rth@redhat.com>
2974
2975         PR tree-optimization/31169
2976         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
2977         to varying if the range is outside [0,  prec-1].
2978
2979 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
2980
2981         PR target/31388
2982         * config/mips/mips.md (load_const_gp): New insn.
2983         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
2984         the MIPS16 GP pseudo register if no_new_pseudos.
2985         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
2986
2987 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2988
2989         PR target/31364
2990         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
2991         secureplt.
2992         (call_value): Likewise.
2993
2994 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
2995             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2996
2997         PR 14737
2998         * doc/invoke.texi: (optimization options): Reword description
2999         of -ffast-math. Document its primary purpose.
3000
3001 2007-03-31  Richard Guenther  <rguenther@suse.de>
3002
3003         * omp-low.c (splay-tree.h): Include.
3004         (lookup_decl): Replace splay-tree usage by pointer-map.
3005         (maybe_lookup_decl): Likewise.
3006         (new_omp_context): Likewise.
3007         (delete_omp_context): Likewise.
3008         * gimplify.c (splay-tree.h): Include.
3009         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
3010         pointer-map.
3011         (remap_ssa_name): Likewise.
3012         (remap_decl): Likewise.
3013         (remap_type_1): Likewise.
3014         (remap_type): Likewise.
3015         (copy_body_r): Likewise.
3016         (expand_call_inline): Likewise.
3017         (clone_body): Likewise.
3018         (copy_tree_r): Likewise.
3019         (remap_save_expr): Likewise.
3020         (unsave_r): Likewise.
3021         (unsave_expr_now): Likewise.
3022         (tree_function_versioning): Likewise.
3023         (build_duplicate_type): Likewise.
3024         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
3025         (struct copy_body_data): Replace splay-tree by pointer-map.
3026         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
3027         not $(SPLAY_TREE_H).
3028         (gimplify.o): Depend on $(SPLAY_TREE_H).
3029         (omp-low.p): Likewise.
3030
3031 2007-03-31  Anatoly Sokolov <aesok@post.ru>
3032
3033         * config/avr/predicates.md (even_register_operand,
3034         odd_register_operand): New predicates.
3035         * config/avr/avr.md (movw peephole2): New.
3036         (movw_r peephole2): New.
3037
3038 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
3039
3040         * tree.h (get_signed_or_unsigned_type): New.
3041         * fold-const.c (operand_equal_for_comparison_p): Use
3042         get_signed_or_unsigned_type instead of
3043         lang_hooks.types.signed_or_unsigned_type.
3044         * expr.c (store_expr): Ditto.
3045         * langhooks.c (get_signed_or_unsigned_type): New.
3046         (lhd_signed_or_unsigned_type): New.
3047         * langhooks.h (lhd_signed_or_unsigned_type): New.
3048         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
3049
3050 2007-03-30  Richard Henderson  <rth@redhat.com>
3051
3052         * tree-ssa-loop-ivopts.c: Include target.h.
3053         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
3054         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
3055         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
3056         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
3057
3058 2007-03-30  Richard Henderson  <rth@redhat.com>
3059             Kai Tietz  <kai.tietz@onevision.com>
3060
3061         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
3062         default for 64-bit.
3063         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
3064         (TARGET_64BIT_MS_ABI): New.
3065         (DBX_REGISTER_NUMBER): Handle 64-bit.
3066         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
3067         (LONG_TYPE_SIZE): Force to 32.
3068         (REG_PARM_STACK_SPACE): New.
3069         (OUTGOING_REG_PARM_STACK_SPACE): New.
3070         (REGPARM_MAX, SSE_REGPARM_MAX): New.
3071         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
3072         (STACK_BOUNDARY): Use 128 for 64-bit.
3073         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
3074         Add 64-bit implementation.
3075         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
3076         argument unused.
3077         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
3078         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
3079         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
3080         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
3081         (ix86_handle_cconv_attribute): Don't warn when ignoring if
3082         TARGET_64BIT_MS_ABI.
3083         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
3084         (ix86_pass_by_reference): Likewise.
3085         (ix86_function_value_regno_p): Likewise.
3086         (ix86_build_builtin_va_list): Likewise.
3087         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
3088         (function_arg_advance_ms_64): New.
3089         (function_arg_advance): Call it.
3090         (function_arg_ms_64): New.
3091         (function_arg): Call it.
3092         (function_value_ms_64): New.
3093         (ix86_function_value_1): Call it.
3094         (return_in_memory_ms_64): New.
3095         (ix86_return_in_memory): Call it.
3096         (setup_incoming_varargs_ms_64): New.
3097         (ix86_setup_incoming_varargs): Call it.
3098         (ix86_expand_prologue): Handle 64-bit stack probing.
3099         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
3100         (output_pic_addr_const): Likewise.
3101         (x86_this_parameter): Likewise.
3102         (x86_output_mi_thunk): Likewise.
3103         (x86_function_profiler): Likewise.
3104         (TARGET_STRICT_ARGUMENT_NAMING): New.
3105         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
3106         (TARGET_64BIT_MS_ABI): New.
3107         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
3108         * config/i386/i386.md (allocate_stack_worker): Remove.
3109         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
3110         describe the clobber of eax without a match_scratch.
3111         (allocate_stack_worker_postreload): Remove.
3112         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
3113         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
3114         (allocate_stack_worker_rex64_postreload): Remove.
3115         (allocate_stack): Handle 64-bit.
3116         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
3117         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
3118         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
3119         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
3120         (STANDARD_STARTFILE_PREFIX_1): Likewise.
3121         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
3122         * config.build (x86_64-*-mingw*): New host.
3123         * config.host (x86_64-*-mingw*): New host.
3124         * config.gcc (x86_64-*-mingw*): New target.
3125         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
3126
3127 2007-03-30  Richard Henderson  <rth@redhat.com>
3128             Kai Tietz  <kai.tietz@onevision.com>
3129
3130         * c-pragma.c (struct def_pragma_macro_value): New.
3131         (struct def_pragma_macro): New.
3132         (pushed_macro_table): New.
3133         (dpm_hash, dpm_eq): New.
3134         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
3135         (init_pragma): Install them.
3136         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
3137
3138 2007-03-30  Anatoly Sokolov <aesok@post.ru>
3139
3140         * config/avr/avr.c (avr_override_options): Clear
3141         'flag_delete_null_pointer_checks'.
3142
3143 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
3144
3145         PR c++/26099
3146         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
3147         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
3148         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
3149         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
3150         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
3151         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
3152         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
3153         C++ extensions.
3154         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
3155
3156 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
3157
3158         * regmove.c: Move all of pass_stack_adjustments from here...
3159         * combine-stack-adj.c: ...to this new file.
3160         * Makefile.in: Add rules for combine-stack-adj.o.
3161
3162 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
3163
3164         PR tree-optimization/31383
3165         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
3166         to have the same length.
3167
3168 2007-03-30  Jan Hubicka  <jh@suse.cz>
3169
3170         PR middle-end/30700
3171         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
3172         availablility; add more sanity checking; ask varpool only about
3173         VAR_DECL.
3174
3175 2007-03-29  Richard Henderson  <rth@redhat.com>
3176
3177         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
3178         to decide, but __SIZEOF_LONG_LONG__.
3179
3180 2007-03-29  Richard Henderson  <rth@redhat.com>
3181
3182         * emutls.c (struct __emutls_array): New.
3183         (emutls_destroy): Use it instead of casting element 0 from void*.
3184         (__emutls_get_address): Likewise.
3185
3186 2007-03-29  Richard Henderson  <rth@redhat.com>
3187
3188         * varasm.c (initializer_constant_valid_p): Don't deny
3189         DECL_DLLIMPORT_P on functions.
3190
3191         * config/i386/cygming.h: Remove function declarations.
3192         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
3193         (ASM_OUTPUT_LABELREF): Remove.
3194         (COMMON_ASM_OP): Remove.
3195         (ASM_OUTPUT_COMMON): Remove.
3196         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
3197         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
3198         (ASM_DECLARE_FUNCTION_NAME): Likewise.
3199         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
3200         Rename from TARGET_ENCODE_SECTION_INFO.
3201         * config/i386/netware.h: Likewise.
3202         * config/i386/i386-protos.h: Update.
3203         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
3204         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
3205         (legitimate_constant_p): Reject dllimports.
3206         (dllimport_map, get_dllimport_decl): New.
3207         (legitimize_dllimport_symbol): New.
3208         (legitimize_address, ix86_expand_move): Use it.
3209         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
3210         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
3211         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
3212         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
3213         * config/i386/predicates.md (constant_call_address_operand): Only
3214         accept symbols; reject dllimport_p symbols.
3215         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
3216         i386_pe_maybe_record_exported_symbol.
3217         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
3218         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
3219         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
3220         trust the setting of DECL_DLLIMPORT_P.
3221         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
3222         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
3223         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
3224         tidy the argument scanning loop.
3225         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
3226         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
3227         (i386_pe_strip_name_encoding): Remove.
3228         (i386_pe_binds_local_p): New.
3229         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
3230         (i386_pe_output_labelref): Remove.
3231         (i386_pe_asm_output_aligned_decl_common): New.
3232         (i386_pe_maybe_record_exported_symbol): Rename from
3233         i386_pe_record_exported_symbol; check for dllexported symbols.
3234
3235 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
3236
3237         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
3238         add comment explaining why vsnprintf cannot be used.
3239
3240 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
3241
3242         PR tree-optimization/30666
3243         * tree.c (build_complex_type): When creating type names for DWARF2
3244         debug info, create TYPE_DECLs for TYPE_NAME instead of
3245         IDENTIFIER_NODEs.
3246         (build_common_tree_nodes_2): Use build_complex_type when building
3247         predefined complex types, to preserve canonical types.
3248
3249 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
3250
3251         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
3252         (noce_get_alt_condition): Look at it to determine whether to
3253         reverse the condition or not.
3254         (noce_get_condition): Substitute the truth for lies.
3255         (noce_find_if_block): Set the then_else_reversed field.
3256
3257 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
3258
3259         * config/fr30/fr30.md (movdi): Do not accept immediates as the
3260         destination of this insn.
3261         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
3262         than calling gen_rtx_SET directly.  Use r0 to hold the value of
3263         'address + 4' rather than a stack based temporary which can be
3264         mis-optimized away.
3265
3266 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
3267
3268         * config/s390/s390.c (s390_secondary_input_reload_class,
3269         s390_secondary_output_reload_class): Functions removed.
3270         (s390_secondary_reload): New function.
3271         (TARGET_SECONDARY_RELOAD): Target macro defined.
3272         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
3273         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
3274         * config/s390/s390.md ("reload_outti", "reload_outdi",
3275         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
3276         "reload_out<mode>"): Expanders removed.
3277         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
3278         "reload<mode>_nonoffmem_out"): Expanders added.
3279
3280 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
3281
3282         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
3283         SRC->DEST replacement failed anyway.
3284
3285 2007-03-28  Mike Stump  <mrs@apple.com>
3286
3287         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
3288         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
3289         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
3290
3291 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3292
3293         * config.gcc: Accept barcelona as a variant of amdfam10.
3294         * config/i386/i386.c (override_options): Likewise.
3295         * doc/invoke.texi: Likewise.
3296
3297 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
3298
3299         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
3300         offsets for BIT_FIELD_REF and COMPONENT_REF.
3301
3302 2007-03-28  Richard Guenther  <rguenther@suse.de>
3303
3304         * tree.c (is_global_var): Move ...
3305         * tree-flow-inline.h (is_global_var): ... here.
3306         * tree.h (is_global_var): Remove declaration.
3307
3308 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
3309
3310         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
3311         option.
3312         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
3313         * config/i386/i386.c (ix86_tune_features): Initialize new
3314         tuning option.
3315         * config/i386/predicates.md (promotable_binary_operator): Use
3316         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
3317
3318 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
3319
3320         PR target/31380
3321         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
3322
3323 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
3324
3325         * config/fr30/fr30.md (movsi_internal): Change destination
3326         constraint from m to V and add m to the end.
3327
3328 2007-03-28  Christian Bruel  <christian.bruel@st.com>
3329
3330         * config/sh/sh.md (movsi_i): Fix type attribute.
3331
3332 2007-03-28  Christian Bruel  <christian.bruel@st.com>
3333
3334         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
3335         (movsf_ie): Likewise.
3336
3337 2007-03-28  Christian Bruel  <christian.bruel@st.com>
3338
3339         * config.gcc: Add sh4-300 to multilib.
3340         * config/sh/t-mlib-sh4-300: New file.
3341
3342 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
3343
3344         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
3345         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
3346         fix_trunc<mode>di2.
3347         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
3348         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
3349         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
3350         "fixuns_trunctddi2"): Whitespace fix.
3351
3352 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3353
3354         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
3355         the definition of struct sh_args.
3356         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
3357         CALL_COOKIE_INT_REG_GET): Likewise.
3358
3359 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
3360
3361         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
3362         transformations are applied successfully.
3363
3364 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
3365
3366         * tree.c (tree_contains_struct): Permit 512 tree codes.
3367         * tree.h (tree_contains_struct): Ditto.
3368         (MAX_TREE_CODES): Ditto.
3369         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
3370         SPARE member to store remaining padding bits.
3371
3372 2007-03-27  Anatoly Sokolov <aesok@post.ru>
3373
3374         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
3375         architecture.
3376
3377 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
3378
3379         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
3380         * configure: Regenerate.
3381
3382         * configure: Regenerate using the correct version of autoconf.
3383
3384 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
3385
3386         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
3387         pointer regs.
3388         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
3389         regs to "__SP_L__" and "__SP_H__".
3390
3391 2007-03-27  Richard Guenther  <rguenther@suse.de>
3392
3393         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
3394         computations with it with a HOST_WIDE_INT variable.
3395
3396 2007-03-26  Mike Stump  <mrs@apple.com>
3397
3398         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
3399         objective-c-header, objective-c++-header and objc++-cpp-output
3400         support.
3401         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
3402
3403 2007-03-26  Richard Henderson  <rth@redhat.com>
3404
3405         PR target/31361
3406         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
3407         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
3408         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
3409         IX86_BUILTIN_PSRLQ128): New.
3410         (ix86_init_mmx_sse_builtins): Add them.
3411         (ix86_expand_builtin): Expand them.
3412         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
3413         operand 2 be TImode.
3414         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
3415         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
3416         _mm_srli_epi64): Mark __B const.
3417         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
3418         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
3419         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
3420         new two-vector shift builtins.
3421
3422 2007-03-26  Ian Lance Taylor  <iant@google.com>
3423
3424         PR tree-optimization/31345
3425         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
3426         [+INF, +INF(OVF)] into VARYING.
3427
3428 2007-03-26  Zack Weinberg  <zackw@panix.com>
3429
3430         * gengtype-parse.c: New file.
3431         * gengtype-yacc.y: Delete.
3432         * gengtype-lex.l: Don't include gengtype-yacc.h.
3433         Define YY_DECL and yyterminate appropriately for recursive
3434         descent parser.  yylval is now a string out-parameter to yylex.
3435         (HWS, EOID): New shorthand.
3436         (IWORD): Add a couple more types.
3437         (yylex): Add a setup stanza.  Remove the complex rules for
3438         detecting GTY'ed types and typedefs; replace with simple
3439         keyword detectors.  Adjust everything for the changed
3440         definition of yylval.  Ignore all pp-directives, not just #define.
3441         (yyerror): Delete.
3442         (parse_file): Rename yybegin; do not call yyparse.
3443         (yyend): New.
3444         * gengtype.c (xasprintf): Export again.
3445         (this_file): New.  Use everywhere __FILE__ was being used.
3446         (get_lang_bitmap): Special case types defined in gengtype.c.
3447         (do_typedef, new_structure): Suppress definition of certain types.
3448         (new_structure): Improve diagnostics of duplicate definitions.
3449         Make sure location_s is associated with input.h.
3450         (nreverse_pairs, define_location_structures): New functions.
3451         (main): Improve tagging of kludge types.  Remove old kludges
3452         for input.h types; use define_location_structures.
3453         * gengtype.h: Update prototypes.  Define token codes here.
3454         * Makefile.in: Remove all references to gengtype-yacc.
3455         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
3456         and gengtype.
3457         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
3458         add GTY((skip)) to the field that's only conditionally there.
3459         * doc/install.texi: Document that Bison is no longer required
3460         unless building treelang.
3461
3462         * gengtype.c: Don't include gtyp-gen.h.
3463         (srcdir): Declare here.
3464         (base_files, lang_dir_names): Allocate dynamically.
3465         (gt_files, num_gt_files, num_lang_dirs): New globals.
3466         (measure_input_list, read_input_line, read_input_list)
3467         (set_lang_bitmap): New functions.
3468         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
3469         simplify, relying on read_input_list to set up the bitmaps.
3470         (main): Arguments are no longer unused.  Check for correct number
3471         of command line arguments, set srcdir and srcdir_len, then call
3472         read_input_list, before doing anything else.  No need to worry
3473         about duplicates in main loop.
3474         * configure.ac: Simplify the calculation of all_gtfiles.
3475         Put language tags in there.  Don't set or substitute
3476         all_gtfiles_files_langs or all_gtfiles_files_frags.
3477         * Makefile.in: Revamp the way gengtype is invoked, now that it
3478         takes a file on its command line with a much simpler format.
3479         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
3480         (GTFILES): Remove duplicates and C source files.
3481         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
3482         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
3483         * configure: Regenerate.
3484
3485         * gengtype.h: Remove all type definitions to gengtype.c; leave
3486         only definitions of options_p, type_p, and pair_p as opaque
3487         pointers.  Update prototypes.
3488         * gengtype.c: Many type definitions moved here from gengtype.h.
3489         Consolidate type definitions at the top of the file.
3490         (xvasprintf): Delete.
3491         (xasprintf): Make static.
3492         (create_nested_pointer_option): Add 'next' parameter.
3493         (create_field_all, create_field_at): New functions.
3494         (create_field): Now a thin wrapper around create_field_all.
3495         (create_optional_field): Rename create_optional_field_ and add
3496         line argument.  Original name is now a macro which supplies
3497         __LINE__.
3498         (oprintf): Use vsnprintf directly.
3499         (close_output_files): Use fatal rather than perror/exit.
3500         (note_def_vec, note_def_vec_alloc): Use create_field_at.
3501         (main): Set progname.  Don't use exit.
3502         * gengtype-yacc.y (struct_fields): Use create_field_at.
3503         (option, optionseqopt): Delete.
3504         (optionseq): Consolidate productions from option here so we
3505         can use the first argument to create_option.
3506
3507         * gengtype-lex.l: Distinguish unions from structures in the
3508         token type.  Don't call find_structure; return the tag as a string.
3509         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
3510         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
3511         Reorganize typedef_struct production accordingly.
3512         Use create_nested_ptr_option.
3513         * gengtype.c (create_nested_ptr_option): New function.
3514         * gengtype.h: Declare it.
3515
3516         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
3517         (string_type): Don't declare.
3518         (do_scalar_typedef): Declare.
3519         (create_scalar_type): Update prototype.
3520         * gengtype.c (string_type): Make static.
3521         (scalar_nonchar, scalar_char): New.
3522         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
3523         (resolve_typedef): Use scalar_nonchar for error recovery.
3524         (create_scalar_type): Remove name_len field.  Return scalar_char
3525         or scalar_nonchar as appropriate.
3526         (adjust_field_type): Look at scalar_is_char boolean to decide whether
3527         to use string_type.
3528         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
3529         whenever possible.
3530         (main): Initialize scalar_char and scalar_nonchar before calling
3531         gen_rtx_next.
3532         * gengtype-lex.l: Adjust for removal of second argument to
3533         create_scalar_type.  Use yylval.s instead of yylval.t when
3534         returning SCALAR.
3535         * gengtype-yacc.y: Type of SCALAR is string.  Call
3536         create_scalar_type from type:SCALAR rule.  Adjust for removal of
3537         second argument to create_scalar_type.
3538
3539         * vec.h: Remove all #if IN_GENGTYPE blocks.
3540         Add comment saying that changes may require adjustments to gengtype.
3541         * gengtype.c: Don't include coretypes.h or tm.h.
3542         Add comment to inclusion of errors.h.
3543         (note_def_vec, note_def_vec_alloc): New functions.
3544         * gengtype.h: Declare new functions.
3545         * gengtype-lex.l: Don't include coretypes.h.
3546         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
3547         Delete.
3548         (update_lineno): Remove unnecessary prototype.
3549         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
3550         (VEC rule): Just return VEC_TOKEN.
3551         * gengtype-yacc.y (VEC_TOKEN): New token type.
3552         (type): Add a production for VEC(a,b).
3553         * Makefile.in: Update dependencies.
3554
3555         * gengtype-lex.l: Remove rules for parsing pointer-to-function
3556         typedefs that use the old PARAMS macro.
3557
3558         * gengtype-lex.l: Remove all rules and states relating to yacc
3559         input files.
3560         * gengtype-yacc.y: Similarly.
3561         * gengtype.c (note_yacc_type): Delete function.
3562         * gengtype.h: Update prototypes.
3563
3564 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
3565
3566         * tree-pretty-print.c (dump_generic_node): Report precision of
3567         unnamed integer types.
3568
3569 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
3570
3571         * ifcvt.c (noce_try_store_flag_constants): Don't check
3572         no_new_pseudos here.
3573         (noce_try_store_flag_constants): Don't check no_new_pseudos.
3574         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
3575         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
3576         noce_try_sign_mask): Likewise.
3577         (if_convert): Check no_new_pseudos here.
3578
3579         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
3580         Remove prototypes.
3581         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
3582         (noce_get_condition): Handle new then_else_reversed argument.
3583         (noce_init_if_info): Remove, fold into noce_find_if_block.
3584         (noce_process_if_block): Take a struct noce_if_info as the
3585         argument.  Don't set up one based on ce_if_info.  Update pointer
3586         references accordingly.
3587         (cond_move_process_if_block): Likewise.
3588         (process_if_block): Removed.
3589         (find_if_block): Removed.  Move functionality two new functions,
3590         noce_find_if_block and cond_exec_find_if_block.
3591         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
3592         blocks and the symmetric IF-ELSE-JOIN case.
3593         (cond_exec_find_if_block): Also new function mostly based on old
3594         find_if_block and process_if_block.
3595         (find_if_header): Replace find_if_block call with separately
3596         guarded calls to noce_find_if_block and cond_exec_find_if_block.
3597         (find_cond_trap): Update noce_get_condition call.
3598         (dead_or_predicable): Likewise.
3599
3600 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
3601
3602         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
3603         Remove.
3604         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
3605         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
3606         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
3607         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
3608         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
3609         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
3610         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
3611         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
3612         __builtin_ia32_psrad128 builtins.
3613
3614 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
3615
3616         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
3617         * config/i386/constraints.md
3618         (define_constraint "I"): Use IN_RANGE macro.
3619         (define_constraint "J"): Ditto.
3620         (define_constraint "K"): Ditto.
3621         (define_constraint "M"): Ditto.
3622         (define_constraint "N"): Ditto.
3623         (define_constraint "O"): Ditto.
3624         * config/i386/predicates.md
3625         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
3626         (define_predicate "const_0_to_3_operand"): Ditto.
3627         (define_predicate "const_0_to_7_operand"): Ditto.
3628         (define_predicate "const_0_to_15_operand"): Ditto.
3629         (define_predicate "const_0_to_63_operand"): Ditto.
3630         (define_predicate "const_0_to_255_operand"): Ditto.
3631         (define_predicate "const_1_to_31_operand"): Ditto.
3632         (define_predicate "const_2_to_3_operand"): Ditto.
3633         (define_predicate "const_4_to_7_operand"): Ditto.
3634
3635 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
3636
3637         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
3638         in SImode for save_world.
3639         * config/rs6000/altivec.md (save_world, restore_world): Convert to
3640         LR hard reg.
3641
3642 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
3643
3644         PR tree-optimization/30784
3645         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
3646         BIT_FIELD_REF.
3647
3648 2007-03-25  Revital Eres  <eres@il.ibm.com>
3649
3650         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
3651           Fold movement_possibility function into it.
3652
3653 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
3654
3655         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
3656         (load_macho_picbase_{si,di}): Convert to LR hard reg.
3657         (call_indirect_nonlocal_darwin64): Same.
3658         (call_nonlocal_darwin64): Same.
3659         (call_value_indirect_nonlocal_darwin64): Same.
3660         (call_value_nonlocal_darwin64): Same.
3661         (sibcall_nonlocal_darwin64): Same.
3662         (sibcall_value_nonlocal_darwin64): Same.
3663         (sibcall_symbolic_64): Same.
3664         (sibcall_value_symbolic_64): Same.
3665         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
3666         LR pseudo.
3667         (rs6000_emit_load_toc_table): Same.
3668         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
3669         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
3670         (mull_call): Same.
3671         (divss_call): Same.
3672         (divus_call): Same.
3673         (quoss_call): Same.
3674         (quous_call): Same.
3675         (load_toc_v4_pic_si): Same
3676         (load_toc_v4_PIC_1): Same.
3677         (load_toc_v4_PIC_1b): Same.
3678         (call_indirect_aix{32,64}): Same.
3679         (call_value_indirect_aix{32,64}): Same.
3680         (call): Same.
3681         (call_value): Same.
3682         (call_local{32,64}): Same.
3683         (call_value_local{32,64}): Same.
3684         (call_indirect_nonlocal_aix{32,64}): Same.
3685         (call_nonlocal_aix{32,64}): Same.
3686         (call_value_indirect_nonlocal_aix{32,64}): Same.
3687         (call_value_nonlocal_aix{32,64}): Same.
3688         (call_indirect_nonlocal_sysv<mode>): Same.
3689         (call_nonlocal_sysv<mode>): Same.
3690         (call_value_indirect_nonlocal_sysv<mode>): Same.
3691         (call_value_nonlocal_sysv<mode>): Same.
3692         (sibcall): Same.
3693         (sibcall_local{32,64}): Same.
3694         (sibcall_value_local{32,64}): Same.
3695         (sibcall_nonlocal_aix{32,64}): Same.
3696         (sibcall_value_nonlocal_aix{32,64}): Same.
3697         (sibcall_nonlocal_sysv<mode>): Same.
3698         (sibcall_value): Same.
3699         (sibcall_value_nonlocal_sysv<mode>): Same.
3700
3701 2007-03-24  Paul Brook  <paul@codesourcery.com>
3702
3703         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
3704         * config/arm/linux-eabi.h: Remove legacy syscall hack.
3705
3706 2007-03-24  Richard Henderson  <rth@redhat.com>
3707
3708         * config/ia64/constraints.md: New file.
3709         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
3710         satisfies_constraint_?.
3711         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
3712         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
3713         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
3714         ia64_output_mi_thunk): Likewise.
3715         (ia64_const_ok_for_letter_p): Remove.
3716         (ia64_const_double_ok_for_letter_p): Remove.
3717         (ia64_extra_constraint): Remove.
3718         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
3719         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
3720         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
3721         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
3722         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
3723         EXTRA_MEMORY_CONSTRAINT): Remove.
3724         * config/ia64/ia64.md: Include constriants.md.  Replace
3725         CONST_OK_FOR_? with satisfies_constraint_?.
3726
3727 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
3728             H.J. Lu  <hongjiu.lu@intel.com>
3729
3730         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
3731         DPD or BID name.
3732         (name macros): Use DPD_BID_NAME to convert names properly.
3733
3734         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
3735         decimal floating point format.
3736         (init_floating_libfuncs): Change decimal functions so that they
3737         have a "bid_" prefix if the decimal system uses the BID format,
3738         and "dpd_" prefix if the decimal system uses the DPD format.
3739         (init_interclass_conv_libfuncs): Ditto.
3740         (init_intraclass_conv_libfuncs): Ditto.
3741
3742         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
3743         using the BID format.
3744
3745         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
3746         whether we are using the BID decimal format.
3747         * configure: Regenerate.
3748
3749         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
3750         the compiler has decimal floating point enabled.  Define
3751         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
3752         instead of DPD.
3753
3754         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
3755         using the BID format.
3756
3757         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
3758         whether we are using the BID decimal format.
3759         * configure: Regenerate.
3760
3761         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
3762         the compiler has decimal floating point enabled.  Define
3763         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
3764         instead of DPD.
3765
3766         * doc/install.texi (--enable-decimal-float): Document BID and DPD
3767         options, and that it is enabled for i386/x86_64 systems.
3768
3769         * Makefile.in (enable_decimal_float): New.
3770         (DECNUMFMT): New.
3771         (DECNUMINC): Add  -I$(DECNUMFMT).
3772         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
3773         to $(DECNUMFMT) from $(DECNUM).
3774
3775         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
3776         Substitute enable_decimal_float.
3777         * configure: Regenerated.
3778
3779         PR other/30529
3780         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
3781         unsigned long.
3782
3783         * configure.ac: Enable decimal float for x86_64-*-linux*.
3784         * configure: Regenerated.
3785
3786         PR other/30530
3787         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
3788         decimal128ClearSign to flip and clear the sign bit in decimal128.
3789         (decimal_real_maxval): Set decimal128SetSign to set the sign
3790         bit in decimal128.
3791
3792 2007-03-23  Ian Lance Taylor  <iant@google.com>
3793
3794         * fold-const.c (fold_binary): Correct warning for X - c >= X.
3795
3796 2007-03-23  Ian Lance Taylor  <iant@google.com>
3797
3798         * tree-dump.c (dump_files): Correct comment.
3799
3800 2007-03-23  Ian Lance Taylor  <iant@google.com>
3801
3802         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
3803
3804 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
3805
3806         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
3807         in cfglayout mode.  Don't go into and out of cfglayout mode.
3808         Link the blocks in the order of the constructed traces.
3809         (rest_of_handle_tracer): Adjust call to tracer.
3810         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
3811         Don't go into cfglayout mode.
3812         (rtl_loop_done): Don't go out of cfglayout mode.
3813         * cfglayout.c (relink_block_chain): New function, split out from...
3814         (fixup_reorder_chain): ...here.  Remove redundant checking.
3815         (cfg_layout_finalize): Don't clear the header, footer, and aux
3816         fields here, move the code to do so to relink_block_chain.  Likewise
3817         for free_original_copy_tables.
3818         * rtl.h (tracer): Update prototype.
3819         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
3820         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
3821         mode.  Use relink_block_chain to serialize the CFG according to the
3822         new basic block order.  Move targetm.cannot_modify_jumps_p check from
3823         here...
3824         (gate_handle_reorder_blocks): ...to here.
3825         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
3826         from here...
3827         (gate_duplicate_computed_gotos): ...to here.
3828         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
3829         something always changes when going into and out of cfglayout mode.
3830         Perform an expensive cfg cleanup while going into cfglayout mode.
3831         Always update liveness information on HAVE_conditional_execution
3832         targets.  Reserialize the basic blocks and go out of cfglayout mode.
3833         * reg-stack.c: Include cfglayout.h.
3834         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
3835         the call to reorder_basic_blocks.
3836         * basic-block.h (reorder_basic_blocks): Update prototype.
3837         (relink_block_chain): New prototype.
3838         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
3839
3840 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
3841
3842         * config/mips/mips.md (type, hazard, *movdi_32bit,
3843         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
3844         *movhi_internal, *movqi_internal, *movsf_hardfloat,
3845         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
3846         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
3847         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
3848         applicable.
3849         (movcc): Change first xfer to multi.
3850         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
3851         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
3852         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
3853         config/mips/generic.md: Change reservations using "xfer" to use
3854         "mfc,mtc".
3855         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
3856         using match_operand.
3857         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
3858         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
3859         examining mode.
3860         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
3861
3862 2007-03-22  Richard Henderson  <rth@redhat.com>
3863
3864         * config/i386/i386.c: Remove unnecessary function declarations.
3865         Move targetm definition, and all related macros, to the end of
3866         the file.  Resort some functions to put definitions before uses.
3867         (ix86_attribute_table): Make static.  Move to end of file.
3868         (ix86_gimplify_va_arg): Make static.
3869
3870 2007-03-22  Richard Henderson  <rth@redhat.com>
3871
3872         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
3873         don't increase local_regparm with force_align_arg_pointer check.
3874         (ix86_function_sseregparm): Assert 32-bit.
3875         (type_has_variadic_args_p): New.
3876         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
3877         type_has_variadic_args_p.
3878         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
3879         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
3880         use memset instead.  Do maybe_vaarg check first; skip attribute
3881         tests if true; skip attribute tests for 64-bit.
3882         (construct_container): Remove TARGET_DEBUG_ARG.
3883         (function_arg_advance_32, function_arg_advance_64): Split out ...
3884         (function_arg_advance): ... from here.
3885         (function_arg_32, function_arg_64): Split out ...
3886         (function_arg): ... from here.
3887         (ix86_pass_by_reference): Tidy.
3888         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
3889         (function_value_32): New, from parts of ix86_function_value
3890         and ix86_value_regno.
3891         (function_value_64): New, from parts of ix86_function_value
3892         and ix86_libcall_value.
3893         (ix86_function_value_1): New.
3894         (ix86_function_value, ix86_libcall_value): Use it.
3895         (return_in_memory_32, return_in_memory_64): Split out ...
3896         (ix86_return_in_memory): ... from here.
3897         (ix86_struct_value_rtx): Skip for 64-bit.
3898         (ix86_libcall_value, ix86_value_regno): Remove.
3899         (setup_incoming_varargs_64): Split out ...
3900         (ix86_setup_incoming_varargs): ... from here.
3901         (ix86_va_start): Remove TARGET_DEBUG_ARG.
3902         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
3903         * config/i386/i386-protos.h (ix86_function_value): Remove.
3904         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
3905
3906 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3907
3908         PR other/23572
3909         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
3910         infinities not supported, otherwise emit warning if -Woverflow. On
3911         underflow, emit warning if -Woverflow.
3912         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
3913         and 0 otherwise.
3914         * real.h (real_from_string): Update declaration
3915
3916 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
3917             Richard Henderson  <rth@redhat.com>
3918
3919         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
3920         * calls.c (compute_argument_block_size, expand_call,
3921         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
3922         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
3923         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
3924         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
3925         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
3926         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
3927         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
3928         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
3929         Set to 1.
3930
3931 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
3932
3933         * c-incpath.c (add_sysroot_to_chain): New.
3934         (merge_include_chains): Add sysroot argument.  Call
3935         add_sysroot_to_chain if sysrooted.
3936         (register_include_chains): Update call to merge_include_chains.
3937         * doc/cppopts.texi: Document use of '=' in include directory
3938         arguments.
3939
3940 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
3941
3942         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
3943         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
3944         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
3945         insn pattern using X87MODEF12 mode macro.
3946
3947 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
3948
3949         * regmove.c (regmove_optimize): Use reg_mentioned_p
3950         instead of reg_overlap_mentioned_p for DST.
3951
3952 2007-03-21  Mike Stump  <mrs@apple.com>
3953
3954         * c.opt: Fixup for Objective-C/C++.
3955
3956 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
3957
3958         * explow.c (convert_memory_address): Fold memory reference when
3959         POINTERS_EXTEND_UNSIGNED < 0
3960
3961 2007-03-21  Richard Henderson  <rth@redhat.com>
3962
3963         PR target/31245
3964         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
3965         * config/i386/mmintrin.h (__m64): Likewise.
3966         * config/i386/xmmintrin.h (__m128): Likewise.
3967
3968 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
3969
3970         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
3971         (VXWORKS_OS_CPP_BUILTINS): Define.
3972         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
3973         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
3974
3975 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
3976
3977         * rtl.h (constant_pool_reference_p): Delete.
3978         (find_constant_src): Declare.
3979         * rtlanal.c (find_constant_src): New function.
3980         * simplify-rtx.c (constant_pool_reference_p): Delete.
3981         * config/i386/i386.md: Use find_constant_src instead of
3982         constant_pool_reference_p/avoid_constant_pool_reference pairs.
3983
3984 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
3985
3986         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
3987         * c-cppbuiltin.c (c_cpp_builtins): Define them.
3988
3989 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
3990
3991         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
3992         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
3993         (arm_elf_asm_constructor): Use it.
3994         (arm_elf_asm_destructor): New function.
3995
3996 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
3997
3998         * jump.c (mark_jump_label): Treat SEQUENCE specially.
3999
4000 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
4001
4002         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
4003
4004 2007-03-19  Andrew Haley  <aph@redhat.com>
4005
4006         PR tree-optimization/31264
4007         * tree-vrp.c (register_edge_assert_for_1): Don't look though
4008         VIEW_CONVERT_EXPRs.
4009
4010 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
4011
4012         PR rtl-optimization/30907
4013         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
4014         (fwprop_init): Always call loop_optimizer_initialize.
4015         (fwprop_done): Always call loop_optimizer_finalize.
4016         (fwprop): We always have loop info now.
4017         (gate_fwprop_addr): Remove.
4018         (pass_fwprop_addr): Use gate_fwprop as gate.
4019
4020         PR rtl-optimization/30841
4021         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
4022         df_chain_alloc): Call df_reorganize_refs unconditionally.
4023         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
4024         refs_organized to refs_organized_size.
4025         (df_ref_create_structure): Use refs_organized_size instead of
4026         bitmap_size if refs had been organized, and keep refs_organized_size
4027         up-to-date.
4028         * df.h (struct df_ref_info): Change refs_organized to
4029         refs_organized_size.
4030         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
4031         bitmap_size.
4032
4033 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
4034
4035         * except.c (output_function_exception_table): Do not reference the
4036         EH personality routine for functions that do not require an
4037         exception table.
4038
4039 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
4040
4041         PR c/30762
4042         * c-typeck.c (convert_for_assignment): Call comptypes for
4043         RECORD_TYPE or UNION_TYPE.
4044
4045         PR inline-asm/30505
4046         * reload1.c (reload): Do invalid ASM checking after
4047         cleanup_subreg_operands.
4048
4049 2007-03-19  Jeff Law  <law@redhat.com>
4050
4051         * tree-cfg.c (find_taken_edge): Tighten conditions for
4052         optimizing computed gotos.
4053
4054 2007-03-19  Michael Matz  <matz@suse.de>
4055
4056         * builtins.c (expand_builtin_sync_operation,
4057         expand_builtin_compare_and_swap,
4058         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
4059         correctly.
4060
4061         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
4062         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
4063         for operand 3.
4064
4065 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
4066
4067         * doc/tm.texi: Add brackets around the return type of
4068         TARGET_SECONDARY_RELOAD.
4069
4070 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4071         Richard Guenther  <rguenther@suse.de>
4072
4073         PR tree-optimization/31254
4074         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
4075         Use handled_component_p () where appropriate.  Continue
4076         propagating into the rhs if we propagated into an INDIRECT_REF
4077         on the lhs.
4078
4079 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
4080
4081         * config/s390/s390.md (op_type attribute): RRR instruction type added.
4082         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
4083         (xde, xdee): Mode attributes adjusted to support DFP modes.
4084         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
4085         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
4086         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
4087         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
4088         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
4089         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
4090         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
4091         numbers.
4092         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
4093         "movsf"): Insn definitions removed.
4094         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
4095         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
4096         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
4097         definitions added.
4098         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
4099         "reload_in<mode>", "reload_out<mode>"): Expander added.
4100         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
4101         Expander removed.
4102
4103 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
4104
4105         * config/s390/s390.md: Only non-functional changes.  Renamed
4106         FPR mode macro to BFP all over the file.
4107
4108 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
4109
4110         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
4111         (op_type attribute): RRF instruction type added.
4112         (fT0): New mode attribute.
4113         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
4114         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
4115         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
4116         no secondary memory is needed when moving DFmode values between GPRs
4117         and FPRs.
4118
4119 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
4120
4121         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
4122         inverted and documentation adjusted.
4123         ("mhard-dfp", "msoft-dfp"): New options.
4124         * config/s390/s390.c (s390_handle_arch_option): New architecture
4125         switch: z9-ec.
4126         (override_options): Sanity checks for the new options added.
4127         * config.gcc: New architecture switch: z9-ec.
4128         * config/s390/s390.h (processor_flags): PF_DFP added.
4129         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
4130         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
4131         when the bit is NOT set so remove it from the defaults.
4132
4133 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
4134
4135         * genemit.c (main): Print include statement for dfp.h.
4136         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
4137         is not available.
4138
4139 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
4140
4141         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
4142
4143 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
4144
4145         PR target/31022
4146         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
4147         instead of PATTERN.
4148
4149 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4150
4151         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
4152         attr_length_call, output_call, output_indirect_call): Cleanup
4153         formatting of targetm calls.
4154
4155 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
4156
4157         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
4158
4159 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4160
4161         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
4162         reservation, bypass and anti-bypass descriptions for these instructions.
4163         Update move patterns.
4164         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
4165         TYPE_FPSTORE.
4166
4167 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
4168
4169         * tree-vect-transform.c (get_initial_def_for_induction): Replace
4170         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
4171         (get_initial_def_for_reduction): Likewise.
4172
4173 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
4174
4175         Fix PR tree-optimization/29922
4176         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
4177         (get_representative): Removed.
4178         (value_dies_in_block_x): Update for rvuse removal.
4179         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
4180         (compute_antic_aux): Handle when PHI nodes appear in
4181         non-single-successors.
4182         (dump_bitmap_of_names): Removed.
4183         (compute_antic_safe): Renamed and removed rvuse calculation.
4184         Calculate only antic safe.
4185         (insert_into_preds_of_block): Remove assert.
4186         (execute_pre): Update for renamed functions.
4187         (defer_or_phi_translate_block): New function.
4188
4189 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
4190
4191         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
4192         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
4193         typos.
4194         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
4195         Follow spelling conventions.
4196
4197         * tree-data-ref.h: Remove the prototype for analyze_array.
4198
4199 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
4200
4201         PR tree-optimization/31041
4202         * tree-vect-transform.c (get_initial_def_for_induction): Call
4203         force_gimple_operand.
4204
4205 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
4206
4207         * ipa-type-escape.c (look_for_casts) : Revert code to use
4208         handled_component_p due to ada test a-numaux.adb.
4209
4210 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
4211
4212         * final.c (final_scan_insn): Alter the condition of a
4213         conditional trap if we have nonstandard CC.
4214
4215 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
4216
4217         * configure.ac: Remove excess quoting from asm line 0 test.
4218         * configure: Rebuilt.
4219
4220 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4221
4222         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
4223         * c-common.c (convert_and_check): Move warning logic to...
4224         (warnings_for_convert_and_check): ...here. Define.
4225         * c-common.h (warnings_for_convert_and_check): Declare.
4226
4227 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4228
4229         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
4230         (output_call): Likewise.
4231
4232 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
4233
4234         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
4235
4236 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
4237
4238         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
4239
4240 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
4241
4242         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
4243         opteron, athlon-64 and athlon-fx processor_alias_table entries.
4244
4245 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
4246
4247         PR tree-optimization/31183
4248         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
4249         Use double_int instead of unsigned int for representing access_strides.
4250         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
4251
4252 2007-03-16  Richard Guenther  <rguenther@suse.de>
4253
4254         PR tree-optimization/31146
4255         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
4256         to allow recursion of forward_propagate_addr_expr.
4257         (forward_propagate_addr_into_variable_array_index): Likewise.
4258         (forward_propagate_addr_expr): Likewise.
4259         (tree_ssa_forward_propagate_single_use_vars): Likewise.
4260         (forward_propagate_addr_expr_1): Recurse on simple copies
4261         instead of propagating into them.  Do so for useless conversions
4262         as well.
4263         (forward_propagate_addr_expr): Clean up unused statements after
4264         recursion.
4265
4266 2007-03-16  Richard Guenther  <rguenther@suse.de>
4267
4268         * builtins.c (expand_builtin_cexpi): Use the right argument
4269         for the expansion via cexp.
4270
4271 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
4272
4273         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
4274         * configure: Rebuilt.
4275
4276 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
4277
4278         PR debug/29906
4279         * dwarf2out.c (force_type_die): Adjust comment.
4280         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
4281
4282 2007-03-15  DJ Delorie  <dj@redhat.com>
4283
4284         * config/frv/predicates.md (minmax_operator): Don't check operands
4285         here.
4286
4287 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
4288
4289         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
4290         Update constant estimates of number of iterations.
4291         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
4292         argument renamed to "realistic".
4293         (compute_estimated_nb_iterations): Removed.
4294         (record_niter_bound): New function.
4295         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
4296         call record_nonwrapping_iv with upper = false.
4297         (infer_loop_bounds_from_signedness): Pass upper argument to
4298         record_nonwrapping_iv.
4299         (estimate_numbers_of_iterations_loop): Do not call
4300         compute_estimated_nb_iterations.  Record estimate based on profile
4301         information.  Initialize the constant estimates of number of
4302         iterations.
4303         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
4304         estimates.
4305         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
4306         number of iterations is too small.
4307         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
4308         (EST_NOT_AVAILABLE): Removed.
4309         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
4310         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
4311         fields.
4312
4313 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
4314
4315         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
4316         Handle NE_EXPR guards.
4317
4318 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4319
4320         PR c++/24924
4321         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
4322         Set also -pedantic-errors by default for the  preprocessor unless
4323         -fpermissive is given.
4324
4325 2007-03-15  Richard Guenther  <rguenther@suse.de>
4326
4327         PR middle-end/29719
4328         PR middle-end/31161
4329         * builtins.c (expand_builtin_cexpi): As a fallback if we
4330         don't have builtins for sincos or cexp create a function
4331         declaration for cexp and expand to a call to that.
4332         (expand_builtin_int_roundingfn): Always fall
4333         back to floor/ceil and its variants even if they may be
4334         not available.
4335
4336 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
4337
4338         PR middle-end/31159
4339         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
4340         jump tables, move the call to delete_dead_jumptables from here...
4341         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
4342         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
4343         don't allow merging of blocks that try_redirect_by_replacing_jump
4344         also does not handle when not optimizing.
4345
4346 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
4347             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
4348
4349         * config/i386/i386.md (x86_sahf_1): Correctly handle
4350         HAVE_AS_IX86_SAHF.
4351
4352 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
4353
4354         PR target/31167
4355         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
4356         x86_64_general_operand as operand[2] predicate.  Remove "iF"
4357         from operand constraints and use "e" constraint instead.
4358         (*subti3_1, *subti3_1 splitter): Ditto.
4359         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
4360         operand[1] predicate.
4361
4362 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
4363
4364         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
4365         arrays, multiply the access strides by the size of the sub-array.
4366         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
4367
4368 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
4369
4370         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
4371         the configured assembler supports the sahf mnemonic.
4372         * configure: Regenerate.
4373         * config.in: Regenerate.
4374
4375         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
4376         emit "sahf" or ".byte\t0x9e" as asm template.
4377
4378 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
4379
4380         PR 31018
4381         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
4382         option to replace hard coded TARGET_xxx in md file.
4383         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
4384         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
4385         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
4386         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
4387         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
4388         (X86_TUNE_NOT_VECTORMODE): Ditto.
4389         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
4390         (TUNE_AVOID_VECTOR_DECODE): Ditto.
4391         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
4392         (TUNE_SLOW_IMUL_IMM8): Ditto.
4393         (TUNE_MOVE_M1_VIA_OR): Ditto.
4394         (TUNE_NOT_UNPAIRABLE): Ditto.
4395         (TUNE_NOT_VECTORMODE): Ditto.
4396
4397         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
4398         options.
4399
4400         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
4401         tuning options instead of hard coded TARGET_xxx.
4402         (fix ssemode peephole2's): Ditto.
4403         (imul peephole2's): Ditto.
4404         (movsi_or): Ditto.
4405         (movdi_or_rex64): Ditto.
4406         (move peephole2): Ditto.
4407         (not peephole2's): Ditto.
4408
4409 2007-03-14  Dirk Mueller  <dmueller@suse.de>
4410
4411         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
4412         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
4413         * c-parser.c (c_parser_if_body): Always add an empty statement in case
4414         of empty body.
4415         * c-parser.c (c_parser_do_statement): Warn about empty body in
4416         do/while statement.
4417         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
4418         * doc/invoke.texi (-Wempty-body): Update documentation.
4419
4420 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4421
4422         PR c/21438
4423         * c-common.h (warn_for_div_by_zero): Declare.
4424         * c-common.c (warn_for_div_by_zero): Define.
4425         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
4426         warning.
4427
4428 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
4429
4430         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
4431         to PREFIX and STANDARD_PREFIX.
4432
4433 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
4434             Phil Edwards  <phil@codesourcery.com>
4435
4436         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
4437         (__gthread_once_t): Remove busy field for RTPs.
4438         (__GTHREAD_ONCE_INIT): Update accordingly.
4439
4440 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
4441
4442         * doc/invoke.texi: Document VxWorks options.
4443
4444 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
4445
4446         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
4447
4448 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
4449
4450         PR tree-optimization/30590
4451         * tree-nrv.c (tree_nrv): Check for the partial update of the
4452         return value.
4453
4454 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
4455
4456         * flags.h (flag_random_seed): Remove declaration, in favor of...
4457         * toplev.h (get_random_seed, set_random_seed): ... these.
4458         * tree.c (get_file_function_name): Use the former.
4459         * opts.c (common_handle_option): Use the latter.
4460         * toplev.c
4461
4462 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
4463
4464         PR middle-end/31127
4465         * cse.c (cse_find_path): Do not bail out if a basic block that
4466         we already visited now becomes part of a path that starts at a
4467         different basic block.  Just disallow this, to make sure we
4468         visit each basic block at most once.
4469
4470 2007-03-13  Jan Hubicka  <jh@suse.cz>
4471
4472         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
4473         when profile esitmate is present, calls with very low frequency are
4474         cold.
4475
4476 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
4477
4478         PR tree-optimization/30730
4479         PR tree-optimization/26900
4480         * tree-ssa-loop-niter.c: Include gmp.h.
4481         (bounds): New type.
4482         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
4483         split_to_var_and_offset, determine_value_range,
4484         bound_difference_of_offsetted_base, refine_bounds_using_guard,
4485         bound_difference, bounds_add, bounds_negate,
4486         number_of_iterations_ne_max, dump_affine_iv): New functions.
4487         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
4488         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
4489         difference of initial and final value of control iv to validate
4490         results.
4491         (number_of_iterations_cond): Add loop parameter.  Determine bounds
4492         on the difference of the extremes of the control iv.  Add dumps.
4493         (expand_simple_operations): Handle phi nodes.
4494         (simplify_using_initial_conditions): Do not record used conditions.
4495         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
4496         Do not set additional_info.
4497         (implies_nonnegative_p, implies_ge_p): Removed.
4498         (derive_constant_upper_bound): Do not use parameter `additional'.
4499         (record_estimate): Parameter `additional' removed.  Parameter
4500         `i_bound' added.  Do not call derive_constant_upper_bound.
4501         (record_nonwrapping_iv): Use derive_constant_upper_bound to
4502         bound the number of iterations estimate.
4503         (estimate_numbers_of_iterations_loop): Pass the estimate from
4504         the number of iterations analysis to record_estimate.
4505         * tree.h (multiple_of_p): Declare.
4506         * tree-scalar-evolution.c (expression_expensive_p): Removed.
4507         (scev_const_prop): Do not check expression_expensive_p.
4508         * fold-const.c (multiple_of_p): Exported.
4509         * double-int.c (double_int_mask): Exported.
4510         * double-int.h (double_int_mask): Declare.
4511         * tree-flow.h (struct tree_niter_desc): Removed additional_info
4512         field.  Added max field.
4513
4514 2007-03-13  David Taylor  <taylor@candd.org>
4515
4516         PR driver/12448:
4517         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
4518         default -MQ.
4519
4520 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4521
4522         PR target/31123
4523         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
4524         two unamed patterns.
4525
4526 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
4527
4528         * config/i386/i386.opt (mcx16, msahf): New options.
4529         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
4530         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
4531
4532         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
4533         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
4534         Output -mcx16 and -msahf options when corresponding bit is set.
4535
4536         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
4537         and -msahf options.
4538
4539 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
4540
4541         * configure.ac: Test for assembler tolerance to # 0 "".
4542         * configure, config.in: Rebuilt.
4543         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
4544
4545 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
4546
4547         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
4548
4549         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
4550         (handle_syscall): Handle direct system calls.
4551         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
4552
4553 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
4554
4555         * doc/invoke.texi: Fix cpp.info cross-reference.
4556         * doc/passes.texi: Fix gcc.info cross-reference.
4557
4558 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
4559
4560         PR tree-optimization/30835
4561         * lambda-code.c (can_convert_to_perfect_nest): Check whether
4562         bb_for_stmt is not NULL before accessing it.
4563
4564 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
4565
4566         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
4567         some multilibs.
4568
4569 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
4570
4571         PR 30635
4572         * doc/install.texi: Document --enable-stage1-languages
4573
4574 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
4575
4576         * tree-pass.h (pass_into_cfg_layout_mode,
4577         pass_outof_cfg_layout_mode): Declare.
4578         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
4579         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
4580         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
4581         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
4582
4583 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
4584
4585         * c-decl.c (warn_variable_length_array): New function.
4586         Refactored from grokdeclarator to handle warn_vla
4587         and handle unnamed array case.
4588         (grokdeclarator): Refactored VLA warning case.
4589         * c.opt (Wvla): New flag.
4590         * doc/invoke.texi (Wvla): New warning.
4591
4592 2007-03-12  Richard Henderson  <rth@redhat.com>
4593
4594         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
4595         (TARGET_SECTION_TYPE_FLAGS): New.
4596
4597 2007-03-12  Richard Henderson  <rth@redhat.com>
4598
4599         * config/darwin.c (machopic_reloc_rw_mask): New.
4600         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
4601         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
4602
4603 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
4604
4605         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
4606         * cppdefault.h (cpp_PREFIX): Document.
4607         (cpp_PREFIX_len): Likewise.
4608         (cpp_EXEC_PREFIX): New variable.
4609         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
4610         * c-incpath.c (add_standard_paths): Correct logic for relocating
4611         paths within prefix.
4612
4613 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
4614
4615         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
4616         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
4617         mode macro.
4618         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
4619         fix_truncdfdi_sse using SSEMODEF mode macro.
4620         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
4621         fix_truncdfsi_sse using SSEMODEF mode macro.
4622         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
4623         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
4624
4625 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
4626
4627         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
4628         elfos.h to tm_file.
4629
4630 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
4631
4632         * tree.h : Add multiple_of_p declaration.
4633         * fold-const.c (multiple_of_p): Make multiple_of_p public.
4634         * ipa-type-escape.c (results_of_malloc): Redundant.
4635         (visited_stmts): New. Visited stmt for walk_use_def_chains.
4636         (cast_type): Extended with new members.
4637         (check_cast): Returns cast_type.
4638         (cast): New structure for data of walk_use_def_chains.
4639         (is_malloc_result, is_cast_from_non_pointer_1,
4640         is_cast_from_non_pointer,
4641         is_array_access_through_pointer_and_index): New functions.
4642         (look_for_casts): Returns cast types.
4643         (check_call): Returns void.
4644         (okay_pointer_operation): Use support of pointer plus index,
4645         pointer plus constant and allow all multiplications.
4646
4647 2007-03-11  Richard Guenther  <rguenther@suse.de>
4648
4649         PR tree-optimization/31115
4650         * tree-vrp.c (extract_range_from_binary_expr): Make sure
4651         the shift count is positive and non-anti-range for RSHIFT_EXPR.
4652         A shift count of zero is not special as with *_DIV_EXPR.
4653         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
4654         direction.
4655
4656 2007-03-11  Ian Lance Taylor  <iant@google.com>
4657
4658         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
4659         the *_DIV_EXPR codes correctly with overflow infinities.
4660
4661 2007-03-11  Ira Rosen  <irar@il.ibm.com>
4662
4663         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
4664         indicate success/failure of the analysis. Add negation to subtrahend
4665         in case of subtraction. Fail if both operands contain constants.
4666         (create_data_ref): Fail if analyze_offset fails.
4667
4668 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
4669
4670         * config/i386/i386.md (frndintxf2): Rename to ...
4671         (rintxf2): ... this. Remove expander having same name.
4672         (rintsf2, rintdf2): Implement using SSEMODEF macro.
4673         (roundsf2, rounddf2): Ditto.
4674         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
4675         (lround<mode>di2, lround<mode>si2): Ditto.
4676
4677 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
4678
4679         * lower-subreg.c: Include except.h.
4680         (decompose_multiword_subregs): Verify that the only control flow
4681         insns we can split are loads to multi-words pseudos.
4682         Handle breaking such blocks after splitting, instead of calling
4683         find_many_sub_basic_blocks.
4684
4685         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
4686         on the new basic block.  Add a lengthy comment explaining why we
4687         thought this was necessary.
4688         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
4689
4690 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
4691
4692         PR c++/30924
4693         * tree.c (walk_type_fields): Recurse into the element type of
4694         ARRAY_TYPEs if there is a pointer set.
4695
4696 2007-03-10  Dirk Mueller  <dmueller@suse.de>
4697
4698         * c-common.c (warn_logical_operator): Fix condition.
4699
4700 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
4701
4702         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
4703         quotation mark.
4704         * config/darwin.c (machopic_select_section): Remove superfluous
4705         argument in call to categorize_decl_for_section.  Remove unused
4706         variable shlib.
4707
4708 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
4709
4710         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
4711         defined.
4712         * configure: Regenerate.
4713
4714 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
4715
4716         PR target/31101
4717         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
4718         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
4719         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
4720         Add LABEL_NUSES to emitted label.
4721         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
4722         branch probability value to emitted jump insn.
4723         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
4724         Do not check life information and do not re-arrange input operands
4725         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
4726
4727 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
4728
4729         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
4730         the change of decode_asm_operands.
4731
4732 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
4733
4734         * mode-switching.c (create_pre_exit): Skip blockage insn.
4735
4736 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
4737
4738         * tree-pass.h (TODO_update_smt_usage): Remove.
4739         Update all users.
4740         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
4741         argument SOME.
4742         Update all users.
4743
4744 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4745
4746         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
4747         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
4748         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
4749         SOM target.
4750
4751 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
4752
4753         * gcc.c: Document %{, in big comment at top.
4754         (input_suffix_matches): Remove special handling for .s and
4755         .S.
4756         (input_spec_matches): New.
4757         (handle_braces): Handle %{,.
4758         (validate_switches): ',' indicates a value which is not a switch.
4759         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
4760         to detect assembler input.
4761         * config/i386/sol2.h (CPP_SPEC): Likewise.
4762         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
4763         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
4764         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
4765         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
4766         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
4767         -m64 causes deployment target to default to 10.5.
4768         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
4769
4770 2007-03-09  Richard Henderson  <rth@redhat.com>
4771
4772         PR target/26090
4773         * target.h (targetm.asm.out.reloc_rw_mask): New.
4774         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
4775         (TARGET_ASM_OUT): Use it.
4776         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
4777         * varasm.c (categorize_decl_for_section): Remove shlib argument;
4778         use the new reloc_rw_mask target hook instead.
4779         (default_section_type_flags_1): Merge into...
4780         (default_section_type_flags): ... here.
4781         (decl_readonly_section_1): Merge into...
4782         (decl_readonly_section): ... here.
4783         (default_elf_select_section_1): Merge into...
4784         (default_elf_select_section): ... here.
4785         (default_unique_section_1): Merge into...
4786         (default_unique_section): ... here.
4787         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
4788         (default_select_rtx_section): Use it.
4789         (default_elf_select_rtx_section): Likewise.
4790         * output.h: Update to match.
4791         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
4792         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
4793         (TARGET_ASM_RELOC_RW_MASK): New.
4794         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
4795         to categorize_decl_for_section.
4796         (x86_64_elf_unique_section): Likewise.
4797         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
4798         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
4799         (TARGET_ASM_RELOC_RW_MASK): New.
4800         * config/ia64/ia64.c (ia64_rwreloc_select_section,
4801         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
4802         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
4803         (TARGET_RWRELOC): Remove.
4804         (ia64_section_type_flags): Adjust call to default_section_type_flags.
4805         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
4806         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
4807         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
4808         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
4809         (rs6000_xcoff_select_section): Use decl_readonly_section.
4810         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
4811         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
4812         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
4813         (TARGET_SECTION_TYPE_FLAGS): Remove.
4814         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
4815
4816 2007-03-09  Roger Sayle  <roger@eyesopen.com>
4817
4818         * fold-const.c (fold_comparison): Remove compile-time evaluation of
4819         complex constant equality/inequality comparisons for here.
4820         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
4821         known at compile-time or can be simplified to a scalar comparison.
4822         (fold_relational_const): Move compile-time evaluation of complex
4823         constant equality/inequality comparisons to here.
4824
4825 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
4826
4827         PR rtl-optimization/30643
4828         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
4829         dest_addr_elt.
4830         (fold_rtx): Recurse, like before 2006-11-03.
4831
4832 2007-03-09  DJ Delorie  <dj@redhat.com>
4833
4834         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
4835         m32c-pragma.o.
4836
4837 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
4838
4839         PR tree-optimization/30375
4840         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
4841         LHS of statements is not the same.
4842         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
4843
4844 2007-03-09  Chao-ying Fu  <fu@mips.com>
4845
4846         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
4847         REV 2.
4848         * doc/invoke.texi (-mdspr2): Document new option.
4849         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
4850         New unspec for DSP REV 2.
4851         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
4852         these instructions are extended in DSP REV 2.
4853         (mips-dspr2.md): Include.
4854         * config/mips/mips.opt (mdspr2): New option.
4855         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
4856         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
4857         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
4858         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
4859         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
4860         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
4861         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
4862         and 2 builtins.
4863         (bdesc_map): Add one field of unsupported_target_flags.
4864         (bdesc_arrays):  Update entries to have extra fields.  Add
4865         dsp_32only_bdesc.
4866         (mips_init_builtins): Initialize new function types.
4867         Check unsupported_target_fileds to filter out builtins.
4868         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
4869         TARGET_DSPR2.
4870         (ASM_SPEC): Pass mdspr2 to the assembler.
4871         * config/mips/mips-dspr2.md: New file.
4872
4873 2007-03-09  Sa Liu  <saliu@de.ibm.com>
4874
4875         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
4876
4877 2007-03-09  Ian Lance Taylor  <iant@google.com>
4878
4879         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
4880         argument) like -Wstrict-overflow=2.
4881         * doc/invoke.texi (Warning Options): Update documentation.
4882
4883 2007-03-09  Dirk Mueller  <dmueller@suse.de>
4884
4885         PR c++/17946
4886         * doc/invoke.texi (-Wlogical-op): Document.
4887         * common.opt (-Wlogical-op): New.
4888         * c-common.h (warn_logical_operator): Declare.
4889         * c-common.c (warn_logical_operator): Define.
4890         * c-typeck.c (parser_build_binary_op): Call
4891         warn_logical_operator.
4892
4893 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
4894
4895         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
4896         * final.c (final_scan_insn): Test for non-"" file name.
4897
4898 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
4899
4900         * doc/loop.texi: Document the Omega linear constraints solver.
4901         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
4902         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
4903         omega-hash-table-size, omega-max-keys, and
4904         omega-eliminate-redundant-constraints.
4905         * tree-pass.h (pass_check_data_deps): Declared.
4906         * omega.c: New.
4907         * omega.h: New.
4908         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
4909         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
4910         pass_check_data_deps): New.
4911         * tree-data-ref.c (init_data_ref): Remove declaration.
4912         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
4913         (analyze_array): Renamed init_array_ref, move up initializations.
4914         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
4915         Removed arguments that are set to NULL.
4916         (analyze_indirect_ref): Correct indentation, correct call to
4917         init_pointer_ref.
4918         (object_analysis): Call init_array_ref instead of analyze_array.
4919         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
4920         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
4921         of DR_ACCESS_FNS_ADDR.
4922         (init_omega_eq_with_af, omega_extract_distance_vectors,
4923         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
4924         ddr_consistent_p): New.
4925         (compute_affine_dependence): Check consistency of ddrs when
4926         flag_check_data_deps is passed.
4927         (analyze_all_data_dependences): Uncomment.
4928         (tree_check_data_deps): New.
4929         * tree-data-ref.h: Include omega.h.
4930         (DR_ACCESS_FNS_ADDR): Removed.
4931         (data_dependence_relation): Add inner_loop.
4932         (DDR_INNER_LOOP): New.
4933         * common.opt (fcheck-data-deps): New.
4934         * tree-flow.h (tree_check_data_deps): Declare.
4935         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
4936         (OBJS-common): Depend on omega.o.
4937         (omega.o): Define.
4938         * passes.c (pass_check_data_deps): Scheduled.
4939         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
4940         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
4941         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
4942         PARAM_VECT_MAX_VERSION_CHECKS,
4943         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
4944
4945 2007-03-09  Richard Guenther  <rguenther@suse.de>
4946
4947         PR tree-optimization/30904
4948         PR middle-end/31058
4949         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
4950         the same way as *_DIV_EXPR.
4951
4952 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
4953
4954         * recog.c (decode_asm_operands): No mixed declarations and code.
4955
4956 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
4957
4958         * rtl.def (ASM_INPUT): Add location.
4959         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
4960         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
4961         (decode_asm_operands): Add loc operand.
4962         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
4963         * stmt.c (expand_asm): Rename to...
4964         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
4965         gen_rtx_ASM_INPUT_loc.
4966         (expand_asm_expr): Adjust.
4967         * recog.c (decode_asm_operands): Add loc operand.
4968         (check_asm_operands, extract_insn): Adjust.
4969         * reload1.c (maybe_fix_stack_asms): Likewise.
4970         * final.c (asm_insn_count): Likewise.
4971         (final_scan_insn): Output # line before and after asm.
4972
4973 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
4974
4975         * tree-ssa-structalias.c (variable_info): Remove
4976         finished_solution.
4977         (new_var_info): Ditto.
4978         (shared_bitmap_info_t): New structure.
4979         (shared_bitmap_table): New variable.
4980         (shared_bitmap_hash): New function.
4981         (shared_bitmap_eq): Ditto
4982         (shared_bitmap_lookup): Ditto.
4983         (shared_bitmap_add): Ditto.
4984         (merge_smts_into): Change to take bitmap directly.
4985         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
4986         (init_alias_vars): Init shared bitmap hashtable.
4987         (delete_points_to_sets): Delete shared bitmap hashtable.
4988         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
4989         is_aliased removal as a change that was still necessary was
4990         deleted.
4991
4992 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
4993
4994         * config/i386/i386.h (override_options): Conditionally disable
4995         x86_sahf for 64bit targets only.
4996
4997 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4998
4999         PR C/31072
5000         * c-decl.c (merge_decls): Don't call make_var_volatile.
5001         * varasm.c (make_var_volatile): Remove.
5002         * output.h (make_var_volatile): Remove.
5003
5004 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
5005
5006         PR tree-optimization/31085
5007         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
5008
5009 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5010
5011         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
5012         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
5013         ATTR_CONST_NOTHROW_LIST.
5014
5015         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
5016         FIX_TRUNC_EXPR.
5017
5018 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
5019
5020         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
5021
5022 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
5023
5024         PR 31013
5025         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
5026         is declared.
5027         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
5028         passed, use shared libgcc.
5029
5030 2007-03-08  Roger Sayle  <roger@eyesopen.com>
5031
5032         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
5033         instead of calling build2 with a GIMPLE_MODIFY_STMT.
5034         (honor_protect_cleanup_actions, lower_try_finally_switch):
5035         Likewise.
5036         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
5037         ifc_temp_var): Likewise.
5038         * tree-inline.c (setup_one_parameter): Likewise.
5039         * tree-mudflap.c (mf_decl_cache_locals,
5040         mf_build_check_statement_for): Likewise.
5041         * tree-nested.c (init_tmp_var, save_tmp_var,
5042         finalize_nesting_tree_1): Likewise.
5043         * tree-outof-ssa.c (insert_copy_on_edge,
5044         insert_backedge_copies): Likewise.
5045         * tree-profile.c (tree_gen_edge_profiler,
5046         tree_gen_ic_profiler): Likewise.
5047         * tree-scalar-evolution.c (scev_const_prop): Likewise.
5048         * tree-sra.c (sra_build_assignment): Likewise.
5049         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
5050         * tree-ssa-math-opts.c (insert_reciprocals,
5051         execute_cse_sincos_1): Likewise.
5052         * tree-tailcall.c (adjust_accumulator_values,
5053         adjust_return_value): Likewise.
5054         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
5055         * tree-vect-transform.c (vect_create_data_ref_ptr,
5056         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
5057         vect_create_epilog_for_reduction, vectorizable_reduction,
5058         vectorizable_call, vectorizable_conversion,
5059         vectorizable_assignment, vectorizable_operation,
5060         vectorizable_type_demotion, vect_gen_widened_results_half,
5061         vect_permute_store_chain, vectorizable_store,
5062         vect_setup_realignment, vect_permute_load_chain,
5063         vectorizable_load, vectorizable_condition,
5064         vect_create_cond_for_align_checks): Likewise.
5065         * tree-vrp.c (build_assert_expr_for): Likewise.
5066
5067 2007-03-08  Ian Lance Taylor  <iant@google.com>
5068
5069         * tree-vrp.c: Include "intl.h".
5070         (usable_range_p): New static function.
5071         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
5072         overflowed values, juts set *strict_overflow_p.
5073         (compare_values): Only return -2 if one of the operands is not a
5074         constant.
5075         (compare_ranges): Call usable_range_p.
5076         (compare_range_with_value): Likewise.
5077         (vrp_evaluate_conditional_warnv): Rename from
5078         vrp_evaluate_conditional.  Make static.  Change all callers.
5079         (vrp_evaluate_conditional): New function.
5080         (simplify_div_or_mod_using_ranges): Issue warning about reliance
5081         on signed overflow.
5082         (simplify_abs_using_ranges): Likewise.
5083         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
5084         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
5085         within_stmt parameter.
5086         * tree-ssa-propagate.c (fold_predicate_in): Update call to
5087         vrp_evaluate_conditional.
5088         * tree-ssa-threadedge.c
5089         (record_temporary_equivalences_from_stmts_at_dest): Change
5090         simplify parameter to take a second tree parameter.
5091         (simplify_control_stmt_condition): Likewise.
5092         (thread_across_edge): Likewise.
5093         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
5094         (thread_across_edge): Likewise.
5095         * Makefile.in (tree-vrp.o): Depend upon intl.h.
5096
5097 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
5098
5099         * config/i386/i386.h (TARGET_SAHF): New define.
5100         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
5101         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
5102         (x86_sahf): New global variable.
5103         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
5104         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
5105         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
5106         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
5107         for 64-bit.
5108         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
5109         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
5110         when expanding fcomi/sahf based tests.
5111         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
5112         expanding sahf based alternative. Emit sahf based sequence when
5113         optimizing for code size.
5114         * config/i386/i386.md (x86_sahf_1): Do not disable for
5115         TARGET_64BIT, enable for TARGET_SAHF.
5116
5117 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
5118
5119         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
5120         spurious whitespace from error message.
5121
5122 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
5123
5124         PR c++/30852
5125         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
5126
5127 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
5128
5129         * c-decl.c (grokdeclarator): Disable warnings for anonymous
5130         bitfields.
5131         * tree-sra.c (instantiate_element): Propagate disabled warnings
5132         from the element itself to the created variable.
5133
5134 2007-03-07  Richard Henderson  <rth@redhat.com>
5135
5136         PR target/30848
5137         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
5138         silently fix up the stack in the case of a missing register.
5139
5140 2007-03-07  Paul Brook  <paul@codesourcery.com>
5141
5142         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
5143
5144 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
5145
5146         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
5147         New.
5148         (phase1_vrs): Use them.
5149         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
5150         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
5151         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
5152         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
5153         __gnu_Unwind_Restore_WMMXC if required.
5154         (_Unwind_VRS_Pop): Implement iWMMXt support.
5155         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
5156         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
5157         gnu_Unwind_Save_WMMXC): Define.
5158
5159 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
5160
5161         * config/vxworks.h (vxworks_override_options): Declare.
5162         (VXWORKS_OVERRIDE_OPTIONS): Use it.
5163         * config/vxworks.c: Include target.h and toplev.h.
5164         (vxworks_override_options): New function.
5165         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
5166
5167 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
5168
5169         * config/s390/s390.c (override_options): Don't emit an error when
5170         -mstack-size is used without providing -mstack-guard.
5171         (s390_emit_prologue): Choose stack_guard value automatically if not
5172         provided via command line.
5173         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
5174
5175 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
5176
5177         * config/i386/i386.c (output_set_got): Add a GOT initialization
5178         sequence for VxWorks PIC.
5179         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
5180         around labels as well as symbols.  Use gotoff_operand instead
5181         of local_symbolic_operand.
5182         (legitimize_pic_address): Use gotoff_operand instead of
5183         local_symbolic_operand.  Use @GOT accesses for labels as
5184         well as symbols.
5185         (ix86_output_addr_diff_elt): Use PC-relative rather than
5186         GP-relative offsets for VxWorks PIC.
5187         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
5188         no_new_pseudos.  Check whether the returned register is op0.
5189         * config/i386/i386.md (tablejump): Use PC-relative rather than
5190         GP-relative offsets for VxWorks PIC.
5191         * config/i386/predicates.md (gotoff_operand): New predicate.
5192
5193 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5194
5195         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
5196         before defining.
5197         * config/vxworks-dummy.h: New file.
5198         * config/i386/i386.h: Include it.
5199
5200 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
5201
5202         * dwarf2out.c (is_inlined_entry_point): New
5203         (add_high_low_attributes): Emit DW_AT_entry_pc along with
5204         DW_AT_ranges if the first subblock is the entry point.
5205
5206 2007-03-06  David Daney  <ddaney@avtrex.com>
5207
5208         * doc/install.texi (mips-*-*): Change recommended binutils
5209         version.
5210
5211 2007-03-06  Anatoly Sokolov <aesok@post.ru>
5212
5213         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
5214         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
5215         devices.
5216         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
5217         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
5218
5219 2007-03-06  Jan Hubicka  <jh@suse.cz>
5220
5221         * errors.h (warning, error, fatal, internal_error): Mark as cold.
5222         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
5223         are hot.
5224         (probably_cold_bb_p): Cold functions are cold.
5225         (probably_never_executed_bb_p): Cold functions are cold.
5226         (tree_bb_level_predictions): Predict calls to cold functions as not
5227         taken.
5228         (compute_function_frequency): Check hot/cold attributes.
5229         * function.h (function_frequency): Update comments.
5230         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
5231         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
5232         (c_common_att): Add cold and hot.
5233
5234         * doc/extend.texi (hot,cold attributes): Document.
5235
5236 2007-03-06  Andrew Haley  <aph@redhat.com>
5237
5238         * function.c (expand_function_end): Move blockage to just after we
5239         emit the label for the naked return from the function.
5240
5241 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5242
5243         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
5244         before redefining.
5245
5246 2007-03-06  Jan Hubicka  <jh@suse.cz>
5247
5248         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
5249         loaded for constant large models.  Non-large 64bit PIC can do.
5250         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
5251         * cmodel.h: Add LARGE PIC.
5252         * i386.md (UNSPEC_PLTOFF): New.
5253         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
5254         needed.
5255         (*call_1_rex64): Disable for large models.
5256         (*call_1_rex64_large): New.
5257         (*call_value_1_rex64): Disable for large models.
5258         (*call_value_1_rex64_large): New.
5259         (set_rip_rex4): New.
5260         (set_got_offset_rex64): New.
5261         * predicates.md (constant_call_address_operand): For large model
5262         constant calls are not possible.
5263         * i386-protos.h (construct_plt_address): Declare.
5264         * i386.c (override_options): Accept large models.
5265         (ix86_expand_prologue): Expand large PIC GOT pointer load.
5266         (legitimate_constant_p): Add new UNSPECs.
5267         (legitimate_pic_operand_p): Likewise.
5268         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
5269         (legitimize_pic_address): Do easy RIP relative way for TLS only for
5270         non-large model.
5271         (output_pic_addr_const): Add PLTOFF.
5272         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
5273         (ix86_expand_move): Legitimize pic address when in PIC mode.
5274         (construct_plt_address): New function.
5275         (ix86_expand_call): Offload the address to register and use GOT pointer
5276         for large model.
5277         * invoke.texi (mcmodel=large): Update documentation.
5278
5279 2007-03-06  Richard Henderson  <rth@redhat.com>
5280
5281         * config/i386/i386.c (x86_use_leave, x86_push_memory,
5282         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
5283         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
5284         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
5285         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
5286         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
5287         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
5288         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
5289         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
5290         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
5291         x86_partial_reg_dependency, x86_memory_mismatch_stall,
5292         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
5293         x86_sse_partial_reg_dependency, x86_sse_split_regs,
5294         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
5295         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
5296         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
5297         x86_schedule, x86_use_bt, x86_pad_returns,
5298         x86_use_xchgb): Merge into ...
5299         (ix86_tune_features): ... here.  New array.
5300         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
5301         x86_bswap): Merge into ...
5302         (ix86_arch_features): ... here.  New array.
5303         (x86_3dnow_a): Remove.
5304         (x86_accumulate_outgoing_args): Make static.
5305         (x86_arch_always_fancy_math_387): Make static.
5306         (ix86_tune_mask, ix86_arch_mask): Move ...
5307         (override_options): ... to local variables here.  Apply the
5308         appropriate mask to each element of ix86_arch_features and
5309         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
5310         as were done in the old macros.
5311         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
5312         * config/i386/i386.h (x86_use_leave, x86_push_memory,
5313         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
5314         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
5315         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
5316         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
5317         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
5318         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
5319         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
5320         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
5321         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
5322         x86_partial_reg_dependency, x86_memory_mismatch_stall,
5323         x86_accumulate_outgoing_args, x86_prologue_using_move,
5324         x86_epilogue_using_move, x86_decompose_lea,
5325         x86_arch_always_fancy_math_387, x86_shift1,
5326         x86_sse_partial_reg_dependency, x86_sse_split_regs,
5327         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
5328         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
5329         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
5330         x86_use_incdec, x86_pad_returns, x86_bswap,
5331         x86_partial_flag_reg_stall): Remove.
5332         (enum ix86_tune_indices): New.
5333         (ix86_tune_features): New.
5334         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
5335         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
5336         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
5337         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
5338         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
5339         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
5340         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
5341         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
5342         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
5343         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
5344         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
5345         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
5346         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
5347         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
5348         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
5349         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
5350         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
5351         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
5352         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
5353         TARGET_EXT_80387_CONSTANTS): Use it.
5354         (enum ix86_arch_indices): New.
5355         (ix86_arch_features): New.
5356         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
5357         TARGET_BSWAP): Use it.
5358         (ix86_tune_mask, ix86_arch_mask): Remove.
5359
5360 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
5361
5362         PR bootstrap/31020
5363         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
5364         Define using $${sysroot_headers_suffix}.
5365         * configure: Regenerate.
5366         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
5367         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
5368         defined.
5369         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
5370         * gcc.c (print_sysroot_headers_suffix): New.
5371         (option_map): Include --print-sysroot-headers-suffix.
5372         (display_help): Mention -print-sysroot-headers-suffix.
5373         (process_command): Handle -print-sysroot-headers-suffix.
5374         (do_spec_1): Append multilib directory to include-fixed path if
5375         sysroot suffixes in use.
5376         (main): Handle -print-sysroot-headers-suffix.
5377         * Makefile.in (start.encap): Don't depend on xlimits.h
5378         (xlimits.h): Remove.
5379         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
5380         limits.h for each multilib in fixinc_list.
5381         (fixinc_list, s-fixinc_list): New.
5382         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
5383         generate them for each multilib in fixinc_list.
5384         (stmp-fixproto): Use include-fixed.  Run fixproto for each
5385         multilib in fixinc_list.
5386         (mostlyclean): Don't remove xlimits.h.
5387         (clean): Remove include-fixed.
5388         (real-install-headers-tar, real-install-headers-cpio,
5389         real-install-headers-cp): Don't copy include, only include-fixed.
5390         (install-mkheaders): Depend on fixinc_list.  Don't depend on
5391         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
5392         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
5393         SYSTEM_HEADER_DIR setting in mkheaders.conf.
5394
5395 2007-03-06  Jan Hubicka  <jh@suse.cz>
5396
5397         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
5398         NANs easilly.
5399
5400 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5401
5402         * configure.ac: Allow tm_file to contain build-directory files.
5403         * configure: Regenerate.
5404         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
5405         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
5406         * config/m68k/print-sysroot-suffix.sh: New file.
5407
5408 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5409
5410         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
5411         of pic_offset_table_rtx if reload_completed.
5412         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
5413         PIC_OFFSET_TABLE_REGNUM.
5414         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
5415         return true.
5416         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
5417         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
5418
5419 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5420
5421         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
5422         functions that call eh_return.
5423
5424 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5425
5426         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
5427         functions that need a constant pool.
5428
5429 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5430
5431         PR target/28181
5432         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
5433         (m68k_preferred_reload_class): Likewise.
5434         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
5435         (SECONDARY_RELOAD_CLASS): Define.
5436         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
5437         (LIMIT_RELOAD_CLASS): Delete.
5438         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
5439         registers from storing bytes.
5440         (m68k_secondary_reload_class): New function.
5441         (m68k_preferred_reload_class): Likewise.
5442
5443 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5444
5445         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
5446         leaf functions.
5447         (m68k_expand_prologue): Likewise.
5448
5449 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5450
5451         * config/m68k/m68k-protos.h (output_sibcall): Declare.
5452         (mips_expand_epilogue): Add a bool parameter.
5453         (m68k_legitimize_sibcall_address): Declare.
5454         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
5455         (m68k_expand_epilogue): Add a parameter to select between sibling
5456         and normal epilogues.  Only generate a return for the latter.
5457         (m68k_ok_for_sibcall_p): New function.
5458         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
5459         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
5460         (sibcall_value, *sibcall_value): Likewise.
5461         (*call, *call_value): Require !SIBLING_CALL_P.
5462         (epilogue): Update call to m68k_expand_epilogue.
5463         (sibcall_epilogue): New pattern.
5464         * config/m68k/predicates.md (const_call_operand): Say that this
5465         predicate applies to sibling calls too.
5466         (sibcall_operand): New predicate.
5467
5468 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5469
5470         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
5471         alternatives as movsi_cf.
5472         (movsf_cf_hard): Add commentary.
5473
5474 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
5475             Richard Sandiford  <richard@codesourcery.com>
5476
5477         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
5478         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
5479         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
5480         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
5481         as being live on exit from an interrupt function.
5482         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
5483         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
5484         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
5485         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
5486         (m68k_interrupt_function_p): Globalize.
5487         (m68k_compute_frame_layout): Remove reverse mask code.
5488         (m68k_emit_movem, m68k_set_frame_related): New functions.
5489         (m68k_output_function_prologue): Delete in favor of...
5490         (m68k_expand_prologue): ...this new function.
5491         (m68k_output_function_epilogue): Delete in favor of...
5492         (m68k_expand_epilogue): ...this new function.
5493         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
5494         functions.
5495         (print_operand): Handle %?.
5496         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
5497         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
5498         (prologue, epilogue): New patterns.
5499         (return): Turn into a define_expand.
5500         (*return): New pattern, derived from old "return" pattern.  Use rte
5501         rather than rts for interrupt functions.  Only use rtd if the pop
5502         count is nonzero.
5503         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
5504         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
5505         (link, *link, unlink, *unlink, load_got): Likewise.
5506
5507 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
5508
5509         PR target/23482
5510         PR target/17114
5511         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
5512         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
5513         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
5514         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
5515         and m68k_matches_u_p.
5516         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
5517         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
5518         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
5519         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
5520         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
5521         (REG_STRICT_P): New macro.
5522         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
5523         PCREL_GENERAL_OPERAND_OK.
5524         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
5525         m68k_legitimate_base_reg_p.
5526         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
5527         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
5528         (PIC_CASE_VECTOR_ADDRESS): Update comment.
5529         * config/m68k/m68k.c (m68k_address): New structure.
5530         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
5531         (m68k_decompose_index, m68k_legitimate_constant_address_p)
5532         (m68k_jump_table_ref_p, m68k_decompose_address)
5533         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
5534         (m68k_matches_u_p): New functions.
5535         (print_operand_address): Rewrite to use m68k_decompose_index.
5536
5537 2007-03-05  David Taylor  <dtaylor@emc.com>
5538
5539         * gcc.c: Correct copyright date in --version output.
5540
5541 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5542
5543         * pa.md: In unamed move patterns, disparge copies between general
5544         and floating point registers using '?' modifier.  Don't include 'f'
5545         constraint for register preferences in DImode, SImode, HImode and
5546         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
5547         Remove constraints for copies between general and floating registers
5548         in soft-float DFmode pattern.
5549         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
5550         floating register.
5551         (movsf): Likewise.
5552
5553 2007-03-05  Mike Stump  <mrs@apple.com>
5554
5555         * c-common.c (targetcm): Add.
5556         * c-opts.c (c_common_handle_option): Handle language specific
5557         target options.
5558         * opts.c (handle_option): Verify language for target options, if
5559         any are given.
5560         * opth-gen.awk: Add CL_LANG_ALL.
5561         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
5562         (TARGETCM_INITIALIZER): Add.
5563         * target.h (struct gcc_targetcm): Add.
5564         (targetcm): Add.
5565         * targhooks.c (default_handle_c_option): Add.
5566         * targhooks.h (default_handle_c_option): Add.
5567         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
5568
5569         * config/darwin.opt (iframework): Add.
5570         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
5571         * config/darwin-c.c (handle_c_option): Add.
5572         (TARGET_HANDLE_C_OPTION): Add.
5573         (targetcm): Add.
5574         * doc/invoke.texi (Darwin Options): Add -iframework.
5575
5576 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5577
5578         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
5579         conversion.
5580
5581 2007-03-05  Ian Lance Taylor  <iant@google.com>
5582
5583         * c.opt (fgnu89-inline): New option.
5584         * c-opts.c (c_common_post_options): Set default value for
5585         flag_gnu89_inline.
5586         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
5587         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
5588         inline functions.
5589         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
5590         (grokdeclarator, start_function): Likewise.
5591         * c-cppbuiltin.c (c_cpp_builtins): Define either
5592         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
5593         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
5594         (C Dialect Options): Document -fgnu89-inline.
5595         * doc/extend.texi (Function Attributes): Explain what the
5596         gnu_inline attribute does.
5597         * doc/cpp.texi (Common Predefined Macros): Document
5598         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
5599
5600 2007-03-05  Ian Lance Taylor  <iant@google.com>
5601
5602         PR tree-optimization/31034
5603         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
5604         half-range if the other side is an overflow infinity.
5605
5606 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
5607
5608         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
5609         (bfin*-linux-uclibc*): New configuration.
5610         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
5611         defining.
5612         * config/bfin/linux.h: New file.
5613         * config/bfin/libgcc-bfin.ver: New file.
5614         * config/bfin/t-bfin-uclinux: New file.
5615         * config/bfin/t-bfin-linux: New file.
5616         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
5617         (TARGET_OS_CPP_BUILTINS): New macro.
5618
5619 2007-03-05  Richard Guenther  <rguenther@suse.de>
5620
5621         * fold-const.c (fold_binary): Remove duplicate folding
5622         of comparison of non-null ADDR_EXPR against null.
5623
5624 2007-03-05  Richard Guenther  <rguenther@suse.de>
5625             Dorit Nuzman  <dorit@il.ibm.com>
5626
5627         PR tree-optimization/26420
5628         * tree-vectorizer.c (vectorize_loops): Bail out early if there
5629         are no loops in the function.  Only print the number of
5630         vectorized loops if it is greater than zero or we are supposed
5631         to print information about unvectorized loops.
5632
5633 2007-03-05  Revital Eres  <eres@il.ibm.com>
5634
5635         * gcc.dg/var-expand1.c: New test.
5636         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
5637         when an accumulator is expanded.
5638
5639 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5640
5641         PR other/30465
5642         * c-common.c (convert_and_check): Don't give warnings for
5643         conversion if 'expr' already overflowed.
5644
5645 2007-03-04  Roger Sayle  <roger@eyesopen.com>
5646
5647         PR middle-end/30744
5648         * fold-const.c (fold_comparison): Enforce type consistency when
5649         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
5650
5651 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
5652
5653         * tree-ssa-address.c (create_mem_ref): Do not put an expression
5654         containing a cast to the base of TARGET_MEM_REF.
5655
5656 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
5657
5658         * tree.c (tree_contains_struct_check_failed): Remove spurious
5659         whitespace from error message.
5660
5661 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
5662
5663         PR target/30406
5664         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
5665         instead of precision.
5666
5667 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
5668             Nathan Sidwell  <nathan@codesourcery.com>
5669
5670         * emit-rtl.c (find_auto_inc): New.
5671         (try_split): recreate REG_INC notes,
5672         Use regular for loops rather than whiles.
5673
5674 2007-03-03  Andreas Schwab  <schwab@suse.de>
5675
5676         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
5677         * configure: Regenerate.
5678
5679 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5680
5681         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
5682         flag_rounding_math, not flag_unsafe_math_optimizations.
5683
5684         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
5685         fold_build2.
5686         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
5687         alpha_fold_vector_minmax): Likewise.
5688         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
5689         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
5690
5691 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
5692
5693         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
5694         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
5695         if the lhs has side-effects.
5696         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
5697
5698 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
5699
5700         * config/i386/i386.h (TUNEMASK): Remove define.
5701         (ARCHMASK): Remove define.
5702         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
5703          Use ix86_arch_mask variable instead of ARCHMASK.
5704         * config/i386/i386.c (override_options): Ditto.
5705         (standard_80387_constant_p): Ditto.
5706
5707 2007-03-02  Ian Lance Taylor  <iant@google.com>
5708
5709         Used signed infinities in VRP.
5710         * tree-vrp.c (uses_overflow_infinity): New static function.
5711         (supports_overflow_infinity): New static function.
5712         (make_overflow_infinity): New static function.
5713         (negative_overflow_infinity): New static function.
5714         (positive_overflow_infinity): New static function.
5715         (is_negative_overflow_infinity): New static function.
5716         (is_positive_overflow_infinity): New static function.
5717         (is_overflow_infinity): New static function.
5718         (overflow_infinity_range_p): New static function.
5719         (compare_values_warnv): New function split out of compare_values.
5720         (compare_value): Call it.
5721         (set_value_range_to_nonnegative): Add overflow_infinity
5722         parameter.  Change caller.
5723         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
5724         Change callers.
5725         (vrp_expr_computes_nonzero): Likewise.
5726         (compare_ranges, compare_range_with_value): Likewise.
5727         (compare_name_with_value, compare_names): Likewise.
5728         (vrp_evaluate_conditional): Likewise.
5729         (set_value_range): Handle infinity
5730         (vrp_operand_equal_p, operand_less_p): Likewise.
5731         (extract_range_from_assert): Likewise.
5732         (vrp_int_const_binop): Likewise.
5733         (extract_range_from_binary_expr): Likewise.
5734         (extract_range_from_unary_expr): Likewise.
5735         (extract_range_from_comparison): Likewise.
5736         (extract_range_from_expr): Likewise.
5737         (dump_value_range): Likewise.
5738         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
5739         (test_for_singularity): Likewise.
5740         (vrp_int_const_binop): Remove inline qualifier.
5741         (adjust_range_with_scev): Add comment.
5742         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
5743
5744 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
5745
5746         * tree-ssa-structalias.c (could_have_pointers): Tidy.
5747         (get_constraint_for): Likewise.
5748         (do_structure_copy): Likewise.
5749         (find_func_aliases): Fix references to MODIFY_EXPR.
5750         (intra_create_variable_infos): Tidy.
5751         * tree-ssa-operands.c (add_virtual_operand): Add argument
5752         IS_CALL_SITE.
5753         When adding members of alias sets, if IS_CALL_SITE is true and
5754         the symbol is not call-clobbered, skip it.
5755         Adjust all callers.
5756
5757 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
5758
5759         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
5760         entry by means of emit_insn_at_entry.
5761
5762 2007-03-02  Richard Henderson  <rth@redhat.com>
5763
5764         * expr.h (promoted_input_arg): Remove decl.
5765         * function.c (promoted_input_arg): Merge into ...
5766         * combine.c (setup_incoming_promotions): ... only caller.
5767         Rearrange to avoid double loop.
5768
5769 2007-03-02  Ben Elliston  <bje@au.ibm.com>
5770             Peter Bergner  <bergner@vnet.ibm.com>
5771             Janis Johnson  <janis187@us.ibm.com>
5772
5773         * config/rs6000/dfp.md: New file.
5774         * config/rs6000/rs6000.md: Include dfp.md.
5775         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
5776         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
5777         and TDmode decimal float modes in FP registers.
5778         (num_insns_constant): Likewise.
5779         (rs6000_legitimate_offset_address_p): Likewise.
5780         (rs6000_legitimize_address): Likewise.
5781         (rs6000_legitimize_reload_address): Likewise.
5782         (rs6000_legitimate_address): Likewise.
5783         (rs6000_emit_move): Likewise.
5784         (function_arg_boundary): Likewise.
5785         (function_arg_advance): Likewise.
5786         (rs6000_darwin64_record_arg_recurse): Likewise.
5787         (function_arg): Likewise.
5788         (rs6000_gimplify_va_arg): Likewise.
5789         (rs6000_split_multireg_move): Likewise.
5790         (rs6000_output_function_epilogue): Likewise.
5791         (rs6000_output_function_epilogue): Likewise.
5792         (rs6000_register_move_cost): Likewise.
5793         (rs6000_function_value): Likewise.
5794         (rs6000_libcall_value): Likewise.
5795
5796 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
5797
5798         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
5799
5800 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
5801
5802         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
5803         Use $MULTIDIR to choose between the kernel and RTP headers,
5804         and use $WIND_BASE and $WIND_USR to locate them.
5805
5806 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
5807
5808         * config/i386/i386.c (override_options): Put initialization of
5809         ix86_tune_mask and ix86_arch_mask to the correct place.
5810
5811 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
5812             Michael Meissner  <michael.meissner@amd.com>
5813
5814         PR target/31019
5815         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
5816         (ARCHMASK): Define.
5817         (TARGET_CMOVE): Use ARCHMASK.
5818         (TARGET_CMPXCHG): Ditto.
5819         (TARGET_CMPXCHG8B): Ditto.
5820         (TARGET_XADD): Ditto.
5821         (TARGET_BSWAP): Ditto.
5822         * config/i386/i386.c (ix86_tune_mask): New global variable.
5823         (ix86_arch_mask): Ditto.
5824         (override_options): Initialize ix86_tune_mask and
5825         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
5826         target_flags.
5827
5828 2007-03-02  Ben Elliston  <bje@au.ibm.com>
5829
5830         PR 30992
5831         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
5832
5833 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
5834
5835         * target.h (init_dwarf_reg_sizes_extra): New target hook.
5836         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
5837         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
5838         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
5839         hook.
5840         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
5841         rs6000_init_dwarf_reg_sizes_extra): New.
5842         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
5843         SPE register high parts.
5844
5845 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
5846
5847         * Makefile.in: Add install-pdf target as
5848         copied from automake v1.10 rules.
5849         * configure.ac: Add install-pdf to target list.
5850         * configure: Regenerate.
5851
5852 2007-03-01  Paul Brook  <paul@codesourcery.com>
5853
5854         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
5855         modes to LDRD for DImode.
5856         (output_move_double): Fixup out of range ldrd/strd.
5857         (vfp_secondary_reload_class): Rename...
5858         (coproc_secondary_reload_class): ... to this.  Add wb argument.
5859         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
5860         coproc_secondary_reload_class for CLASS_IWMMXT.
5861         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
5862         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
5863
5864 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
5865
5866         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
5867         factor by the estimated number of iterations.
5868         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
5869         prefetch latency.
5870
5871         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
5872         decode_caches_intel, detect_caches_intel): New functions.
5873         (host_detect_local_cpu): Use detect_caches_amd and
5874         detect_caches_intel.
5875
5876 2007-03-01  Richard Henderson  <rth@redhat.com>
5877
5878         * expr.c (emit_move_complex_push): Export.
5879         (emit_move_complex_parts): Split out from ...
5880         (emit_move_complex): ... here.
5881         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
5882         * config/i386/i386.md (movcdi): New.
5883
5884 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
5885
5886         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
5887         size of mode1 to check for tieable modes in MMX case.
5888
5889 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
5890
5891         * Makefile.in (rtlanal.o): Depend on tree.h.
5892         * rtl.h (offset_within_section_p, split_const): Declare.
5893         * rtlanal.c: Include tree.h.
5894         (offset_within_block_p): New function, taken from
5895         mips_offset_within_object_p.
5896         (split_const): New function, taken from mips_split_const.
5897         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
5898         Declare.
5899         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
5900         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
5901         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
5902         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
5903         (m68k_illegitimate_symbolic_constant_p): New function.
5904         * config/m68k/m68k.md (movsi): Remove misleading predicates.
5905         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
5906         symbolic constant that might be outside the symbol's section,
5907         move the symbol first and then add the offset.
5908         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
5909         Override.
5910         * config/mips/mips.c (mips_split_const): Delete.
5911         (mips_offset_within_object_p): Delete.
5912         (mips_symbolic_constant_p): Use offset_within_section_p and
5913         split_const instead of mips_offset_within_object_p and
5914         mips_split_const.
5915         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
5916         (mips_legitimize_const_move, print_operand_reloc)
5917         (mips_dangerous_for_la25_p): Use split_const instead of
5918         mips_split_const.
5919
5920 2007-02-28  Eric Christopher  <echristo@apple.com>
5921
5922         * Makefile.in (install-include-dir): Don't rm -rf include.
5923
5924 2007-02-28  Richard Guenther  <rguenther@suse.de>
5925
5926         PR middle-end/30364
5927         * fold-const.c (fold_binary): Do not associate expressions
5928         with more than one variable for integer types that do not wrap.
5929
5930 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
5931
5932         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
5933         Delete, and replace with...
5934         (fold_builtin_call_array): This.  Update callers to use it.
5935         * fold-const.c (fold_build_call_list): Delete, and replace with...
5936         (fold_build_call_array): This.
5937         (fold_build_call_list_initializer): Delete, and replace with...
5938         (fold_build_call_array_initializer): This.
5939         * tree.h: Update declarations to reflect above changes.
5940
5941         * c-typeck.c (build_function_call): Store converted arguments
5942         in a stack-allocated array instead of building a list.
5943         (convert_arguments): Store arguments in the array passed in as an
5944         argument, and return the actual number of arguments.
5945         * c-format.c: (check_function_format): Pass arguments in an
5946         array instead of a list.
5947         * c-common.c (check_function_nonnull): Likewise.
5948         (check_function_sentinel): Likewise.
5949         (check_function_arguments): Likewise.
5950         * c-common.h: Update declarations to reflect above changes.
5951
5952 2007-02-28  Jan Hubicka  <jh@suse.cz>
5953
5954         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
5955         PRED_NEGATIVE_RETURN): Update outcomes.
5956
5957 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
5958
5959         * calls.c (emit_library_call_value_1): Handle partial registers
5960         correctly when building up CALL_INSN_FUNCTION_USAGE.
5961
5962 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5963
5964         * pa/predicates.md (move_src_operand): Allow zero for mode.
5965         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
5966         move pattern.
5967
5968 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
5969
5970         PR target/30970
5971         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
5972         *movv2df_internal): Enable pattern only for valid operand
5973         combinations.
5974         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
5975         tie only 128bit modes. For MMX registers, tie only 64bit modes.
5976
5977 2007-02-27  Mike Stump  <mrs@apple.com>
5978
5979         * config/darwin-crt3.c: Avoid compilation when compiling for a
5980         kext multilib.
5981
5982 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
5983
5984         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
5985         FIXED_INCLUDE_DIR.
5986         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
5987         for fixed headers and limits.h.
5988         (install-include-dir, install-headers-tar, install-headers-cpio,
5989         install-headers-cp, real-install-headers-tar,
5990         real-install-headers-cpio, real-install-headers-cp): Handle
5991         include-fixed as well as include.
5992         (install-mkheaders): Don't install files that go only in include
5993         not include-fixed.
5994         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
5995         from GCC_INCLUDE_DIR.
5996         * gcc.c (process_command): Remove special -BstageN/ handling.
5997         (do_spec_1): Add include-fixed directories.
5998
5999 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
6000
6001         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
6002         _smulsi3_highpart.
6003         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
6004         New functions.
6005         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
6006         patterns.
6007
6008 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
6009
6010         * c-common.c (get_priority): Add check for
6011         SUPPORTS_INIT_PRIORITY.
6012
6013 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
6014
6015         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
6016
6017         * config/bfin/bfin.c: Include "cfglayout.h".
6018         (MAX_LSETUP_DISTANCE): New macro.
6019         (struct loop_info): New members incoming, incoming_src and
6020         incoming_dest.  Delete member predecessor.
6021         (length_for_loop): New function.
6022         (bfin_optimize_loop): Handle more different loop structures.
6023         (bfin_discover_loop): Rework detection of predecessor blocks by
6024         examining incoming edges.
6025         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
6026         bfin_reorg_loops.
6027         (bfin_reorder_loops): New function.
6028         (bfin_reorg_loops): Use these three new functions.
6029
6030         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
6031         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
6032         (CONSTRAINT_LEN): Add entry for 'q'.
6033         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
6034         Add 'q' constraints.
6035         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
6036         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
6037
6038         * config/bfin/bfin.md (add_with_carry): New pattern.
6039         (s_or_u, su_optab, su_modifier): New code macros/attrs.
6040         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
6041         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
6042         support unsigned multiplies too.  Removed incorrect commutativity from
6043         operand 1 constraint where appropriate.
6044         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
6045         patterns.
6046         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
6047         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
6048         New patterns.
6049         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
6050         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
6051         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
6052         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
6053         usmulhisi_hh_huh): New patterns.
6054
6055         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
6056         lshifthi3): Fix output template to use half reg for operand 2.
6057
6058         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
6059         instead of R2.
6060
6061         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
6062
6063 2007-02-27  Andreas Schwab  <schwab@suse.de>
6064
6065         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
6066
6067 2007-02-27  Jan Hubicka  <jh@suse.cz>
6068
6069         * predict.c (last_basic_block_p): Remove.
6070         (tree_estimate_probability): Update return heuristic for commonized
6071         return blocks.
6072
6073 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
6074
6075         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
6076
6077 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
6078
6079         * doc/include/gcc-common.texi (versionsubtitle): New macro.
6080         * doc/cpp.texi: Standardize title page.
6081         * doc/cppinternals.texi: Likewise.
6082         * doc/gcc.texi: Standardize title page, remove version number
6083         from copyright page.
6084         * doc/gccint.texi: Likewise.
6085         * doc/install.texi: Standardize title page, add table of
6086         contents.
6087
6088 2007-02-26  Jan Hubicka  <jh@suse.cz>
6089
6090         * predict.def: Set outcomes according to more recent results.
6091         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
6092         Remove dead predictors.
6093         * predict.c (return_prediction): Fix pasto.
6094
6095 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
6096
6097         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
6098         change; avoid a memory leak when returning early.
6099
6100 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
6101
6102         * c-decl.c (static_ctors): Move to c-common.c.
6103         (static_dtors): Likewise.
6104         (finish_function): Use c_record_cdtor_fn.
6105         (build_cdtor): Move to c-common.c.
6106         (c_write_global_declarations): Use c_build_cdtor_fns.
6107         * c-common.h (static_ctors): Declare.
6108         (static_dtors): Likewise.
6109         (c_record_cdtor_fn): Likewise.
6110         (c_build_cdtor_fns): Likewise.
6111         * c-common.c (static_ctors): New variable.
6112         (static_dtors): Likewise.
6113         (c_record_cdtor_fn): New function.
6114         (build_cdtor): Move from c-decl.c
6115         (c_build_cdtor_fns): New function.
6116
6117         * output.h (assemble_addr_to_section): Declare.
6118         (get_cdtor_priority_section): Likewise.
6119         * varasm.c (assemble_addr_to_section): New function.
6120         (get_cdtor_priority_section): Likewise.
6121         (default_named_section_asm_out_destructor): Use them.
6122         (destor_dtor_section_asm_out_destructor): Likewise.
6123         (default_named_section_asm_out_constructor): Likewise.
6124         (default_ctor_section_asm_out_constructor): Likewise.
6125         * config.gcc (*-*-vxworks*): Include vxworks.o.
6126         * config/t-vxworks (vxworks.o): New target.
6127         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
6128         (TARGET_ASM_CONSTRUCTOR): Define.
6129         (TARGET_ASM_DESTRUCTOR): Likewise.
6130         (vxworks_asm_out_constructor): Declare.
6131         (vxworks_asm_out_destructor): Likewise.
6132
6133         * c-common.c (get_priority): Check that we have not just an
6134         INTEGER_CST, but an integer constant with integeral type.
6135
6136 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
6137
6138         PR tree-optimization/30938
6139         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
6140         use &dt[nargs-1] instead of &dt[nargs] in the call to
6141         vect_is_simple_use().
6142
6143 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
6144
6145         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
6146         from register elimination as PRE_MODIFY / POST_MODIFY increments.
6147         Do not attempt to handle MEM inside auto-inc expressions.
6148         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
6149         of a register modified by an auto-inc expression.  However, do handle
6150         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
6151         (elimination_effects): Prohibit elimination of a register modified
6152         by an auto-inc expression.  Disable register elimination rules whose
6153         target register is modified by an auto-inc expression with variable
6154         increment.
6155
6156 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
6157
6158         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
6159         off-by-one error.
6160         (array_at_struct_end_p): New function.
6161         (idx_infer_loop_bounds): Use it.
6162         (estimate_numbers_of_iterations_loop): Export.
6163         * predict.c (predict_loops): Use estimated_loop_iterations_int.
6164         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
6165         (tree_estimate_probability): Call record_loop_exits.
6166         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
6167         (estimated_loop_iterations, estimated_loop_iterations_int,
6168         estimated_loop_iterations_tree): New functions.
6169         (analyze_siv_subscript_cst_affine,
6170         compute_overlap_steps_for_affine_1_2,
6171         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
6172         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
6173         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
6174         (PRED_LOOP_ITERATIONS_GUESSED): New.
6175         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
6176         * cfgloop.h (estimate_numbers_of_iterations_loop,
6177         estimated_loop_iterations_int): Declare.
6178
6179 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
6180
6181         * doc/extend.texi: Document optional priority argument to
6182         constructors and destructors.
6183         * tree.c (init_priority_for_decl): Adjust GTY markers.
6184         (init_ttree): Use priority-info hash functions for
6185         init_priority_for_decl.
6186         (tree_map_eq): Rename to ...
6187         (tree_map_base_eq): ... this.
6188         (tree_map_marked_p): Rename to ...
6189         (tree_map_base_marked_p): ... this.
6190         (tree_map_base_hash): New function.
6191         (decl_init_priority_lookup): Rework.
6192         (decl_fini_priority_lookup): New function.
6193         (decl_priority_info): New function.
6194         (decl_init_priority_insert): Use it.
6195         (decl_fini_priority_insert): Likewise.
6196         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
6197         hierarchy.
6198         (decl_restrict_base_insert): Likewise.
6199         (decl_debug_expr_insert): Likewise.
6200         (decl_value_expr_lookup): Likewise.
6201         (decl_value_expr_insert): Likewise.
6202         * tree.h (priority_type): New type.
6203         (decl_init_priority_lookup): Use priority_type.
6204         (decl_fini_priority_lookup): New function.
6205         (decl_init_priority_insert): Use priority_type.
6206         (decl_fini_priority_insert): New function.
6207         (DECL_HAS_INIT_PRIORITY): Tweak comments.
6208         (DECL_INIT_PRIORITY): Likewise.
6209         (SET_DECL_INIT_PRIORITY): Add comment.
6210         (DECL_FINI_PRIORITY): New macro.
6211         (SET_DECL_FINI_PRIORITY): Likewise.
6212         (DEFAULT_INIT_PRIORITY): Document.
6213         (MAX_INIT_PRIORITY): Likewise.
6214         (MAX_RESERVED_INIT_PRIORITY): Likewise.
6215         (tree_map_base): New type.
6216         (tree_map_base_eq): New function.
6217         (tree_map_base_hash): Likewise.
6218         (tree_map_base_marked_p): Likewise.
6219         (tree_map): Inherit from tree_map_base.
6220         (tree_map_eq): Make it a macro.
6221         (tree_map_marked_p): Likewise.
6222         (tree_int_map): Inherit from tree_map_base.
6223         (tree_int_map_eq): Make it a macro.
6224         (tree_int_map_hash): Likewise.
6225         (tree_int_map_marked_p): Likewise.
6226         (tree_priority_map): New type.
6227         (tree_priority_map_eq): New macro.
6228         (tree_priority_map_hash): Likewise.
6229         (tree_priority_map_marked_p): Likewise.
6230         * varasm.c (emults_decl): Adjust for refactoring of tree_map
6231         hierarchy.
6232         (emutls_common_1): Likewise.
6233         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
6234         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
6235         of tree_map hierarchy.
6236         * tree-cfg.c (move_stmt_r): Likewise.
6237         (new_label_mapper): Likewise.
6238         * c-tree.h (c_expand_body): Move to ...
6239         * c-common.h (c_expand_body): ... here.
6240         * c-decl.c (c_expand_body): Move to ...
6241         * c-common.c (c_expand_body): ... here.
6242         (c_common_attribute_table): Allow 1 argument for the constructor
6243         and destructor attributes.
6244         (get_priority): New function.
6245         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
6246         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
6247
6248 2007-02-24  Jan Hubicka  <jh@suse.cz>
6249
6250         PR middle-end/30509
6251         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
6252
6253 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
6254             Jan Hubicka  <jh@suse.cz>
6255
6256         PR target/30778
6257         * i386.c (counter_mode): New function.
6258         (expand_set_or_movmem_via_loop): Use it.
6259         (expand_movmem_epilogue): Likewise; fix pasto.
6260         (ix86_expand_movmem): Do emit guard even for constant counts.
6261         (ix86_expand_setmem): Likewise.
6262
6263 2007-02-25  Nick Clifton  <nickc@redhat.com>
6264
6265         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
6266         (JUMP_TABLES_IN_TEXT_SECTION): Define.
6267
6268 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
6269
6270         PR target/30770
6271         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
6272         count argument with 0x10, not with 0x16.
6273         (expand_setmem_epilogue): Ditto.
6274
6275 2007-02-24  Mike Stump  <mrs@apple.com>
6276
6277         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
6278         symbols.
6279
6280 2007-02-24  Richard Guenther  <rguenther@suse.de>
6281
6282         PR middle-end/30951
6283         * fold-const.c (fold_binary): Fold x +- CST op x for
6284         EQ_EXPR and NE_EXPR.
6285
6286 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6287
6288         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
6289
6290 2007-02-24  Jan Hubicka  <jh@suse.cz>
6291
6292         * cgraphunit.c (decide_is_function_needed): Honor
6293         -fkeep-inline-functions.
6294
6295 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6296
6297         * builtins.c (fold_builtin_modf): New.
6298         (fold_builtin_2): Use it.
6299
6300 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
6301
6302         * loop-iv.c (implies_p): Detect additional cases where A implies B.
6303         (determine_max_iter): Take additional LOOP arg; all callers changed.
6304         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
6305         one using simplifications.
6306         (simplify_using_initial_values): Return if the expression becomes
6307         invalid due to altered regs.
6308
6309 2007-02-23  DJ Delorie  <dj@redhat.com>
6310
6311         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
6312
6313 2007-02-23  Mike Stump  <mrs@apple.com>
6314
6315         * tlink.c (scan_linker_output): Parse linker messages from
6316         darwin9's linker better.
6317
6318 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
6319
6320         PR debug/29614
6321         * varpool.c (varpool_assemble_pending_decls):  Set
6322         varpool_last_needed_node to null.
6323
6324 2007-02-23  DJ Delorie  <dj@redhat.com>
6325
6326         * config/i386/i386.c (ix86_data_alignment): Don't specify an
6327         alignment bigger than the object file can handle.
6328
6329 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
6330
6331         PR target/30825
6332         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
6333         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
6334         (*movsf_1): Penalize MMX moves.
6335
6336 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
6337
6338         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
6339         2^32-1 or more times unless flag_unsafe_loop_optimizations.
6340
6341         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
6342
6343 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6344
6345         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
6346         (fold_builtin_1): Use them.
6347         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
6348         BUILT_IN_SIGNIFICAND.
6349
6350 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
6351
6352         * config/i386/i386.c (bdesc_1arg): Initialize
6353         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
6354         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
6355         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
6356         and IX86_BUILTIN_MOVSLDUP.
6357
6358 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
6359
6360         PR rtl-optimization/30841
6361         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
6362
6363 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6364
6365         * builtins.c (fold_builtin_frexp): New.
6366         (fold_builtin_2): Use it.
6367
6368 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
6369
6370         * doc/invoke.texi (Spec Files): Document getenv spec function.
6371
6372         * gcc.c (getenv_spec_function): New function.
6373         (static_spec_functions): Add it.
6374         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
6375         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
6376         header files.
6377
6378 2007-02-22  Michael Matz  <matz@suse.de
6379
6380         PR c++/29433
6381         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
6382         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
6383
6384 2007-02-22  Ian Lance Taylor  <iant@google.com>
6385
6386         PR debug/30898
6387         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
6388         (mem_loc_descriptor): Call it.
6389
6390 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
6391             Ira Rosen  <irar@il.ibm.com>
6392
6393         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
6394
6395 2007-02-22  Ira Rosen  <irar@il.ibm.com>
6396
6397         PR tree-optimization/30843
6398         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
6399         stores only after all the group is vectorized.
6400
6401 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
6402
6403         PR tree-optimization/30858
6404         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
6405         in the reduction cycle have a single use in the loop.
6406         * tree-vectorizer.h (relevant): Add documentation.
6407
6408 2007-02-20  Mike Stump  <mrs@apple.com>
6409
6410         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
6411         * configure: Regenerate.
6412
6413 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
6414
6415         Change the defaults of some parameters and options.
6416         * config/spu/spu-protos.h (spu_optimization_options): Declare.
6417         * config/spu/spu.c (spu_optimization_options): Add.
6418         (spu_override_options): Change params in spu_optimization_options.
6419         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
6420
6421         Register 127 is only 16 byte aligned when used as a frame pointer.
6422         * config/spu/spu-protos.h (spu_init_expanders): Declare.
6423         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
6424         HARD_FRAME_POINTER_REGNUM.
6425         (spu_legitimate_address):  Use regno_aligned_for_reload.
6426         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
6427         aligned when frame_pointer_needed is true.
6428         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
6429         to 8 bits.
6430         * config/spu/spu.h (INIT_EXPANDERS): Define.
6431
6432         Make sure shift and rotate instructions have valid immediate operands.
6433         * config/spu/predicates.md (spu_shift_operand): Remove.
6434         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
6435         * config/spu/constraints.md (W, O): Extend range.
6436         * config/spu/spu.md (umask, nmask): Define.
6437         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
6438         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
6439         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
6440         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
6441         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
6442         (lshr<mode>3_reg):  Fix rtl description.
6443
6444         Make sure mulhisi immediate operands are valid.
6445         * config/spu/predicates.md (imm_K_operand): Add.
6446         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
6447
6448         Generate constants using fsmbi and andi.
6449         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
6450         (print_operand, spu_split_immediate, classify_immediate,
6451         fsmbi_const_p): Handle IC_FSMBI2.
6452
6453         Correctly handle a CONST_VECTOR containing symbols.
6454         * config/spu/spu.c (print_operand): Handle HIGH correctly.
6455         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
6456         (immediate_load_p): Allow symbols that use 2 instructions to create.
6457         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
6458         with symbols when flag_pic is set.
6459         (const_vector_immediate_p): New.
6460         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
6461         accept a CONST_VECTOR with symbols.
6462         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
6463         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
6464         correctly.
6465         * config/spu/spu.md (high, low): Delete.
6466         (low_<mode>): Define.
6467
6468         Remove INTRmode and INTR_REGNUM, which didn't work.
6469         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
6470         of INTR_REGNUM.
6471         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
6472         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
6473         peephole2 pattern): Don't use INTR or 131.
6474         (movintrcc): Delete.
6475         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
6476         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
6477         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
6478         (UNSPEC_SET_INTR): Add.
6479         * config/spu/spu-modes.def (INTR): Remove.
6480
6481         More accurate warnings about run-time relocations.
6482         * config/spu/spu.c (reloc_diagnostic): Test in_section.
6483
6484         Correctly warn about immediate arguments to specific intrinsics.
6485         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
6486         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
6487         the instruction predicate.
6488
6489         Fix tree check errors with latest update.
6490         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
6491         CALL_EXPR_ARG.
6492         (spu_expand_builtin): Use CALL_EXPR_FN.
6493
6494         Add missing specific intrinsics.
6495         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
6496         si_bislede.
6497         * config/spu/spu_internals.h: Ditto.
6498
6499         Fix incorrect operand modifiers.
6500         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
6501         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
6502
6503         Optimize one case of zero_extend of a vec_select.
6504         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
6505
6506         Accept any immediate for hbr.
6507         * config/spu/spu.md (hbr):  Change s constraints to i.
6508
6509 2007-02-21  Paul Brook  <paul@codesourcery.com>
6510
6511         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
6512         condexec_count when skipping USE and CLOBBER.
6513
6514 2007-02-21  Nick Clifton  <nickc@redhat.com>
6515
6516         * common.opt (Warray-bounds): Add Warning attribute.
6517         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
6518         Likewise.
6519         (fsized-zeroes): Add Optimization attribute.
6520         (fsplit-wide-types, ftree-scev-cprop): Likewise.
6521         * c.opt (Wc++0x-compat): Add Warning attribute.
6522
6523 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
6524
6525         PR middle-end/30761
6526         * reload1.c (eliminate_regs_in_insn): In the single_set special
6527         case, attempt to re-recognize the insn before falling back to
6528         having reload fix it up.
6529
6530 2007-02-20  Eric Christopher  <echristo@gmail.com>
6531
6532         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
6533         Rewrite accordingly.
6534         (frv_read_iacc_argument): Ditto.
6535         (frv_expand_set_builtin): Take a call instead of arglist, update for
6536         above changes.
6537         (frv_expand_unop_builtin): Ditto.
6538         (frv_expand_binop_builtin): Ditto.
6539         (frv_expand_cut_builtin): Ditto.
6540         (frv_expand_binopimm_builtin): Ditto.
6541         (frv_expand_voidbinop_builtin): Ditto.
6542         (frv_expand_int_void2arg): Ditto.
6543         (frv_expand_prefetches): Ditto.
6544         (frv_expand_voidtriop_builtin): Ditto.
6545         (frv_expand_voidaccop_builtin): Ditto.
6546         (frv_expand_load_builtin): Ditto.
6547         (frv_expand_store_builtin): Ditto.
6548         (frv_expand_mdpackh_builtin): Ditto.
6549         (frv_expand_mclracc_builtin): Ditto.
6550         (frv_expand_mrdacc_builtin): Ditto.
6551         (frv_expand_mwtacc_builtin): Ditto.
6552         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
6553         calls for above.
6554
6555 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
6556
6557         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
6558         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
6559         cmpb instruction.
6560         (HAVE_GAS_DFP): Check for assembler support of decimal floating
6561         point instructions.
6562         * configure: Regenerate.
6563         * config.in: Regenerate.
6564         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
6565         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
6566         masks to power6 and power6x and to POWERPC_MASKS.
6567         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
6568         _ARCH_PWR6.
6569         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
6570         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
6571         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
6572         Access PROTOTYPE as variable, not mask.
6573
6574 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
6575
6576         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
6577         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
6578         * combine.c (adjust_for_new_dest): Use it.
6579         * postreload.c (reload_combine): Likewise.
6580
6581 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
6582
6583         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
6584         notes on an insn with multiple sets, even if single_set returns
6585         non-NULL for that insn.
6586
6587 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6588
6589         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
6590         scalbn and scalbln.
6591
6592 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
6593
6594         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
6595         if user didn't pass it.
6596         * config/i386/darwin.h (CC1_SPEC): Likewise.
6597         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
6598         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
6599         -mmacosx-version-min.
6600
6601 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6602             Uros Bizjak  <ubizjak@gmail.com>
6603
6604         * optabs.h (enum optab_index): Add new OTI_scalb.
6605         (scalb_optab): Define corresponding macro.
6606         * optabs.c (init_optabs): Initialize scalb_optab.
6607         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
6608         patterns.
6609         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
6610         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
6611         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
6612         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
6613         flag_unsafe_math_optimizations is set.
6614
6615         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
6616         to implement scalbf, scalb and scalbl built-ins as inline x87
6617         intrinsics.
6618
6619 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6620             DJ Delorie <dj@redhat.com>
6621
6622         PR other/30824
6623         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
6624         (diagnostic_report_diagnostic): ... here, and turn them into real
6625         errors. If warnings are inhibited, no need to do anything.
6626
6627 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
6628
6629         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
6630         better code generation.
6631
6632 2007-02-20  Ben Elliston  <bje@au.ibm.com>
6633
6634         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
6635
6636 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
6637
6638         * config/alpha/alpha.c, config/alpha/alpha.md,
6639         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
6640         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
6641         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
6642         config/arm/lib1funcs.asm: Follow spelling conventions.
6643
6644         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
6645         config/fr30/fr30.md, config/i386/i386.h,
6646         config/iq2000/iq2000.h, config/iq2000/predicates.md,
6647         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
6648         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
6649         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
6650         config/rs6000/altivec.md, config/rs6000/rs6000.c,
6651         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
6652         config/sparc/sparc.c, config/sparc/sparc.h,
6653         config/sparc/sparc.md, config/spu/constraints.md,
6654         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
6655         conventions.
6656
6657 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
6658
6659         PR target/29943
6660         * varasm.c (use_blocks_for_decl_p): Return false for decls with
6661         alias attribute.
6662
6663 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
6664
6665         * doc/invoke.texi (-ftree-lrs): Remove.
6666
6667 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
6668
6669         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
6670         NULL.
6671
6672 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
6673
6674         * config/ia64/ia64.c (ia64_expand_builtin): Use the
6675         new CALL_EXPR_FN macro for retrieving the function
6676         declaration of the input expression.
6677
6678 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6679
6680         * c.opt (Waddress): New.
6681         * common.opt (Walways-true): Delete.
6682         (Wstring-literal-comparison): Delete.
6683         * doc/invoke.texi (Warning Options): Delete -Walways-true and
6684         -Wstring-literal-comparison. Add -Waddress.
6685         (Waddress): New.
6686         (Walways-true): Delete.
6687         (Wstring-literal-comparison): Delete.
6688         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
6689         consistently instead of -Walways-true in example.
6690         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
6691         * c-typeck.c (parser_build_binary_op): Replace
6692         -Wstring-literal-comparison and -Walways-true with -Waddress.
6693         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
6694         with -Waddress.
6695
6696 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
6697
6698         * tree-cfg.c (dump_function_to_file): Be prepared for functions
6699         without DECL_STRUCT_FUNCTION initialized.
6700
6701 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
6702
6703         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
6704         due to calls to functions taking pointers as parameters.
6705
6706 2007-02-19  Richard Henderson  <rth@redhat.com>
6707
6708         PR debug/29558
6709         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
6710         in memory.
6711
6712 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6713
6714         * config/s390/s390.c (s390_call_saved_register_used,
6715         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
6716         accessed to the new scheme.
6717
6718 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
6719
6720         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
6721         (cris_print_index, cris_print_operand, cris_print_operand_address)
6722         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
6723         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
6724         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
6725         GET_CODE () == xxx.
6726         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
6727         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
6728         GO_IF_LEGITIMATE_ADDRESS): Ditto.
6729         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
6730         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
6731         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
6732         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
6733         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
6734         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
6735         (uminsi3, call, call_value): Ditto.
6736         (define_split: indir_to_reg_split, unnamed): Ditto.
6737
6738 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
6739
6740         PR tree-optimization/30975
6741         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
6742         wrong assert.
6743
6744 2007-02-18  Eric Christopher  <echristo@gmail.com>
6745
6746         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
6747         Remove use of arglist.
6748         (mips_expand_builtin): Remove use of arglist, pass in expr.
6749         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
6750         (mips_expand_builtin_movtf): Ditto.
6751         (mips_expand_builtin_compare): Ditto.
6752
6753 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
6754
6755         * tree-sra.c (sra_build_assignment): Replace assertion
6756         checking with a comment explaining why it can't be done.
6757
6758 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
6759
6760         PR middle-end/30833
6761         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
6762         during CALL_EXPR representation conversion.
6763         * tree-ssa-propagate.c (set_rhs): Likewise.
6764
6765 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
6766
6767         * tree-sra.c (sra_build_assignment): Disable assertion checking
6768         for now.
6769
6770 2007-02-18  Roger Sayle  <roger@eyesopen.com>
6771
6772         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
6773         instead of calling build2 with a GIMPLE_MODIFY_STMT.
6774         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
6775         Likewise.
6776         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
6777         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
6778         gimplify_init_ctor_eval_range, gimple_push_cleanup,
6779         gimplify_omp_for, gimplify_omp_atomic_pipeline,
6780         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
6781         force_gimple_operand): Likewise.
6782         * ipa-cp.c (constant_val_insert): Likewise.
6783         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
6784         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
6785         perfect_nestify): Likewise.
6786         * langhooks.c (lhd_omp_assignment): Likewise.
6787         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
6788         lower_copyprivate_clauses, lower_send_clauses,
6789         lower_send_shared_vars, expand_parallel_call,
6790         expand_omp_for_generic, expand_omp_for_static_nochunk,
6791         expand_omp_for_static_chunk, expand_omp_sections,
6792         lower_omp_single_copy, lower_omp_for_lastprivate,
6793         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
6794         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
6795         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
6796         Likewise.
6797
6798 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
6799
6800         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
6801         config/sh/sh.md: Follow spelling conventions.
6802
6803         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
6804         config/frv/predicates.md: Follow spelling conventions.
6805
6806         * config/m68k/linux-unwind.h: Fix a comment typo.
6807         * target.h: Follow spelling conventions.
6808
6809 2007-02-18  Roger Sayle  <roger@eyesopen.com>
6810
6811         PR rtl-optimization/28173
6812         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
6813         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
6814         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
6815         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
6816         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
6817
6818 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6819
6820         * builtins.c (fold_builtin_load_exponent): New.
6821         (fold_builtin_2): Use it.
6822
6823 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
6824
6825         PR rtl-optimization/30773
6826         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
6827         if we fail to attach a REG_EQUIV note.
6828
6829 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
6830             Roger Sayle  <roger@eyesopen.com>
6831
6832         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
6833
6834 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
6835
6836         * calls.c (initialize_argument_information): Pass original EXP
6837         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
6838         code to split complex arguments here, as part of initializing the
6839         ARGS array.
6840         (expand_call): Remove code that builds a list of arguments and
6841         inserts implicit arguments into it.  Instead, just count how many
6842         implicit arguments there will be so we can determine the size of
6843         the ARGS array, and let initialize_argument_information do the work.
6844         (split_complex_values): Delete unused function.
6845
6846 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
6847
6848         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
6849
6850 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
6851
6852         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
6853         for arg pointer based indexed addressing.
6854
6855 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
6856
6857         * config/ia64/ia64.h, config/ia64/ia64.md,
6858         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
6859         spelling conventions.
6860
6861 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
6862
6863         * config/m68k/m68k.c (split_di): New.
6864         * config/m68k/m68k-protos.h: Declare split_di.
6865         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
6866           Improve predicate handling and split constant shifts.
6867
6868 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
6869
6870         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
6871         parameter for register bitfield operations, general predicates
6872         cleanup
6873
6874 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
6875
6876         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
6877         * config/m68k/linux-unwind.h: New file.
6878
6879 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
6880
6881         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
6882         config/i386/athlon.md, config/ia64/ia64.md,
6883         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
6884         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
6885         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
6886         tree-ssa-loop-niter.c, tree-vect-analyze.c,
6887         tree-vect-transform.c: Fix comment typos.
6888
6889 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
6890
6891         * sched-deps.c (find_insn_list): Remove.
6892         * sched-int.h: Remove the prototype for find_insn_list.
6893
6894 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
6895
6896         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
6897         to linker.
6898         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
6899         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
6900         darwin_rs6000_override_options.
6901         (C_COMMON_OVERRIDE_OPTIONS): Expect
6902         darwin_macosx_version_min to be non-NULL always.
6903         (TARGET_C99_FUNCTIONS): Likewise.
6904         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
6905         (DARWIN_MINVERSION_SPEC): New.
6906         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
6907         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
6908         to cc1*.
6909         (DARWIN_MINVERSION_SPEC): New.
6910         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
6911         value.
6912         * config/darwin-c.c (darwin_cpp_builtins): Expect
6913         darwin_macosx_version_min to be non-NULL always.
6914
6915         * config/rs6000/rs6000.c: Clean up trailing whitespace.
6916
6917 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
6918
6919         * config/i386/i386.h (x86_use_xchgb): New.
6920         (TARGET_USE_XCHGB): New macro.
6921         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
6922         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
6923         Split after reload into bswaphi for shifts of 8.
6924         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
6925         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
6926         or when optimizing for size.
6927
6928 2007-02-16  Richard Guenther  <rguenther@suse.de>
6929             Christian Bruel  <christian.bruel@st.com>
6930
6931         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
6932         DECLs but prefer SSA_NAMEs over DECLs.
6933
6934 2007-02-16  Richard Guenther  <rguenther@suse.de>
6935
6936         * tree-flow-inline.h (single_imm_use_p): Remove.
6937         (zero_imm_uses_p): Likewise.
6938         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
6939         instead of single_imm_use_p.
6940         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
6941         zero_imm_uses_p.
6942
6943 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6944
6945         PR other/27843
6946         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
6947         nested double- and backquotes.
6948
6949 2007-02-15  Roger Sayle  <roger@eyesopen.com>
6950
6951         PR middle-end/30391
6952         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
6953         should be unreachable.
6954         (build2_stat): Allow construction of MODIFY_EXPR at any time.
6955         For the time being redirect GIMPLE_MODIFY_STMT to the new
6956         (renamed) build_gimple_modify_stmt_stat.
6957         (build2_gimple_stat): Rename to...
6958         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
6959         Always build a GIMPLE_MODIFY_STMT node.
6960         * tree.h (build2_gimple, build2_gimple_stat): Delete.
6961         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
6962         declarations.
6963
6964         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
6965         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
6966         * tree-complex.c (set_component_ssa_name, expand_complex_move,
6967         expand_complex_div_wide): Likewise.
6968         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
6969         * tree-ssa-loop-im.c (schedule_sm): Likewise.
6970         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
6971         * tree-ssa-loop-manip.c (create_iv): Likewise.
6972         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
6973         abs_replacement): Likewise.
6974         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
6975         realify_fake_stores): Likewise.
6976
6977         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
6978         node rather than a GIMPLE_MODIFY_STMT node.
6979         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
6980         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
6981         Likewise.
6982         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
6983         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
6984         GIMPLE_MODIFY_STMT.
6985
6986 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6987
6988         PR middle-end/30433
6989         * fold-const.c (fold_comparison): Add back the
6990         folding of constant complex comparisions.
6991
6992 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6993
6994         PR middle-end/30729
6995         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
6996         effects unknown to this function, return early.
6997
6998 2007-02-15  Ian Lance Taylor  <iant@google.com>
6999
7000         * lower-subreg.c (move_eh_region_note): New static function.
7001         (resolve_simple_move): Call it.
7002         (decompose_multiword_subregs): Track blocks for which we resolve a
7003         simple move which is also a control flow insn.  Pass them to
7004         find_many_sub_basic_blocks.
7005         (pass_lower_subreg): Add TODO_verify_flow.
7006         (pass_lower_subreg2): Likewise.
7007
7008 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
7009             Brooks Moses  <brooks.moses@codesourcery.com>
7010             Lee Millward  <lee.millward@codesourcery.com>
7011
7012         * tree.h (enum tree_code_class): Add tcc_vl_exp.
7013         (VL_EXP_CLASS_P): New.
7014         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
7015         TREE_CODE_LENGTH.
7016         (TREE_OPERAND_CHECK_CODE): Likewise.
7017         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
7018         (TREE_RTL_OPERAND_CHECK): Likewise.
7019         (tree_operand_check_failed): Make second parameter the whole tree
7020         instead of its code.  Fixed callers.
7021         (VL_EXP_CHECK): New.
7022         (TREE_OPERAND_LENGTH): New.
7023         (VL_EXP_OPERAND_LENGTH): New.
7024         (CALL_EXPR_FN): New.
7025         (CALL_EXPR_STATIC_CHAIN): New.
7026         (CALL_EXPR_ARGS): New.
7027         (CALL_EXPR_ARG): New.
7028         (call_expr_nargs): New.
7029         (CALL_EXPR_ARGP): New.
7030         (build_nt_call_list): Declare.
7031         (build_vl_exp_stat): Declare.
7032         (build_vl_exp): New.
7033         (build_call_list): Declare.
7034         (build_call_nary): Declare.
7035         (build_call_valist): Declare.
7036         (build_call_array): Declare.
7037         (call_expr_arg): Declare.
7038         (call_expr_argp): Declare.
7039         (call_expr_arglist): Declare.
7040         (fold_build_call_list): Declare.
7041         (fold_build_call_list_initializer): Declare.
7042         (fold_call_expr): Declare to replace fold_builtin.
7043         (fold_builtin_fputs): Update to agree with modified definition.
7044         (fold_builtin_strcpy): Likewise.
7045         (fold_builtin_strncpy): Likewise.
7046         (fold_builtin_memory_chk): Likewise.
7047         (fold_builtin_stxcpy_chk): Likewise.
7048         (fold_builtin_strncpy_chk): Likewise.
7049         (fold_builtin_next_arg): Likewise.
7050         (fold_build_call_expr): Declare.
7051         (fold_builtin_call_list): Declare.
7052         (fold_builtin_call_valist): Declare.
7053         (build_call_expr): Declare.
7054         (validate_arglist): Update to agree with modified definition.
7055         (tree_operand_length): New.
7056         (call_expr_arg_iterator): New.
7057         (init_call_expr_arg_iterator): New.
7058         (next_call_expr_arg): New.
7059         (first_call_expr_arg): New.
7060         (more_call_expr_args_p): New.
7061         (FOR_EACH_CALL_EXPR_ARG): New.
7062
7063         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
7064         and tcc_gimple_stmt.
7065         (tree_code_size): Update documentation.  Use sizeof (tree) rather
7066         than sizeof (char *).
7067         (tree_size): Likewise.  Add case for tcc_vl_exp.
7068         (tree_node_structure): Add case for tcc_vl_exp.
7069         (contains_placeholder_p): Likewise.
7070         (substitute_in_expr): Likewise.
7071         (substitute_placeholder_in_expr): Likewise.
7072         (stabilize_reference_1): Likewise.
7073         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
7074         to diagnose breakage of this interface for constructing CALL_EXPRs.
7075         (build_nt): Add similar assertion here.
7076         (build_nt_call_list): New.
7077         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
7078         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
7079         TREE_CODE_LENGTH.
7080         (get_callee_fndecl): Use new CALL_EXPR accessors.
7081         (tree_operand_check_failed): Change parameters to pass entire node
7082         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
7083         (process_call_operands): New.
7084         (build_vl_exp_stat): New.
7085         (build_call_list): New.
7086         (build_call_nary): New.
7087         (build_call_valist): New.
7088         (build_call_array): New.
7089         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
7090         (call_expr_arglist): New.
7091
7092         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
7093         tcc_vl_exp instead of a fixed-size tcc_expression.
7094
7095         * doc/c-tree.texi (CALL_EXPR): Document new representation and
7096         accessors for CALL_EXPRs.
7097         (AGGR_INIT_EXPR): Likewise.
7098
7099 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
7100             Brooks Moses  <brooks.moses@codesourcery.com>
7101             Lee Millward  <lee.millward@codesourcery.com>
7102
7103         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
7104         (expand_builtin_nonlocal_goto): Change parameter to be entire
7105         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
7106         (expand_builtin_prefetch): Likewise.
7107         (expand_builtin_classify_type): Likewise.
7108         (mathfn_built_in): Return NULL_TREE instead of 0.
7109         (expand_errno_check): Use new CALL_EXPR accessors.
7110         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
7111         Return NULL_RTX instead of 0.
7112         (expand_builtin_mathfn_2): Likewise.
7113         (expand_builtin_mathfn_3): Likewise.
7114         (expand_builtin_interclass_mathfn): Likewise.
7115         (expand_builtin_sincos): Likewise.
7116         (expand_builtin_cexpi): Likewise.
7117         (expand_builtin_int_roundingfn): Likewise.
7118         (expand_builtin_int_roundingfn_2): Likewise.
7119         (expand_builtin_pow): Likewise.
7120         (expand_builtin_powi): Likewise.
7121         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
7122         of arglist, fixing callers appropriately.  Use new CALL_EXPR
7123         accessors and constructors.  Return NULL_RTX instead of 0.
7124         (expand_builtin_strstr): Likewise.
7125         (expand_builtin_strchr): Likewise.
7126         (expand_builtin_strrchr): Likewise.
7127         (expand_builtin_strpbrk): Likewise.
7128         (expand_builtin_memcpy): Likewise.
7129         (expand_builtin_mempcpy): Likewise.
7130         (expand_builtin_mempcpy_args): New.
7131         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
7132         (expand_builtin_memmove_args): New.
7133         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
7134         (expand_movstr): Likewise.
7135         (expand_builtin_strcpy): Likewise.
7136         (expand_builtin_strcpy_args): New.
7137         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
7138         (expand_builtin_strncpy): Likewise.
7139         (expand_builtin_memset): Likewise.
7140         (expand_builtin_memset_args): New.
7141         (expand_builtin_bzero): Similarly to expand_builtin_memset.
7142         (expand_builtin_memcmp): Likewise.
7143         (expand_builtin_strcmp): Likewise.
7144         (expand_builtin_strncmp): Likewise.
7145         (expand_builtin_strcat): Likewise.
7146         (expand_builtin_strncat): Likewise.
7147         (expand_builtin_strspn): Likewise.
7148         (expand_builtin_strcspn): Likewise.
7149         (expand_builtin_args_info): Likewise.
7150         (expand_builtin_va_start): Likewise.
7151         (gimplify_va_arg_expr): Likewise.
7152         (expand_builtin_va_end): Likewise.
7153         (expand_builtin_va_copy): Likewise.
7154         (expand_builtin_frame_address): Likewise.
7155         (expand_builtin_alloca): Likewise.
7156         (expand_builtin_bswap): Likewise.
7157         (expand_builtin_unop): Likewise.
7158         (expand_builtin_fputs): Likewise.
7159         (expand_builtin_expect): Likewise.
7160         (expand_builtin_fabs): Likewise.
7161         (expand_builtin_copysign): Likewise.
7162         (expand_builtin_printf): Likewise.
7163         (expand_builtin_fprintf): Likewise.
7164         (expand_builtin_sprintf): Likewise.
7165         (expand_builtin_init_trampoline): Likewise.
7166         (expand_builtin_signbit): Likewise.
7167         (expand_builtin_fork_or_exec): Likewise.
7168         (expand_builtin_sync_operation): Likewise.
7169         (expand_builtin_compare_and_swap): Likewise.
7170         (expand_builtin_lock_test_and_set): Likewise.
7171         (expand_builtin_lock_release): Likewise.
7172         (expand_builtin): Likewise.
7173         (builtin_mathfn_code): Likewise.
7174
7175         (fold_builtin_constant_p): Pass call arguments individually instead
7176         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
7177         accessors and constructors.  Return NULL_TREE instead of 0.
7178         (fold_builtin_expect): Likewise.
7179         (fold_builtin_classify_type): Likewise.
7180         (fold_builtin_strlen): Likewise.
7181         (fold_builtin_nan): Likewise.
7182         (integer_valued_real_p): Likewise.
7183         (fold_trunc_transparent_mathfn): Likewise.
7184         (fold_fixed_mathfn): Likewise.
7185         (fold_builtin_cabs): Likewise.
7186         (fold_builtin_sqrt): Likewise.
7187         (fold_builtin_cbrt): Likewise.
7188         (fold_builtin_cos): Likewise.
7189         (fold_builtin_cosh): Likewise.
7190         (fold_builtin_tan): Likewise.
7191         (fold_builtin_sincos): Likewise.
7192         (fold_builtin_cexp): Likewise.
7193         (fold_builtin_trunc): Likewise.
7194         (fold_builtin_floor): Likewise.
7195         (fold_builtin_ceil): Likewise.
7196         (fold_builtin_round): Likewise.
7197         (fold_builtin_int_roundingfn): Likewise.
7198         (fold_builtin_bitop): Likewise.
7199         (fold_builtin_bswap): Likewise.
7200         (fold_builtin_logarithm): Likewise.
7201         (fold_builtin_hypot): Likewise.
7202         (fold_builtin_pow): Likewise.
7203         (fold_builtin_powi): Likewise.
7204         (fold_builtin_exponent): Likewise.
7205         (fold_builtin_memset): Likewise.
7206         (fold_builtin_bzero): Likewise.
7207         (fold_builtin_memory_op): Likewise.
7208         (fold_builtin_bcopy): Deleted; call site changed to invoke
7209         fold_builtin_memory_op directly.
7210         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
7211         (fold_builtin_strncpy): Likewise.
7212         (fold_builtin_memcmp): Likewise.
7213         (fold_builtin_strcmp): Likewise.
7214         (fold_builtin_strncmp): Likewise.
7215         (fold_builtin_signbit): Likewise.
7216         (fold_builtin_copysign): Likewise.
7217         (fold_builtin_isascii): Likewise.
7218         (fold_builtin_toascii): Likewise.
7219         (fold_builtin_isdigit): Likewise.
7220         (fold_builtin_fabs): Likewise.
7221         (fold_builtin_abs): Likewise.
7222         (fold_builtin_fmin_fmax): Likewise.
7223         (fold_builtin_carg): Likewise.
7224         (fold_builtin_classify): Likewise.
7225         (fold_builtin_unordered_cmp): Likewise.
7226
7227         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
7228         New functions split out from fold_builtin_1.
7229         (fold_builtin_n): New.
7230         (fold_builtin_varargs): New.
7231         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
7232         instead.
7233         (fold_call_expr): New.
7234         (build_function_call_expr): Rewrite to use new helper function.
7235         (fold_builtin_call_list): New.
7236         (build_call_expr): New.
7237         (fold_builtin_call_valist): New.
7238         (rewrite_call_expr): New.
7239         (validate_arg): New.
7240         (validate_arglist): Change parameter to be entire CALL_EXPR instead
7241         of an arglist.  Change return type to bool.  Use new CALL_EXPR
7242         accessors.
7243
7244         (fold_builtin_strstr):  Pass call arguments individually instead
7245         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
7246         accessors and constructors.  Return NULL_TREE instead of 0.
7247         (fold_builtin_strchr): Likewise.
7248         (fold_builtin_strrchr): Likewise.
7249         (fold_builtin_strpbrk): Likewise.
7250         (fold_builtin_strcat): Likewise.
7251         (fold_builtin_strncat): Likewise.
7252         (fold_builtin_strspn): Likewise.
7253         (fold_builtin_strcspn): Likewise.
7254         (fold_builtin_fputs): Likewise.
7255         (fold_builtin_next_arg): Likewise.
7256         (fold_builtin_sprintf): Likewise.
7257
7258         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
7259         NULL_RTX instead of 0.
7260         (expand_builtin_memory_chk): Likewise.
7261         (maybe_emit_chk_warning): Likewise.
7262         (maybe_emit_sprintf_chk_warning): Likewise.
7263
7264         (fold_builtin_object_size): Pass call arguments individually instead
7265         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
7266         accessors and constructors.  Return NULL_TREE instead of 0.
7267         (fold_builtin_memory_chk): Likewise.
7268         (fold_builtin_stxcpy_chk): Likewise.
7269         (fold_builtin_strncpy_chk): Likewise.
7270         (fold_builtin_strcat_chk): Likewise.
7271         (fold_builtin_strcat_chk): Likewise.
7272         (fold_builtin_strncat_chk): Likewise.
7273         (fold_builtin_sprintf_chk): Likewise.
7274         (fold_builtin_snprintf_chk): Likewise.
7275         (fold_builtin_printf): Likewise.
7276         (fold_builtin_vprintf): Likewise.
7277
7278         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
7279         constructors.
7280         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
7281         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
7282         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
7283         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
7284         (fold_unary): Likewise.
7285         (fold_binary): Likewise.
7286         (fold_ternary): Remove CALL_EXPR case, since they are no longer
7287         ternary expressions.
7288         (fold): Add logic for tcc_vl_exp.
7289         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
7290         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
7291         (fold_build3_stat): Add assertion to flag broken interface for
7292         constructing CALL_EXPRs.
7293         (fold_build_call_list): New.
7294         (fold_build_call_list_initializer): New.
7295         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
7296         constructors.
7297         (fold_strip_sign_ops): Likewise.
7298
7299 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
7300             Brooks Moses  <brooks.moses@codesourcery.com>
7301             Lee Millward  <lee.millward@codesourcery.com>
7302
7303         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
7304         accessors and dump arguments explicitly.
7305
7306         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
7307         TREE_CODE_LENGTH.
7308         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
7309         explicitly.
7310         (print_call_name): Use new CALL_EXPR accessors.
7311
7312         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
7313         CALL_EXPR arguments explicitly instead of as a list.  Use
7314         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
7315
7316         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
7317         (vrp_visit_stmt): Likewise.
7318
7319         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
7320         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
7321         TREE_CODE_LENGTH.
7322         (force_move_till_expr): Likewise.
7323
7324         * targhooks.c (default_external_stack_protect_fail): Use
7325         build_call_expr instead of build_function_call_expr.
7326         (default_hidden_stack_protect_fail): Likewise.
7327
7328         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
7329         build the call.
7330
7331         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
7332         and walk arguments explicitly.
7333
7334         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
7335         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
7336         (expand_simple_operations): Likewise.
7337         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
7338
7339         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
7340         of TREE_CODE_LENGTH.
7341         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
7342
7343         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
7344         instead of TREE_CODE_LENGTH.
7345
7346         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
7347         (tree_ic_transform): Likewise.
7348         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
7349         parameter instead of arglist.  Fix callers.
7350         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
7351         (tree_stringops_transform): Likewise.
7352         (tree_indirect_call_to_profile): Likewise.
7353         (tree_stringops_values_to_profile): Likewise.
7354
7355         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
7356         (eliminate_tail_call): Likewise.
7357
7358         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
7359
7360         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
7361         Use TREE_OPERAND_LENGTH and generalize to handle any number of
7362         operands.
7363         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
7364
7365         * omp-low.c (build_omp_barrier): Use build_call_expr.
7366         (lower_rec_input_clauses): Likewise.
7367         (lower_reduction_clauses): Likewise.
7368         (expand_parallel_call): Likewise.
7369         (maybe_catch_exception): Likewise.
7370         (expand_omp_for_generic): Likewise.
7371         (expand_omp_for_static_nochunk): Likewise.
7372         (expand_omp_sections): Likewise.
7373         (lower_omp_single_simple): Likewise.
7374         (lower_omp_single_copy): Likewise.
7375         (lower_omp_master): Likewise.
7376         (lower_omp_ordered): Likewise.
7377         (lower_omp_critical): Likewise.
7378
7379         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
7380         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
7381
7382         * tree-gimple.c (is_gimple_call_addr): Fix doc.
7383         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
7384         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
7385
7386         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
7387         and generalize to handle any number of operands.
7388         (chrec_contains_undetermined): Likewise.
7389         (tree_contains_chrecs): Likewise.
7390         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
7391
7392         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
7393
7394         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
7395         fold_call_expr instead of fold_builtin.
7396         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
7397         match declarations there.
7398         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
7399         updates.
7400
7401         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
7402         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
7403
7404         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
7405         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
7406
7407         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
7408         accessors.
7409
7410         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
7411         (execute_cse_sincos): Use new CALL_EXPR accessors.
7412
7413         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
7414
7415         * gimple-low.c (lower_function_body): Use build_call_expr.
7416         (lower_builtin_setjmp): Likewise.
7417
7418         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
7419         (set_storage_via_libcall): Likewise.
7420         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
7421         instead of TREE_CODE_LENGTH.
7422         (expand_expr_real_1): Use new CALL_EXPR accessors.
7423
7424         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
7425         generalize to handle any number of operands.
7426         (TB_parent_eq): Likewise.
7427
7428         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
7429         (strip_builtin_expect): Likewise.
7430
7431         * function.c (gimplify_parameters): Use build_call_expr.
7432
7433         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
7434         instead of TREE_CODE_LENGTH.
7435
7436         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
7437         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
7438
7439         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
7440         iterators.
7441
7442         * gimplify.c (build_stack_save_restore): Use build_call_expr.
7443         (gimplify_decl_expr): Likewise.
7444         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
7445         Use new CALL_EXPR iterators.
7446         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
7447         (gimplify_modify_expr_to_memset): Likewise.
7448         (gimplify_variable_sized_compare): Likewise.
7449         (gimplify_omp_atomic_fetch_op): Likewise.
7450         (gimplify_omp_atomic_pipeline): Likewise.
7451         (gimplify_omp_atomic_mutex): Likewise.
7452         (gimplify_function_tree): Likewise.
7453
7454         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
7455         (call_expr_flags): Likewise.
7456         (expand_call): Likewise.
7457
7458         * except.c (expand_builtin_eh_return_data_regno): Pass entire
7459         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
7460         accessors.
7461
7462         * coverage.c (create_coverage): Use build_call_expr.
7463
7464         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
7465         (temp_call_expr_obstack): New.
7466         (pool_copy_list): Delete.
7467         (temp_copy_call_expr): New.
7468         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
7469         CALL_EXPR accessors.  Get rid of special goo for copying argument
7470         lists and use temp_copy_call_expr instead.
7471         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
7472         CALL_EXPR accessors.
7473         (create_expression_by_pieces): Likewise.  Use build_call_array
7474         to construct the result instead of fold_build3.
7475         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
7476         dealing with argument lists.
7477         (init_pre): Remove references to expression_node_pool and
7478         list_node_pool.  Init temp_call_expr_obstack instead.
7479         (fini_pre): Remove references to expression_node_pool and
7480         list_node_pool.
7481
7482         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
7483         and walk arguments explicitly instead of as a list.
7484
7485         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
7486         (mx_register_decls): Likewise.
7487         (mudflap_register_call): Likewise.
7488         (mudflap_finish_file): Likewise.
7489
7490         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
7491         (ipa_callsite_compute_param): Likewise.
7492
7493         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
7494         accessors and constructor.
7495
7496         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
7497         accessors and constructor.
7498         (convert_tramp_reference): Likewise.
7499         (convert_call_expr): Likewise.
7500         (finalize_nesting_tree_1): Likewise.
7501
7502         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
7503         accessors.
7504
7505         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
7506
7507         * tree-inline.c (initialize_inlined_parameters): Pass entire
7508         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
7509         accessors.
7510         (estimate_num_insns_1): Use new CALL_EXPR accessors.
7511         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
7512
7513         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
7514         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
7515         (vectorizable_reduction): Likewise.
7516         (vectorizable_call): Use new CALL_EXPR iterators.
7517         (vectorizable_conversion): Use build_call_expr.
7518         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
7519         (vect_gen_widened_results_half): Use build_call_expr.
7520         (vect_setup_realignment): Likewise.
7521         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
7522
7523         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
7524         (pass_through_call): Likewise.
7525         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
7526         fold_builtin.
7527
7528         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
7529         (tree_gen_pow2_profiler): Likewise.
7530         (tree_gen_one_value_profiler): Likewise.
7531         (tree_gen_ic_func_profiler): Likewise.
7532         (tree_gen_average_profiler): Likewise.
7533         (tree_gen_ior_profiler): Likewise.
7534
7535         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
7536         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
7537         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
7538
7539         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
7540         of TREE_CODE_LENGTH.
7541
7542         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
7543         of TREE_CODE_LENGTH.
7544
7545         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
7546         constructor.
7547         (convert_to_integer): Likewise.
7548
7549         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
7550         accessors.
7551
7552 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
7553             Brooks Moses  <brooks.moses@codesourcery.com>
7554             Lee Millward  <lee.millward@codesourcery.com>
7555
7556         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
7557         accessors.
7558         * config/frv/frv.c (frv_expand_builtin): Likewise.
7559         * config/s390/s390.c (s390_expand_builtin): Likewise.
7560
7561         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
7562         (sparc_expand_builtin): Use new CALL_EXPR accessors.
7563
7564         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
7565         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
7566         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
7567         (ix86_expand_store_builtin): Likewise.
7568         (ix86_expand_unop_builtin): Likewise.
7569         (ix86_expand_unop1_builtin): Likewise.
7570         (ix86_expand_sse_compare): Likewise.
7571         (ix86_expand_sse_comi): Likewise.
7572         (ix86_expand_vec_init_builtin): Likewise.
7573         (ix86_expand_vec_ext_builtin): Likewise.
7574         (ix86_expand_vec_set_builtin): Likewise.
7575         (ix86_expand_builtin): Use new CALL_EXPR accessors.
7576
7577         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
7578         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
7579
7580         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
7581         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
7582         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
7583
7584         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
7585         build_call_expr.
7586         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
7587         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
7588         arglist.  Use new CALL_EXPR accessors.  Fix callers.
7589         (altivec_expand_abs_builtin): Likewise.
7590         (rs6000_expand_binop_builtin): Likewise.
7591         (altivec_expand_predicate_builtin): Likewise.
7592         (altivec_expand_lv_builtin): Likewise.
7593         (spe_expand_stv_builtin): Likewise.
7594         (altivec_expand_stv_builtin): Likewise.
7595         (rs6000_expand_ternop_builtin): Likewise.
7596         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
7597         (altivec_expand_st_builtin): Likewise.
7598         (altivec_expand_dst_builtin): Likewise.
7599         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
7600         arglist.  Use new CALL_EXPR accessors.  Fix callers.
7601         (altivec_expand_vec_set_builtin): Likewise.
7602         (altivec_expand_vec_ext_builtin): Likewise.
7603         (altivec_expand_builtin): Use new CALL_EXPR accessors.
7604         (spe_expand_builtin): Likewise.
7605         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
7606         arglist.  Use new CALL_EXPR accessors.  Fix callers.
7607         (spe_expand_evsel_builtin): Likewise.
7608         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
7609         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
7610
7611         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
7612         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
7613         (arm_expand_unop_builtin): Likewise.
7614         (arm_expand_builtin): Use new CALL_EXPR accessors.
7615
7616         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
7617         accessors.
7618
7619         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
7620         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
7621         (bfin_expand_unop_builtin): Likewise.
7622         (bfin_expand_builtin): Use new CALL_EXPR accessors.
7623
7624 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
7625             Brooks Moses  <brooks.moses@codesourcery.com>
7626             Lee Millward  <lee.millward@codesourcery.com>
7627
7628         * c-semantics.c (build_stmt): Add internal diagnostic check.
7629
7630         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
7631         accessors.  Print arguments explicitly instead of as a list.
7632
7633         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
7634
7635         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
7636         (c_finish_omp_flish): Likewise.
7637
7638         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
7639         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
7640         instead of TREE_CODE_LENGTH.
7641         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
7642         (c_warn_unused_result): Likewise.
7643
7644 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7645
7646         PR c/26494
7647         * doc/invoke.texi (Warning Options): Remove
7648         -Werror-implicit-function-declaration.
7649         (Wimplicit-function-declaration): Update description.
7650         * opts.c (common_handle_option): Move handling of -Werror=* to...
7651         (enable_warning_as_error): ...here.
7652         * opts.h (enable_warning_as_error): Declare.
7653         * c-decl.c (implicit_decl_warning): Unless
7654         -Wno-implicit-function-declaration is given, emit a pedwarn if
7655         -std=c99 or emit a warning if -Wimplicit-function-declaration.
7656         * c.opt (Wimplicit-function-declaration): Replace
7657         mesg_implicit_function_declaration with
7658         warn_implicit_function_declaration.
7659         * c-opts.c (c_common_handle_option):
7660         -Werror-implicit-function-declaration is exactly equal as
7661         -Werror=implicit-function-declaration.
7662         (set_Wimplicit): Replace mesg_implicit_function_declaration with
7663         warn_implicit_function_declaration.
7664         (c_common_post_options): -Wimplict-function-declaration is enabled
7665         by default by -std=c99, otherwise is disabled by default.
7666         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
7667
7668 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
7669
7670         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
7671         DECL on the rhs to a DECL on the lhs for debug info purposes if the
7672         former is ignored but not the latter.
7673
7674 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
7675
7676         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
7677         is made and the reference doesn't use the alias set of its type,
7678         do not create the temporary using that type.
7679
7680 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
7681
7682         * jump.c: Remove prototypes for delete_computation and
7683         delete_prior_computation.
7684
7685 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
7686
7687         * jump.c (get_label_after): Delete.
7688         (get_label_before, delete_computation, delete_jump,
7689         delete_prior_computation, follow_jumps): Move...
7690         * reorg.c (delete_computation, delete_prior_computation): ... here...
7691         (get_label_before, delete_jump): ... making these static ...
7692         (follow_jumps): ... and simplifying this since it only runs after
7693         reload.
7694         * rtl.h (get_label_after, get_label_before, delete_jump,
7695         follow_jumps): Delete prototypes.
7696
7697 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
7698
7699         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
7700
7701 2007-02-15  Nick Clifton  <nickc@redhat.com>
7702
7703         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
7704         order to prevent it from being munged by the target.
7705
7706 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
7707
7708         * config/i386/i386.md: Remove misleading comment.
7709
7710 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
7711
7712         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
7713         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
7714         invalid patterns.
7715
7716 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
7717
7718         * tree-sra.c (instantiate_missing_elements): Canonicalize
7719         bit-field types.
7720         (sra_build_assignment): New.
7721         (generate_copy_inout, generate_element_copy,
7722         generate_element_zero, generate_one_element_init): Use it.
7723
7724 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
7725
7726         * tree-sra.c (instantiate_missing_elements): Canonicalize
7727         bit-field types.
7728         (sra_build_assignment): New.
7729         (generate_copy_inout, generate_element_copy,
7730         generate_element_zero, generate_one_element_init): Use it.
7731
7732 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
7733
7734         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
7735         limbo die nodes.
7736
7737 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
7738
7739         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
7740         types as aggregates not scalars.
7741         * function.c (assign_stack_temp_for_type): Likewise.
7742
7743 2007-02-14  Roger Sayle  <roger@eyesopen.com>
7744             Zdenek Dvorak  <dvorakz@suse.cz>
7745
7746         * tree-dump.c (dump_switch_p_1): Require exact match of the option
7747         name.
7748
7749 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
7750
7751         * passes.c (next_pass_1): Clear the next field of the copied
7752         pass structure.
7753
7754 2007-02-14  Richard Henderson  <rth@redhat.com>
7755
7756         * tree-sra.c (early_sra): New.
7757         (decl_can_be_decomposed_p): Deny va_list if early_sra.
7758         (tree_sra_early, pass_sra_early): New.
7759         * tree-pass.h (pass_sra_early): Declare.
7760         * passes.c (init_optimization_passes): Use it.
7761
7762 2007-02-14  Richard Guenther  <rguenther@suse.de>
7763
7764         * flags.h (issue_strict_overflow_warning): Convert to a macro.
7765
7766 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
7767
7768          PR tree-optimization/30771
7769         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
7770         also phi nodes.
7771         (vect_analyze_operations): Induction phis can now be marked as
7772         used_in_loop.
7773         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
7774         Update documentation accordingly.
7775
7776 2007-02-14  Nick Clifton  <nickc@redhat.com>
7777
7778         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
7779         most 3 arguments are supported.
7780         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
7781
7782 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
7783
7784         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
7785         Ensure dst->current is valid.
7786
7787 2007-02-13  Paul Brook  <paul@codesourcery.com>
7788
7789         * config.gcc: Add arm*-*-uclinux-*eabi.
7790         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
7791         (SUBTARGET_EXTRA_LINK_SPEC): Define.
7792         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
7793         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
7794         (LINK_SPEC): Define.
7795         (LIB_SPEC): Define.
7796         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
7797         register.
7798         * config/arm/uclinux-eabi.h: New file.
7799         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
7800         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
7801         based targets.
7802
7803 2007-02-13  Ian Lance Taylor  <iant@google.com>
7804
7805         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
7806         * flags.h (warn_strict_overflow): Declare.
7807         (enum warn_strict_overflow_code): Define.
7808         (issue_strict_overflow_warning): New static inline function.
7809         * opts.c (warn_strict_overflow): New variable.
7810         (common_handle_option): Handle OPT_Wstrict_overflow and
7811         OPT_Wstrict_overflow_.
7812         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
7813         OPT_Wall.
7814         * fold-const.c: Include intl.h.
7815         (fold_deferring_overflow_warnings): New static variable.
7816         (fold_deferred_overflow_warning): New static variable.
7817         (fold_deferred_overflow_code): New static variable.
7818         (fold_defer_overflow_warnings): New function.
7819         (fold_undefer_overflow_warnings): New function.
7820         (fold_undefer_and_ignore_overflow_warnings): New function.
7821         (fold_deferring_overflow_warnings_p): New function.
7822         (fold_overflow_warning): New static function.
7823         (make_range): Add strict_overflow_p parameter.  Change all
7824         callers.
7825         (extract_muldiv, extract_muldiv_1): Likewise.
7826         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
7827         tree_expr_nonnegative_p.
7828         (fold_negate_expr): Call fold_overflow_warning.
7829         (fold_range_test): Likewise.
7830         (fold_comparison): Likewise.
7831         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
7832         instead of tree_expr_nonnegative_p.
7833         (tree_expr_nonnegative_warnv_p): Rename from
7834         tree_expr_nonnegative_p, add strict_overflow_p parameter.
7835         (tree_expr_nonnegative_p): New function.
7836         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
7837         strict_overflow_p parameter.
7838         (tree_expr_nonzero_p): New function.
7839         * passes.c (verify_interpass_invariants): New static function.
7840         (execute_one_pass): Call it.
7841         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
7842         warnings.
7843         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
7844         (estimate_numbers_of_iterations): Likewise.
7845         (scev_probably_wraps_p): Likewise.
7846         * tree-ssa-ccp.c: Include "toplev.h".
7847         (evaluate_stmt): Defer fold overflow warnings until we know we are
7848         going to optimize.
7849         (struct fold_stmt_r_data): Add stmt field.
7850         (fold_stmt_r): Defer fold overflow warnings until we know we
7851         optimized.
7852         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
7853         (fold_stmt_inplace): Likewise.
7854         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
7855         (cleanup_control_expr_graph): Defer fold overflow warnings until
7856         we know we are going to optimize.
7857         * tree-cfg.c (fold_cond_expr_cond): Likewise.
7858         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
7859         Likewise.
7860         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
7861         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
7862         * tree-ssa-loop-manip.c (create_iv): Likewise.
7863         * c-typeck.c (build_conditional_expr): Likewise.
7864         (build_binary_op): Likewise.
7865         * tree-vrp.c (vrp_expr_computes_nonzero): Call
7866         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
7867         (extract_range_from_unary_expr): Likewise.
7868         * simplify-rtx.c (simplify_const_relational_operation): Warn when
7869         assuming that signed overflow does not occur.
7870         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
7871         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
7872         (fold_defer_overflow_warnings): Declare.
7873         (fold_undefer_overflow_warnings): Declare.
7874         (fold_undefer_and_ignore_overflow_warnings): Declare.
7875         (fold_deferring_overflow_warnings_p): Declare.
7876         (tree_expr_nonzero_warnv_p): Declare.
7877         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
7878         of warning options.
7879         (Warning Options): Document -Wstrict-overflow.
7880         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
7881         (tree-ssa-ccp.o): Likewise.
7882         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
7883         (fold-const.o): Depend on intl.h.
7884
7885 2007-02-13  Ian Lance Taylor  <iant@google.com>
7886
7887         PR middle-end/30751
7888         * lower-subreg.c (resolve_simple_move): Decompose subregs in
7889         addresses.
7890
7891 2007-02-13  Stuart Hastings  <stuart@apple.com>
7892
7893         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
7894
7895 2007-02-13  Richard Henderson  <rth@redhat.com>
7896
7897         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
7898         handled_component_p before looking for the indirect_ref.
7899
7900 2007-02-13  Richard Henderson  <rth@redhat.com>
7901
7902         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
7903         remove flags clobber.
7904         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
7905         (bswaphi_lowpart): New.
7906         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
7907         remove TARGET_BSWAP test.  Delete expander of the same name.
7908
7909         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
7910         (expand_unop): Use them.
7911
7912 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
7913
7914         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
7915         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
7916         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
7917         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
7918         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
7919         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
7920         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
7921         assembler dialect choice from asm templates.
7922
7923 2007-02-12  Richard Henderson  <rth@redhat.com>
7924
7925         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
7926         (fixuns_trunc<SSEMODEF>si2): Use it.
7927         * config/i386/sse.md (vec_setv4sf_0): Export.
7928         * config/i386/i386.c (ix86_build_const_vector): Export.
7929         (ix86_split_convert_uns_si_sse): Rename from
7930         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
7931         * config/i386/i386-protos.h: Update.
7932
7933 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7934
7935         PR c/29521
7936         * c-typeck.c (c_finish_return): Improve warning message.
7937
7938 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7939
7940         * alias.c (find_symbolic_term): Delete unused function.
7941
7942 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
7943
7944         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
7945         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
7946         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
7947
7948 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
7949
7950         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
7951         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
7952         the function, temporarily point the debug interface to the null one.
7953
7954 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
7955
7956         * dwarf2out.c (round_up_to_align): New static function.
7957         (field_byte_offset): Use it to round the offset.
7958
7959 2007-02-12  Richard Henderson  <rth@redhat.com>
7960
7961         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
7962         (inswl_const): Export.
7963
7964 2007-02-12  Richard Henderson  <rth@redhat.com>
7965
7966         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
7967         result mode of the libcall, convert back to outmode.
7968
7969 2007-02-12  Roger Sayle  <roger@eyesopen.com>
7970
7971         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
7972         (bswapdi2): New define_expand to implement 32-bit implementation.
7973
7974 2007-02-12  Nick Clifton  <nickc@redhat.com>
7975
7976         * doc/invoke.texi (Overall Options): Document --help=.
7977         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
7978         (cc1_options): Pass --help= on to cc1.
7979         (display_help): Add description of --help=.
7980         (process_command): Add code to handle --help=.  Allow translated
7981         --help and --target-help switches to be passed on to compiler
7982         sub-process.
7983         (main): Remove unused if statement.
7984         * opts.c (columns): Remove.
7985         (LEFT_COLUMN): Define.
7986         (wrap_help): Add columns argument.
7987         (print_filtered_help): Change parameters to be an include bitmask,
7988         an exclude bitmask, an any bitmask and the column width.  Move the
7989         code to display the params list here.  Add code to display the
7990         status of options rather than their descriptions if the quiet flag
7991         is not active.
7992         (print_specific_help): Change parameters to be an include bitmask,
7993         an exclude bitmask and an any bitmask.  Move code to look up the
7994         column width here.  Decide upon the title for an options listing.
7995         (common_handle_options): Add code to handle --help=.  Adapt code
7996         for --help and --target-help to use the revised form of the
7997         print_specific_help function.
7998         (print_help): Delete.
7999         (print_param_help): Delete.
8000         (print_switch): Delete.
8001         * opts.h (cl_lang_count): Add prototype.
8002         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
8003         CL_MAX_OPTION_CLASS): New defines.
8004         * optc-gen.awk: Add construction of cl_lang_count.
8005         * c.opt: Add Warning attribute to warning options and Optimization
8006         attribute to optimization options.
8007         * common.opt: Likewise.
8008         Add --help=.
8009         Add -fhelp and -ftarget-help as aliases for the transformed --help
8010         and --target-help options.
8011         * opt-functions.awk: Add code to handle Warning and Optimization
8012         attributes.
8013
8014 2007-02-12  Richard Henderson  <rth@redhat.com>
8015
8016         * config/alpha/constraints.md: New file.
8017         * config/alpha/alpha.c: Include tm-constrs.h.
8018         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
8019         alpha_extra_constraint): Remove.
8020         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
8021         * config/alpha/alpha-protos.h: Update.
8022         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
8023         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
8024         (EXTRA_CONSTRAINT): Remove.
8025         * config/alpha/alpha.md: Include constraints.md.
8026         (adddi splitter): Use satisfies_constraint_*.
8027         * config/alpha/predicates.md (add_operand): Likewise.
8028         (sext_add_operand, addition_operation): Likewise.
8029
8030 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
8031
8032         PR tree-optimization/29145
8033         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
8034         in our handling of restrict qualified pointers.
8035
8036 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8037
8038         PR middle-end/7651
8039         * doc/invoke.texi (Wunused-value): Update description.
8040         (Wextra): Delete item.
8041         * opts.c (set_Wextra): Don't use the value of Wextra to set the
8042         value of Wunused-value.
8043         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
8044         (c_finish_stmt_expr): Don't check extra_warnings.
8045         (emit_side_effect_warnings): The caller is responsible to check
8046         warn_unused_value.
8047
8048 2007-02-11  Roger Sayle  <roger@eyesopen.com>
8049             Matt Thomas  <matt@3am-software.com>
8050
8051         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
8052
8053 2007-02-11  Roger Sayle  <roger@eyesopen.com>
8054
8055         * simplify-rtx.c (simplify_relational_operation_1): Optimize
8056         comparisons of POPCOUNT against zero.
8057         (simplify_const_relational_operation): Likewise.
8058
8059 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8060
8061         * doc/invoke.texi (Wextra): Delete outdated paragraph.
8062
8063 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8064
8065         * dwarf2out.c (root_type): Delete unused function.
8066
8067 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8068
8069         * genattrtab.c (contained_in_p): Delete unused function.
8070         (write_expr_attr_cache): Likewise.
8071
8072 2007-02-11  Jan Hubicka  <jh@suse.cz>
8073
8074         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
8075         previous patch.
8076
8077 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
8078
8079         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
8080         to add the REG_EQ* note.
8081         * see.c (see_merge_one_use_extension): Likewise.
8082         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
8083         turn REG_EQUAL notes into REG_EQUIV notes if the target
8084         register may have more than one set.
8085         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
8086         * gcse.c (try_replace_reg): Likewise.
8087         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
8088         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
8089         more than one REG_EQUIV note.
8090         * reload1.c (gen_reload): Use set_unique_reg_note.
8091
8092 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
8093
8094         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
8095         (ix86_builtin_conversion): New function.
8096
8097 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
8098
8099         PR target/29487
8100         * tree.h (DECL_REPLACEABLE_P): New macro.
8101         * except.c (set_nothrow_function_flags): Likewise.
8102
8103 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
8104             Ira Rosen  <irar@il.ibm.com>
8105             Dorit Nuzman  <dorit@il.ibm.com>
8106
8107         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
8108         * targhooks.c (default_builtin_vectorized_conversion): New.
8109         * targhooks.h (default_builtin_vectorized_function): New declaration.
8110         * target.h (struct vectorize): Add builtin_conversion field.
8111         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
8112         stmt_vec_info_type value.
8113         (vectorizable_conversion): New declaration.
8114         * tree-vect-analyze.c (vect_analyze_operations): Add
8115         vectorizable_conversion call.
8116         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
8117         * tree-vect-transform.c (vectorizable_conversion): New function.
8118         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
8119         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
8120         mode.
8121         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
8122         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
8123         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
8124         or ALTIVEC_BUILTIN_VCFSX.
8125
8126 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8127
8128         PR target/30634
8129         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
8130         CONST_DOUBLE and operand 0 is a hard register.
8131         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
8132         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
8133         is a hard floating-point register.
8134
8135 2007-02-10  Richard Henderson  <rth@redhat.com>
8136             Jakub Jelinek  <jakub@redhat.com>
8137             Alexandre Oliva  <aoliva@redhat.com>
8138
8139         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
8140         * builtin-types.def (BT_WORD): Make unsigned.
8141         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
8142         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
8143         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
8144         * c-decl.c (grokdeclarator): Don't error if !have_tls.
8145         * c-parser.c (c_parser_omp_threadprivate): Likewise.
8146         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
8147         emulated tls.
8148         * expr.c (emutls_var_address): New.
8149         (expand_expr_real_1): Expand emulated tls.
8150         (expand_expr_addr_expr_1): Likewise.
8151         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
8152         * output.h (emutls_finish): Declare.
8153         * toplev.c (compile_file): Call it.
8154         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
8155         address before wrapping in CONST.
8156         * varasm.c (emutls_htab, emutls_object_type): New.
8157         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
8158         (get_emutls_object_name, get_emutls_object_type): New.
8159         (get_emutls_init_templ_addr, emutls_decl): New.
8160         (emutls_common_1, emutls_finish): New.
8161         (assemble_variable): When emulating tls, swap decls; generate
8162         constructor for the emutls objects.
8163         (do_assemble_alias): When emulating tls, swap decl and target name.
8164         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
8165         for emulated tls.
8166         * varpool.c (decide_is_variable_needed): Look at force_output.
8167         Recurse for emulated tls.
8168         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
8169         with decide_is_variable_needed.
8170         * emutls.c: New file.
8171         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
8172         tls_object for real tls.
8173
8174 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
8175
8176         PR rtl-optimization/29599
8177         * reload1.c (eliminate_regs_in_insn): Take the destination
8178         mode into account when computing the offset.
8179
8180 2007-02-09  Stuart Hastings  <stuart@apple.com>
8181             Richard Henderson  <rth@redhat.com>
8182
8183         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
8184         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
8185         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
8186         fixuns_truncdfhi2): New.
8187         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
8188         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
8189         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
8190         (floatunssidf2): Allow nonimmediate source.
8191         * config/i386/sse.md (movdi_to_sse): New.
8192         (vec_concatv2di): Drop '*'.
8193         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
8194         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
8195         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
8196         New.
8197         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
8198         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
8199         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
8200         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
8201         (ix86_build_signbit_mask): Fix decl of v, refactor to call
8202         ix86_build_const_vector.
8203         (x86_emit_floatuns): Rewrite.
8204
8205 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8206
8207         * genautomata.c (longest_path_length): Delete unused function.
8208         (struct state): Delete unused longest_path_length.
8209         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
8210         (get_free_state): Delete unused.
8211
8212 2007-02-09  Jan Hubicka  <jh@suse.cz>
8213
8214         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
8215         * doc/invoke.texi (inline-unit-growth): Update default value.
8216
8217         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
8218         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
8219         (rebuild_cgraph_edges): Likewise.
8220         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
8221         (dump_cgraph_node): Dump frequencies.
8222         (cgraph_clone_edge): Add frequency scales.
8223         (cgraph_clone_node): Add freuqnecy.
8224         * cgraph.h (cgraph_edge): Add freuqnecy argument.
8225         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
8226         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
8227         * tree-pass.h (TODO_rebuild_frequencies): New constant.
8228         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
8229         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
8230         (save_inline_function_body): Likewise.
8231         * ipa-inline.c: inluce rtl.h
8232         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
8233         (cgraph_edge_badness): Use frequencies.
8234         (cgraph_decide_recursive_inlining): Update clonning.
8235         (cgraph_decide_inlining_of_small_function): Dump frequency.
8236         * predict.c (estimate_bb_frequencies): Export.
8237         * predict.h (estimate_bb_frequencies): Declare.
8238         * tree-inline.c (copy_bb): Watch overflows.
8239         (expand_call_inline): Update call of cgraph_create_edge.
8240         (optimize_inline_calls): Use TODO flags to update frequnecies.
8241         * passes.h: Include predict.h
8242         (init_optimization_passes): Move profile ahead.
8243         (execute_function_todo): Handle TODO_rebuild_frequencies.
8244
8245 2007-02-09  Roger Sayle  <roger@eyesopen.com>
8246
8247         * config/alpha/alpha.c (emit_insxl): Force the first operand of
8248         the insbl or inswl pattern into a register.
8249
8250 2007-02-09  Roger Sayle  <roger@eyesopen.com>
8251
8252         * config/ia64/ia64.md (bswapdi2): New define_insn.
8253
8254 2007-02-09  Richard Henderson  <rth@redhat.com>
8255
8256         * config/i386/constraints.md (Ym): New constraint.
8257         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
8258         (movdi_1_rex64): Split sse and xmm general register moves from
8259         memory move alternatives.  Use conditional register constraints.
8260         (movsf_1, movdf_integer): Likewise.
8261         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
8262         (movdf_integer_rex64): New.
8263         (pushsf_rex64): Fix output constraints.
8264         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
8265         (sse2_stored): Likewise.
8266         (sse2_storeq_rex64): New.
8267         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
8268         amd and not generic.
8269         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
8270         for optimize_size.  Remove SF/DFmode hack.
8271
8272 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
8273
8274         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
8275         (bit_SSE4a): New.
8276
8277 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
8278             Richard Sandiford  <richard@codesourcery.com>
8279
8280         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
8281         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
8282         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
8283         m68k/t-mlib to tmake_file.
8284         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
8285         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
8286         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
8287         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
8288         variable is not empty, add t-$m68k_arch_family to tmake_file.
8289         Add t-mlibs to tmake_file.
8290         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
8291         * config/m68k/t-cf: New file.
8292         * config/m68k/t-m68k: Likewise.
8293         * config/m68k/t-mlibs: Likewise.
8294         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
8295         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
8296         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
8297         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
8298         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
8299         Delete.
8300         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
8301         (INSTALL_LIBGCC): Delete.
8302         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
8303         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
8304         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
8305         (M68K_MLIB_CPU): Define.
8306         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
8307         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
8308         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
8309
8310 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
8311             Richard Guenther  <rguenther@suse.de>
8312
8313         PR middle-end/23361
8314         * fold-const.c (fold_comparison): Handle obfuscated comparisons
8315         against INT_MIN/INT_MAX.
8316         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
8317         file if a loop is removed.
8318
8319 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
8320
8321         * calls.c (store_one_arg): Pass correct alignment to
8322         emit_push_insn for non-BLKmode values.
8323         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
8324         unaligned stack slot via a suitably aligned slot.
8325
8326 2007-02-08  DJ Delorie  <dj@redhat.com>
8327
8328         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
8329         warnings.
8330         (legal_subregs): Use unsigned char, make const.
8331         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
8332
8333 2007-02-08  Paul Brook  <paul@codesourcery.com>
8334
8335         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
8336         special interworking needed.
8337
8338 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
8339
8340         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
8341         conditional to __SSE2__.
8342         (Entries below should have been added to first ChangeLog
8343         entry for amdfam10 dated 2007-02-05)
8344         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
8345         defined.
8346         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
8347         defined.
8348         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
8349         defined.
8350
8351 2007-02-08  DJ Delorie  <dj@redhat.com>
8352
8353         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
8354         * config/m32c/m32c.c (legal_subregs): New.
8355         (m32c_illegal_subreg_p): New.
8356         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
8357         unsupported subregs of hard regs.
8358
8359 2007-02-08  Jan Hubicka  <jh@suse.cz>
8360
8361         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
8362         the same one; always update histograms.
8363
8364 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
8365
8366         * passes.c (init_optimization_passes): Tidy comment.
8367
8368 2007-02-08  Roger Sayle  <roger@eyesopen.com>
8369
8370         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
8371         strip zero_extend, bswap and rotates from POCOUNT's argument.
8372         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
8373         zero_extend and rotates from PARITY's argument.
8374         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
8375         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
8376         of an integer constant at compile-time.
8377
8378 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
8379
8380         PR 30562
8381         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
8382         Update all users.
8383         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
8384         users.
8385         (init_alias_info):
8386         * tree-ssa-live.c (remove_unused_locals): Do not remove
8387         TREE_ADDRESSABLE variables.
8388         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
8389         * tree-ssa-operands.c (add_virtual_operand): Remove argument
8390         FOR_CLOBBER.  Update all users.
8391         If VAR has an associated alias set, add a virtual operand for
8392         it if no alias is found to conflict with the memory reference.
8393
8394 2007-02-07  Jan Hubicka  <jh@suse.cz>
8395             Robert Kidd <rkidd@crhc.uiuc.edu>
8396
8397         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
8398
8399 2007-02-07  Ian Lance Taylor  <iant@google.com>
8400
8401         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
8402
8403 2007-02-07  Roger Sayle  <roger@eyesopen.com>
8404
8405         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
8406         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
8407         tablejumpdi, movsi_to_cr_one): Remove constraints from
8408         define_expand's match_operands.
8409
8410 2007-02-07  Roger Sayle  <roger@eyesopen.com>
8411
8412         * global.c (compute_regsets): Move declatation of "i" inside of
8413         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
8414
8415 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
8416
8417         PR c++/30703
8418         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
8419         of INDIRECT_REF <RESULT_DECL>.
8420
8421         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
8422
8423 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
8424             Kaz Kojima  <kkojima@gcc.gnu.org>
8425
8426         PR target/29746
8427         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
8428         properly.
8429         (sh_initialize_trampoline): Add parentheses to avoid a warning.
8430
8431 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
8432
8433         * doc/loop.texi: Document possibility not to perform disambiguation
8434         of loops with multiple latches.
8435         * cfgloopmanip.c (alp_enum_p): Removed.
8436         (add_loop): Handle subloops.  Use get_loop_body_with_size.
8437         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
8438         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
8439         the new forwarder block.
8440         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
8441         Handle the case latch is NULL.
8442         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
8443         when marking loop exits.
8444         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
8445         be modified.
8446         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
8447         disambiguate_loops_with_multiple_latches.
8448         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
8449         before fix_loop_structure.
8450         * cfgloop.c: Include pointer-set.h and output.h.
8451         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
8452         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
8453         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
8454         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
8455         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
8456         disambiguate_multiple_latches, get_loop_body_with_size,
8457         disambiguate_loops_with_multiple_latches): New functions.
8458         (flow_loop_dump): Dump multiple latch edges.
8459         (flow_loop_nodes_find): Handle loops with multiple latches.
8460         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
8461         (glb_enum_p): Modified.
8462         (get_loop_body): Use get_loop_body_with_size.
8463         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
8464         (AVOID_CFG_MODIFICATIONS): New constant.
8465         (disambiguate_loops_with_multiple_latches, add_loop,
8466         get_loop_body_with_size): Declare.
8467         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
8468
8469 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
8470
8471         PR inline-asm/28686
8472         * global.c (compute_regsets): New function.
8473         (global_alloc): Refactored ELIMINABLE_REGSET
8474         and NO_GLOBAL_ALLOC_REGS computation out.
8475         (rest_of_handle_global_alloc): Call compute_regsets()
8476         for non-optimizing case.
8477
8478 2007-02-06  Richard Henderson  <rth@redhat.com>
8479
8480         * config/i386/constraints.md (Y2): Rename from Y.
8481         (Yi): New constraint.
8482         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
8483         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
8484         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
8485         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
8486         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
8487         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
8488         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
8489         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
8490         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
8491         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
8492         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
8493         vec_extractv2si_1): Change Y constraints to Y2.
8494         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
8495         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
8496         Change Y constraints to Y2.
8497         (sse2_loadld): Change Y constraints to x.
8498
8499 2007-02-06  Roger Sayle  <roger@eyesopen.com>
8500
8501         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
8502         (parity<mode>2): New define_expand using rs6000_emit_parity.
8503         * config/rs6000/rs6000.c (rs6000_emit_popcount,
8504         rs6000_emit_parity): New functions.
8505         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
8506         rs6000_emit_parity): Prototype here.
8507
8508 2007-02-06  Ian Lance Taylor  <iant@google.com>
8509
8510         * lower-subreg.c (simple_move_operand): Reject CONST.
8511         (resolve_clobber): Call validate_change rather than directly
8512         assigning to XEXP (pat, 0).
8513
8514 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
8515
8516         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
8517         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
8518         (tree-cfg.o): Remove hashtab.h dependency.
8519
8520         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
8521         (struct ivopts_data): Change niters to pointer_map_t.
8522         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
8523         (niter_for_exit): Create pointer_map on demand.  Change for
8524         pointer_map API.
8525         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
8526         (free_loop_data): Destroy data->niters if created and reset field.
8527         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
8528         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
8529
8530         * tree-ssa-reassoc.c: Include pointer-set.h.
8531         (bb_rank): Change to long *.
8532         (operand_rank): Change to pointer_map_t.
8533         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
8534         (insert_operand_rank): Accept long.
8535         (operand_entry_hash, operand_entry_eq): Remove.
8536         (get_rank): Return long.  Adjust for changes above.
8537         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
8538         and operand_rank.
8539         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
8540
8541         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
8542         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
8543         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
8544         is not NULL.
8545         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
8546         directly since it cannot be NULL.
8547         (get_vi_for_tree): Rewrite for pointer_map API.
8548         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
8549         (init_alias_vars): Create vi_for_tree as pointer_map.
8550         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
8551
8552         * tree-cfg.c: Don't include hashtab.h.
8553         (edge_to_cases): Declare as pointer_map.
8554         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
8555         Delete.
8556         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
8557         (start_recording_case_labels): Create edge_to_cases as pointer_map.
8558         (end_recoding_case_labels): Cleanup edge_to_cases manually before
8559         destroying it.
8560         (record_switch_edge): Delete.
8561         (get_cases_for_edge): Adjust for pointer_map API, inline
8562         record_switch_edge (rewritten for new API), remove goto.
8563
8564 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
8565
8566         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
8567         * tree-nested.c: Include pointer-set.h.
8568         (var_map_elt, var_map_eq, var_map_hash): Delete.
8569         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
8570         to pointer_map_t's.
8571         (nesting_info_bitmap_obstack): New.
8572         (lookup_field_for_decl): Adjust for pointer_map API.
8573         (lookup_tramp_for_decl): Adjust for pointer_map API.
8574         (get_nonlocal_debug_decl): Adjust for pointer_map API.
8575         (get_local_debug_decl): Adjust for pointer_map API.
8576         (convert_nl_goto_reference): Adjust for pointer_map API.
8577         (convert_nl_goto_receiver): Adjust for pointer_map API.
8578         (create_nesting_tree): Create outside GGC space.  Create bitmap on
8579         the new obstack.  Create field_map and var_map as pointer_maps.
8580         (free_nesting_tree): Adjust for changes to create_nesting_tree.
8581         (root): Delete.
8582         (lower_nested_functions): Move root here, no need to NULL it.
8583         Initialize and release the obstack.
8584
8585 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
8586
8587         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
8588         Remove prototypes and make them non-static.
8589         (struct tree_int_map): Remove.
8590         * tree.h (struct tree_int_map): Move here, turning TO into an
8591         unsigned int.
8592         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
8593
8594         * tree.h (TREE_COMPLEXITY): Remove.
8595         (struct tree_exp): Remove complexity field.
8596         * tree.c (build1_stat): Don't set it.
8597
8598 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
8599             Victor Kaplansky  <victork@il.ibm.com>
8600
8601         * tree-vectorizer.c (vect_is_simple_use): Support induction.
8602         (vect_is_simple_reduction): Support reduction with induction as
8603         one of the operands.
8604         (vect_is_simple_iv_evolution): Fix formatting.
8605         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
8606         formatting.  Don't mark induction phis for vectorization.
8607         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
8608         * tree-vect-transform.c (get_initial_def_for_induction): New function.
8609         (vect_get_vec_def_for_operand): Support induction.
8610         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
8611         induction case.
8612         (vectorizable_reduction): Support reduction with induction as one of
8613         the operands.
8614         (vectorizable_type_demotion): Use def-type of stmt argument rather
8615         than dummy def-type.
8616
8617         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
8618         flag_tree_scev_cprop.
8619         * common.opt (tree-scev-cprop): New flag.
8620
8621         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
8622         call to vect_get_new_vect_var.
8623
8624 2007-02-06  Ira Rosen  <irar@il.ibm.com>
8625
8626         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
8627         vectype is not NULL.
8628         (vect_pattern_recog_1): Likewise.
8629
8630 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8631
8632         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
8633         (fold_negate_expr): Likewise.
8634
8635 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
8636
8637         PR debug/30189
8638         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
8639         even if cv-qualification is the same.
8640
8641 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
8642
8643         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
8644         __enable_execute_stack on completion.
8645
8646 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8647
8648         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
8649         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
8650         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
8651         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
8652         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
8653         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
8654         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
8655         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
8656
8657 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8658
8659         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
8660         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
8661         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
8662         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
8663         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
8664         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
8665         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
8666         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
8667         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
8668         umuldi3_highpart_rex64, umulsi3_highpart_insn,
8669         umulsi3_highpart_zext, smuldi3_highpart_rex64,
8670         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
8671         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
8672         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
8673         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
8674         sqrtextenddfxf2_i387): Added amdfam10_decode.
8675
8676         * config/i386/athlon.md (athlon_idirect_amdfam10,
8677         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
8678         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
8679         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
8680         athlon_ivector_store_amdfam10): New define_insn_reservation.
8681         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
8682         amdfam10.
8683
8684 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8685
8686         * config/i386/athlon.md (athlon_call_amdfam10,
8687         athlon_pop_amdfam10, athlon_lea_amdfam10): New
8688         define_insn_reservation.
8689         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
8690         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
8691         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
8692
8693 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8694
8695         * config/i386/athlon.md (athlon_sseld_amdfam10,
8696         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
8697         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
8698
8699 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8700
8701         * config/i386/athlon.md (athlon_sseins_amdfam10): New
8702         define_insn_reservation.
8703         * config/i386/i386.md (sseins): Added sseins to define_attr type
8704         and define_attr unit.
8705         * config/i386/sse.md: Set type attribute to sseins for insertq
8706         and insertqi.
8707
8708 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8709
8710         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
8711         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
8712         ssecomi_load_amdfam10, ssecomi_amdfam10,
8713         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
8714         define_insn_reservation.
8715         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
8716
8717 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8718
8719         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
8720         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
8721         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
8722         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
8723         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
8724         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
8725         define_insn_reservation.
8726
8727         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
8728         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
8729         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
8730         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
8731         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
8732
8733 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8734
8735         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
8736         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
8737         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
8738         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
8739         athlon_ssemul_load_k8): Added amdfam10.
8740
8741 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8742
8743         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
8744         (x86_sse_unaligned_move_optimal): New variable.
8745
8746         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
8747         m_AMDFAM10.
8748         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
8749         for unaligned vector SSE double/single precision loads for AMDFAM10.
8750
8751 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8752
8753         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
8754         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
8755         Define TARGET_CPU_DEFAULT_amdfam10.
8756         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
8757         (processor_type): Add PROCESSOR_AMDFAM10.
8758
8759         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
8760         processor_type in config/i386/i386.h.
8761         Enable imul peepholes for TARGET_AMDFAM10.
8762
8763         * config.gcc: Add support for --with-cpu option for amdfam10.
8764
8765         * config/i386/i386.c (amdfam10_cost): New variable.
8766         (m_AMDFAM10): New macro.
8767         (m_ATHLON_K8_AMDFAM10): New macro.
8768         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
8769         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
8770         x86_promote_QImode, x86_integer_DFmode_moves,
8771         x86_partial_reg_dependency, x86_memory_mismatch_stall,
8772         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
8773         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
8774         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
8775         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
8776         Enable/disable for amdfam10.
8777         (override_options): Add amdfam10_cost to processor_target_table.
8778         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
8779         processor_alias_table.
8780         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
8781         (ix86_adjust_cost): Add code for amdfam10.
8782
8783 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
8784
8785         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
8786         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
8787         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
8788         * config/i386/i386.h: Add builtin definition for SSE4A.
8789         * config/i386/i386.md: Add support for ABM instructions
8790         (popcnt and lzcnt).
8791         * config/i386/sse.md: Add support for SSE4A instructions
8792         (movntss, movntsd, extrq, insertq).
8793         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
8794         Add -march=amdfam10 flag.
8795         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
8796         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
8797         and amdfam10.
8798         * doc/extend.texi: Add documentation for SSE4A builtins.
8799
8800 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
8801
8802         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
8803
8804 2007-02-05  Richard Guenther  <rguenther@suse.de>
8805
8806         * tree-vectorizer.h (vectorizable_function): Add argument type
8807         argument, change return type.
8808         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
8809         * tree-vect-transform.c (vectorizable_function): Handle extra
8810         argument, return vectorized function decl.
8811         (build_vectorized_function_call): Remove.
8812         (vectorizable_call): Handle calls with result and argument types
8813         differing.  Handle loop vectorization factor correctly.
8814         * targhooks.c (default_builtin_vectorized_function): Adjust for
8815         extra argument.
8816         * targhooks.h (default_builtin_vectorized_function): Likewise.
8817         * target.h (builtin_vectorized_function): Add argument type
8818         argument.
8819         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
8820         extra argument, allow vectorizing of lrintf.
8821         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
8822         documentation of target hook.
8823
8824 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
8825
8826         PR target/30665
8827         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
8828         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
8829         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
8830
8831 2007-02-05  Roger Sayle  <roger@eyesopen.com>
8832
8833         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
8834         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
8835         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
8836         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
8837         before canonicalizing sincos to cexpi.
8838         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
8839
8840 2007-02-05  Roger Sayle  <roger@eyesopen.com>
8841
8842         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
8843         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
8844         (alpha_init_builtins): Use alpha_add_builtins to process tables.
8845
8846 2007-02-05  Roger Sayle  <roger@eyesopen.com>
8847
8848         * mips-tfile.c (initialize_init_file): Correct endianness test.
8849
8850 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
8851
8852         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
8853         the 'y' constraint.
8854
8855 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
8856
8857         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
8858         saves in a PARALLEL before the register assignments.
8859
8860 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
8861
8862         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
8863         DWARF_FRAME_RETURN_COLUMN to be a general register.
8864         * dwarf2out.c (init_return_column_size): New function, split from...
8865         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
8866         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
8867         to be nongeneral registers.
8868         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
8869         integer registers.
8870         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
8871         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
8872
8873 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
8874
8875         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
8876
8877 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
8878
8879         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
8880         (remove_path): Use can_remove_branch_p and remove_branch instead
8881         of loop_delete_branch_edge.
8882         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
8883         (tree_transform_and_unroll_loop): Remove dead branches immediately.
8884         Update profile using scale_dominated_blocks_in_loop.
8885         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
8886         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
8887         (can_remove_branch_p, remove_branch): Declare.
8888         * tree-cfg.c (tree_can_remove_branch_p): New function.
8889         (tree_cfg_hooks): Add tree_can_remove_branch_p.
8890         * cfgrtl.c (rtl_can_remove_branch_p): New function.
8891         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
8892
8893 2007-02-05  Jan Hubicka  <jh@suse.cz>
8894
8895         PR middle-end/30696
8896         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
8897         nodes in cgraph, don't remove offline copy of the function.
8898
8899 2007-02-04  Jan Hubicka  <jh@suse.cz>
8900
8901         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
8902         vectors might cause maybe_lookup_element_for_expr to be called
8903         on non-sra-candidate.
8904
8905 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
8906
8907         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
8908         config/bfin/bfin.md, config/bfin/predicates.md: Follow
8909         spelling conventions.
8910
8911 2007-02-04  Richard Guenther  <rguenther@suse.de>
8912
8913         PR middle-end/30636
8914         * fold-const.c (try_move_mult_to_index): Make sure to not
8915         overflow one dimension of a multi-dimensional array access.
8916
8917 2007-02-04  Jan Hubicka  <jh@suse.cz>
8918
8919         * passes.c (init_optimization_passes): Reindent.
8920
8921 2007-02-04  Jan Hubicka  <jh@suse.cz>
8922             Eric Botcazou  <ebotcazou@adacore.com>
8923
8924         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
8925         (execute_fixup_cfg): Break out the abnormal goto code.
8926         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
8927         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
8928         (optimize_inline_calls): Call make_nonlocal_label_edges.
8929
8930 2007-02-04  Jan Hubicka  <jh@suse.cz>
8931
8932         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
8933         true when something was changed.
8934         (rename_ssa_copies): When something was changed, do
8935         TODO_remove_unused_locals.
8936         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
8937         add TODO_remove_unused_locals when instruction was removed.
8938
8939 2007-02-04  Jan Hubicka  <jh@suse.cz>
8940
8941         * ipa-inline.c (try_inline): Improve debug output; work on already
8942         inline edges too.
8943         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
8944         call try_inline for already inlined edges too when flattening;
8945         inline also functions that make callee growth but overall unit size
8946         reduce.
8947
8948 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
8949
8950         * config/m32c/bitops.md, config/m32c/jump.md,
8951         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
8952         config/m32r/m32r.h, config/m32r/m32r.md,
8953         config/m32r/predicates.md, config/m68hc11/larith.asm,
8954         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
8955         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
8956         config/mips/mips-protos.h, config/mips/mips.c,
8957         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
8958         config/mn10300/mn10300.h, config/mn10300/predicates.md,
8959         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
8960         spelling conventions.
8961
8962         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
8963         Follow spelling conventions.
8964
8965 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
8966
8967         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
8968         warn about C++0x compatibility.
8969
8970 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
8971
8972         * config/h8300/h8300.c, config/h8300/h8300.h,
8973         config/h8300/h8300.md: Follow spelling conventions.
8974
8975 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
8976
8977         PR middle-end/30667
8978         * combine.c (try_combine): Do not substitute source operand
8979         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
8980
8981 2007-02-03  Jan Hubicka  <jh@suse.cz>
8982
8983         PR gcov-profile/30650
8984         * value-prof.c (stringop_block_profile): Fix handling of size counter;
8985         do not divide by zero for never executed counters.
8986         (tree_find_values_to_profile): Fix counters.
8987         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
8988
8989 2007-02-03  Ian Lance Taylor  <iant@google.com>
8990
8991         * lower-subreg.c (simple_move_operand): New static function,
8992         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
8993         operands.
8994         (simple_move): Call simple_move_operand.
8995         (find_decomposable_subregs): Add special handling of MEMs.
8996         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
8997         meaning of return value.  If we see a hard register, test whether
8998         it can store a word_mode value.  Change all callers.
8999
9000 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9001
9002         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
9003         ftrapv insns and expanders.
9004         (subdi3): Change define_expand operand 1 to arith11_operand, and
9005         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
9006         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
9007         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
9008         respectively.
9009
9010         PR middle-end/30174
9011         * varasm.c (notice_global_symbol): Treat global objects as weak when
9012         flag_shlib is true.
9013
9014 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9015
9016         * emit-rtl.c (dconstpi): Delete.
9017         (dconstsqrt2): New.
9018         (init_emit_once): Delete dconstpi and init dconstsqrt2.
9019         * real.h (dconstpi): Delete.
9020         (dconstsqrt2): New.
9021         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
9022         (fold_builtin_hypot): Likewise.
9023
9024 2007-02-03  Tom Tromey  <tromey@redhat.com>
9025
9026         PR driver/30246
9027         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
9028         -gcoff3, -gxcoff3, -gvms3 implies -dD.
9029
9030 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
9031
9032         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
9033         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
9034         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
9035         config/rs6000/cell.md, config/rs6000/darwin.h,
9036         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
9037         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
9038         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
9039         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
9040         typos.  Follow spelling conventions.
9041         * doc/invoke.texi: Follow spelling conventions.
9042
9043 2007-02-03  Roger Sayle  <roger@eyesopen.com>
9044
9045         * simplify-rtx.c (simplify_relational_operation_1): Implement some
9046         canonicalization transformations that attempt to simplify integer
9047         constant comparisons to become comparisons against zero.
9048
9049 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9050
9051         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
9052         fabs(x)*sqrt(2).
9053         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
9054         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
9055
9056 2007-02-02  Mike Stump  <mrs@apple.com>
9057
9058         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
9059         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
9060         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
9061         generate a branch island.
9062
9063 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
9064
9065         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
9066         (xtensa_legitimate_address_p): New.
9067         (xtensa_legitimize_address): New.
9068         (xtensa_output_addr_const_extra): New.
9069         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
9070         (BASE_REG_P): New.
9071         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
9072         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
9073         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
9074         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
9075         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
9076         (xtensa_legitimize_address): New.
9077         (xtensa_output_addr_const_extra): New.
9078
9079 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
9080
9081         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
9082
9083 2007-02-02  Ian Lance Taylor  <iant@google.com>
9084
9085         * expmed.c (expand_divmod): Add comment.
9086
9087 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
9088
9089         * emit-rtl.c (renumber_insns): Remove.
9090         * flags.h: Remove the extern for flag_renumber_insns.
9091         * rtl.h: Remove the prototype for renumber_insns.
9092         * toplev.c (flag_renumber_insns): Remove.
9093
9094 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
9095
9096         Revert for x86 darwin:
9097         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
9098
9099         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
9100         code before the following patch under TARGET_MACHO.
9101         (ix86_function_value_regno_p): Likewise.
9102
9103 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9104
9105         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
9106         COMPLEX_EXPR.
9107
9108 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
9109
9110         PR target/29682
9111         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
9112         general or fp registers.  Add comments.
9113         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
9114
9115 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
9116
9117         * pointer-set.c (insert_aux): Only return insertion slot.
9118         (pointer_set_insert): Adjust.
9119         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
9120         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
9121         pointer_map_traverse): New.
9122         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
9123         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
9124         pointer_map_contains, pointer_map_traverse): Declare.
9125
9126 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
9127
9128         PR middle-end/30473
9129         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
9130         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
9131
9132 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
9133
9134         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
9135
9136         (struct _dep): New type.
9137         (dep_t): New typedef.
9138         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
9139         (DEP_STATUS): New access macro.  The macro with the same name was
9140         renamed to DEP_LINK_STATUS.
9141         (dep_init): Declare function
9142
9143         (struct _dep_link): New type.
9144         (dep_link_t): New typedef.
9145         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
9146         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
9147         (DEP_LINK_STATUS): New macro.
9148         (debug_dep_links): New debug function.
9149
9150         (struct _deps_list): New type.
9151         (deps_list_t): New typedef.
9152         (DEPS_LIST_FIRST): New access macro.
9153         (FOR_EACH_DEP_LINK): New cycle macro.
9154         (create_deps_list, free_deps_list, delete_deps_list): Declare
9155         functions.
9156         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
9157         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
9158         (copy_deps_list_change_con): Ditto.
9159
9160         (move_dep_link): Declare function.
9161
9162         (struct _dep_node): New type.
9163         (dep_node_t): New typedef.
9164         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
9165
9166         (struct haifa_insn_data.back_deps): New field to hold backward
9167         dependencies of the insn.
9168         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
9169         to deps_list_t.
9170         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
9171         Change its type to deps_list_t.
9172         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
9173         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
9174         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
9175
9176         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
9177
9178         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
9179
9180         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
9181         all callers.
9182         (dep_cost): Declare.
9183
9184         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
9185         (ds_to_dk, dk_to_ds): New functions.
9186
9187         (init_dep_1): New static function.
9188         (init_dep): New function.
9189         (copy_dep): New static function.
9190
9191         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
9192         functions.
9193         (detach_dep_link): New static function.
9194         (move_dep_link): New function.
9195
9196         (dep_links_consistent_p, dump_dep_links): New static functions.
9197         (debug_dep_links): New debugging function.
9198
9199         (deps_obstack, dl_obstack, dn_obstack): New static variables.
9200
9201         (alloc_deps_list, init_deps_list): New static functions.
9202         (create_deps_list): New function.
9203         (clear_deps_list): New static function.
9204         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
9205         (deps_list_consistent_p, dump_deps_list): New static functions.
9206         (debug_deps_list): New function.
9207         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
9208         functions.
9209         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
9210
9211         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
9212         use new scheduler dependencies lists.
9213         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
9214         (sched_analyze): Ditto.  Initialize dependencies lists.
9215         (add_forw_dep, compute_forward_dependences): Update to use new
9216         scheduler dependencies lists.
9217
9218         (init_dependency_caches): Init deps_obstack.
9219         (free_dependency_caches): Free deps_obstack.
9220
9221         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
9222         new scheduler dependencies lists.
9223         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
9224         (add_back_forw_dep, delete_back_forw_dep): Ditto.
9225
9226         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
9227         Update to use new scheduler dependencies lists.
9228         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
9229         (debug_dependencies): Ditto.
9230         (schedule_region): Update comments.
9231
9232         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
9233         scheduler dependencies lists.
9234         (schedule_ebb): Update comments.
9235
9236         * rtl.def (DEPS_LIST): Remove.
9237
9238         * lists.c (unused_deps_list): Remove.
9239         (free_list): Update assertions.
9240
9241         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
9242         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
9243
9244         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
9245         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
9246
9247         * haifa-sched.c (comments): Update.
9248         (insn_cost1): Remove.  Inline the code into insn_cost ().
9249         (insn_cost): Update to use new scheduler dependencies lists.  Move
9250         processing of the dependency cost to dep_cost ().
9251         (dep_cost): New function.  Use it instead of insn_cost () when
9252         evaluating cost of the dependency.  Use compatible interface to
9253         interact with the target.
9254         (priority): Update to use new scheduler dependencies lists.
9255         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
9256         with greater number of insns that depend on the insn.
9257         (schedule_insn): Update to use new scheduler dependencies lists.  Add
9258         code to free backward dependencies lists.  Inline and optimize code
9259         from resolve_dep () - see PR28071.
9260         (ok_for_early_queue_removal): Update to use new scheduler dependencies
9261         lists.  Update call to targetm.sched.is_costly_dependence hook.
9262
9263         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
9264         scheduler dependencies lists.
9265
9266         (resolve_dep): Remove.  Move the logic to schedule_insn ().
9267         (init_h_i_d): Initialize dependencies lists.
9268
9269         (process_insn_depend_be_in_spec): Rename to
9270         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
9271         dependencies lists.
9272         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
9273         Update to use new scheduler dependencies lists.
9274         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
9275
9276         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
9277         new scheduler dependencies lists.
9278         (build_intra_loop_deps): Ditto.
9279
9280         * target.h (struct _dep): Declare to use in
9281         gcc_target.sched.is_costly_dependence.
9282         (struct gcc_target.sched.adjust_cost): Fix typo.
9283         (struct gcc_target.sched.is_costly_dependence): Change signature to use
9284         single dep_t parameter instead of an equivalent triad.
9285         (struct gcc_target.sched.adjust_cost_2): Remove.
9286
9287         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
9288
9289         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
9290
9291         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
9292         documentation.
9293         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
9294
9295         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
9296         (REG_DEP_TRUE): Document.
9297
9298         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
9299         Change signature to correspond to the targetm.sched.adjust_cost hook.
9300         Update use in TARGET_SCHED_ADJUST_COST_2.
9301         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
9302         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
9303         new scheduler dependencies lists.
9304         (ia64_gen_check): Ditto.
9305
9306         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
9307         dependencies lists.
9308
9309         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
9310         signature to correspond to the targetm.sched.is_costly_dependence hook.
9311         (is_costly_group): Update to use new scheduler dependencies lists.
9312
9313         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
9314         instead of INSN_COST () macro.
9315
9316 2007-02-01  Ian Lance Taylor  <iant@google.com>
9317
9318         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
9319
9320 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
9321
9322         * pa.md (tp_load): Correct mfctl instruction syntax.
9323
9324 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
9325
9326         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
9327         altivec_padding_size calculation on AIX.  Improve comment, add
9328         assert to verify that it's right.
9329
9330         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
9331         64-bit.
9332
9333 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
9334
9335         PR inline-asm/28686
9336         * global.c (global_alloc): Add mising initialization of
9337         ELIMINABLE_REGSET.
9338
9339 2007-02-01  Roger Sayle  <roger@eyesopen.com>
9340
9341         * alias.c (init_alias_analysis): Correct whitespace.
9342         * bb-reorder.c (fix_edges_for_rarely_executed_code,
9343         partition_hot_cold_basic_blocks): Likewise.
9344         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
9345         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
9346         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
9347         fold_builtin_snprintf_chk, fold_builtin_printf,
9348         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
9349         do_mpfr_arg3, do_mpfr_sincos): Likewise.
9350         * cfgcleanup.c (cleanup_cfg): Likewise.
9351         * cfgexpand.c (tree_expand_cfg): Likewise.
9352         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
9353         * function.c (get_next_funcdef_no): Likewise.
9354         * gengtype.c (main): Likewise.
9355         * genmodes.c (main): Likewise.
9356         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
9357         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
9358         * ifcvt.c (noce_emit_move_insn): Likewise.
9359         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
9360         Likewise.
9361         * stor-layout.c (get_best_mode): Likewise.
9362         * tree-ssa-loop-niter.c (get_val_for): Likewise.
9363         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
9364         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
9365         perform_var_substitution, solve_graph): Likewise.
9366         * tree-vrp.c (vrp_finalize): Likewise.
9367
9368 2007-02-01  Ian Lance Taylor  <iant@google.com>
9369
9370         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
9371         high part of a paradoxical subreg, return a constant zero.
9372
9373 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
9374
9375         * toplev.c (lang_dependent_init): Call init_set_costs.
9376         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
9377
9378 2007-02-01  Richard Guenther  <rguenther@suse.de>
9379
9380         PR middle-end/30656
9381         * fold-const.c (fold_negate_expr): Allow negating a
9382         constant if overflow does not change.
9383
9384 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9385
9386         * doc/c-tree.texi (Expression trees): Improve markup.
9387         * doc/tm.texi (Register Classes, Addressing Modes)
9388         (Floating Point): Fix spacing after abbreviations.  Fix some
9389         typos.
9390
9391 2007-02-01  Ben Elliston  <bje@au.ibm.com>
9392
9393         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
9394         * doc/contrib.texi: Likewise.
9395         * doc/install.texi: Likewise.
9396
9397 2007-01-31  Richard Henderson  <rth@redhat.com>
9398             Ian Lance Taylor  <iant@google.com>
9399
9400         * lower-subreg.c: New file.
9401         * rtl.def (CONCATN): Define.
9402         * passes.c (init_optimization_passes): Add pass_lower_subreg and
9403         pass_lower_subreg2.
9404         * emit-rtl.c (update_reg_offset): New static function, broken out
9405         of gen_rtx_REG_offset.
9406         (gen_rtx_REG_offset): Call update_reg_offset.
9407         (gen_reg_rtx_offset): New function.
9408         * regclass.c: Revert patch of 2006-03-05, restoring
9409         reg_scan_update.
9410         (clear_reg_info_regno): New function.
9411         * dwarf2out.c (concatn_loc_descriptor): New static function.
9412         (loc_descriptor): Handle CONCATN.
9413         * common.opt (fsplit_wide_types): New option.
9414         * opts.c (decode_options): Set flag_split_wide_types when
9415         optimizing.
9416         * timevar.def (TV_LOWER_SUBREG): Define.
9417         * rtl.h (gen_reg_rtx_offset): Declare.
9418         (reg_scan_update): Declare.
9419         * regs.h (clear_reg_info_regno): Declare.
9420         * tree-pass.h (pass_lower_subreg): Declare.
9421         (pass_lower_subreg2): Declare.
9422         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
9423         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
9424         -fsplit-wide-types.
9425         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
9426         * Makefile.in (OBJS-common): Add lower-subreg.o.
9427         (lower-subreg.o): New target.
9428
9429 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
9430
9431         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
9432
9433 2007-01-31  Anatoly Sokolov <aesok@post.ru>
9434
9435         PR target/19087
9436         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
9437
9438 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9439
9440         PR middle-end/29335
9441         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
9442
9443 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
9444
9445         * cfgloop.h: Include vec-prim.h.
9446         (enum li_flags): Remove LI_ONLY_OLD.
9447         (loop_iterator): Changed.
9448         (fel_next, fel_init): Iterate over loop tree.
9449         (FOR_EACH_LOOP_BREAK): New macro.
9450         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
9451         FOR_EACH_LOOP.
9452         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
9453         * modulo-sched.c (sms_schedule): Ditto.
9454         * tree-vectorizer.c (vectorize_loops): Ditto.
9455         * doc/loop.texi: Update information on loop numbering and behavior of
9456         FOR_EACH_LOOP wrto new loops.
9457         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
9458         add_to_evolution_1): Test nestedness of loops instead of comparing
9459         their numbers.
9460         * tree-chrec.c (chrec_fold_plus_poly_poly,
9461         chrec_fold_multiply_poly_poly, chrec_evaluate,
9462         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
9463         reset_evolution_in_loop): Ditto.
9464         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
9465
9466 2007-01-31  Dirk Mueller  <dmueller@suse.de>
9467
9468         * c-common.c (warn_about_parentheses): Separate warning about
9469         un-parenthized sequence of comparison operators from the one
9470         which is supposed to warn about x <= y <= z.
9471
9472 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
9473
9474         * optabs.h (enum optab_index): Add new OTI_isinf.
9475         (isinf_optab): Define corresponding macro.
9476         * optabs.c (init_optabs): Initialize isinf_optab.
9477         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
9478         patterns.
9479         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
9480         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
9481         using isinf_optab.
9482         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
9483         expand_builtin_interclass_mathfn.
9484         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
9485         * config/i386/i386.md (UNSPEC_FXAM): New constant.
9486         (fxam<mode>2_i387): New insn pattern.
9487         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
9488         built-in functions as x87 inline asm.
9489
9490 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
9491
9492         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
9493
9494 2007-01-30  Eric Christopher  <echristo@apple.com>
9495
9496         * config.gcc: Add geode.
9497
9498 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
9499
9500         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
9501         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
9502         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
9503         value-prof.c: Fix comment typos.
9504
9505 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9506
9507         PR c++/24745
9508         * doc/invoke.texi (Wpointer-arith): Document warning.
9509
9510 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
9511
9512         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
9513         the list of discrepancies from the draft TR.
9514
9515 2007-01-30  Dirk Mueller  <dmueller@suse.de>
9516
9517         PR c++/30601
9518         * doc/invoke.texi (-Wreturn-type): Update description to
9519         match new behavior.
9520
9521 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
9522
9523         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
9524
9525 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
9526
9527         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
9528         to handle optabs that operate on floating point input argument and
9529         output to integer output.
9530         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
9531         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
9532         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
9533         expand_builtin_interclass_mathfn ().
9534         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
9535         (ilogbsi2): Remove.
9536         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
9537         ilogbl built-in functions as x87 intrinsics.
9538
9539 2007-01-30  Richard Guenther  <rguenther@suse.de>
9540
9541         PR middle-end/27657
9542         * dwarf2out.c (reference_to_unused): Query varpool if the
9543         variable was output.
9544
9545 2007-01-30  Richard Guenther  <rguenther@suse.de>
9546
9547         PR middle-end/30313
9548         * passes.c (execute_one_pass): Reset in_gimple_form to not
9549         confuse non-unit-at-a-time mode.
9550
9551 2007-01-29  Roger Sayle  <roger@eyesopen.com>
9552             Richard Guenther  <rguenther@suse.de>
9553
9554         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
9555         avoid undefined behaviour on overflow.  Use force_fit_type_double
9556         to construct the constant with the specified TREE_OVERFLOW.
9557
9558 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
9559
9560         * config/dfp-bit.c: Add parameterized support for fp exceptions.
9561         * config/dfp-bit.h: Ditto.
9562
9563 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9564
9565         * c-decl.c (pop_scope): Replace warnings with call to
9566         warn_for_unused_label.
9567         * c-common.h (warn_for_unused_label): Declare.
9568         * c-common.c (warn_for_unused_label): Define.
9569
9570 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9571
9572         * tree-optimize.c (update_inlined_to_pointers): Delete unused
9573         function.
9574
9575 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
9576
9577         * Makefile.in (USER_H): Remove decfloat.h.
9578         * ginclude/decfloat.h: Delete, moving contents to ...
9579         * ginclude/float.h: Add support for decimal floating point,
9580         guarded by __STDC_WANT_DEC_FP__.
9581
9582 2007-01-29  Mike Stump  <mrs@apple.com>
9583
9584         * doc/gccint.texi (Top): Rename Loop Representation to Loop
9585         Analysis and Representation to resolve case insensitive conflict.
9586         * doc/loop.texi (Loop Analysis and Representation): Likewise.
9587
9588 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
9589
9590         * tree.h (struct tree_memory_tag): Add aliases member.
9591         (MTAG_ALIASES): New macro.
9592         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
9593         (add_may_alias): Remove pointer-set. Update for may_aliases being
9594         a bitmap.
9595         (mark_aliases_call_clobbered): Update for may_aliases being a
9596         bitmap.
9597         (compute_tag_properties): Ditto.
9598         (create_partition_for): Ditto.
9599         (compute_memory_partitions): Ditto.
9600         (dump_may_aliases_for): Ditto.
9601         (is_aliased_with): Ditto.
9602         (add_may_alias_for_new_tag): Ditto.
9603         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
9604         (compute_is_aliased): New function.
9605         (compute_may_aliases): Call compute_is_aliased).
9606         (init_alias_info): Initialize alias_bitmap_obstack.
9607         (union_alias_set_into): New function.
9608         (compute_flow_sensitive_aliasing): Use union_aliases_into.
9609         (have_common_aliases_p): Rewrite to take two bitmaps and use
9610         intersection.
9611         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
9612         Update for bitmaps.
9613         (finalize_ref_all_pointers): Update for add_may_alias changes.
9614         (new_type_alias): Ditto.
9615         * tree-flow-inline.h (may_aliases): Return a bitmap.
9616         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
9617         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
9618         may_aliases being a bitmap.
9619         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
9620         may_aliases now returns a bitmap.
9621         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
9622         being a bitmap.
9623         * tree-ssa-operands.c (add_virtual_operand): Update for
9624         may_aliases being a bitmap.
9625
9626 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
9627
9628         PR tree-optimization/30630
9629         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
9630         variable as changed.
9631
9632 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
9633
9634         PR c++/28266
9635         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
9636         expanded only once even if an error occurs.
9637
9638 2007-01-29  Ben Elliston  <bje@au.ibm.com>
9639
9640         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
9641         (__gcov_average_profiler): Likewise.
9642         (__gcov_ior_profiler): Likewise.
9643         (__gcov_merge_ior): Likewise.
9644
9645 2007-01-28  Jan Hubicka  <jh@suse.cz>
9646
9647         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
9648         * value-prof.c (stringop_block_profile): Likewise.
9649
9650 2007-01-28  Jan Hubicka  <jh@suse.cz>
9651
9652         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
9653         variant handling histograms; add wrapper.
9654         (clear_storage_via_libcall): Export.
9655         (emit_block_move_hints): Break out from ...; add histograms.
9656         (emit_block_move): ... this one.
9657         (clear_storage_hints): Break out from ...; add histograms.
9658         (clear_storage): ... this one.
9659         (set_storage_via_memset): Handle histogram.
9660         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
9661         (clear_storage_hints, clear_storage_via_libcall): Declare.
9662         (set_storage_via_setmem): Update prototype.
9663         * doc/md.texi (movmem, setmem): Document new arguments.
9664
9665         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
9666         new histograms.
9667         (stringop_block_profile): New global function.
9668         (tree_stringops_values_to_profile): Profile block size and alignment.
9669         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
9670         HIST_TYPE_IOR.
9671         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
9672         (stringop_block_profile): Declare.
9673         * builtins.c: Include value-prof.h.
9674         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
9675         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
9676         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
9677         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
9678         * profile.c (instrument_values): Add new counters.
9679         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
9680         calls.
9681         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
9682         (tree_init_edge_profiler): Build new profilers.
9683         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
9684         (pass_tree_profile): Add dump.
9685         (tree_profile_hooks): Update.
9686         * Makefile.in (LIBGCOV): Add new constants.
9687         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
9688         __gcov_ior_profiler): New.
9689         * i386.md (movmem/setmem expanders): Add new optional arguments.
9690
9691 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
9692
9693         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
9694
9695 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
9696
9697         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
9698         (tree_unswitch_single_loop): Pass eni_size_weights to
9699         tree_num_loop_insns.
9700         * tree-ssa-loop-manip.c: Include tree-inline.h.
9701         (can_unroll_loop_p): Pass eni_size_weights to
9702         tree_num_loop_insns.
9703         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
9704         Pass eni_size_weights to estimate_num_insns.
9705         * tree.h (init_inline_once): Export.
9706         * toplev.c (backend_init): Call init_inline_once.
9707         * cgraphunit.c (cgraph_process_new_functions,
9708         cgraph_analyze_function): Pass eni_inlining_weights to
9709         estimate_num_insns.
9710         * ipa-inline.c (compute_inline_parameters): Ditto.
9711         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
9712         to estimate_num_insns.
9713         (try_unroll_loop_completely): Pass eni_size_weights to
9714         tree_num_loop_insns.
9715         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
9716         ot estimate_num_insns.
9717         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
9718         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
9719         * tree-inline.c (eni_inlining_weights, eni_size_weights,
9720         eni_time_weights): New variables.
9721         (init_inline_once): Initialize them.
9722         (struct eni_data): Mew.
9723         (estimate_num_insns_1, estimate_num_insns): Use weights.
9724         * tree-inline.h (struct eni_weights_d): New.
9725         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
9726         (estimate_num_insns): Declaration changed.
9727         * cfgloop.h (tree_num_loop_insns): Declaration changed.
9728         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
9729         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
9730
9731 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
9732
9733         * tree-data-ref.c (conflict_fn): Assert that the number of affine
9734         relations in the conflict function is valid.
9735
9736 2007-01-27  Ian Lance Taylor  <iant@google.com>
9737
9738         * common.opt: Add fstrict-overflow.
9739         * opts.c (decode_options): Set flag_strict_overflow if -O2.
9740         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
9741         (TYPE_OVERFLOW_UNDEFINED): Define.
9742         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
9743         Replace all uses.
9744         * tree.h (TYPE_TRAP_SIGNED): Don't define.
9745         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
9746         (fold_negate_expr): Likewise.
9747         (make_range): Likewise.
9748         (extract_muldiv_1): Likewise.
9749         (maybe_canonicalize_comparison): Likewise.
9750         (fold_comparison): Likewise.
9751         (fold_binary): Likewise.
9752         (tree_expr_nonnegative_p): Likewise.
9753         (tree_expr_nonzero_p): Likewise.
9754         * tree-vrp.c (compare_values): Likewise.
9755         (extract_range_from_binary_expr): Likewise.
9756         (extract_range_from_unary_expr): Likewise.
9757         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
9758         Likewise.
9759         (nowrap_type_p): Likewise.
9760         * tree-scalar-evolution.c (simple_iv): Likewise.
9761         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
9762         (build_range_check): Likewise.
9763         (extract_muldiv_1): Likewise.
9764         (fold_comparison): Likewise.
9765         * tree-vrp.c (vrp_int_const_binop): Likewise.
9766         (extract_range_from_unary_expr): Likewise.
9767         * convert.c (convert_to_integer): Likewise.
9768         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
9769         (fold_comparison): Likewise.
9770         (fold_binary): Likewise.
9771         * optabs.c (optab_for_tree_code): Likewise.
9772         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
9773         * simplify-rtx.c (simplify_const_relational_operation): Check
9774         flag_strict_overflow and flag_trapv.
9775         (simplify_const_relational_operation): Likewise.
9776         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
9777         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
9778         -fstrict-overflow.
9779
9780 2007-01-27  Roger Sayle  <roger@eyesopen.com>
9781
9782         * tree.c (tree_fold_gcd): Delete.
9783         * tree.h (tree_fold_gcd): Remove prototype.
9784         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
9785         test whether one constant integer is a multiple of another.  Instead
9786         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
9787         * fold-const.c (multiple_of_p):  We've determined both TOP and
9788         BOTTOM are integer constants so we can call int_const_binop directly
9789         instead of the more generic const_binop.
9790
9791 2007-01-27  Roger Sayle  <roger@eyesopen.com>
9792
9793         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
9794         1*X check that the constant hasn't overflowed, to preserve the
9795         TREE_OVERFLOW bit.
9796         (round_up): Provide an efficient implementation when rouding-up an
9797         INTEGER_CST to a power-of-two.
9798
9799 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9800
9801         * doc/sourcebuild.texi: Add comma for clarity.
9802         * doc/extend.texi: Fix some typos.
9803         * doc/passes.texi: Likewise.
9804         * doc/cppinternals.texi: Likewise.
9805         * doc/c-tree.texi: Likewise.
9806         * doc/tree-ssa.texi: Likewise.
9807         * doc/install.texi: Likewise.
9808
9809 2007-01-27  Jan Hubicka  <jh@suse.cz>
9810
9811         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
9812         (pass_sra): Do not require alias information.
9813         * passes.c (init_optimization_passes): Add SRA
9814
9815 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
9816
9817         * tracer.c (rest_of_handle_tracer): We already cleaned
9818         up the CFG in tracer() so don't do it here again.
9819         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
9820         cleanup_cfg here, either.  And don't call renumber_insns.
9821
9822         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
9823         and BB_HEAD are in the insn stream here.  Instead make sure
9824         that BB_INSN is valid on all insns.  Also, do check here that
9825         there are no pending branch predictions...
9826         (rtl_verify_flow_info): ...instead of doing it here.  Checks
9827         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
9828         here.
9829
9830 2007-01-26  Roger Sayle  <roger@eyesopen.com>
9831
9832         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
9833         function to simplify/factorize operand order canonicalization.
9834         (ix86_fixup_binary_operands): Reorganize using the above function.
9835         (ix86_binary_operator_ok): Likewise.
9836
9837 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
9838
9839         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
9840         file scope from optimize_attrs.
9841         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
9842         up search.
9843         (optimize_attrs): Clear insn_code_values after freeing it.
9844
9845 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
9846
9847         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
9848         a parts.base assignment.
9849
9850 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
9851
9852         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
9853         (compute_subscript_distance, initialize_data_dependence_relation,
9854         finalize_ddr_dependent, analyze_ziv_subscript,
9855         analyze_siv_subscript_cst_affine,
9856         compute_overlap_steps_for_affine_univar,
9857         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
9858         analyze_siv_subscript, analyze_miv_subscript,
9859         analyze_overlapping_iterations, subscript_dependence_tester_1,
9860         compute_self_dependence, free_dependence_relation): Work
9861         with affine_fn instead of chrecs.
9862         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
9863         common_affine_function, affine_function_base,
9864         affine_function_constant_p, affine_fn_op, affine_fn_plus,
9865         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
9866         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
9867         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
9868         (all_chrecs_equal_p): Removed.
9869         * tree-data-ref.h (affine_fn, conflict_function): New types.
9870         (struct subscript): Change type of conflicting_iterations_in_a
9871         and conflicting_iterations_in_b.
9872
9873 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
9874
9875         PR other/30182
9876         * config/pa/pa.h (TARGET_HPUX_11): New.
9877         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
9878         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
9879
9880 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
9881         Richard Guenther  <rguenther@suse.de>
9882
9883         * tree-ssa-structalias.c (solve_graph): Handle case
9884         we merged the variable to another.
9885
9886 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9887
9888         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
9889         functions.
9890
9891         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
9892         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
9893
9894 2007-01-25  DJ Delorie  <dj@redhat.com>
9895
9896         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
9897         allow changes to modes which don't fit in those registers.
9898
9899         * reload1.c (choose_reload_regs): Check for invalid subregs before
9900         computing their locations, not after.
9901
9902 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
9903
9904         PR 25127
9905         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
9906         save Altivec registers in an eh_return function.
9907         (compute_vrsave_mask): Likewise.
9908         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
9909         for saving Altivec registers.
9910         (rs6000_emit_prologue): Don't allocate stack twice in
9911         eh_return function.  Correct expected value of altivec_save_offset
9912         when using save_world.  Describe save of R0 to stack when using
9913         save_world.  Describe stack pointer adjustment when using
9914         save_world.  Remove duplicated eh_return parameter register saving.
9915         Update sp_offset variable after save_world.
9916         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
9917         darwin-world.asm.
9918         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
9919         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
9920         implies Altivec.
9921
9922 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
9923
9924         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
9925
9926 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
9927
9928         PR other/30182
9929         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
9930         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
9931
9932 2007-01-25  Richard Guenther  <rguenther@suse.de>
9933
9934         * doc/invoke.texi (-Wcoverage-mismatch): Document.
9935         * common.opt (-Wcoverage-mismatch): New warning option.
9936         * coverage.c (get_coverage_counts): Ignore coverage mismatch
9937         if -Wcoverage-mismatch is given.
9938
9939 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
9940
9941         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
9942         (ipcp_driver): Change to static definition.
9943         Add dumping of the ifunctions.
9944         (constant_val_insert): Remove unused parameter. Support for SSA.
9945         (ipcp_propagate_const): Support for SSA.
9946         (ipcp_profile_bb_print): Print only analyzed nodes.
9947         (ipcp_replace_map_create): Remove support for Fortran constant
9948         for now.
9949         * ipa-prop.c (ipa_method_modify_stmt,
9950         ipa_callsite_compute_param): Support for SSA.
9951         * ipa-prop.h (ipcp_driver): Remove declaration.
9952         (IS_VALID_TREE_MAP_INDEX): Add define.
9953
9954 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
9955
9956         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
9957
9958 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9959
9960         PR middle-end/30447
9961         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
9962         constant argument to cabs and do it without checking for
9963         -funsafe-math-optimizations.
9964
9965 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
9966
9967         * c-common.h (RID_FIRST_CXX0X): New.
9968         (RID_LAST_CXX0X): New.
9969         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
9970         by -Wall.
9971         * c.opt (Wc++0x-compat): New.
9972         * doc/invoke.texi (-Wc++0x-compat): Document.
9973
9974 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9975
9976         * builtins.c (fold_builtin_carg): New.
9977         (fold_builtin_1): Use it.
9978
9979 2007-01-24  Jan Hubicka  <jh@suse.cz>
9980
9981         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
9982
9983         * ipa-inline.c (initial_insns, max_insns): Delete.
9984         (compute_max_insns): New function.
9985         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
9986         of insns as base for code growth.
9987         (cgraph_decide_inlining): Make initial_insns local; do not compute
9988         max_insns.
9989         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
9990         * doc/invoke.texi (inline-unit-growth): Update docs.
9991
9992 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
9993
9994         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
9995         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
9996         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
9997         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
9998         for CPUs that have PTA_CX16 set.
9999
10000         PR middle-end/27416
10001         * gimplify.c (omp_check_private): New function.
10002         (gimplify_scan_omp_clauses): Use it for
10003         firstprivate/lastprivate/reduction.
10004
10005         PR middle-end/30494
10006         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
10007         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
10008
10009         PR middle-end/30421
10010         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
10011         If lower_lastprivate_clauses emits some statements, append them
10012         to dlist rather than body_p and to body_p append an initializer.
10013         (lower_omp_for): Adjust caller.
10014
10015 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
10016
10017         * target.h (globalize_decl_name): New.
10018         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
10019         * output.h (default_globalize_decl_name): New.
10020         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
10021         globalize_label.
10022         (globalize_decl): Ditto.
10023         (default_globalize_decl_name): New.
10024         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
10025         (ia64_handle_version_id_attribute): New.
10026         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
10027         (ia64_asm_output_external): Use globalize_decl_name instead
10028         of globalize_label.
10029         * doc/extend.texi (version_id): New pragma.
10030         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
10031
10032 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10033
10034         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
10035         _uleb128_t and _Unwind_SWord with _sleb128_t.
10036         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
10037         uw_frame_state_for, uw_update_context_1): Likewise.
10038         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
10039         * unwind-pe.h (read_uleb128, read_sleb128,
10040         read_encoded_value_with_base): Likewise.
10041         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
10042
10043 2007-01-24  Richard Guenther  <rguenther@suse.de>
10044
10045         * builtins.c (expand_builtin_cexpi): Get the fndecl
10046         for cexp in the correct way.
10047
10048 2007-01-24  Jan Hubicka  <jh@suse.cz>
10049
10050         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
10051
10052 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10053
10054         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
10055         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
10056         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
10057         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
10058         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
10059         __SIZEOF_PTRDIFF_T__.
10060         * doc/cpp.texi: Documentation for the new builtin macros added.
10061
10062 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
10063
10064         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
10065         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
10066         instead of operands[2] to avoid access past the end of array.
10067
10068 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
10069
10070         * reload1.c (emit_reload_insns): Pass the reload register
10071         for a non-spill output reload through forget_old_reloads_1.
10072
10073 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
10074
10075         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
10076         _SOFT_DOUBLE if doubles use software floating-point.
10077         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
10078         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
10079         * config/rs6000/darwin-ldouble.c: Also compile functions for
10080         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
10081         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
10082         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
10083         commented-out long double override.
10084         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
10085         * config/rs6000/eabispe.h: Likewise.
10086         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
10087         long double for non-SPE.
10088         (rs6000_handle_option): Likewise.
10089         (invalid_e500_subreg): Disallow more subregs involding DImode,
10090         DFmode, TImode or TFmode.
10091         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
10092         E500 double.
10093         (legitimate_lo_sum_address_p): Also check for TFmode for E500
10094         double.
10095         (rs6000_legitimize_address): Also handle TFmode for E500 double.
10096         (rs6000_legitimize_reload_address): Also handle TFmode for E500
10097         double.
10098         (rs6000_legitimate_address): Also check for TFmode for E500
10099         double.
10100         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
10101         (spe_build_register_parallel): Handle TFmode and TCmode.
10102         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
10103         double.
10104         (function_arg): Handle TFmode and TCmode for E500 double.
10105         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
10106         in general.
10107         (print_operand): Handle TFmode and TImode for %y.
10108         (rs6000_generate_compare): Handle TFmode comparisons for E500
10109         double.
10110         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
10111         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
10112         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
10113         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
10114         TFmode for E500 double.
10115         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
10116         (floatsidf2): Enable for E500 double.
10117         (movtf_softfloat): Use rs6000_nonimmediate_operand.
10118         (extenddftf2): Change to extenddftf2_fprs.
10119         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
10120         depending on TARGET_E500_DOUBLE.
10121         (extendsftf2): Enable for E500 double.
10122         (trunctfdf2): Enable for E500 double.
10123         (trunctfsf2): Change to trunctfsf2_fprs.
10124         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
10125         depending on TARGET_E500_DOUBLE.
10126         (floatsitf2): Enable for E500 double.
10127         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
10128         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
10129         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
10130         (negtf2): Change to negtf2_internal.
10131         (negtf2): New expander.
10132         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
10133         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
10134         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
10135         (movdi_internal32): Use rs6000_nonimmediate_operand.
10136         (unnamed splitter): Likewise.
10137         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
10138         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
10139         (SPE64TF, DITI): New mode macros.
10140         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
10141         modes.
10142         (frob_tf_ti): New.
10143         (frob_<mode>_di_2): New.
10144         (frob_tf_di_8_2): New.
10145         (frob_di_df): Change to frob_di_<mode>; allow more modes.
10146         (frob_ti_tf): New.
10147         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
10148         more modes.
10149         (frob_ti_<mode>_8_2): New.
10150         (frob_ti_tf_2): New.
10151         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
10152         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
10153         TFmode.
10154         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
10155         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
10156         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
10157         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
10158         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
10159         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
10160         tsttflt_gp): New.
10161
10162 2007-01-23  Ian Lance Taylor  <iant@google.com>
10163
10164         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
10165         insn-*.o first.
10166         (OBJS-archive): Reformat, alphabetize.
10167         (OBJS): Change out_object_file to OBJS-md.
10168
10169 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
10170
10171         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
10172         JUMP_P and CALL_P predicates where applicable.
10173         * config/i386/i386.c: Ditto.
10174         * config/i386/i386.md: Ditto.
10175         * config/i386/mmx.md: Ditto.
10176         * config/i386/predicates.md: Ditto.
10177
10178 2007-01-22  Andreas Schwab  <schwab@suse.de>
10179
10180         * config/m68k/m68k.h: Fix comment.
10181
10182 2007-01-22  Jan Hubicka  <jh@suse.cz>
10183
10184         * passes.c (init_optimization_passes): Do not rerun
10185         pass_early_warn_uninitialized.
10186
10187 2007-01-22  Richard Guenther  <rguenther@suse.de>
10188
10189         PR tree-optimization/30038
10190         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
10191         function.
10192         (execute_cse_sincos_1): Likewise.
10193         (execute_cse_sincos): Likewise.
10194         (gate_cse_sincos): Likewise.
10195         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
10196         the cexpi() canonicalization of sincos().
10197         * tree-pass.h (pass_cse_sincos): Declare.
10198         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
10199
10200 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
10201
10202         PR rtl-optimization/29329
10203         * combine.c (replaced_rhs_insn): Rename to i2mod.
10204         (replaced_rhs_value): Rename to i2mod_new_rhs.
10205         (i2mod_old_rhs): New global variable.
10206         (combine_instructions): Adjust for above change.  Save a copy of
10207         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
10208         note are substituted in the second instruction.
10209         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
10210         ditch the note if it pertains to the second eliminated register
10211         and this register is mentioned in i2mod_old_rhs.
10212
10213         Revert:
10214         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
10215
10216         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
10217         the insn to which the note was originally attached.
10218
10219 2007-01-21  Jan Hubicka  <jh@suse.cz>
10220
10221         * ipa-inline.c (inlining_mode): Comment, move up.
10222         (cgraph_decide_inlining_incrementally): Do not perform inlining
10223         itself; fix handling of flattening of self recursive functions.
10224         (cgraph_find_cycles): Remove.
10225         (cgraph_flatten_node): Remove.
10226         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
10227         (try_inline): New function.
10228         (cgraph_early_inlining): Update call of
10229         cgraph_decide_inlining_incrementally.  Apply inlining here.
10230         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
10231
10232 2007-01-21  Dirk Mueller  <dmueller@suse.de>
10233
10234         PR bootstrap/30511
10235         * tree-vrp.c (check_array_bounds): do not warn
10236         about ADDR_EXPR's of ARRAY_REF's which are immediately
10237         used in binary expressions.
10238
10239 2007-01-21  Ira Rosen  <irar@il.ibm.com>
10240
10241         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
10242         read_write_dep and macros for its access.
10243         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
10244         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
10245         argument, call vect_check_interleaving for every independent pair of
10246         data-refs. Mark loads that access the same memory location as a store
10247         in the loop.
10248         (vect_check_dependences): Remove.
10249         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
10250         call, fix the call to vect_analyze_data_ref_dependence.
10251         (vect_analyze_data_ref_access): For statements that access the same
10252         data-ref, check that they are not stores; for loads, check that there
10253         is no store that access the same location.
10254
10255 2007-01-20  Roger Sayle  <roger@eyesopen.com>
10256             Joseph Myers  <joseph@codesourcery.com>
10257
10258         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
10259         (-fdump-rtl-stack): Likewise.
10260         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
10261         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
10262         (-mpt-fixed): Use @minus{} for minus sign.
10263         (Using Precompiled Headers): Fix under/overfull hbox.
10264
10265 2007-01-20  Jan Hubicka  <jh@suse.cz>
10266
10267         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
10268         place within annotation.
10269
10270 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10271
10272         * pa.c (output_move_double): Change array size of xoperands to 4.
10273
10274 2007-01-20  Jan Hubicka  <jh@suse.cz>
10275
10276         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
10277         as temporary.
10278
10279 2007-01-19  Ian Lance Taylor  <iant@google.com>
10280
10281         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
10282         constant to unsigned HOST_WIDE_INT before negating.
10283
10284 2007-01-19  Ian Lance Taylor  <iant@google.com>
10285
10286         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
10287         to unsigned.
10288         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
10289         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
10290         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
10291         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
10292         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
10293         (realloc_vdef, realloc_vuse): Change second parameter to
10294         unsigned.
10295         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
10296         fields to unsigned.
10297         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
10298         unsigned. Change x and lim locals to unsigned.
10299         (realloc_vdef, realloc_vuse): Change num_elem parameter to
10300         unsigned.
10301         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
10302         (copy_virtual_operands): Change i and n locals to unsigned.
10303
10304 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10305
10306         PR middle-end/29335
10307         * builtins.c (fold_builtin_1): Handle builtin fdim.
10308
10309 2007-01-20  Jan Hubicka  <jh@suse.cz>
10310
10311         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
10312         * tree-ssa-structalias.c (compute_points_to_sets): Do call
10313         init_alias_heapvars.
10314         (init_alias_heapvars): Initialize only when not already initialized.
10315         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
10316
10317 2007-01-19  Roger Sayle  <roger@eyesopen.com>
10318
10319         * common.opt (fsigned-zeros): New command line option.
10320         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
10321         of flag_unsafe_math_optimizations.
10322         * opts.c (set_fast_math_flags): The -ffast-math command line option
10323         implies -fno-signed-zeros.
10324         (fast_math_flags_set_p): Likewise.
10325
10326         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
10327         the documentation of -ffast-math appropriately.  Wrap long lines.
10328
10329 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
10330
10331         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
10332         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
10333
10334 2007-01-19  Tomas Bily  <tbily@suse.cz>
10335
10336         * cgraphunit.c (cgraph_finalize_function): Updating of pid
10337         * tree-profile.c:
10338         (tree_init_ic_make_global_vars): New function
10339         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
10340         (tree_gen_ic_profiler): New function
10341         (tree_gen_ic_func_profiler): New function
10342         (tree_profiling): Added calling of tree_gen_ic_func_profiler
10343         (tree_profile_hooks): Added hook for indirec/virtual calls
10344         * value-prof.c (tree_find_values_to_profile): New case for
10345         indirect calls
10346         (tree_values_to_profile): Call for determining indirect/virtual
10347         counters
10348         (tree_indirect_call_to_profile): New function
10349         (tree_ic_transform): New function
10350         (tree_ic): New function
10351         (find_func_by_pid): New function
10352         (init_pid_map): New function
10353         (tree_value_profile_transformations): Added check for
10354         indirect/virtual call transformation
10355         * value-prof.h (enum hist_type): New counter type for
10356         indirect/virtual calls
10357         (profile_hooks): Added new hook for profiling indirect/virtual
10358         calls
10359         * profile.c (instrument_values): New case for indirect/virtual
10360         call added
10361         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
10362         (GCOV_COUNTER_V_INDIR): New counter type
10363         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
10364         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
10365         call added
10366         * cgraph.c: Definition of cgraph_max_pid
10367         (cgraph_create_node): Default init of pid attribute
10368         * cgraph.h: Declaration of cgraph_max_pid
10369         (struct cgraph_node): Added pid attribute
10370         * libgcov.c (__gcov_indirect_call_profiler): New function
10371         (__gcov_one_value_profiler_body): New function
10372         (__gcov_one_value_profiler): Body was moved to
10373         __gcov_one_value_profiler_body and calls it
10374
10375 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
10376
10377         * doc/gty.texi (Options): Document the mark_hook option to GTY.
10378         * gengtype.c (write_types_data, write_func_for_structure,
10379         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
10380         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
10381         (walk_type, write_func_for_structure): Generate the mark_hook if
10382         needed.
10383
10384 2007-01-19  Jan Hubicka  <jh@suse.cz>
10385
10386         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
10387         'early' argument take inlining mode argument specifying whether to
10388         inline for size/speeed or all functions; add support for flattening;
10389         improve dumpting.
10390         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
10391
10392 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10393
10394         PR c++/17947
10395         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
10396         the name of the declared identifier.
10397
10398 2007-01-19  Dirk Mueller  <dmueller@suse.de>
10399
10400         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
10401         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
10402         duplicate evaluation.
10403
10404 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
10405
10406         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
10407         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
10408         to XFMode, use acosxf2 and truncate result to requested mode.
10409         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
10410         (asin<mode>2): Similarly, with asin expanders.
10411         (*fscalexf4_i387): Rename from *fscalexf4.
10412         (expNcorexf3): New expander.
10413         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
10414         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
10415         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
10416         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
10417         patterns for SSE math.
10418         (exp10<mode>2): Similarly, with exp10 expanders.
10419         (exp2<mode>2): Similarly, with exp2 expanders.
10420         (expm1<mode>2): Similarly, with expm1 expanders.
10421         (ldexp<mode>3): Similarly, with ldexp expanders.
10422         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
10423         Use gen_truncxf<mode>2_i387_noop to truncate result.
10424
10425 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
10426
10427         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
10428         for ColdFire targets.
10429
10430 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
10431             Richard Sandiford  <richard@codesourcery.com>
10432
10433         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
10434         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
10435         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
10436         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
10437         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
10438         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
10439
10440 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
10441
10442         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
10443         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
10444         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
10445         (*adddi_dilshr32_cf): New pattern.
10446         (adddi3, subdi3): Remove first alternatives.
10447
10448 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
10449
10450         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
10451         implemented using move.l, do not use its cc result for floating-point
10452         comparisons.
10453
10454 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
10455
10456         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
10457         from accepting 's' constraints if flag_pic.
10458
10459 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
10460
10461         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
10462         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
10463         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
10464         condition from TARGET_68881 to TARGET_HARD_FLOAT.
10465
10466 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
10467
10468         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
10469         ColdFire alternatives.
10470         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
10471         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
10472         architectures that support ff1 instruction.
10473
10474 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
10475             Julian Brown  <julian@codesourcery.com>
10476
10477         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
10478         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
10479         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
10480         Add commentary.
10481
10482 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
10483
10484         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
10485         and return a bool.
10486         (output_move_const_into_data_reg, output_move_simode_const): Delete.
10487         * config/m68k/m68k.c (const_method, const_int_cost): Take a
10488         HOST_WIDE_INT instead of an rtx.
10489         (m68k_rtx_costs): Update call accordingly.
10490         (output_move_const_into_data_reg): Likewise.  Fix formatting.
10491         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
10492         Return a bool.
10493         (output_move_simode_const): Update calls after above changes.
10494         Rework to use automatic variables and predicates like MEM_P.
10495         * config/m68k/m68k.md (pushexthisi_const): Update call to
10496         valid_mov3q_const.
10497
10498 2007-01-19  Dirk Mueller  <dmueller@suse.de>
10499
10500         * tree-ssa-alias.c (perform_var_substitution): Fix typo
10501         in dump_flags test.
10502
10503 2007-01-19  Richard Guenther  <rguenther@suse.de>
10504
10505         * builtins.c (expand_builtin_cexpi): Fall back to expanding
10506         via cexp in case sincos is not available.
10507
10508 2007-01-19  Richard Guenther  <rguenther@suse.de>
10509
10510         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
10511         * defaults.h (TARGET_HAS_SINCOS): Default to off.
10512         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
10513         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
10514         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
10515         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
10516         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
10517         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
10518
10519 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
10520
10521         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
10522         New insn patterns.
10523         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
10524         (atan2xf3): Directly generate RTL pattern.
10525         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
10526         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
10527         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
10528         disable patterns for SSE math.
10529         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
10530         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
10531         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
10532         disable patterns for SSE math.
10533
10534 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
10535
10536         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
10537
10538 2007-01-18  Roger Sayle  <roger@eyesopen.com>
10539
10540         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
10541         VIEW_CONVERT_EXPR to the same type as it's operand.
10542
10543 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
10544
10545         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
10546         configured for long double 128.
10547
10548 2007-01-18  Mike Stump  <mrs@apple.com>
10549
10550         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
10551         error.
10552
10553 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
10554
10555         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
10556         type correct.
10557
10558 2007-01-18  Jan Hubicka  <jh@suse.cz>
10559
10560         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
10561         greater than NUM_VOP_FREE_BUCKETS.
10562
10563 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
10564
10565         * tree-ssa-structalias.c: Update comments.
10566         (ptabitmap_obstack): Removed.
10567         (pta_obstack): New.
10568         (oldpta_obstack): Ditto.
10569         (stats): Add a few members.
10570         (struct variable_info): Remove node, complex, address_taken, and
10571         indirect_target members. Add oldsolution member.
10572         (new_var_info): Do not initialize removed members.
10573         (constraint_expr_type): Remove INCLUDES.
10574         (constraint_graph): Add size, implicit_preds, rep,
10575         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
10576         (FIRST_REF_NODE): New macro.
10577         (LAST_REF_NODE): Ditto.
10578         (FIRST_ADDR_NODE): Ditto.
10579         (find): New function.
10580         (unite): Ditto.
10581         (dump_constraint): Do not handle INCLUDES.
10582         (insert_into_complex): Do not insert duplicate constraints.
10583         (condense_varmap_nodes): Renamed and rewritten into ...
10584         (merge_node_constraints): This. Also fix bug in handling of
10585         offseted copy constraints.
10586         (clear_edges_for_node): No longer need to deal with preds at all,
10587         or removing associated preds/succs.
10588         (merge_graph_nodes): Deal with indirect_cycles.
10589         Don't deal with predecessors.
10590         (add_implicit_graph_edge): New function.
10591         (add_pred_graph_edge): Ditto.
10592         (add_graph_edge): Don't deal with predecessors.
10593         (build_constraint_graph): Removed.
10594         (build_pred_graph): New function.
10595         (build_succ_graph): Ditto.
10596         (struct scc_info): Removed in_component. Added roots, dfs, and
10597         node_mapping. Remove visited_index, unification_queue.
10598         (scc_visit): Deal with union-find we do now.
10599         Deal with cycles with REF nodes.
10600         (collapse_nodes): Renamed and rewritten to ...
10601         (unify_nodes): This.
10602         (process_unification_queue): Removed.
10603         (topo_visit): Cleanup
10604         (do_da_constraint): Use find.
10605         (do_sd_constraint): Ditto.
10606         (do_ds_constraint): Ditto.
10607         (do_complex_constraint): Ditto.
10608         (init_scc_info): Update for removed and added members.
10609         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
10610         (find_indirect_cycles): This.
10611         (equivalence_class): New variable.
10612         (label_visit): New function.
10613         (perform_variable_substitution): Rewritten.
10614         (free_var_substitution_info): New function.
10615         (find_equivalent_node): Ditto.
10616         (move_complex_constraints): Ditto.
10617         (eliminate_indirect_cycles): Ditto.
10618         (solve_graph): Only propagate changed bits.
10619         Use indirect cycle elimination.
10620         Use find.
10621         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
10622         (tree_id_eq): Renamed to ...
10623         (tree_vi_eq): This. Update for member change
10624         (insert_id_for_tree): Renamed and rewritten to ...
10625         (insert_vi_for_tree): This.
10626         (lookup_id_for_tree): Renamed and rewritten to ...
10627         (lookup_vi_for_tree): This.
10628         (get_id_for_tree): Renamed and rewritten to ...
10629         (get_vi_for_tree): Ditto.
10630         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
10631         (process_constraint): Don't handle INCLUDES.
10632         Remove special ADDRESSOF case.
10633         (find_func_aliases): Rewrite to use vi functions instead of id
10634         ones.
10635         (create_function_info_for): Ditto.
10636         (create_variable_info_for): Ditto.
10637         (intra_create_variable_infos): Ditto.
10638         (merge_smts_into): Ditto.
10639         (find_what_p_points_to): Ditto.
10640         (init_base_vars): Ditto.
10641         (init_alias_vars): Ditto.
10642         (remove_preds_and_fake_succs): New function.
10643         (dump_sa_points_to_info): Dump new stats.
10644         (dump_solution_for_var): Use find.
10645         (set_used_smts): Fix formatting.
10646         (compute_points_to_sets): Updated for new functions.
10647         (ipa_pta_execute): Ditto.
10648
10649 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
10650             Richard Sandiford  <richard@codesourcery.com>
10651
10652         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
10653         parallels.
10654         * calls.c (expand_call): If the return value is a PARALLEL,
10655         extract its first member.
10656         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
10657         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
10658         use FUNCTION_EXTRA_EPILOGUE.
10659         (m68k_function_value): Return a PARALLEL if the return value
10660         is of a pointer type.
10661         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
10662         (FUNCTION_EXTRA_EPILOGUE): Remove.
10663         * config/m68k/m68k.md (D0_REG): New constant.
10664
10665 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
10666
10667         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
10668         output a NOP for empty epilogues.
10669
10670 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
10671
10672         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
10673         before function.  Extend register save check to include all
10674         registers, not just integer ones.
10675
10676 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
10677
10678         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
10679         (m68k_use_return_insn): ...this.
10680         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
10681         * config/m68k/m68k.c (use_return_insn): Rename to...
10682         (m68k_use_return_insn): ...this.
10683         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
10684         of USE_RETURN_INSN.
10685
10686 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
10687
10688         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
10689         nearest even, fix denormal rounding overflow.
10690
10691 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
10692
10693         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
10694         f%$smove and f%$move.
10695         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
10696         (extendsfdf2_cf): Use fdmove instead of f%&move.
10697         (truncdfsf2_cf): Use fsmove instead of f%$smove.
10698         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
10699
10700 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
10701
10702         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
10703         GPR<-GPR moves.
10704
10705 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
10706
10707         * real.h (real_format): Add a canonical_nan_lsbs_set field.
10708         (coldfire_single_format): Declare.
10709         (coldfire_double_format): Likewise.
10710         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
10711         of qnan_msb_set to determine the lower bits of a canonical
10712         NaN significand.
10713         (encode_ieee_double): Likewise.
10714         (encode_ieee_quad): Likewise.
10715         (ieee_single_format): Initialize canonical_nan_lsbs_set.
10716         (mips_single_format): Likewise.
10717         (ieee_double_format): Likewise.
10718         (mips_double_format): Likewise.
10719         (ieee_extended_motorola_format): Likewise.
10720         (ieee_extended_intel_96_format): Likewise.
10721         (ieee_extended_intel_128_format): Likewise.
10722         (ieee_extended_intel_96_round_53_format): Likewise.
10723         (ibm_extended_format): Likewise.
10724         (mips_extended_format): Likewise.
10725         (ieee_quad_format): Likewise.
10726         (mips_quad_format): Likewise.
10727         (vax_f_format): Likewise.
10728         (vax_d_format): Likewise.
10729         (vax_g_format): Likewise.
10730         (i370_single_format): Likewise.
10731         (i370_double_format): Likewise.
10732         (decimal_single_format): Likewise.
10733         (decimal_double_format): Likewise.
10734         (decimal_quad_format): Likewise.
10735         (c4x_single_format): Likewise.
10736         (c4x_extended_format): Likewise.
10737         (real_internal_format): Likewise.
10738         (coldfire_single_format): New real_format.
10739         (coldfire_double_format): Likewise.
10740         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
10741         canonical_nan_lsbs_set.
10742         (pdp11_d_format): Likewise.
10743         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
10744         if TARGET_COLDFIRE_CPU.
10745
10746 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
10747
10748         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
10749         (output_call, m68k_legitimize_call_address): Declare.
10750         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
10751         parenthesees.  Add support for a 'W' constraint.
10752         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
10753         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
10754         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
10755         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
10756         variables.
10757         (override_options): Initialize them.  Do not set flag_no_function_cse
10758         for TARGET_ID_SHARED_LIBRARY.
10759         (m68k_output_pic_call): Delete.
10760         (m68k_legitimize_call_address): New function.
10761         (print_operand): Remove the %o prefix.  Handle the %p prefix.
10762         (output_call): New function.
10763         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
10764         target address from the GOT if symbolic jumps are not allowed.
10765         * config/m68k/m68k.md (call, general_operand): Do not set
10766         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
10767         Merge separate flag_pic and !flag_pic define_insns into...
10768         (*call, *call_value): ...these new patterns.  Match the address
10769         rather than the containing MEM and require it to be a call_operand.
10770         Use output_call to generate the asm template.
10771         * config/m68k/predicates.md (const_call_operand): New predicate.
10772         (call_operand): Likewise.
10773
10774 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
10775
10776         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
10777         (STACK_GROWS_DOWNWARD): Define to 1.
10778         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
10779         comments, emphasizing that these values are only defaults.
10780         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
10781         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
10782
10783 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
10784
10785         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
10786
10787 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
10788             Richard Sandiford  <richard@codesourcery.com>
10789
10790         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
10791         (FP_REGNO_P): New macros.
10792         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
10793         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
10794         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
10795         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
10796
10797 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
10798
10799         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
10800         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
10801         to $tmake_file.
10802         * config/m68k/t-floatlib: New file, extracting common code from...
10803         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
10804         * config/m68k/t-uclinux: Here.
10805         * config/m68k/fpgnulib.c: Do not compile extendeed precision
10806         routines on ColdFire targets.
10807
10808 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
10809
10810         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
10811         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
10812         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
10813         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
10814         explicitly set MOTOROLA to 1.
10815         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
10816
10817 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
10818             Nathan Sidwell  <nathan@codesourcery.com>
10819
10820         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
10821         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
10822         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
10823         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
10824         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
10825         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
10826         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
10827         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
10828         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
10829         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
10830         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
10831         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
10832         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
10833         (DBX_REGISTER_NUMBER): Delete.
10834         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
10835         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
10836         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
10837
10838 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
10839
10840         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
10841         * config/flat.h: New file.
10842         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
10843         OBJECT_FORMAT_FLAT.
10844         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
10845         indirect references for -msep-data or -mid-shared-library.
10846         Do not use PC-relative code addresses either.
10847         * config/m68k/m68k.c (override_options): Restrict -fPIC error
10848         to -mpcrel.
10849         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
10850         for shared libraries and crt1.o for executables.  Use crti.o and
10851         crtbegin.o.
10852         (ENDFILE_SPEC): Use crtend.o and crtn.o.
10853         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
10854         Do not add -elf2flt or -shared-lib-id options here.
10855         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
10856         Pass -shared-lib-id if -mid-shared-library, taking the library
10857         identifier from -mshared-library-id if given, otherwise
10858         defaulting to 0.
10859         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
10860         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
10861         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
10862         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
10863         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
10864         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
10865         and crtend.o.
10866         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
10867         jump sequence for ISA A and ISA A+.
10868         (PICJUMP): Likewise.
10869
10870 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
10871
10872         * config.gcc (m68k-*-uclinux*): Base the port on the common
10873         and m68k GNU/Linux files rather than on the generic ELF ones.
10874         * config/m68k/uclinux.h (TARGET_VERSION): Override.
10875         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
10876
10877 2007-01-18  Julian Brown  <julian@codesourcery.com>
10878             Richard Sandiford  <richard@codesourcery.com>
10879
10880         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
10881         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
10882         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
10883         before redefining.
10884         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
10885         80 unconditionally.
10886         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
10887
10888 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
10889
10890         * doc/install.texi: Document m68k-uclinuxoldabi.
10891         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
10892         * config/m68k/uclinux-oldabi.h: New file, copied from
10893         config/m68k/uclinux.h.
10894
10895 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
10896
10897         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
10898         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
10899         (m32r_compute_frame_size): Use unsigned for regno.
10900         (m32r_reload_lr): Use gen_frame_mem.
10901         (pop): New.
10902         (m32r_output_function_epilogue): Don't output the function epilogue
10903         textually here.
10904         (m32r_expand_epilogue): New.
10905         (direct_return): Return false if the function has the interrupt
10906         attribute.
10907         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
10908         * config/m32r/m32r.md (epilogue): New expander.
10909         (return_lr, return_rte): New insns.
10910         (return): Make it expander.
10911         (return_normal): New expander.
10912
10913 2007-01-18  Josh Conner  <jconner@apple.com>
10914
10915         PR target/30485
10916         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
10917         support for UNLE, UNLT, UNGE, and UNGT.
10918
10919 2007-01-18  Jan Hubicka  <jh@suse.cz>
10920
10921         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
10922         * tree-tailcall (add_virtual_phis): Likewise.
10923         (optimize_tail_call): Return TODOs.
10924         (execute_tail_calls): Return TODOs.
10925         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
10926         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
10927         changed.
10928         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
10929         Cleanup cfg using TODO.
10930         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
10931         * passes.c (execute_function_todo): When cleanup did something, remove
10932         unused locals.
10933         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
10934         (make_edges): Don't cleanup_cfg.
10935
10936 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
10937
10938         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
10939         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
10940         operate on the top of stack.
10941         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
10942         register handling of instructions that output to the second
10943         stack slot.
10944         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
10945         (move_for_stack_reg): Special-case check for dead destination
10946         stack slot for constant load of 1.0 inside UNSPEC_TAN.
10947
10948         * config/i386/i386.md (UNSPEC_TAN): New constant.
10949         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
10950         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
10951         to correctly model move of constant 1.0 to top stack slot.
10952         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
10953         (unnamed peephole2 pattern): Remove corresponding peephole2
10954         pattern that optimizes tan insn and loading of constant 1.0.
10955         (tanxf2): Use fptanxf4_i387.
10956         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
10957         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
10958         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
10959         disable patterns for SSE math.
10960         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
10961         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
10962
10963 2007-01-18  Dirk Mueller  <dmueller@suse.de>
10964             Richard Guenther <rguenther@suse.de>
10965
10966         PR diagnostic/8268
10967         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
10968         * common.opt (Warray-bounds): Add new warning option.
10969         * c-opts.c (c_common_handle_option): Define -Warray-bounds
10970         if -Wall is given.
10971         * Makefile.in: make tree-vrp.o depend on toplev.h
10972         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
10973         is enabled.
10974         (check_array_refs, check_array_bounds, check_array_ref): New.
10975
10976 2007-01-18  Jan Hubicka  <jh@suse.cz>
10977
10978         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
10979         (execute_ssa_ccp): Return flags conditionally.
10980         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
10981         changed.
10982         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
10983
10984 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
10985
10986         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
10987         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
10988
10989         * Makefile.c (GTFILES): Add cfglayout.h.
10990         * gengtype.c (open_base_files): Likewise.
10991         * cfglayout.c (cfg_layout_function_footer,
10992         cfg_layout_function_header) Reindent to make gengtype happy.
10993         * cfglayout.h (cfg_layout_function_footer,
10994         cfg_layout_function_header): Add GTY(()) marker.
10995
10996         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
10997
10998 2007-01-18  Ben Elliston  <bje@au.ibm.com>
10999
11000         * genautomata.c (write_automata): Include xstrerror output in the
11001         error message if writing the DFA description file fails.
11002
11003 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
11004
11005         * config/mips/mips-protos.h (mips_output_external): Make it
11006         return void.
11007         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
11008         * config/mips/mips.c (irix_output_external_libcall): Likewise.
11009         (extern_list): Likewise.
11010         (extern_head): Likewise.
11011         (TARGET_ASM_FILE_END): Likewise.
11012         (mips_file_end): Likewise.
11013         (mips_output_external): Rewritten.
11014
11015 2007-01-18  Ben Elliston  <bje@au.ibm.com>
11016
11017         * genpreds.c (write_insn_preds_c): Only write out the function
11018         body for regclass_for_constraint if we have register constraints.
11019
11020 2007-01-17  Tom Tromey  <tromey@redhat.com>
11021
11022         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
11023         * doc/install.texi (Testing): Use sourceware.org.
11024         (Binaries): Likewise.
11025         (Specific): Likewise.
11026         * doc/contrib.texi (Contributors): Use sourceware.org.
11027
11028 2007-01-17  Anatoly Sokolov <aesok@post.ru>
11029
11030         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
11031         (AVR_ENHANCED): Rename to ...
11032         (AVR_HAVE_MUL): ... new.
11033         (avr_enhanced_p): Rename to ...
11034         (avr_have_mul_p): ... new.
11035         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
11036         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
11037         * config/avr/avr.c (avr_enhanced_p): Rename to ...
11038         (avr_have_mul_p): ... new.
11039         (base_arch_s): Rename 'enhanced' to 'have_mul'.
11040         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
11041         'avr_enhanced_p' and 'enhanced'.
11042         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
11043         AVR_HAVE_MUL instead of AVR_ENHANCED.
11044         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
11045         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
11046         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
11047         instead of AVR_ENHANCED.
11048         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
11049         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
11050         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
11051
11052 2007-01-17  Ian Lance Taylor  <iant@google.com>
11053
11054         * vec.h (VEC_reserve_exact): Define.
11055         (vec_gc_p_reserve_exact): Declare.
11056         (vec_gc_o_reserve_exact): Declare.
11057         (vec_heap_p_reserve_exact): Declare.
11058         (vec_heap_o_reserve_exact): Declare.
11059         (VEC_OP (T,A,reserve_exact)): New static inline function, three
11060         versions.
11061         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
11062         negative parameter.
11063         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
11064         (VEC_OP (T,A,copy)) [all versions]: Likewise.
11065         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
11066         * vec.c (calculate_allocation): Add exact parameter.  Change all
11067         callers.
11068         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
11069         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
11070         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
11071         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
11072         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
11073         (vec_heap_p_reserve_exact): New function.
11074         (vec_heap_o_reserve_exact): New function.
11075
11076 2007-01-17  Jan Hubicka  <jh@suse.cz>
11077
11078         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
11079
11080 2007-01-17  Eric Christopher  <echristo@apple.com>
11081
11082         * config.gcc: Support core2 processor.
11083
11084 2007-01-16  Jan Hubicka  <jh@suse.cz>
11085
11086         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
11087         the names, just unlink the chain so we don't crash on dangling pointers
11088         to dead SSA names.
11089
11090 2007-01-16  Jan Hubicka  <jh@suse.cz>
11091
11092         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
11093         * tree-pass.h: Reorder to make IPA passes appear toegher.
11094         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
11095         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
11096         parameters, do not call early inliner.
11097         * ipa-inline.c: Update comments.  Include tree-flow.h
11098         (cgraph_decide_inlining): Do not compute inlining parameters.
11099         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
11100         be called with function context set up.
11101         (pass_ipa_inline): Remove unreachable functions before pass.
11102         (cgraph_early_inlining): Simplify assuming to be called from the
11103         PM as local pass.
11104         (pass_early_inline): New pass.
11105         (cgraph_gate_ipa_early_inlining): New gate.
11106         (pass_ipa_early_inline): Turn into simple wrapper.
11107         (compute_inline_parameters): New function.
11108         (gate_inline_passes): New gate.
11109         (pass_inline_parameters): New pass.
11110         (apply_inline): Move here from tree-optimize.c
11111         (pass_apply_inline): New pass.
11112         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
11113         transforming.
11114         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
11115         doing them by hand.
11116         (tree_function_versioning): Do not allocate dummy struct function.
11117         * tree-inline.h (optimize_inline_calls): Update prototype.
11118         * tree-optimize.c (execute_fixup_cfg): Export.
11119         (pass_fixup_cfg): Remove
11120         (tree_rest_of_compilation): Do not apply inlines.
11121         * tree-flow.h (execute_fixup_cfg): Declare.
11122         * Makefile.in (gt-passes.c): New.
11123         * passes.c: Include gt-passes.h
11124         (init_optimization_passes): New passes.
11125         (nnodes, order): New static vars.
11126         (do_per_function_toporder): New function.
11127         (execute_one_pass): Dump current pass here.
11128         (execute_ipa_pass_list): Don't dump current pass here.
11129
11130 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
11131
11132         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
11133         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
11134
11135 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
11136
11137         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
11138         (strong_alias): Define.
11139         (__gcc_qmul): Provide non-FMA for soft-float.
11140         (__gcc_qdiv): Same.
11141         (__gcc_qneg): New.
11142         (__gcc_qeq): New.
11143         (__gcc_qle): New.
11144         (__gcc_qge): New.
11145         (__gcc_qunord): New.
11146         (__gcc_stoq): New.
11147         (__gcc_dtoq): New.
11148         (__gcc_qtos): New.
11149         (__gcc_qtod): New.
11150         (__gcc_qtoi): New.
11151         (__gcc_qtou): New.
11152         (__gcc_itoq): New.
11153         (__gcc_utoq): New.
11154         (fmsub): New.
11155         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
11156         soft-float functions.
11157         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
11158         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
11159         about long double soft float.
11160
11161 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
11162             Tehila Meyzels  <tehila@il.ibm.com>
11163
11164         * tree-vectorizer.h (is_pattern_stmt_p): New.
11165         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
11166         formatting (tabs instead of spaces). Cleanup and clarify setting
11167         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
11168         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
11169         (vectorizable_type_demotion): Check that types are integral.
11170         (vectorizable_type_promotion): Likewise.
11171         (vectorizable_store): Fix typo.  Eliminate new-line at end of
11172         comments.
11173
11174 2007-01-16  Jan Hubicka  <jh@suse.cz>
11175
11176         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
11177         cgraph edges too.
11178
11179 2007-01-15  Eric Christopher  <echristo@apple.com>
11180
11181         * ifcvt.c: Include vec.h, vecprim.h.
11182         (check_cond_move_block): New argument regs.
11183         Reorganize. Add registers used to regs.
11184         (cond_move_process_if_block): Use regs set above as
11185         loop bounds.
11186
11187 2007-01-15  Eric Christopher  <echristo@apple.com>
11188
11189         * config/darwin.h: Update copyright.
11190         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
11191         (LINK_COMMAND_SPEC): Add -u.
11192         (LINK_SPEC): Fix umbrella for above.
11193
11194 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
11195
11196         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
11197         glibc CVS.
11198
11199 2007-01-15  Tom Tromey  <tromey@redhat.com>
11200
11201         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
11202         * doc/install.texi (Testing): Don't mention jacks.
11203         (Configuration): Document --enable-java-maintainer-mode.  Move
11204         --with-java-home to libgcj-specific section.  Document
11205         --with-ecj-jar.
11206         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
11207
11208 2007-01-15  Jan Hubicka  <jh@suse.cz>
11209
11210         * tree-ssa-dce.c (DCE_TODOs): New.
11211         (propagate_necessity): Return if something changed.
11212         (eliminate_unnecessary_stmts): Likewise.
11213         (perform_tree_ssa_dce): Return TODO flags when needed.
11214         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
11215
11216 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
11217
11218         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
11219         (fyl2x_extend<mode>xf3_i387): New insn pattern.
11220         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
11221         patterns using X87MODEF12 mode macro.  Extend operand 1
11222         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
11223         (log10<mode>2): Ditto.
11224         (log2<mode>2): Ditto.
11225         (log1p<mode>2): Ditto.
11226         (logb<mode>2): Ditto.
11227         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
11228         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
11229         (*fxtractxf3_i387): Rename from *fxtractxf3.
11230         (fxtract_extend<mode>xf3_i387): New insn pattern.
11231         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
11232         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
11233         and gen_fyl2xxf3_i387().
11234
11235 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
11236
11237         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
11238         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
11239         get_loop_exit_edges.  Changed return type to bool.
11240         * cfgloop.h (fix_loop_placement): Declaration removed.
11241
11242 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
11243
11244         * param.h (MIN_VECT_LOOP_BOUND): New.
11245         * params.def (MIN_VECT_LOOP_BOUND): New.
11246         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
11247         argument - minimum threshold for number of iterations.
11248         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
11249         argument to declaration.
11250         * tree-vect-analyze.c (vect_analyze_operations): Check value of
11251         MIN_VECT_LOOP_BOUND.
11252         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
11253         slpeel_tree_peel_loop_to_edge with additional argument.
11254         (vect_do_peeling_for_alignment): Likewise.
11255         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
11256
11257 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
11258
11259         PR target/30413
11260         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
11261         operands of size 1.
11262
11263 2007-01-14  Jan Hubicka  <jh@suse.cz>
11264
11265         * tree-dfa.c (remove_referenced_var): New function.
11266         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
11267         prune referenced vars list too.
11268         * tree-flow.h (remove_referenced_var): Declare.
11269
11270 2007-01-14  Jan Hubicka  <jh@suse.cz>
11271
11272         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
11273         separately.
11274         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
11275         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
11276         * except.h (verify_eh_throw_table_statements): Kill prototype.
11277         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
11278         into call exrepssions.
11279         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
11280         eh trhow verifier.
11281         * tree-cfg.c: Include pointer-set.h.
11282         (verify_node_sharing): Work on pointer set.
11283         (verify_eh_throw_stmt_node): New.
11284         (verify_stmts): Use pointers sets, verify throw_stmt.
11285
11286 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
11287
11288         * ipa-reference.c (analyze_function): Consider also addresses taken
11289         in phi nodes.
11290
11291 2007-01-12  Roger Sayle  <roger@eyesopen.com>
11292
11293         * c-typeck.c (null_pointer_constant_p): Replace use of
11294         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
11295         (build_c_cast): Likewise.
11296
11297 2007-01-12  Roger Sayle  <roger@eyesopen.com>
11298
11299         * tree.h (force_fit_type_double): Remove unused final argument.
11300         * c-common.c (constant_expression_warning): Replace use of
11301         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
11302         (convert_and_check): Likewise.
11303         (shorten_compare): Update call to force_fit_type_double.
11304         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
11305         * convert.c (convert_to_pointer): Update call to
11306         force_fit_type_double.
11307         * fold-const.c (force_fit_type_double): Remove overflowed_const
11308         argument.
11309         (int_const_binop, fold_convert_const_int_from_int,
11310         fold_convert_const_int_from_real, fold_div_compare,
11311         fold_sign_changed_comparison, fold_unary, fold_negate_const,
11312         fold_abs_const, fold_not_const): Remove the final argument from
11313         calls to force_fit_type_double.
11314
11315 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11316
11317         * configure.ac: Set insn to "nop" for spu-*-* also.
11318         * configure: Regenerate.
11319
11320 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
11321
11322         * builtins.def : Add BUILT_IN_FREE.
11323
11324 2007-01-12  Jan Hubicka  <jh@suse.cz>
11325
11326         PR tree-optimization/30443
11327         * tree-inline.c (tree_function_versioning): Do not optimize when
11328         cloning for inlining.
11329
11330 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
11331
11332         * doc/loop.texi: Document recording of loop exits.
11333         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
11334         (update_single_exits_after_duplication,
11335         update_single_exit_for_duplicated_loop,
11336         update_single_exit_for_duplicated_loops): Removed.
11337         (duplicate_loop_to_header_edge): Do not call
11338         update_single_exits_after_duplication and
11339         update_single_exit_for_duplicated_loops.
11340         (loop_version): Do not update single_exit information.
11341         (fix_loop_structure): Use record_loop_exits instead of
11342         mark_single_exit_loops.
11343         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
11344         the lists of loop exits.
11345         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
11346         split_edge, merge_blocks): Update the lists of loop exits.
11347         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
11348         loop_optimizer_init.
11349         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
11350         of mark_single_exit_loops.
11351         (loop_optimizer_finalize): Call release_recorded_exits.
11352         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
11353         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
11354         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
11355         update single exit information.
11356         * lambda-code.c (perfect_nestify): Ditto.
11357         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
11358         (mark_single_exit_loops): Removed.
11359         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
11360         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
11361         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
11362         functions.
11363         (get_loop_exit_edges, single_exit): Use recorded exit lists.
11364         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
11365         (verify_loop_structure): Verify consistency of the exit lists.
11366         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
11367         (set_single_exit): Removed.
11368         * cfgloop.h (struct loop_exit): New function.
11369         (struct loop): single_exit_ field replaced by exits field.
11370         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
11371         (struct loops): Added exits hash.
11372         (mark_single_exit_loops, set_single_exit): Declaration removed.
11373         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
11374
11375 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
11376
11377         * doc/invoke.texi: Avoid use of @headitem.
11378
11379 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
11380
11381         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
11382
11383 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
11384
11385         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
11386         list of targets.
11387
11388 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
11389             Richard Sandiford  <richard@codesourcery.com>
11390
11391         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
11392         * config/m68k/m68k.opt: Resort options.
11393         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
11394
11395 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
11396             Richard Sandiford  <richard@codesourcery.com>
11397
11398         * doc/invoke.texi: Document the macros that are defined by
11399         m68k's -mtune and -mhard-float options.
11400         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
11401         (m68k_cpp_cpu_family): Likewise.
11402         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
11403         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
11404         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
11405         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
11406         (m68k_cpp_cpu_family): Likewise.
11407
11408 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
11409
11410         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
11411         macros besides mc68000 as tuning macros.  Use a switch statement
11412         to set them and mcpu32.
11413
11414 2007-01-12  Julian Brown  <julian@codesourcery.com>
11415
11416         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
11417         (TARGET_68040_ONLY): Rename to...
11418         (TARGET_68040): ...this.
11419         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
11420         * config/m68k/m68k.md: Likewise.
11421
11422 2007-01-12  Julian Brown  <julian@codesourcery.com>
11423             Nathan Sidwell  <nathan@codesourcery.com>
11424             Richard Sandiford  <richard@codesourcery.com>
11425
11426         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
11427         the -mcpu= argument associated with the --with-cpu setting.
11428         Define M68K_DEFAULT_TUNE to the default -mtune= option,
11429         if different from the one implied by the -mcpu setting.
11430         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
11431         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
11432         * doc/invoke.texi: Mention ColdFire in the introduction to the
11433         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
11434         -mno-div and -mhard-float options.  Make -m68881 a synonym for
11435         -mhard-float.  Document the previously-undocumented -m5206e,
11436         -m528x, -m5307 and -m5407 options.  Tweak the existing option
11437         documentation for consistency.
11438         * doc/install.texi: Mention new --with-cpu arguments.
11439         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
11440         default CPU if neither -mcpu nor -march are specified.
11441         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
11442         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
11443         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
11444         using m68k_tune to decide between families that implement the
11445         same ISA.  Use m68k_tune to set __mcfv4e__.
11446         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
11447         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
11448         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
11449         (FL_ISA_C, FL_ISA_MMU): New macros.
11450         (MASK_COLDFIRE): Delete.
11451         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
11452         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
11453         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
11454         (TARGET_HARD_FLOAT): Do not define here.
11455         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
11456         (TUNE_68000): New macro.
11457         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
11458         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
11459         (TUNE_CFV2): Redefine in terms of m68k_tune.
11460         (uarch_type, target_device, fpu_type): New enums.
11461         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
11462         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
11463         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
11464         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
11465         (FL_FOR_isa_c): New macros.
11466         (m68k_isa): New enum.
11467         (m68k_target_selection): New structure.
11468         (all_devices, all_isas, all_microarchs): New tables.
11469         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
11470         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
11471         (MASK_ALL_CPU_BITS): Delete.
11472         (m68k_find_selection): New function.
11473         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
11474         Map the legacy target options to a combination of the new ones.
11475         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
11476         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
11477         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
11478         settings.
11479         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
11480         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
11481         properties.
11482         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
11483         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
11484         * config/m68k/m68k-devices.def: New file.
11485
11486 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
11487             Nathan Sidwell  <nathan@codesourcery.com>
11488
11489         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
11490         (SUBTARGET_EXTRA_SPECS): New macros.
11491         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
11492         use %(asm_cpu_spec) instead.
11493         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
11494         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
11495         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
11496         (EXTRA_SPECS): Rename to...
11497         (SUBTARGET_EXTRA_SPECS): ...this.
11498
11499 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
11500             Richard Sandiford  <richard@codesourcery.com>
11501             Julian Brown  <julian@codesourcery.com>
11502
11503         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
11504         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
11505         to the configuration's default CPU.
11506         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
11507         Remove default masks.
11508         (m680[012]0-*-*): Set the default with_cpu to the first part of
11509         the target name.
11510         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
11511         (m68k*-*-linux): Extend the --with-cpu handling to...
11512         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
11513         and m68010.  Don't set target_cpu_default2.
11514         * doc/install.texi: Document --with-cpu for m68k.
11515         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
11516         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
11517         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
11518         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
11519         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
11520         (ASM_SPEC): Remove use of %(asm_cpu_default).
11521         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
11522         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
11523         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
11524         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
11525         __HAVE_FPU__ if TARGET_HARD_FLOAT.
11526         (TARGET_DEFAULT): Delete.
11527         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
11528         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
11529         (CPP_CPU_SPEC): Delete.
11530         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
11531         the appropriate string.
11532         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
11533         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
11534         (ASM_SPEC): Don't use %(asm_default_spec).
11535         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
11536         TARGET_DEFAULT and add MASK_68881.
11537         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
11538
11539 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
11540
11541         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
11542         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
11543         MASK_68010 alongside MASK_68020.
11544         * doc/invoke.texi: Document -m68010.
11545         * config/m68k/m68k.opt (m68010): New.
11546         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
11547         if TUNE_68010.
11548         (TUNE_68010): New macro.
11549         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
11550         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
11551         (M68K_CPU_m68332): Add MASK_68010.
11552         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
11553         fallback definition.
11554         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
11555         defines.
11556         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
11557         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
11558         to all entries that use MASK_68020.
11559         (output_move_simode_const, output_move_himode, output_move_qimode)
11560         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
11561         instead of TARGET_68020 to select clr behavior.  Remove comment
11562         about there being no TARGET_68010.
11563         * config/m68k/m68k.md: Likewise throughout.
11564
11565 2007-01-12  Julian Brown  <julian@codesourcery.com>
11566
11567         * config/m68k/m68k.h (TARGET_ISAB): New macro.
11568         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
11569         * config/m68k/m68k.md: Likewise.
11570
11571 2007-01-12  Julian Brown  <julian@codesourcery.com>
11572
11573         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
11574         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
11575
11576 2007-01-12  Julian Brown  <julian@codesourcery.com>
11577
11578         * config/m68k/m68k.h (TUNE_68040_60): New macro.
11579         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
11580         * config/m68k/m68k.md: Likewise.
11581
11582 2007-01-12  Julian Brown  <julian@codesourcery.com>
11583             Richard Sandiford  <richard@codesourcery.com>
11584
11585         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
11586         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
11587         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
11588         TARGET_CPU32.
11589         (TARGET_CPU32): Rename to...
11590         (TUNE_CPU32): ...this.
11591         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
11592         (TUNE_CFV2): New macros.
11593         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
11594         remove conditions that are implied by TARGET_68020.
11595         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
11596         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
11597         (m68k_output_function_epilogue): Likewise.
11598         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
11599         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
11600         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
11601         non-68000 timings.  Refactor multiplication and division costs.
11602         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
11603         TUNE_CPU32 instead of TARGET_CPU32.
11604         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
11605         and TUNE_68060 instead of TARGET_68060.
11606         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
11607         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
11608         TARGET_CPU32.
11609         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
11610         && !TARGET_COLDFIRE" to choose between moveq and clr.
11611         Likewise in the unnamed movsf pattern.
11612         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
11613         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
11614         ashiftrt pattern.
11615
11616 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
11617
11618         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
11619         of tabbing before backslashes.
11620
11621 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11622
11623         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
11624         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
11625         (ASM_OUTPUT_INTERNAL_LABEL): Define.
11626
11627 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
11628
11629         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
11630         find_interesting_uses_cond.
11631         (find_interesting_uses_cond): Use extract_cond_operands.
11632         (rewrite_use_compare): Use extract_cond_operands and
11633         force_gimple_operand_bsi.  Do not call update_stmt.
11634         (determine_use_iv_cost_condition): Use extract_cond_operands.
11635         Return cheaper of using original bound and changing the exit bound.
11636
11637 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
11638
11639         PR tree-optimization/29516
11640         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
11641         most_expensive_mult_to_index, addr_to_parts,
11642         create_mem_ref, maybe_fold_tmr): Make the type of
11643         fields of TARGET_MEM_REF sizetype.
11644         (move_fixed_address_to_symbol, move_pointer_to_base):
11645         New functions.
11646         * tree.def (TARGET_MEM_REF): Add comment on types of
11647         the operands.
11648
11649 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
11650
11651         * c-common.c (vector_types_convertible_p): Treat opaque types as
11652         always convertible if they have the same size, but not otherwise.
11653
11654 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
11655
11656         * ifcvt.c (struct noce_if_info): Add comments to the fields.
11657         Remove the b_unconditional field.
11658         (noce_try_sign_mask): Do not look at b_unconditional.
11659         (noce_process_if_block): Do not use merge_if_blocks.  Update
11660         the CFG here.  Do not set b_unconditional.
11661         (cond_move_process_if_block): Likewise.
11662         (find_cond_trap): Likewise.
11663         (check_cond_move_block): Require simple jump insns at the end
11664         of the basic block.
11665
11666 2007-01-11  Jan Hubicka  <jh@suse.cz>
11667
11668         PR tree-optimization/1046
11669         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
11670         when alias info is not ready.
11671         (pass_tail_recursion): Do not require aliasing.
11672         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
11673         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
11674         * tree-ssa-copy.c (pass_copy_prop): Likewise.
11675         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
11676         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
11677         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
11678         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
11679         before inlining.
11680         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
11681         When aliasing is not build, mark statement as volatile.
11682
11683 2007-01-11  Tom Tromey  <tromey@redhat.com>
11684
11685         PR preprocessor/15185, PR preprocessor/20989:
11686         * doc/cppopts.texi <-MT>: Update description of algorithm for
11687         computing default target.
11688         <-M, -MD>: Reword "basename" text.
11689
11690 2007-01-11  Roger Sayle  <roger@eyesopen.com>
11691
11692         * builtins.c (expand_builtin_pow, expand_builtin_powi,
11693         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
11694         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
11695         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
11696         fold_builtin_bswap, real_constp, fold_builtin_pow,
11697         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
11698         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
11699         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
11700         * convert.c (convert_to_pointer): Likewise.
11701         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
11702         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
11703         const_binop, fold_convert_const_int_from_int,
11704         fold_convert_const_int_from_real,
11705         fold_convert_const_real_from_real, sign_bit_p,
11706         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
11707         fold_sign_changed_comparison, fold_unary, fold_comparison,
11708         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
11709         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
11710         * print-tree.c (print_node_brief, print_node): Likewise.
11711         * stor-layout.c (place_field, layout_type): Likewise.
11712         * tree-chrec.c (keep_cast): Likewise.
11713         * tree.c (build_vector, build_real, build_real_from_int_cst,
11714         build_complex): Likewise.
11715
11716 2007-01-11  Roger Sayle  <roger@eyesopen.com>
11717
11718         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
11719         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
11720
11721 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
11722
11723         * configure.ac (strict1_warn): Rename to strict_warn.
11724         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
11725         cc_set_by_configure, quoted_cc_set_by_configure,
11726         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
11727         all_boot_languages, all_stagestuff): Remove.
11728         (target_list): Remove bootstrap targets.
11729         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
11730         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
11731         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
11732         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
11733         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
11734         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
11735         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
11736         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
11737         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
11738         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
11739         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
11740         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
11741         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
11742         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
11743         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
11744         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
11745         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
11746         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
11747         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
11748         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
11749         (mostlyclean): Adjust.
11750         (clean, distclean): Don't mention bootstrap stuff.
11751         * configure: Regenerate.
11752         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
11753         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
11754         treelang/config-lang.in (stagestuff): Remove.
11755         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
11756         stageprofile, stagefeedback, stagestuff): Remove mention.
11757
11758 2007-01-11  Nick Clifton  <nickc@redhat.com>
11759
11760         * config/mcore/predicates.md (mcore_general_movesrc_operand):
11761         Accept CONSTs.
11762         (mcore_general_movdst_operand): Do not accept CONST_INTs.
11763         (mcore_arith_K_S_operand): Run the test for the S constraint not
11764         the test for the M constraint.
11765         (mcore_addsub_operand): Do not accept integer values that are
11766         larger than 32 bits.
11767         * config/mcore/mcore.md: Remove unused constraints from split.
11768         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
11769         (addsi3): Likewise.
11770         (allocate_stack): Likewise.
11771         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
11772         operands to 32 bits.
11773         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
11774         INTVAL.
11775         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
11776         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
11777         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
11778         mcore_output_bclri, mcore_output_andn, output_inline_const,
11779         mcore_output_move, mcore_output_movedouble): Likewise.
11780         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
11781         (output_inline_const): Likewise.
11782         (output_inline_const): Fix format strings used in sprintf
11783         statements.
11784         * config/mcore/mcore-protos.h: Update prototypes for changed
11785         functions in mcore.c.
11786         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
11787         HOST_WIDE_INT and not int.
11788         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
11789         CONST_OK_FOR_N): Likewise.
11790         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
11791         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
11792         an INTVAL.
11793
11794 2007-01-10  Jan Hubicka  <jh@suse.cz>
11795
11796         * tree-vrp.c (remove_range_assertions): Release defs.
11797         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
11798         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
11799
11800 2007-01-10  Paul Brook  <paul@codesourcery.com>
11801
11802         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
11803         * config/arm/arm.md (mulsi3subsi): New insn.
11804
11805 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
11806
11807         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
11808         (tree_transform_and_unroll_loop): New.
11809         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
11810         Declare.
11811
11812 2007-01-10  Robert Kennedy <jimbob@google.com>
11813
11814         * fold-const.c (fold_comparison): Fold comparisons like (x *
11815         1000 < 0) to (x < 0).
11816
11817 2007-01-10  Ian Lance Taylor  <iant@google.com>
11818
11819         * tree-pretty-print.c (dump_generic_node): Print parentheses when
11820         operands have the same priority.
11821
11822 2007-01-10  Tom Tromey  <tromey@redhat.com>
11823
11824         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
11825         (fold_binary): Likewise.
11826         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
11827         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
11828         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
11829         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
11830         * langhooks.h (struct lang_hooks): Removed field
11831         'can_use_bit_fields_p'.
11832
11833 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
11834
11835         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
11836
11837 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
11838
11839         * function.c (get_last_funcdef_no): New function.
11840         * function.h (get_last_funcdef_no): Declare.
11841         * tree-inline.c (initialize_cfun): Add initialization.
11842         (tree_function_versioning): Cleanup.
11843
11844 2007-01-10  Jan Hubicka  <jh@suse.cz>
11845
11846         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
11847         PHIs.
11848
11849 2007-01-10  Sa Liu  <saliu@de.ibm.com>
11850             Ben Elliston  <bje@au.ibm.com>
11851
11852         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
11853         for SAVE_NONLOCAL and Pmode for any other save level.
11854         * spu-protos.h (spu_restore_stack_block): Declare.
11855         * spu.md (save_stack_block): Remove.
11856         (restore_stack_block): Call spu_restore_stack_block.
11857         * spu.c (spu_restore_stack_block): New function.
11858         (spu_expand_epilogue): Remove old comment.
11859
11860 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
11861
11862         PR tree-optimization/30322
11863         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
11864         (cand_value_at): Return the value as aff_tree.
11865         (may_eliminate_iv): Convert the bound from aff_tree to tree.
11866         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
11867         aff_combination_mult): New functions.
11868         (aff_combination_add): Use aff_combination_add_cst.
11869         (aff_combination_convert): Allow conversions to a wider type.
11870         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
11871         * tree-affine.h (aff_combination_mult): Declare.
11872
11873 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
11874
11875         * doc/tm.texi: Update documentation to reflect reality of exec
11876         and start file search behaviours. Update copyright year.
11877         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
11878         header file directories.
11879
11880 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
11881
11882         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
11883         (*cosxf2): Rename to cosxf2_i387.
11884         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
11885         using X87MODEF12 mode macro. Rename patterns to
11886         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
11887         for SSE math.
11888         (*cosdf2, *cossf2): Ditto.
11889         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
11890         to match extended input operands.
11891         (sincos<mode>3): New expander.
11892         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
11893         insn patterns and corresponding splitters.
11894
11895 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
11896
11897         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
11898         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
11899
11900 2007-01-09  Nicolas Pitre  <nico@cam.org>
11901
11902         PR target/30173
11903         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
11904
11905 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
11906
11907         * target.h (struct gcc_target): New field library_rtti_comdat.
11908         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
11909         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
11910         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
11911         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
11912
11913 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
11914
11915         * doc/invoke.texi (Optimize Options): Correct description of -O0.
11916
11917 2007-01-08  Richard Guenther  <rguenther@suse.de>
11918
11919         * tree.h (force_fit_type_double): Export.
11920         (force_fit_type): Remove.
11921         * fold-const.c (force_fit_type_double): New function.
11922         (force_fit_type): Remove.
11923         (int_const_binop): Use it.
11924         (fold_convert_const_int_from_int): Likewise.
11925         (fold_convert_const_int_from_real): Likewise.
11926         (fold_div_compare): Likewise.
11927         (fold_sign_changed_comparison): Likewise.
11928         (fold_unary): Likewise.
11929         (fold_negate_const): Likewise.
11930         (fold_abs_const): Likewise.
11931         (fold_not_const): Likewise.
11932         * c-common.c (shorten_compare): Use force_fit_type_double.
11933         * convert.c (convert_to_pointer): Likewise.
11934
11935 2007-01-08  Richard Guenther  <rguenther@suse.de>
11936
11937         * tree.h (build_int_cst_wide_type): Export.
11938         * tree.c (build_int_cst_wide_type): New function.
11939         (build_int_cst_wide): Fix comment.
11940         * builtins.c (fold_builtin_object_size): Use build_int_cst
11941         to build -1 or 0 of the correct type.  Use fit_double_type
11942         to check for overflow.
11943         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
11944         to build the mask.
11945         (decode_field_reference): Likewise.
11946         (all_ones_mask_p): Likewise.
11947         (native_interpret_int): Use build_int_cst_wide_type.
11948         (fold_binary): Use build_int_cst_type to build an all-ones
11949         value.
11950         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
11951
11952 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
11953
11954         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
11955
11956 2007-01-09  Ben Elliston  <bje@au.ibm.com>
11957
11958         * genautomata.c (STATS_OPTION): New option.
11959         (stats_flag): New flag.
11960         (gen_automata_option): Handle it.
11961         (initiate_automaton_gen): Ditto.
11962         (write_automata): Output statistics only if stats_flag is
11963         set. Likewise, output time statistics only if time_flag is set.
11964         * doc/md.texi (Processor pipeline description): Document new flag.
11965
11966 2007-01-08  Richard Guenther  <rguenther@suse.de>
11967
11968         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
11969         * tree.c (build_int_cst_type): Likewise.
11970         (size_in_bytes): Don't call force_fit_type on the result.
11971         (int_fits_type_p): Use fit_double_type.
11972         * fold-const.c (fit_double_type): New function.
11973         (force_fit_type): Use it.
11974         * tree.h (fit_double_type): Export.
11975
11976 2007-01-08  Jan Hubicka  <jh@suse.cz>
11977
11978         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
11979         * ipa.c (function_and_variable_visibility): Fix return type.
11980
11981 2007-01-08  Richard Guenther  <rguenther@suse.de>
11982
11983         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
11984         of offset to build the index.
11985         * tree-pretty-print.c (dump_generic_node): Don't build negated
11986         const just for printing.
11987         * c-pretty-print.c (pp_c_integer_constant): Likewise.
11988         * builtins.c (fold_builtin_int_roundingfn): Check if result
11989         fits the type by using force_fit_type and comparing the result.
11990         * predict.c (predict_loops): Use compare_tree_int for comparison.
11991         * tree.c (build_int_cst): Fall back to integer_type_node for
11992         NULL_TREE type.
11993         (build_int_cst_wide): Assert type is non-null.
11994
11995 2007-01-08  Roberto Costa  <roberto.costa@st.com>
11996
11997         * tree-vrp.c (extract_range_from_cond_expr): New.
11998         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
11999         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
12000         as expressions.
12001         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
12002         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
12003         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
12004         used as expressions.
12005         * tree-object-size.c (cond_expr_object_size): New.
12006         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
12007
12008 2007-01-08  Jan Hubicka  <jh@suse.cz>
12009
12010         * tree-ssa-forwprop.c (forward_propagate_into_cond,
12011         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
12012         statement.
12013
12014 2007-01-08  Richard Guenther  <rguenther@suse.de>
12015
12016         PR tree-optimization/23603
12017         * tree-vrp.c (set_value_range_to_truthvalue): New function.
12018         (extract_range_from_binary): Fall back to truthvalue instead of
12019         varying for TRUTH_*_EXPR.
12020         (extract_range_from_comparison): Fall back to truthvalue instead of
12021         varying.
12022         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
12023         if all visited PHI values were constant.
12024
12025 2007-01-08  Jan Hubicka  <jh@suse.cz>
12026
12027         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
12028         (cgraph_analyze_function): break out from ...
12029         (cgraph_finalize_compilation_unit): ... here.
12030         (cgraph_expand_function): Remove forgoten commented out line.
12031         (cgraph_optimize): Analyze functions.
12032
12033 2007-01-08  Jan Hubicka  <jh@suse.cz>
12034
12035         * tree-pas.h (TODO_remove_function): New flag.
12036         (TODO_update*): Renumber.
12037         (pass_ipa_increase_alignment,
12038         pass_ipa_function_and_variable_visibility): New passes.
12039         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
12040         (cgraph_function_and_variable_visibility): Move to ipa.c
12041         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
12042         cgraph_increase_alignment.
12043         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
12044         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
12045         calling tree-inline.
12046         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
12047         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
12048         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
12049         (gate_increase_alignment): New function.
12050         (pass_ipa_increase_alignment): New pass.
12051         * ipa.c: Inline tree-pass.h and timevar.h
12052         (function_and_variable_visibility): Move here from cgraphunit.c
12053         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
12054         * passes.c (init_optimization_passes): Add the two new passes.
12055         (execute_todo): Handle cgraph_remove_functions.
12056
12057 2007-01-08  Nick Clifton  <nickc@redhat.com>
12058
12059         * config/frv/predicates.md (reg_or_0_operand): Accept
12060         CONST_DOUBLEs.
12061
12062 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
12063
12064         * config/bfin/rtems.h, config/bfin/t-rtems: New.
12065         * config.gcc: Add bfin*-rtems*.
12066
12067 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
12068
12069         * c.opt: Add -flax-vector-conversions.
12070         * c-typeck.c (convert_for_assignment): Pass flag to
12071         vector_types_convertible_p to allow emission of note.
12072         (digest_init): Likewise.
12073         * c-opts.c: Handle -flax-vector-conversions.
12074         * c-common.c (flag_lax_vector_conversions): New.
12075         (vector_types_convertible_p): Unless -flax-vector conversions
12076         has been passed, disallow conversions between vectors with
12077         differing numbers of subparts and/or element types.  If such
12078         a conversion is disallowed, possibly emit a note on the first
12079         occasion only to inform the user of -flax-vector-conversions.
12080         The new last argument specifies this.
12081         * c-common.h (flag_lax_vector_conversions): New.
12082         (vector_types_convertible_p): Add extra argument.
12083         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
12084         char_type_node for V*QI type vectors.
12085         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
12086         Update to satisfy new typechecking rules.
12087         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
12088         C and C++ variants.
12089         * doc/invoke.texi (C Dialect Options): Document
12090         -flax-vector-conversions.
12091
12092 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
12093
12094         PR tree-optimization/29877
12095         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
12096         a register variable on the RHS to not be replaceable.
12097
12098 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
12099         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
12100         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
12101         const_simm15, const_pow2, const_npow2): Added.
12102         * config/score/misc.md (insv, extv, extzv, movmemsi,
12103         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
12104         * config/score/score.c (score_address_cost, score_select_cc_mode):
12105         Added.
12106         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
12107         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
12108         Update score_print_operand.
12109         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
12110         Adjust register allocate order and update some macro define.
12111         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
12112         mdx_block_move_straight, mdx_block_move_loop_head,
12113         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
12114         mdx_block_move): Added.
12115         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
12116         mdp_limm): Updated and fix some bug and typo.
12117         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
12118         (movsf, movdf, doloop_end): Added.
12119
12120 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
12121
12122         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
12123         config/arm/thumb2.md: Fix comment typos.
12124         * doc/extend.texi: Fix a typo.
12125
12126 2007-01-07  Eric Christopher  <echristo@apple.com>
12127
12128         * configure.ac: Check for __stack_chk_fail for darwin.
12129         * configure: Regenerate.
12130
12131 2007-01-07  Richard Guenther  <rguenther@suse.de>
12132
12133         * tree-vrp.c (extract_range_from_assert): CSE calls to
12134         compare_values where possible.
12135         (extract_range_from_unary_expr): Likewise.
12136
12137 2007-01-07  Anatoly Sokolov <aesok@post.ru>
12138
12139         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
12140         * config/avr/avr.c (call_insn_operand): Delete function.
12141         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
12142         instead of register number. Use predicates.
12143         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
12144         call_insn_operand): Add.
12145
12146 2007-01-06  Jan Hubicka  <jh@suse.cz>
12147
12148         * tree-pass.h (pass_build_cgraph_edges): Declare.
12149         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
12150         (visited_nodes): Remove.
12151         (cgraph_create_edges): Move to cgraphbuild.c; rename to
12152         build_cgrpah_edges; make visited_nodes local.
12153         (cgraph_process_new_functions): DO not call initialize_inline_failed.
12154         (record_references_in_initializer): Move to cgraphbuild.c
12155         (initialize_inline_failed, rebuild_cgraph_edges,
12156         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
12157         (verify_cgraph_node): Make visited_nodes local.
12158         (cgraph_analyze_function): Do not call cgraph_create_edges and
12159         initialize_inline_failed.
12160         (cgraph_expand_function): Do not call cgraph_lower_function;
12161         assert that function is already lowered.
12162         * Makefile.in (cgraphbuild.o): New.
12163         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
12164         at the end of lowering passes.
12165
12166 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
12167
12168         * ifcvt.c (cond_move_convert_if_block): New function, code
12169         factored out from...
12170         (cond_move_process_if_block): ...here.  Call the new function
12171         on the THEN and ELSE blocks.
12172         (merge_if_block): Do not copy global_live_at_end, merge_blocks
12173         already takes care of this.
12174
12175 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12176
12177         PR c/19978
12178         * tree.h (TREE_OVERFLOW_P): New.
12179         * c-typeck.c (parser_build_unary_op): Warn only if result
12180         overflowed and operands did not.
12181         (parser_build_binary_op): Likewise.
12182         (convert_for_assignment): Remove redundant overflow_warning.
12183         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
12184
12185 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12186
12187         * c-typeck.c (store_init_value): Split over two lines to follow
12188         the GNU coding style.
12189
12190 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
12191
12192         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
12193         __GXX_EXPERIMENTAL_CXX0X__.
12194         * doc/cpp.texi: Same.
12195
12196 2007-01-05  Richard Guenther  <rguenther@suse.de>
12197
12198         PR middle-end/27826
12199         * tree.c (get_narrower): Do not construct COMPONENT_REFs
12200         with mismatched types.  Instead explicitly build a
12201         conversion NOP_EXPR.
12202
12203 2007-01-05  Ian Lance Taylor  <iant@google.com>
12204
12205         * c-common.c (decl_with_nonnull_addr_p): New function.
12206         (c_common_truthvalue_conversion): Call it.
12207         * c-typeck.c (build_binary_op): Likewise.
12208         * c-common.h (decl_with_nonnull_addr_p): Declare.
12209
12210 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
12211
12212         PR c/30360
12213         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
12214         denom against 0.0.
12215
12216 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
12217
12218         * doc/install.texi (Final install): Document the fact that
12219         the GNAT runtime should not be stripped.
12220
12221 2007-01-04  Jan Hubicka  <jh@suse.cz>
12222
12223         * tree-inline.c (fold_marked_statements): Update operand caches
12224         and EH after folding
12225
12226 2007-01-04  Ian Lance Taylor  <iant@google.com>
12227
12228         * c-common.c (check_function_nonnull): Whitespace fix.
12229
12230 2007-01-04  Jan Hubicka  <jh@suse.cz>
12231
12232         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
12233         comitted older version of patch.
12234         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
12235         function, celanup cfg and collect garbage.
12236
12237 2007-01-04  Mike Stump  <mrs@apple.com>
12238
12239         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
12240         (clean): Likewise.
12241
12242 2007-01-04  Eric Christopher  <echristo@apple.com>
12243
12244         * libgcc2.c (__bswapsi2): Use SItype.
12245         (__bswapdi2): Use DItype.
12246         * libgcc2.h: Update for above.
12247
12248 2007-01-04  Paul Brook  <paul@codesourcery.com>
12249
12250         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
12251         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
12252         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
12253         umulsidi3, umulsidi3adddi, smulsi3_highpart,
12254         umulsi3_highpart): Make conditional on !arm_arch6.
12255         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
12256         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
12257         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
12258         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
12259         umulsi3_highpart_v6): New insns.
12260
12261 2007-01-04  Roger Sayle  <roger@eyesopen.com>
12262
12263         * fold-const.c (fold_convert): When casting an expression to void,
12264         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
12265         have a type.  Instead of attempting to build a NOP_EXPR, return
12266         these "special" trees directly.
12267
12268 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
12269
12270         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
12271         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
12272         rs6000_cost->fp not 0 as adjustment for outer NEG.
12273
12274 2007-01-04  Jan Hubicka  <jh@suse.cz>
12275
12276         * cgraph.c (cgraph_release_function_body): New function.
12277         (cgraph_remove_node): Use it.
12278         * cgraph.h (cgraph_release_function_body): Declare.
12279         * cgraphunit.c (cgraph_expand_function): Use it.
12280         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
12281         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
12282         is initialized and while compilation of other function is running.
12283         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
12284         statement CFG annotations from here to ...
12285         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
12286
12287 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
12288
12289         * cfgloop.h (enum li_flags): Make the constants powers of two.
12290
12291 2007-01-04  Jan Hubicka  <jh@suse.cz>
12292
12293         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
12294         set.
12295         (fold_marked_statements): New function.
12296         (optimize_inline_calls, tree_function_versioning): Fold new statements.
12297         * tree-inline.h (copy_body_data): Add statements_to_fold.
12298
12299 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
12300
12301         * config.gcc: Mention libgcc/config.host.
12302         * Makefile.in: Update comments mentioning libgcc.
12303         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
12304         (all.cross, start.encap, rest.encap, rest.cross): Update
12305         dependencies for libgcc move.
12306         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
12307         (clean-target, clean-target-libgcc): Delete.
12308         (srcdirify, GCC_EXTRA_PARTS): New macros.
12309         (libgcc-support, libgcc.mvars): New rules.
12310         (distclean): Remove mention of mklibgcc.
12311         (install): Don't reference INSTALL_LIBGCC.
12312         (install-common): Don't reference EXTRA_PARTS.
12313         (install-libgcc, install-multilib): Delete rules.
12314         * mklibgcc.in: Delete file.
12315         * doc/configfiles.texi: Don't mention mklibgcc.
12316
12317         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
12318         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
12319         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
12320         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
12321         (mklibgcc, ldblspecs): Likewise.
12322
12323         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
12324         (posixpre.def): Use $(T).
12325         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
12326         (SHLIB_SRC, SHLIB_INSTALL): Delete.
12327         (SHLIB_LINK): Make dummy.
12328         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
12329
12330         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
12331
12332         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
12333         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
12334         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
12335         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
12336
12337         * configure.ac (all_outputs): Remove mklibgcc.
12338         * configure: Regenerated.
12339
12340 2007-01-03  Josh Conner  <jconner@apple.com>
12341
12342         PR middle-end/29683
12343         * calls.c (compute_argument_addresses): Set stack and stack_slot
12344         for partial args, too.
12345         (store_one_arg): Use locate.size.constant for the size when
12346         generating a save_area.
12347
12348 2007-01-03  Robert Kennedy <jimbob@google.com>
12349
12350         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
12351         whose definitions are deleted due to basic block merging.
12352
12353 2007-01-03  Paul Brook  <paul@codesourcery.com>
12354
12355         PR target/16634
12356         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
12357         functions.
12358         (use_return_insn): Return 0 for Thumb interrupt functions.
12359         (print_multi_reg): Add rfe argument for IRQ returns.
12360         (arm_output_epilogue): Pop interrupt return address directly into PC.
12361         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
12362
12363 2007-01-03  Paul Brook  <paul@codesourcery.com>
12364
12365         Merge from sourcerygxx-4_1.
12366         * config/arm/thumb2.md: New file.
12367         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
12368         Thumb-2.
12369         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
12370         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
12371         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
12372         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
12373         tables.
12374         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
12375         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
12376         comptibility.
12377         * config/arm/ieee754-sf.S: Ditto.
12378         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
12379         (thumb1_base_register_rtx_p): ... to this.
12380         (thumb_index_register_rtx_p): Rename...
12381         (thumb1_index_register_rtx_p): ... to this.
12382         (thumb_output_function_prologue): Rename...
12383         (thumb1_output_function_prologue): ... to this.
12384         (thumb_legitimate_address_p): Rename...
12385         (thumb1_legitimate_address_p): ... to this.
12386         (thumb_rtx_costs): Rename...
12387         (thumb1_rtx_costs): ... to this.
12388         (thumb_compute_save_reg_mask): Rename...
12389         (thumb1_compute_save_reg_mask): ... to this.
12390         (thumb_final_prescan_insn): Rename...
12391         (thumb1_final_prescan_insn): ... to this.
12392         (thumb_expand_epilogue): Rename...
12393         (thumb1_expand_epilogue): ... to this.
12394         (arm_unwind_emit_stm): Rename...
12395         (arm_unwind_emit_sequence): ... to this.
12396         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
12397         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
12398         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
12399         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
12400         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
12401         thumb2_output_casesi): New functions.
12402         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
12403         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
12404         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
12405         THUMB2_WORK_REGS): Define.
12406         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
12407         arm_condexec_mask, arm_condexec_masklen)): New variables.
12408         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
12409         (arm_override_options): Check new CPU capabilities.
12410         Set new architecture flag variables.
12411         (arm_isr_value): Handle v7m interrupt functions.
12412         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
12413         Thumb-2.
12414         (const_ok_for_arm): Handle Thumb-2 constants.
12415         (arm_gen_constant): Ditto.  Use movw when available.
12416         (arm_function_ok_for_sibcall): Return false for v7m interrupt
12417         functions.
12418         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
12419         (thumb_find_work_register, arm_load_pic_register,
12420         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
12421         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
12422         print_multi_reg, output_mov_long_double_fpa_from_arm,
12423         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
12424         output_mov_double_fpa_from_arm, output_move_double,
12425         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
12426         output_return_instruction, arm_output_function_prologue,
12427         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
12428         arm_output_mi_thunk, thumb_set_return_address): Ditto.
12429         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
12430         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
12431         (arithmetic_instr, shift_op): Use arm_shift_nmem.
12432         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
12433         '!' and 'L'.
12434         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
12435         (thumb_expand_prologue): Use thumb_set_frame_pointer.
12436         (arm_file_start): Output directive for unified syntax.
12437         (arm_unwind_emit_set): Handle stack alignment instruction.
12438         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
12439         Add v6t2, v7, v7a, v7r and v7m.
12440         (RETLDM): Add Thumb-2 code.
12441         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
12442         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
12443         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
12444         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
12445         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
12446         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
12447         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
12448         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
12449         ADJUST_INSN_LENGTH): Define.
12450         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
12451         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
12452         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
12453         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
12454         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
12455         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
12456         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
12457         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
12458         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
12459         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
12460         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
12461         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
12462         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
12463         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
12464         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
12465         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
12466         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
12467         cortex-m3.
12468         * config/arm/arm-tune.md: Regenerate.
12469         * config/arm/arm-protos.h: Update prototypes.
12470         * config/arm/vfp.md: Enable patterns for Thumb-2.
12471         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
12472         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
12473         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
12474         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
12475         * config/arm/libunwind.S: Add Thumb-2 code.
12476         * config/arm/constraints.md: Update include Thumb-2.
12477         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
12478         * config/arm/ieee754-df.S: Ditto.
12479         * config/arm/bpabi.S: Ditto.
12480         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
12481         * config/arm/predicates.md (low_register_operand,
12482         low_reg_or_int_operand, thumb_16bit_operator): New.
12483         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
12484         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
12485         * config/arm/t-arm-elf: Add armv7 multilib.
12486         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
12487         Include thumb2.md.
12488         (UNSPEC_STACK_ALIGN, ce_count): New.
12489         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
12490         arm_zero_extendsidi2, arm_zero_extendqidi2): New
12491         insns/expanders.
12492         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
12493         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
12494         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
12495         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
12496         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
12497         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
12498         insns.
12499         * doc/extend.texi: Document ARMv7-M interrupt functions.
12500         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
12501
12502 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
12503
12504         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
12505         (struct _Unwind_Context): Rename args_size to flags, remove
12506         signal_frame field, add a new args_size field and version field.
12507         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
12508         _Unwind_IsExtendedContext): New inline functions.
12509         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
12510         Assume by_value array is only present if _Unwind_IsExtendedContext.
12511         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
12512         _Unwind_IsSignalFrame.
12513         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
12514         (uw_update_context_1): Use _Unwind_SetSignalFrame.
12515         (uw_init_context_1): Initialize context->flags to
12516         EXTENDED_CONTEXT_BIT.
12517         * config/rs6000/linux-unwind.h (frob_update_context): Use
12518         _Unwind_SetSignalFrame.
12519
12520 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12521
12522         PR middle-end/30353
12523         * gimplify.c (gimplify_modify_expr_complex_part): Move below
12524         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
12525         the value.
12526
12527 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
12528
12529         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
12530         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
12531         RET, AT_SP): Remove.
12532         * config/i386/i386.md (*sse_prologue_save_insn): Use return
12533         instead of RET.
12534
12535         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
12536         * cfgbuild.c (find_basic_blocks): Likewise.
12537         * cfgrtl.c (rtl_create_basic_block): Likewise.
12538         * function.c (temp_slots_at_level): Likewise.
12539         * reg-stack.c (stack_regs_mentioned): Likewise.
12540         * regclass.c (allocate_reg_info): Likewise.
12541         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
12542         set_bb_for_stmt, move_block_to_fn): Likewise.
12543         * tree-complex.c (tree_lower_complex): Likewise.
12544         * vec.h (VEC_safe_grow_cleared): New.
12545
12546         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
12547
12548 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
12549
12550         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
12551         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
12552         to loop_version.
12553         * cfgloopmanip.c (scale_loop_frequencies): Export.
12554         (loopify): Scale the frequencies by prescribed coefficients.
12555         (set_zero_probability): New function.
12556         (duplicate_loop_to_header_edge): Improve updating of frequencies.
12557         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
12558         and frequencies according to arguments.
12559         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
12560         correctly.
12561         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
12562         * modulo-sched.c (sms_schedule): Set probabilities for entering
12563         versioned loop correctly.
12564         * tree-vect-transform.c (vect_transform_loop): Ditto.
12565         * cfgloop.h (loopify, loop_version): Declaration changed.
12566         (scale_loop_frequencies): Declared.
12567
12568 2007-01-02  Jan Hubicka  <jh@suse.cz>
12569
12570         * cgraph.c: Include tree-flow.h
12571         (cgraph_add_new-function): Handle IPA_SSA mode; execute
12572         early_local_passes.
12573         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
12574         * tree-pass.h (pass_all_early_optimizations): Declare.
12575         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
12576         early_local_passes.
12577         (cgraph_analyze_function): Do early_local_passes.
12578         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
12579         Do not add referenced vars.
12580         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
12581         SSA form.
12582         (gate_all_early_local_passes): New gate.
12583         (pass_early_local_passes): Use new gate.
12584         (execute_early_local_optimizations): New functions.
12585         (gate_all_early_optimizations): New gate.
12586         (pass_all_early_optimizations): New pass.
12587         (execute_free_datastructures): Free SSA only when initialized.
12588         (gate_init_datastructures): Init only when optimizing.
12589         (tree_lowering_passes): Do early local passes when called late.
12590         * tree-profile.c (do_tree_profiling): Don't profile functions added
12591         late.
12592         (do_early_tree_profiling, pass_early_tree_profile): Kill.
12593         * tree-cfg.c (update_modified_stmts): Do not update when operands are
12594         not active.
12595         * passes.c (init_optimizations_passes): Reorder so we go into SSA
12596         during early_local_passes.
12597         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
12598
12599
12600 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
12601
12602         * Makefile.in: Update copyright year.
12603
12604 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
12605
12606         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
12607         in $(lang_checks) and check-consistency targets.
12608
12609 2007-01-02  Jan Hubicka  <jh@suse.cz>
12610
12611         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
12612         Do not add referenced vars.
12613         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
12614         are not active.
12615         * passes.c (init_optimization_passes): Put mudflap_2 after
12616         free_datastructures.
12617
12618 2007-01-02  Jan Hubicka  <jh@suse.cz>
12619
12620         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
12621         Set NOTHROW flag on call statements proved to be nothrow.
12622         Update statement of local calls so new pure/const functions are
12623         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
12624         goto receivers.
12625         (tree_rest_of_compilation): Register hooks and initialize bitmap
12626         early. Do not set after_inlining flag.
12627
12628 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
12629
12630         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
12631         HOST_BITS_PER_LONGLONG
12632
12633 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
12634
12635         PR c/19977
12636         * c-typeck.c (store_init_value): Don't emit pedantic overflow
12637         warning for non-static initializers.
12638
12639 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
12640
12641         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
12642         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
12643         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
12644         Always use set_unique_reg_note to add REG_EQUAL notes.
12645
12646 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
12647
12648         Revert:
12649         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
12650
12651         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
12652         * cfgbuild.c (find_basic_blocks): Likewise.
12653         * cfgrtl.c (rtl_create_basic_block): Likewise.
12654         * function.c (temp_slots_at_level): Likewise.
12655         * reg-stack.c (stack_regs_mentioned): Likewise.
12656         * regclass.c (allocate_reg_info): Likewise.
12657         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
12658         set_bb_for_stmt, move_block_to_fn): Likewise.
12659         * tree-complex.c (tree_lower_complex): Likewise.
12660         * vec.h (VEC_safe_grow_cleared): New.
12661
12662 2007-01-02  Ian Lance Taylor  <iant@google.com>
12663
12664         * c-common.c (c_common_truthvalue_conversion): When warning about
12665         using an assignment as a truth value, set TREE_NO_WARNING.
12666
12667 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12668
12669         PR middle-end/7651
12670         * c.opt (Wold-style-declaration): New.
12671         * doc/invoke.texi (C-only Warning Options): New.
12672         (Wold-style-declaration): Document it.
12673         (Wextra): Enabled by -Wextra.
12674         * c-opts.c (c_common_post_options): Enabled by -Wextra.
12675         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
12676         -Wold-style-declaration.
12677
12678 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
12679
12680         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
12681         * cfgbuild.c (find_basic_blocks): Likewise.
12682         * cfgrtl.c (rtl_create_basic_block): Likewise.
12683         * function.c (temp_slots_at_level): Likewise.
12684         * reg-stack.c (stack_regs_mentioned): Likewise.
12685         * regclass.c (allocate_reg_info): Likewise.
12686         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
12687         set_bb_for_stmt, move_block_to_fn): Likewise.
12688         * tree-complex.c (tree_lower_complex): Likewise.
12689         * vec.h (VEC_safe_grow_cleared): New.
12690
12691 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
12692
12693         * c-common.c (c_common_nodes_and_builtins): Since variants of
12694         void_type_node get built before it is given a name, we need to
12695         give those variants the name, too.
12696         (complete_array_type): We need to work with the canonical main
12697         type of the array, from which we will build the qualified version.
12698         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
12699         * print-tree.c (print_node): Display canonical type information
12700         for each type.
12701         * stor-layout.c (layout_type): When we don't know the
12702         alignment of a type for which we're building an array, we end up
12703         guessing wrong, so make the type require structural equality.
12704         * tree.c (make_node_stat): When we build a new type, it is its
12705         own canonical type.
12706         (build_type_attribute_qual_variant): When building an attribute
12707         variant, its canonical type is the non-attribute variant. However,
12708         if the attributes are target-dependent and they differ, we need to
12709         use structural equality checks for this type.
12710         (build_qualified_type): A qualified type is not equivalent to its
12711         unqualified variant; set the canonical type appropriately.
12712         (build_distinct_type_copy): When building a distinct type from
12713         another type, the new type is its own canonical type.
12714         (build_variant_type_copy): When building a new type variant, we
12715         assume that it is equivalent to the original type.
12716         (build_pointer_type_for_mode): When building a pointer type, also
12717         build a canonical type pointer.
12718         (build_reference_type_for_mode): When building a reference type,
12719         also build a canonical type reference.
12720         (build_index_type): When we can't hash an index type (e.g.,
12721         because its maximum value is negative), the index type requires
12722         structural equality tests.
12723         (build_array_type): Build the canonical form of an array type.
12724         (build_function_type): Function types require structural equality,
12725         because they contain default arguments, attributes, etc.
12726         (build_method_type_directly): Ditto for method types.
12727         (build_offset_type): Build the canonical offset type.
12728         (build_complex_type): Build the canonical vector type.
12729         (make_vector_type): Build the canonical vector type.
12730         * tree.h (TYPE_CANONICAL): New.
12731         (TYPE_STRUCTURAL_EQUALITY_P): New.
12732         (SET_TYPE_STRUCTURAL_EQUALITY): New.
12733         (struct tree_type): Added "canonical" field.
12734         * params.h (VERIFY_CANONICAL_TYPES): New.
12735         * doc/c-tree.texi (TYPE_CANONICAL): Document.
12736         (TYPE_STRUCTURAL_EQUALITY_P): Document.
12737         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
12738         * doc/invoke.texi (verify-canonical-types): Document --param
12739         parameter for verifying canonical types.
12740
12741 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
12742
12743         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
12744         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
12745         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
12746         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
12747         tm_file.
12748         * config/rs6000/e500.h: New.
12749         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
12750         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
12751         Remove.
12752         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
12753         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
12754         TARGET_E500_DOUBLE): Remove.
12755         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
12756         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
12757         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
12758         * config/rs6000/rs6000.c (rs6000_override_options): Use
12759         CHECK_E500_OPTIONS.
12760
12761 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
12762
12763         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
12764         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
12765         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
12766         rs6000_emit_cmove): Don't check TARGET_E500.
12767         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
12768         sordered): Don't check TARGET_E500.
12769
12770 2007-01-01  Eric Christopher  <echristo@apple.com>
12771
12772         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
12773         HARD_REGISTER_NUM_P.
12774
12775 2007-01-01  Roger Sayle  <roger@eyesopen.com>
12776
12777         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
12778         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
12779         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
12780         eq/ne Y".
12781
12782 2007-01-01  Mike Stump  <mrs@apple.com>
12783
12784         * configure.ac: Remove support for building with Apple's gcc-3.1.
12785
12786 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
12787
12788         PR middle-end/30311
12789         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
12790         REG is a hard register.  Do not modify REG before calling
12791         subreg_nregs.
12792         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
12793         multiple of the size of YMODE for certain lowpart cases.
12794
12795 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
12796
12797         PR middle-end/30253
12798         * gimplify (voidify_wrapper_expr): Update for
12799         GIMPLE_MODIFY_STMT.
12800
12801 2007-01-01  Andreas Schwab  <schwab@suse.de>
12802
12803         PR target/29166
12804         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
12805         save of BR0 in extra_spill_size instead of spill_size.
12806         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
12807         area.
12808         (ia64_expand_epilogue): Restore BR0 from its new location.
12809
12810 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
12811
12812         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
12813         Use a temporary variable if the left hand side is not a gimple
12814         register.
12815
12816 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
12817
12818         * gimplify.c (gimplify_return_expr): Make the temporary variable
12819         for the return expression, a gimple register variable.
12820
12821 2007-01-01  Jan Hubicka  <jh@suse.cz>
12822
12823         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
12824         INSN_LIST.
12825
12826 2007-01-01  Mike Stump  <mrs@apple.com>
12827
12828         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
12829         .literal16.
12830         * config/darwin.c (machopic_select_rtx_section): Use
12831         HAVE_GAS_LITERAL16.
12832         (darwin_mergeable_constant_section): Likewise.
12833         * configure: Regenerate.
12834         * config.in: Regenerate.
12835
12836 2007-01-01  Jan Hubicka  <jh@suse.cz>
12837             Andrew Pinski  <pinskia@gmail.com>
12838
12839         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
12840         before starting IPA passes.