OSDN Git Service

1d0e9055128fc18c1cdaaa4145c641a9b41df2d8
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
2
3         PR rtl-optimization/28011
4         * reload.c (push_reload): Set dont_share if IN appears in OUT
5         also when IN is a PLUS rtx.
6         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
7         are same PLUS rtx.
8
9 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
10
11         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
12         call unshare_all_decls.
13         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
14         (unshare_all_decls): Remove.
15
16 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
17
18         PR 31847
19         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
20         dumps.
21
22 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
23             Nigel Stephens  <nigel@mips.com>
24
25         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
26         Update comments and all uses.
27         (MIN_FPRS_PER_FMT): Define.
28         * config/mips/mips.c (function_arg): Fix to correctly handle
29         the -mips32r2 -mfp64 -mabi=32 case.
30         (override_options): Enable use of odd-numbered registers for
31         SFmode values on MIPS32.
32         (mips_save_reg_p): Save whole floating-point register pair if
33         either half is used.
34         (compute_frame_size): Fix comment.
35
36 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
37
38         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
39         argument of type bool.
40         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
41         argument. Safely select temporary P register according to it.
42         (do_link): Change call site of add_to_reg accordingly.
43         (do_unlink): Add epilogue_p as a fourth argument and pass it
44         to add_to_reg.
45         (expand_interrupt_handler_epilogue): Change call of do_unlink
46         accordingly.
47         (bfin_expand_prologue): Add a third argument sibcall_p.
48         * config/bfin/bfin.md (epilogue): Change call of
49         bfin_expand_epilogue accordingly.
50         (sibcall_epilogue): Likewise.
51         (eh_return_internal): Likewise.
52                 
53         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
54         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
55         * config/bfin/bfin.c (bfin_handle_option): Handle
56         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
57         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
58         Support bf534, bf536 and bf561.
59         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
60
61 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
62
63         PR target/31854
64         * config/i386/i386.c (ix86_function_regparm): Process local
65         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
66         
67 2007-05-07  Mike Stump  <mrs@apple.com>
68
69         * doc/invoke.texi (Warning Options): Document that -Wempty-body
70         also checks for and while statements in C++.
71
72 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
73
74         * gcc.c (at_file_supplied): New variable.
75         (main): Set it if we expanded argv.
76         (do_spec_1): Pass an @-file to the linker if we were called with
77         an @-file argument and HAVE_GNU_LD.
78         * collect2.c (at_file_supplied): New variable.
79         (response_file): New variable.
80         (collect_exit): Unlink response_file if necessary.
81         (handler): Likewise.
82         (do_wait): Likewise.
83         (main): Set at_file_supplied if we expanded argv.
84         (collect_execute): Pass an @-file to subprocesses if we were called
85         with an @-file argument.
86         * configure.ac: Add define for HAVE_GNU_LD.
87         * configure: Regenerate.
88         * config.in: Regenerate.
89
90 2007-05-07   Naveen.H.S  <naveen.hs@kpitcummins.com>
91
92         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
93         operand to HI mode.
94         (mulsi3): New.
95         (divsi3): New.
96         (udivsi3): New.
97
98 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
99
100         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
101         (TARGET_ENCODE_SECTION_INFO): Re-define.
102         (m32c_encode_section_info): New
103         (function_vector_handler): New
104         (current_function_special_page_vector): New
105         (m32c_special_page_vector_p): New.
106         * config/m32c/m32c-protos.h (m32c_special_page_vector_p): 
107         Prototype.
108         * config/m32c/jump.md: Added instruction JSRS for functions 
109         with attribute "function_vector".
110         * doc/extend.texi (function_vector): Added description 
111         for M16C, M32C targets.
112
113 2007-05-07  DJ Delorie  <dj@redhat.com>
114
115         PR 31794
116         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
117         ashrpsi3, lshrpsi3): Update shift count constraint.
118
119 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
120             Nathan Froyd  <froydnj@codesourcery.com>
121
122         PR 22133
123         * c-incpath.c (add_path): Strip trailing path separators.
124
125 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
126
127         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
128         Free dominance info before purging EH edges.
129         (eliminate_degenerate_phis): Likewise.
130         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
131
132 2007-05-07  Jan Hubicka  <jh@suse.cz>
133
134         * gimplify.c (gimplify_expr): Do not crash when folding
135         (void *)(int)&a + 4.
136
137 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
138
139         PR driver/31694
140         * c-opts.c (lang_fortran): Make it non static.
141         * c-common.h (lang_fortran): New prototype.
142         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
143         -lang-fortran option was passed by the driver.
144
145 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
146
147         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
148         of ASSERT_CHECKING.  Tweak message.
149
150 2007-05-06  Revital Eres  <eres@il.ibm.com>
151
152         PR 30957
153         * loop-unroll.c (insert_var_expansion_initialization):
154         Initialize the expansions with -zero instead of +zero.
155
156 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
157
158         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
159         into pic and non-pic versions. Mark r19 as used for 
160         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used 
161         for tgd_load, tld_load and tie_load .
162         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
163         version of tgd_load, tld_load and tie_load depending on the 
164         value of flag_pic.
165
166 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
167             Jakub Jelinek  <jakub@redhat.com>
168
169         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
170         (__do_global_dtors_aux): Use more paranoid loop to run
171         destructors if HIDDEN_DTOR_LIST_END.
172         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
173
174 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
175
176         * varasm.c (align_variable): Don't increase alignment for
177         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
178         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
179
180 2007-05-04  Josh Conner  <jconner@apple.com>
181
182         * basic-block.h (cdi_direction): Assign values to all enumeration
183         constants.
184         (dom_computed): Remove.
185         (dom_info_state): New.
186         (set_dom_info_availability): New.
187         * tree-ssa-loop-im.c (determine_invariantness): Initialize
188         walk_data.dom_direction.
189         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
190         instead of dom_computed[].
191         (split_edge): Likewise.
192         (create_basic_block): Likewise.
193         (merge_blocks): Likewise.
194         * ifcvt.c (find_if_header): Likewise.
195         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
196         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
197         * tree-ssa.c (verify_ssa): Likewise.
198         * tree-cfg.c (tree_verify_flow_info): Likewise.
199         (remove_edge_and_dominated_blocks): Likewise.
200         * dominance.c (dom_computed): Make static.
201         (calc_dfs_tree_nonrec): Change third param to a bool.
202         (calc_dfs_tree): Change second param to a bool.
203         (calc_idioms): Change second param to a bool.  Use
204         dom_convert_dir_to_idx.
205         (init_dom_info): Validate dir before using.
206         (dom_convert_dir_to_idx): New.
207         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
208         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
209         (free_dominance_info): Use dom_convert_dir_to_idx.
210         (get_immediate_dominator): Likewise.
211         (set_immediate_dominator): Likewise.
212         (get_dominated_by): Likewise.
213         (redirect_immediate_dominators): Likewise.
214         (nearest_common_denominator): Likewise.
215         (dominated_by_p): Likewise.
216         (bb_dom_dfs_in): Likewise.
217         (bb_dom_dfs_out): Likewise.
218         (recount_dominator): Likewise.
219         (iterate_fix_dominators): Likewise.
220         (add_to_dominance_info): Likewise.
221         (delete_from_dominance_info): Likewise.
222         (first_dom_son): Likewise.
223         (next_dom_son): Likewise.
224         (dom_info_available_p): Likewise.
225         (dom_info_state): New.
226         (set_dom_info_availability): New.
227
228 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
229
230         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
231         Expander removed.
232         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
233
234 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
235         
236         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
237         (subdi3, subdi_carry): Delete.
238         
239 2007-05-04  Jan Hubicka  <jh@suse.cz>
240             Richard Guenther  <rguenther@suse.de>
241
242         * opts.c (decode_options): Do not fiddle with inlining
243         parameters in case of optimizing for size.
244         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
245         for size do nothing.
246         (cgraph_decide_inlining_of_small_function): When optimizing for
247         size never inline functions increasing caller size.
248         (cgraph_early_inlining): Inline for size when optimizing for size.
249
250 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
251
252         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
253         logical operations piecewise.
254         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
255         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
256         subdi_sesidi_di): Delete.
257         (add_with_carry): Produce carry in CC instead of a DREG to shorten
258         the generated sequence.  Allow three-reg add in constraints.  Rewrite
259         the rtl expression for carry to avoid zero_extend of a constant.
260         (sub_with_carry): New pattern.
261         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
262         different sequence not involving jumps.
263         (notbi): Now a named pattern.
264
265 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
266
267         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
268         Add the note about a significant loss of accuracy of some
269         mathematical routines when these options are used.
270
271 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
272
273         * haifa-sched.c (rtx_vec_t): New typedef.
274         (contributes_to_priority_p): Extract piece of priority () into new
275         static function.
276         (priority): Use the function.  Add assertion.
277         (rank_for_schedule, set_priorities): Add assertion to check that
278         insn's priority is initialized.
279         (clear_priorities, calc_priorities): Change signature.  Make it update
280         all relevant insns.  Update all callers ('add_to_speculative_block ()'
281         and 'create_block_check_twin ()').
282         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
283         Add new field 'priority_status'.
284         (INSN_PRIORITY_STATUS): New macro.
285         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
286
287 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
288
289         * sched-ebb.c (debug_ebb_dependencies): New static function.
290         (init_ready_list): Use it.
291
292         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
293         with changed signature and 'debug_rgn_dependencies ()'.
294         (debug_rgn_dependencies): New static function.
295         (init_ready_list): Use it.
296         
297         * sched-int.h (debug_dependencies): Declare.
298
299 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
300
301         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
302
303 2007-05-04  Dirk Mueller  <dmueller@suse.de>
304
305         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
306
307 2007-05-03  Jan Hubicka  <jh@suse.cz>
308
309         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
310         for pointer type in more cases than before.
311
312         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
313
314         * tree-object-size.c (plus_expr_object_size): When operand size is
315         unknown, return unknown.
316
317 2007-05-03  Dirk Mueller  <dmueller@suse.de>
318
319         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
320
321         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
322         options.
323
324         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
325
326 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
327
328         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
329
330 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
331
332         * config/soft-fp/double.h, config/soft-fp/extended.h,
333         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
334         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
335         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
336         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
337         glibc CVS.
338
339 2007-05-03  Ian Lance Taylor  <iant@google.com>
340
341         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
342         MASK_PPC_GFXOPT for 8540 or 8548.
343
344 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
345
346         * tree-vect-transform.c (vect_update_inits_of_drs): Use
347         vect_print_dump_info() to output debug information.
348
349 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
350
351         PR target/31768
352         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
353         operands of size 2 when operand is not MEM_P.
354
355 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
356
357         PR tree-optimization/30565
358         * lambda-code.c (perfect_nestify): Fix updating of dominators.
359
360 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
361
362         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
363         (umulsi3_highpart): Use them.
364         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
365         for final accumulator to D regisster tranfser.
366
367 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
368
369         PR tree-optimization/31699
370         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
371         code.
372         (vect_enhance_data_refs_alignment): Compute peel amount using 
373         TYPE_VECTOR_SUBPARTS instead of vf.     
374         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
375
376 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
377
378         PR bootstrap/31776
379         * system.h: Remove inclusion of double-int.h
380         * tree.h: Include double-int.h
381         * gengtype.c: Likewise
382         * cfgloop.h: Likewise
383         * Makefile.in: Adjust dependencies on double-int.h
384
385 2007-05-02  Eric Christopher  <echristo@apple.com>
386
387         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
388         -shared to -Zdynamiclib.
389
390 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
391
392         PR c++/31663
393         * c-common.c (strip_pointer_or_array_types): New function.
394         * c-common.h (strip_pointer_or_array_types): New function declaration.
395
396 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
397
398         PR tree-optimization/31771
399         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
400
401 2007-05-02  Paul Brook  <paul@codesourcery.com>
402
403         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
404
405 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
406
407         PR middle-end/29715
408         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
409         transformation.
410
411 2007-05-02  Nick Clifton  <nickc@redhat.com>
412
413         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
414
415 2007-05-02  Richard Guenther  <rguenther@suse.de>
416
417         PR tree-optimization/31146
418         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
419         argument, single_use_p.  If we have a single use that is
420         a conversion to the definition rhs type, propagate that rhs.
421         (forward_propagate_addr_expr): Pass single_use_p argument
422         to forward_propagate_addr_expr_1.
423
424 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
425
426         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
427         variable.
428
429 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
430
431         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
432         'AMD Family 10 core'.
433
434 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
435
436         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
437         and athlon64-sse3 as improved versions of k8, opteron and athlon64
438         with SSE3 instruction set support.
439         * doc/invoke.texi: Likewise.
440
441 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
442
443         * config/i386/i386.c (override_options): Tuning 32-byte loop
444         alignment for amdfam10 architecture. Increasing the max loop
445         alignment to 24 bytes.
446
447 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
448
449         * config/m68k/constraints.md: New.
450         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
451         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
452         EXTRA_CONSTRAINT): Remove.
453         * config/m68k/m68k.md: Include constraints.md.
454         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
455
456 2007-05-01  Ian Lance Taylor  <iant@google.com>
457
458         PR tree-optimization/31739
459         * tree-vrp.c (vrp_val_is_max): New static function.
460         (vrp_val_is_min): New static function.
461         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
462         copying the node.
463         (set_value_range): Use vrp_val_is_{max,min}.
464         (extract_range_from_assert): Likewise.
465         (extract_range_from_binary_expr): Likewise.
466         (extract_range_from_unary_expr): Likewise.
467         (dump_value_range, vrp_meet): Likewise.
468         (vrp_visit_phi_node): Likewise.
469         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
470
471 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
472
473         * config/i386/gmon-sol2.c (size_t): New type.
474         (intptr_t): Likewise.
475         (s_textsize): Declare as size_t.
476         (sbrk): Declare.
477         (monstartup): Use size_t for sizes.
478         (_mcount): Save and restore registers.
479         (internal_mcount): Pass 0 as the first argument to monstartup
480         in 64-bit mode.
481         (moncontrol): Convert pointer to appropriately sized integer
482         before passing to profil.
483
484 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
485
486         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
487         __NO_FPRS__, not just if _SOFT_DOUBLE.
488         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
489         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
490         also for E500 double.
491         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
492         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
493         && !TARGET_FPRS).
494
495 2007-05-01  Richard Guenther  <rguenther@suse.de>
496
497         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
498         is NULL.
499
500 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
501
502         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
503
504 2007-05-01  Jan Hubicka  <jh@suse.cz>
505
506         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
507         invariant.
508
509 2007-05-01  Jan Hubicka  <jh@suse.cz>
510
511         * tree.h (maybe_fold_offset_to_component_ref): Remove.
512         (maybe_fold_offset_to_reference): Declare.
513         * fold-const.c (fold_unary): Do not fold
514         (type *)&A into &A->field_of_type_and_offset_0
515         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
516         size is unknown, give up.
517         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
518         offsets.
519         (maybe_fold_offset_to_reference): New.
520         (maybe_fold_stmt_indirect): Use it.
521         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
522         * gimplify.c (gimplify_conversion): Canonicalize conversions to
523         field references.
524         (gimplify_expr): Likewise for plus_expr.
525
526 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
527
528         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
529         bsi_after_labels.  Always insert statements before bsi.
530         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
531         * predict.c (apply_return_prediction): Check for empty blocks.
532         * cfgexpand.c (lab_rtx_for_bb): New variable.
533         (label_rtx_for_bb): Do not create new tree labels.
534         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
535         (tree_expand_cfg): Initialize lab_rtx_for_bb.
536         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
537         creating edges.
538         (label_for_bb): Add field used.
539         (update_eh_label, main_block_label): Mark the label used.
540         (cleanup_dead_labels): Remove unused labels.
541
542 2007-05-01  Richard Guenther  <rguenther@suse.de>
543
544         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
545         if it is not about to be set.
546         (get_value_range): Do not pre-allocate equiv bitmap.
547         (update_value_range): No need to clear equiv field.
548         (add_equivalence): Change prototype to get bitmap pointer.
549         Allocate bitmap here if it is not already.
550         (extract_range_from_assert): Do not allocate bitmap here.
551         Update callers to add_equivalence.
552         (extract_range_from_ssa_name): Likewise.
553         (get_vr_for_comparison): New static helper.
554         (compare_name_with_value): Handle NULL equiv bitmap by
555         peeling the first iteration of the comparison loop.
556         Use get_vr_for_comparison.
557         (compare_names): Handle NULL equiv bitmaps by using fake
558         ones.  Use get_vr_for_comparison.
559
560 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
561
562         * double-int.c (mpz_set_double_int): Moved from
563         tree-ssa-loop-niter.c.
564         (mpz_get_double_int): Likewise; also, add option to wrap
565         out-of-range integers.
566         * double-int.h: New prototypes for above.
567         * tree.c (get_static_type_bounds): Moved from
568         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
569         TYPE_MAX_VALUE if they exist..
570         * tree.h: New prototype for above.
571         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
572         get_type_bounds calls.
573         (mpz_set_double_int): Move to double-int.c.
574         (get_type_bounds): Move to tree.c, rename to
575         get_static_type_bounds.
576         (mpz_to_double_int): Move to double-int.c, rename to
577         mpz_get_double_int.
578
579 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
580
581         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
582         DIV0 exception can fall through to a normal return.
583
584 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
585
586         PR middle-end/22156
587         Temporarily revert:
588         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
589         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
590         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
591         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
592         initialize align to silence bogus warning.
593         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
594         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
595         all_no_warning.
596         (struct sra_walk_fns): Remove use_all parameter from use.
597         (sra_hash_tree): Handle BIT_FIELD_REFs.
598         (sra_elt_hash): Don't hash bitfld blocks.
599         (sra_elt_eq): Skip them in parent compares as well.  Handle
600         BIT_FIELD_REFs.
601         (sra_walk_expr): Don't maintain or pass down use_all_p.
602         (scan_use): Remove use_all parameter.
603         (scalarize_use): Likewise.  Re-expand assignment to
604         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
605         output, and re-scalarize after output.  Don't mark anything
606         for no warning.
607         (scalarize_ldst): Adjust.
608         (scalarize_walk_gimple_modify_statement): Likewise.
609         (build_element_name_1): Handle BIT_FIELD_REFs.
610         (instantiate_element): Don't warn for any element whose parent
611         is used as a whole.
612         (instantiate_missing_elements_1): Return the sra_elt.
613         (canon_type_for_field): New.
614         (try_instantiate_multiple_fields): New.
615         (instantiate_missing_elemnts): Use them.
616         (mark_no_warning): Removed.
617         (generate_one_element_ref): Handle BIT_FIELD_REFs.
618         (REPLDUP, sra_build_elt_assignment): New.
619         (generate_copy_inout): Use them.
620         (generate_element_copy): Likewise.  Handle bitfld differences.
621         (generate_element_zero): Don't recurse for blocks.  Use
622         sra_build_elt_assignment.
623         (generate_one_element_int): Take elt instead of var.  Use
624         sra_build_elt_assignment.
625         (generate_element_init_1): Adjust.
626         (scalarize_use, scalarize_copy): Use REPLDUP.
627         (scalarize_ldst): Move assert before dereference.
628         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
629
630 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
631
632         PR C++/31721
633         * tree.c (reconstruct_complex_type): Reconstruct a reference
634         correctly.
635         Also use the same mode for the pointer as the old pointer type.
636
637 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
638
639         * doc/trouble.texi (Interoperation): Remove note about Ultrix
640         Fortran compiler.
641
642 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
643
644         PR rtl-optimization/31676
645         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
646         (df_refs_record): Call it.
647
648 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
649
650         * rtl.def (SS_ABS): New code.
651         * config/bfin/bfin.c (print_operand): New modifier 'v'.
652         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
653         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
654         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
655         (bfin_init_builtins): Define them.
656         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
657         (bfin_expand_builtin): ... and handle the others here.
658         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
659         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
660         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
661         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
662         operand is only HImode.
663
664 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
665
666         * regclass.c (scan_one_insn): Remove splitting of
667         two address insns.
668
669 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
670             Nigel Stephens  <nigel@mips.com>
671
672         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
673
674 2007-04-28  Jan Hubicka  <jh@suse.cz>
675
676         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
677         insn_locators_alloc instead of insn_locators_initialize;
678         call reset_block_changes.
679         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
680         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
681         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
682         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
683         * config/score/score.c (th_output_mi_thunk): Likewise.
684         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
685         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
686         tolerate uninitialized locator info.
687
688         Re-apply:
689         * function.c (init_function_start): Don't init line number info.
690         (expand_function_end): Update.
691         (reset_block_changes, record_block_change, finalize_block_changes,
692         check_block_change, free_block_changes): Kill.
693         * function.h (reset_block_changes, record_block_change,
694         finalize_block_changes, check_block_change, free_block_changes): Remove
695         prototypes.
696         (struct function): Remove ib_boundaries_block.
697         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
698         Use curr_insn_locator to initialize locator.
699         (emit_line_note): Remove.
700         * cfgexpand.c (expand_gimple_cond_expr): Update.
701         (construct_exit_block): Likewise.
702         (tree_expand_cfg): Initialize/finalize locators.
703         * expr.c (expand_expr_real): Update.
704         * cfglayout.c (line_locators_locs, line_locators_lines,
705         file_locators_locs, file_locators_files): Remove.
706         (set_block_levels): Move to cfgexpand.c.
707         (insn_locators_initialize): Remove.
708         (pass_insn_locators_initialize): Remove.
709         (locations_locators_locs, locations_locators_vals): New static vars.
710         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
711         Likewise.
712         (insn_locators_alloc, insn_locators_finalize,
713         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
714         New functions.
715         (locator_location): New.
716         (locator_line, locator_file): Rewrite.
717         * rtl.h (emit_line_note): Kill.
718         (insn_locators_alloc, insn_locators_finalize,
719         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
720         Declare.
721         * tree-inline.c (initialize_cfun): Do not initialize
722         ib_boundaries_block.
723         * passes.c (pass_insn_locators_initialize): Remove.
724
725 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
726
727         * tree-cfg.c (move_block_to_fn): Release bb from dominance
728         info.  Update last_basic_block correctly.
729
730 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
731
732         PR target/31701
733         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
734         register itself to hold the offset constant.  Tell flow the use
735         of r4 and r5 when they are used.
736
737 2007-04-27  Richard Guenther  <rguenther@suse.de>
738
739         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
740         if we simplified anything.
741         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
742         warnings until we did a simplification and the stmt was not
743         marked as TREE_NO_WARNING.
744
745 2007-04-27  Mike Stump  <mrs@apple.com>
746
747         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
748
749 2007-04-27  Ian Lance Taylor  <iant@google.com>
750
751         PR middle-end/31710
752         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
753         TYPE_MAX_VALUE exist, convert them to the new type.
754
755 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
756
757         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
758         if it claims to be available.
759         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
760         edge is redirected.
761         (perform_tree_ssa_dce): Always free postdominators.
762
763 2007-04-27  Richard Henderson  <rth@redhat.com>
764
765         * config/alpha/predicates.md (aligned_memory_operand): Mark
766         as define_special_predicate.
767         (unaligned_memory_operand, normal_memory_operand): Likewise.
768         (reg_or_unaligned_mem_operand): Remove.
769         (any_memory_operand): Match the documentation and check for
770         non-renumbered pseudos during reload.
771         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
772         alpha_secondary_reload_class, update to new interface, make static.
773         Handle CQImode like HImode.  Remove FP subreg check.
774         (alpha_expand_mov): Use replace_equiv_address.
775         (alpha_expand_mov_nobwx): Use any_memory_operand.
776         (TARGET_SECONDARY_RELOAD): New.
777         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
778         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
779         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
780         * config/alpha/alpha.md: ... here.
781         (RELOAD12, reloadmode): New.
782         (movcqi): New.
783         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
784         Don't handle the aligned case here.
785         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
786         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
787         reload_inhi_help.  Don't expect a scratch register.
788         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
789         reload_outhi_help.
790         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
791
792 2007-04-27  Richard Guenther  <rguenther@suse.de>
793
794         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
795
796 2007-04-27  Richard Guenther  <rguenther@suse.de>
797
798         PR tree-optimization/30965
799         PR tree-optimization/30978
800         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
801         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
802         (find_equivalent_equality_comparison): Likewise.
803         (simplify_cond): Likewise.
804         (get_prop_source_stmt): New helper.
805         (get_prop_dest_stmt): Likewise.
806         (can_propagate_from): Likewise.
807         (remove_prop_source_from_use): Likewise.
808         (combine_cond_expr_cond): Likewise.
809         (forward_propagate_comparison): New function.
810         (forward_propagate_into_cond): Rewrite to use fold for
811         tree combining.
812         (tree_ssa_forward_propagate_single_use_vars): Call
813         forward_propagate_comparison to propagate comparisons.
814
815 2007-04-27  Richard Guenther  <rguenther@suse.de>
816
817         PR tree-optimization/31715
818         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
819         sure to do computation on the offset in an appropriate
820         signed type.
821
822 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
823
824         * reload.h (elimination_target_reg_p): Declare.
825         * reload.c (find_reloads): Don't apply the reg_rtx move
826         optimization if the SET_DEST satisfies elimination_target_reg_p.
827         * reload1.c (elimination_target_reg_p): New function.
828         (gen_reload): In the move/add2 fallback, make sure that op0
829         does not overlap the destination register.
830
831 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
832
833         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
834         transform only GIMPLE_MODIFY_STMTs.
835         * tree-complex.c (expand_complex_operations_1): Ditto.
836         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
837         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
838         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
839         branches.
840         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
841         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
842         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
843         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
844         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
845         slpeel_add_loop_guard): Ditto.
846         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
847         * lambda-code.c (perfect_nestify): Ditto.
848         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
849         before the first statement.
850         * tree-optimize.c (execute_free_datastructures): Fix comments.
851         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
852         * tree-flow.h (disband_implicit_edges): Declaration removed.
853         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
854         branches.
855         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
856         without gotos.
857         (disband_implicit_edges, has_label_p): Removed.
858         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
859         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
860         branches.
861         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
862         side effects.
863         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
864         also for COND_EXPRs.
865         * cfgexpand.c (label_rtx_for_bb): New function.
866         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
867         Use label_rtx_for_bb to find the labels.
868         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
869         last block.  Detect fallthru edges.
870
871 2007-04-26  Ian Lance Taylor  <iant@google.com>
872
873         PR target/28675
874         * reload.c (find_reloads_subreg_address): If the address was valid
875         in the original mode but not in the new mode, reload the whole
876         address.
877
878 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
879
880         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
881         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
882         (cleanup_control_expr_graph): Do not invalidate dominance info.
883         Record altered blocks.
884         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
885         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
886         cleanup_tree_cfg_bb): New functions.
887         (remove_forwarder_block): Do not maintain the worklist of blocks.
888         Record altered blocks.
889         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
890         not over whole cfg.
891         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
892         delete_unreachable_blocks if dominators are not available.
893         * tree-inline.c (optimize_inline_calls): Free dominance information
894         earlier.
895         * tree-flow.h (remove_edge_and_dominated_blocks,
896         cfgcleanup_altered_bbs): Altered.
897         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
898         blocks.
899         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
900         functions.
901         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
902         do not invalidate dominators.
903
904 2007-04-26  Anatoly Sokolov <aesok@post.ru>
905
906         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
907         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
908         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
909         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
910
911 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
912
913         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
914
915 2007-04-26  Richard Guenther  <rguenther@suse.de>
916
917         PR tree-optimization/31703
918         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
919         the right type for the target of the bittest.
920
921 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
922
923         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
924         ix86_sol10_return_in_memory.
925
926 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
927
928         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
929         variables.
930
931 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
932
933         PR c++/31598
934         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
935
936         PR tree-optimization/30558
937         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
938         clear this_state.prev_try.
939
940 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
941             Mark Mitchell  <mark@codesourcery.com>
942
943         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
944         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
945         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
946
947 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
948
949         PR driver/31107
950         * doc/invoke.texi (%:print-asm-header): Document.
951         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
952         and -ftarget-help.
953         (static_spec_functions): Add print-asm-header.
954         (main): Print a banner before the --target-help linker options.
955         (print_asm_header_spec_function): New function.
956
957 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
958
959         PR target/31403
960         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
961         (movsf_ie): Likewise.
962
963 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
964
965         * doc/extend.texi ([Type Traits]): Adjust per N2255.
966
967 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
968
969         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
970         for divide-by-zero.
971         (__umodsi3, __modsi3): Likewise.
972
973 2007-04-25  Dirk Mueller  <dmueller@suse.de>
974
975         * c-typeck.c (build_compound_expr): Annotate warning()
976         call with OPT_Wunused_value.
977         * tree-ssa.c (warn_uninit): Annotate warning with
978         OPT_Wunintialized.
979         * c-common.c (handle_sentinel_attribute): Annotate warning
980         call with OPT_Wattributes.
981
982 2007-04-25  Thiemo Seufer  <ths@mips.com>
983
984         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
985         (mips16): Fix typo.
986         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
987         on to the assembler.  Improve handling of -mno-mips16.  Add handling
988         of -mno-mips3d, -mno-dsp, -mno-dspr2.
989         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
990         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
991         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
992
993 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
994
995         PR target/31680
996         * config/i386/winnt.c (i386_pe_file_end): Strip only
997         USER_LABEL_PREFIX when writing export name.
998
999 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
1000
1001         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
1002         sh/elf.h, vx-common.h and vxworks.h.
1003         * config/sh/sh.h: Include config/vxworks-dummy.h.
1004         (SUBTARGET_OVERRIDE_OPTIONS): Define.
1005         (OVERRIDE_OPTIONS): Use it.
1006         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
1007         (vxworks_picreg): New pattern.
1008         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
1009         VXWORKS_OS_CPP_BUILTINS.
1010         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
1011         to their VXWORKS_* equivalents.
1012         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
1013         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
1014         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
1015         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
1016         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
1017         -mrtp/-fPIC multilibs.
1018         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
1019         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
1020         (MULTILIB_OSDIRNAMES): Delete.
1021
1022 2007-04-25  Anatoly Sokolov <aesok@post.ru>
1023
1024         PR target/18989
1025         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
1026
1027 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
1028
1029         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
1030         rounding mode to be specified by the caller.
1031         (real_to_mpfr) Likewise.
1032         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
1033         include new arguments.
1034         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
1035
1036 2007-04-24  Ian Lance Taylor  <iant@google.com>
1037
1038         PR tree-optimization/31605
1039         * tree-vrp.c (set_value_range): Check that min and max are not
1040         both overflow infinities.
1041         (set_value_range_to_value): New static function.
1042         (extract_range_from_binary_expr): Call set_value_range_to_value.
1043         (extract_range_from_cond_expr): Likewise.
1044         (extract_range_from_expr): Likewise.
1045         (extract_range_from_unary_expr): Likewise.  Don't create a range
1046         which overflows on both sides.
1047         (vrp_meet): Check for a useless range.
1048         (vrp_visit_phi_node): If we see a constant which looks like an
1049         overflow infinity, turn off the TREE_OVERFLOW flag.
1050
1051 2007-04-24  Ian Lance Taylor  <iant@google.com>
1052
1053         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
1054
1055 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
1056
1057         PR diagnostic/25923
1058         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
1059         diagnostic message is being built.
1060         * tree-pretty-print.c (dump_generic_node): Only write the
1061         formatted text into BUFFER's stream if we are not building a
1062         diagnostic message.
1063         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
1064         dump_generic_node.
1065         * Makefile.in (toplev.o): Depend on tree-pass.h.
1066
1067 2007-04-24  Ian Lance Taylor  <iant@google.com>
1068
1069         PR tree-optimization/31602
1070         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
1071         conditionals in the copied loop header.
1072         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
1073         warnings if TREE_NO_WARNING is set.
1074         * doc/invoke.texi (Warning Options): Clarify that
1075         -Wstrict-overflow does not warn about loops.
1076
1077 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
1078
1079         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
1080         expand on the comment about _Decimal128 arguments and check the
1081         integer result of the modulus operation; for 64-bit ELF ABI, ensure
1082         that _Decimal128 argument uses even/odd register pair.
1083         (function_arg): Ditto.
1084
1085 2007-04-24  Hui-May Chang <hm.chang@apple.com>
1086
1087         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
1088         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
1089
1090 2007-04-24  Richard Guenther  <rguenther@suse.de>
1091             Olga Golovanevsky  <olga@il.ibm.com>
1092
1093         * fold-const.c (multiple_of_p): Check for bottom
1094         to be zero.
1095
1096 2007-04-24  Richard Henderson  <rth@redhat.com>
1097
1098         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
1099         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
1100         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
1101         looking for non-zero bits shifted out.  Avoid a recursive call
1102         when constructing the scalar.
1103         (__floatundisf): Likewise.
1104
1105 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
1106
1107         * dwarf2out.c (field_byte_offset): Move the existing logic
1108         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
1109         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
1110
1111 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
1112
1113         PR target/31641
1114         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
1115         argument of 0 for memset.
1116         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
1117         unsigned shift instead of the signed variant.
1118
1119 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
1120
1121         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
1122         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
1123         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
1124         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
1125         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
1126         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
1127         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
1128         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
1129         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
1130         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
1131         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
1132         "mul<mode>3", "div<mode>3"): Insn definitions added.
1133         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
1134         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
1135         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
1136         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
1137         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
1138         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
1139         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
1140         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
1141         TARGET_FLOAT_FORMAT): Macro definitions removed.
1142         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
1143         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
1144         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
1145         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
1146         (s390_gen_rtx_const_DI): Function removed.
1147         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
1148
1149 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
1150
1151         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
1152         over an external ffs function.
1153
1154 2007-04-24  Chao-ying Fu  <fu@mips.com>
1155             Richard Sandiford  <richard@nildram.co.uk>
1156
1157         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
1158         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
1159         (smadd_widen_optab, umadd_widen_optab): Define.
1160         * optabs.c (init_optabs): Initialize smadd_widen_optab and
1161         umadd_widen_optab.
1162         * genopinit.c (optabs): Fill in smadd_widen_optab and
1163         umadd_widen_optab.
1164         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
1165         and umadd_widen_optab to implement multiply-add sequences.
1166         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
1167         (<u>maddsidi4): ...this.  Extend condition to include
1168         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
1169         of operand 0 to "ka" and use the three-operand form of madd<u>
1170         for TARGET_DSPR2.
1171         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
1172         to define_expands.
1173         * config/mips/constraints.md (ka): New register constraint.
1174
1175 2007-04-24  Jan Hubicka  <j@suse.cz>
1176
1177         Revert:
1178
1179         2007-04-23  Jan Hubicka  <jh@suse.cz>
1180         * function.c (init_function_start): Don't init line number info.
1181         (expand_function_end): Update.
1182         (reset_block_changes, record_block_change, finalize_block_changes,
1183         check_block_change, free_block_changes): Kill.
1184         * function.h (reset_block_changes, record_block_change,
1185         finalize_block_changes, check_block_change, free_block_changes): Remove
1186         prototypes.
1187         (struct function): Remove ib_boundaries_block.
1188         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
1189         Use curr_insn_locator to initialize locator.
1190         (emit_line_note): Remove.
1191         * cfgexpand.c (expand_gimple_cond_expr): Update.
1192         (construct_exit_block): Likewise.
1193         (tree_expand_cfg): Initialize/finalize locators.
1194         * expr.c (expand_expr_real): Update.
1195         * cfglayout.c (line_locators_locs, line_locators_lines,
1196         file_locators_locs, file_locators_files): Remove.
1197         (set_block_levels): Move to cfgexpand.c.
1198         (insn_locators_initialize): Remove.
1199         (pass_insn_locators_initialize): Remove.
1200         (locations_locators_locs, locations_locators_vals): New static vars.
1201         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
1202         Likewise.
1203         (insn_locators_alloc, insn_locators_finalize,
1204         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
1205         New functions.
1206         (locator_location): New.
1207         (locator_line, locator_file): Rewrite.
1208         * rtl.h (emit_line_note): Kill.
1209         (insn_locators_alloc, insn_locators_finalize,
1210         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
1211         Declare.
1212         * tree-inline.c (initialize_cfun): Do not initialize
1213         ib_boundaries_block.
1214         * passes.c (pass_insn_locators_initialize): Remove.
1215
1216 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
1217
1218         * doc/invoke.texi: Removed leading '-' from option index entries.
1219
1220 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
1221
1222         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
1223         Use phi_nodes_ptr.
1224         (create_phi_node): Use set_phi_nodes.
1225         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
1226         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
1227         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
1228         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
1229         (bsi_start, bsi_last): Use bb_stmt_list.
1230         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
1231         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
1232         Traverse the statements using tsi iterator.
1233         * basic-block.h (struct basic_block_def): Fields stmt_list
1234         and phi_nodes moved to ...
1235         (struct tree_bb_info): ... new structure.
1236         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
1237         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
1238         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
1239         (tree_verify_flow_info): Verify that il.tree is not set for
1240         entry and exit block.
1241         (tree_split_block): Use set_bb_stmt_list.
1242
1243 2007-04-23  Mike Stump  <mrs@apple.com>
1244
1245         * config/i386/i386.c (ix86_tune_features
1246         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
1247         nocona and core2.
1248
1249 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
1250
1251         * config/i386/i386.md (prefix_extra): New attribute.
1252         (length): Add prefix_extra.
1253
1254         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
1255         (sse2_movntv2di): Likewise.
1256         (sse2_cvtps2dq): Likewise.
1257         (sse2_cvtpd2pi): Likewise.
1258         (sse2_cvttpd2pi): Likewise.
1259         (*sse2_cvtpd2ps): Likewise.
1260         (*add<mode>3): Likewise.
1261         (sse2_ssadd<mode>3): Likewise.
1262         (sse2_usadd<mode>3): Likewise.
1263         (*sub<mode>3): Likewise.
1264         (sse2_sssub<mode>3): Likewise.
1265         (sse2_ussub<mode>3): Likewise.
1266         (*mulv8hi3): Likewise.
1267         (*smulv8hi3_highpart): Likewise.
1268         (*umulv8hi3_highpart): Likewise.
1269         (sse2_umulv2siv2di3): Likewise.
1270         (sse2_pmaddwd): Likewise.
1271         (ashr<mode>3): Likewise.
1272         (lshr<mode>3): Likewise.
1273         (ashl<mode>3): Likewise.
1274         (sse2_ashlti3): Likewise.
1275         (sse2_lshrti3): Likewise.
1276         (*umaxv16qi3): Likewise.
1277         (*smaxv8hi3): Likewise.
1278         (*uminv16qi3): Likewise.
1279         (*sminv8hi3): Likewise.
1280         (sse2_eq<mode>3): Likewise.
1281         (sse2_gt<mode>3): Likewise.
1282         (*and<mode>3): Likewise.
1283         (sse2_nand<mode>3): Likewise.
1284         (*ior<mode>3): Likewise.
1285         (*xor<mode>3): Likewise.
1286         (sse2_packsswb): Likewise.
1287         (sse2_packssdw): Likewise.
1288         (sse2_packuswb): Likewise.
1289         (sse2_punpckhbw): Likewise.
1290         (sse2_punpcklbw): Likewise.
1291         (sse2_punpckhwd): Likewise.
1292         (sse2_punpcklwd): Likewise.
1293         (sse2_punpckhdq): Likewise.
1294         (sse2_punpckldq): Likewise.
1295         (sse2_punpckhqdq): Likewise.
1296         (sse2_punpcklqdq): Likewise.
1297         (*sse2_pinsrw): Likewise.
1298         (*sse2_pextrw): Likewise.
1299         (sse2_pshufd_1): Likewise.
1300         (sse2_uavgv16qi3): Likewise.
1301         (sse2_uavgv8hi3): Likewise.
1302         (sse2_psadbw): Likewise.
1303         (sse2_pmovmskb): Likewise.
1304         (*sse2_maskmovdqu): Likewise.
1305         (*sse2_maskmovdqu_rex64): Likewise.
1306         (sse4a_extrqi): Likewise.
1307         (sse4a_extrq): Likewise.
1308         (sse3_lddqu): Set prefix_rep.
1309         (sse3_addsubv4sf3): Likewise.
1310         (sse3_haddv4sf3): Likewise.
1311         (sse3_hsubv4sf3): Likewise.
1312         (sse_cvtss2si): Likewise.
1313         (sse_cvtss2si_2): Likewise.
1314         (sse_cvtss2siq): Likewise.
1315         (sse_cvtss2siq_2): Likewise.
1316         (sse_cvttss2si): Likewise.
1317         (sse_cvttss2siq): Likewise.
1318         (sse2_cvttps2dq): Likewise.
1319         (sse3_movshdup): Likewise.
1320         (sse3_movsldup): Likewise.
1321         (sse2_cvtsd2si): Likewise.
1322         (sse2_cvtsd2si_2): Likewise.
1323         (sse2_cvtsd2siq): Likewise.
1324         (sse2_cvtsd2siq_2): Likewise.
1325         (sse2_cvttsd2si): Likewise.
1326         (sse2_cvttsd2siq): Likewise.
1327         (*sse2_cvtpd2dq): Likewise.
1328         (*sse2_cvttpd2dq): Likewise.
1329         (sse2_pshuflw_1): Likewise.
1330         (sse2_pshufhw_1): Likewise.
1331         (sse4a_insertqi): Likewise.
1332         (sse4a_insertq): Likewise.
1333         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
1334         (ssse3_phadddv4si3): Likewise.
1335         (ssse3_phaddswv8hi3): Likewise.
1336         (ssse3_phsubwv8hi3): Likewise.
1337         (ssse3_phsubdv4si3): Likewise.
1338         (ssse3_phsubswv8hi3): Likewise.
1339         (ssse3_pmaddubswv8hi3): Likewise.
1340         (ssse3_pmulhrswv8hi3): Likewise.
1341         (ssse3_pshufbv16qi3): Likewise.
1342         (ssse3_psign<mode>3): Likewise.
1343         (ssse3_palignrti): Likewise.
1344         (abs<mode>2): Likewise.
1345         (ssse3_phaddwv4hi3): Set prefix_extra.
1346         (ssse3_phadddv2si3): Likewise.
1347         (ssse3_phaddswv4hi3): Likewise.
1348         (ssse3_phsubwv4hi3): Likewise.
1349         (ssse3_phsubdv2si3): Likewise.
1350         (ssse3_phsubswv4hi3): Likewise.
1351         (ssse3_pmaddubswv4hi3): Likewise.
1352         (ssse3_pmulhrswv4hi3): Likewise.
1353         (ssse3_pshufbv8qi3): Likewise.
1354         (ssse3_psign<mode>3): Likewise.
1355         (ssse3_palignrdi): Likewise.
1356         (abs<mode>2): Likewise.
1357         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
1358         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
1359         (sse2_pmovmskb): Set mode to SI instead of V2DF.
1360
1361 2007-04-23  Nick Clifton  <nickc@redhat.com>
1362
1363         * params.def: Fix formatting of emacs local variables.
1364
1365 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
1366
1367         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
1368         move if inter-unit move isn't allowed.
1369         Don't split moving the first element of V2DI to DI to inter-unit
1370         move if inter-unit move isn't allowed.
1371
1372 2007-04-23  Richard Guenther  <rguenther@suse.de>
1373
1374         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
1375         and CDI_POST_DOMINATORS separately.
1376
1377 2007-04-23  Nick Clifton  <nickc@redhat.com>
1378
1379         * c.opt (Wformat-contains-nul): Add warning attribute.
1380
1381 2007-04-23  Jan Hubicka  <jh@suse.cz>
1382
1383         * function.c (init_function_start): Don't init line number info.
1384         (expand_function_end): Update.
1385         (reset_block_changes, record_block_change, finalize_block_changes,
1386         check_block_change, free_block_changes): Kill.
1387         * function.h (reset_block_changes, record_block_change,
1388         finalize_block_changes, check_block_change, free_block_changes): Remove
1389         prototypes.
1390         (struct function): Remove ib_boundaries_block.
1391         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
1392         Use curr_insn_locator to initialize locator.
1393         (emit_line_note): Remove.
1394         * cfgexpand.c (expand_gimple_cond_expr): Update.
1395         (construct_exit_block): Likewise.
1396         (tree_expand_cfg): Initialize/finalize locators.
1397         * expr.c (expand_expr_real): Update.
1398         * cfglayout.c (line_locators_locs, line_locators_lines,
1399         file_locators_locs, file_locators_files): Remove.
1400         (set_block_levels): Move to cfgexpand.c.
1401         (insn_locators_initialize): Remove.
1402         (pass_insn_locators_initialize): Remove.
1403         (locations_locators_locs, locations_locators_vals): New static vars.
1404         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
1405         Likewise.
1406         (insn_locators_alloc, insn_locators_finalize,
1407         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
1408         New functions.
1409         (locator_location): New.
1410         (locator_line, locator_file): Rewrite.
1411         * rtl.h (emit_line_note): Kill.
1412         (insn_locators_alloc, insn_locators_finalize,
1413         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
1414         Declare.
1415         * tree-inline.c (initialize_cfun): Do not initialize
1416         ib_boundaries_block.
1417         * passes.c (pass_insn_locators_initialize): Remove.
1418
1419 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1420
1421         PR middle-end/31448
1422         * expr.c (reduce_to_bit_field_precision): Handle
1423         CONST_INT rtx's.
1424
1425 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
1426
1427         PR tree-optimization/24659
1428         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
1429         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
1430         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
1431         * genopinit.c (optabs): Rename vec_pack_mod_optab
1432         to vec_pack_trunc_optab.
1433         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
1434         early for scalar floating point operands for NOP_EXPR.
1435         (vectorizable_type_promotion): Ditto.
1436         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
1437         vec_pack_trunc_optab.
1438         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
1439
1440         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
1441         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
1442         Rename from VEC_PACK_MOD_EXPR.
1443         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
1444         * expr.c (expand_expr_real_1): Ditto.
1445         * tree-inline.c (estimate_num_insns_1): Ditto.
1446         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
1447
1448         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
1449         (vec_unpacks_lo_v4sf): Ditto.
1450         (vec_pack_trunc_v2df): Ditto.
1451         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
1452         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
1453         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
1454
1455         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
1456         vec_pack_mod_v8hi.
1457         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
1458
1459         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
1460         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
1461         packing of floating point operands.
1462         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
1463         represent unpacking of floating point operands.
1464         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
1465         [vec_unpacks_hi]: Ditto.
1466         [vec_unpacks_lo]: Ditto.
1467
1468 2007-04-22  Jan Hubicka  <jh@suse.cz>
1469
1470         * final.c (rest_of_handle_final): Call
1471         targetm.asm_out.constructor/targetm.asm_out.destructor
1472         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
1473         proper priority via decl_*_priority_insert.
1474         * c-common.c (c_expand_body): Likewise.
1475
1476 2007-04-22  Richard Guenther  <rguenther@suse.de>
1477
1478         PR tree-optimization/29789
1479         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
1480         (rewrite_reciprocal): New helper split out from
1481         determine_invariantness_stmt.
1482         (rewrite_bittest): Likewise.
1483         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
1484         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
1485         is not.
1486
1487 2007-04-22  Revital Eres  <eres@il.ibm.com>
1488
1489         * loop-unroll.c (var_to_expand): New field to support also
1490         insns of the form x = something + x.
1491         (analyze_insn_to_expand_var): Use it.
1492         (expand_var_during_unrolling): Likewise.
1493
1494 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
1495
1496         * predict.c: Include pointer-set.h.
1497         (bb_predictions): New variable.
1498         (tree_predicted_by_p, tree_predict_edge,
1499         remove_predictions_associated_with_edge): Use bb_predictions map
1500         instead of bb->predictions.
1501         (clear_bb_predictions, assert_is_empty): New functions.
1502         (combine_predictions_for_bb): Use bb_predictions map.  Call
1503         clear_bb_predictions.
1504         (tree_estimate_probability): Create and free bb_predictions map.
1505         * Makefile.in (predict.o): Add pointer-set.h dependency.
1506         * basic-block.h (struct basic_block_def): Remove predictions
1507         field.
1508         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
1509
1510 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
1511
1512         PR target/31480
1513         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
1514         is null.
1515
1516 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1517
1518         * timevar.c (timevar_print): Change reference of --disable-checking to
1519         --enable-checking=release.  Also warn if assert checking is disabled.
1520
1521 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1522
1523         PR C/30265
1524         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
1525         decl as addressable if the compound literal was marked as
1526         addressable.
1527         Mark the decl as a gimple register if it is a complex or
1528         vector decl and does not live in memory.
1529
1530 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1531
1532         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
1533         (GENERIC_NEXT): New function macro.
1534         (PHI_CHAIN): Use phi_node's new chain variable.
1535         (tree_phi_node): Change tree_common to tree_base
1536         and add the chain field.
1537         * tree-phinodes.c (make_phi_node): Don't set
1538         TREE_TYPE on the new node.
1539         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
1540         instead of checking GIMPLE_TUPLE_P in chain_next.
1541         * tree-vect-transform.c
1542         (get_initial_def_for_induction): Look at
1543         PHI_RESULT_TREE for the type of the phi node.
1544         (update_vuses_to_preheader): Use PHI_CHAIN
1545         instead of TREE_CHAIN on the phi node.
1546         * tree-ssa-structalias.c (compute_points_to_sets):
1547         Likewise.
1548         (ipa_pta_execute): Likewise.
1549
1550 2007-04-21  Richard Guenther  <rguenther@suse.de>
1551
1552         PR middle-end/31136
1553         * fold-const.c (fold_unary): Call fold_convert_const on the
1554         original tree.
1555
1556 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
1557
1558         * gcse.c (store_killed_in_insn): Handle PARALLELs.
1559         (store_killed_in_pat): New.
1560
1561 2007-04-20  Richard Henderson  <rth@redhat.com>
1562
1563         PR target/31628
1564         * config/i386/i386.c (type_has_variadic_args_p): Look for any
1565         TREE_LIST with a void_type_node value, not void_list_node exactly.
1566
1567 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
1568
1569         * doc/standards.texi: Re-arrange into language-specific
1570         subsections. Add a C++ section, documenting which standards we
1571         support.
1572
1573 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
1574
1575         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
1576         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
1577
1578 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
1579
1580         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
1581         ecrti.o and crtbegin.o.
1582         (LIB_DEFAULT_SPEC): Include -lc.
1583         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
1584
1585 2007-04-20  Richard Henderson  <rth@redhat.com>
1586
1587         PR target/28623
1588         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
1589         argument; update all callers.
1590         (get_unaligned_offset): New.
1591         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
1592         get_unaligned_address, just pass on the address directly.
1593         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
1594         the subreg in the helper patterns.
1595         (unaligned_extendqidi_le): Use get_unaligned_offset.
1596         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
1597         (unaligned_extendhidi_be): Likewise.
1598         (unaligned_extendhidi): Tidy.
1599         * config/alpha/alpha-protos.h: Update.
1600
1601 2007-04-20  Richard Henderson  <rth@redhat.com>
1602
1603         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
1604         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
1605         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
1606         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
1607         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
1608         (CPP_SPEC): Don't include %(cpp_subtarget).
1609         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
1610         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
1611         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
1612
1613 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
1614
1615         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
1616         for __builtin_ia32_cmpordss.
1617
1618         PR tree-optimization/31632
1619         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
1620         and arg1 for optimizations of comparison against min/max values.
1621         Fold arg0 to arg1's type for optimizations of comparison against
1622         min+1 and max-1 values.
1623
1624 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
1625
1626         * reload.c (combine_reloads): When trying to use a dying register,
1627         check whether it's uninitialized and don't use if so.
1628
1629 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
1630
1631         * fold-const.c: Remove prototypes for native_encode_expr and
1632         native_interpret_expr.
1633         (native_encode_expr): Make non-static.
1634         (native_interpret_expr): Likewise.
1635         * tree.h: Add prototypes for the above.
1636
1637 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
1638
1639         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
1640         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
1641         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
1642         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
1643         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
1644         Add length attributes.
1645
1646 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
1647
1648         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
1649         not that it is 1.
1650
1651         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
1652         __STDC_WANT_DEC_FP__.
1653
1654 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
1655
1656         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
1657         for long double compatibility.
1658         * configure: Regenerate.
1659
1660 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
1661
1662         PR rtl-optimization/29841
1663         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
1664         trap instructions.
1665         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
1666         that may cause control flow transfer from being moved.
1667
1668 2007-04-18  Jan Hubicka  <jh@suse.cz>
1669
1670         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
1671         types.
1672
1673 2007-04-18  Eric Christopher  <echristo@apple.com>
1674
1675         * config/rs6000/darwin.md (load_macho_picbase): Use link register
1676         only. Update operands.
1677         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
1678         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
1679         link register to pic register.
1680
1681 2007-04-18  Dirk Mueller  <dmueller@suse.de>
1682
1683         PR diagnostic/31227
1684         * tree-vrp.c (search_for_addr_array): New.
1685         (check_array_bounds): Suppress warning about
1686         address taken of array refs if its not de-referenced.
1687
1688 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
1689
1690         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
1691         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
1692
1693         * tree-vectorizer.h (NITERS_KNOWN_P): New.
1694         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
1695         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
1696
1697         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
1698         dump print.
1699         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
1700         print message.
1701         (vect_analyze_scalar_cycles): Fix indentation.
1702         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
1703         (vect_mark_relevant): Include phis in relevance analysis.
1704
1705         * tree-vect-transform.c (vect_transform_loop): Add an assert.
1706
1707 2007-04-18  Anatoly Sokolov <aesok@post.ru>
1708
1709         * config/avr/avr.c (ptrreg_to_str): Replace error() with
1710         output_operand_lossage().
1711
1712 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
1713
1714         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
1715         the unused code for reduction without adjust-in-epilog to simplify the
1716         function.
1717
1718 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
1719
1720         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
1721         (S390_TDC_NEGATIVE_ZERO): New constant.
1722         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
1723         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
1724         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
1725         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
1726         (S390_TDC_POSITIVE_INFINITY): New constant.
1727         (S390_TDC_NEGATIVE_INFINITY): New constant.
1728         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
1729         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
1730         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
1731         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
1732         (S390_TDC_INFINITY): New constant.
1733         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
1734         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
1735         optimization for UNSPEC_CCZ_TO_INT.
1736         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
1737         ("*ccz_to_int"): New insn.
1738         ("isinf<mode>2"): New insn.
1739         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
1740         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
1741         (UNSPEC_CCZ_TO_INT): New constant.
1742
1743 2007-04-18  Richard Guenther  <rguenther@suse.de>
1744
1745         PR tree-optimization/19431
1746         PR tree-optimization/21463
1747         * tree-pass.h (pass_phiprop): Declare.
1748         * passes.c (init_optimization_passes): New phiprop pass.
1749         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
1750         (phivn_valid_p): New helper function.
1751         (phiprop_insert_phi): Likewise.
1752         (propagate_with_phi): Likewise.
1753         (tree_ssa_phiprop): New propagator propagating loads
1754         through phi nodes if profitable.
1755
1756 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
1757
1758         * tree-vect-analyze.c (process_use): New function.
1759         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
1760         Check phis in all bbs.
1761         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
1762         assert.
1763
1764 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
1765
1766         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
1767         we use REG_EQUAL.
1768
1769 2007-04-17  Anatoly Sokolov <aesok@post.ru>
1770
1771         PR target/30483
1772         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
1773         error().
1774
1775 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
1776
1777         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
1778         on "0".
1779         (sse_vmmulv4sf3): Likewise.
1780         (sse2_vmaddv2df3): Likewise.
1781         (sse2_vmmulv2df3): Likewise.
1782
1783 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
1784
1785         PR rtl-optimization/31360
1786         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
1787         (target_reg_cost): New.
1788         (init_set_costs): Initialize target_reg_cost.  Add comments
1789         regarding the rationale of the costs.
1790         (global_cost_for_size): Renamed to...
1791         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
1792         of register pressure.
1793         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
1794         estimate_reg_pressure_cost.  Add number of ivs.
1795         (determine_set_costs): Dump target_reg_cost.
1796         * loop-invariant.c (gain_for_invariant):  Use
1797         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
1798         (best_gain_for_invariant, find_invariants_to_move): Remove
1799         n_inv_uses.
1800         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
1801         (target_reg_cost): Declare.
1802         (global_cost_for_size): Declaration removed.
1803         (estimate_reg_pressure_cost): Declare.
1804
1805 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
1806
1807         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
1808         regnos into even/odd register pairs.
1809         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
1810         TDmode similar to the other floating point modes.
1811         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
1812         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
1813         define_expand's.
1814         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
1815         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
1816         (movdd_hardfloat64): Use TARGET_MFPGPR.
1817
1818 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
1819
1820         * reload1.c (delete_output_reload): Don't count output in n_inherited.
1821
1822         Revert
1823         2005-01-05  Richard Henderson  <rth@redhat.com>
1824         PR rtl-opt/10692
1825         * reload1.c (do_input_reload): Restrict the optimization deleteing
1826         a previous output reload to RELOAD_FOR_INPUT.
1827
1828 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
1829
1830         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
1831         induc_vec_info_type.
1832         (vectorizable_induction): New function declaration.
1833         * tree-vect-transform.c (get_initial_def_for_induction): No need to
1834         check if already vectorized.  Find first place in BB where new stmts
1835         can be inserted.  Takes only one argument.
1836         (vectorizable_induction): New function.
1837         (vect_transform_stmt): Add case for induc_vec_info_type to call
1838         vectorizable_induction.
1839         (vect_transform_loop): Consider phis for vectorization.
1840         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
1841         condition.
1842         (analyze_operations): Call vectorizable_induction when analyzing phis.
1843         Fix comment.
1844         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
1845         (vect_mark_relevant): Include phis in relevance analysis.
1846         (vect_mark_stmts_to_be_vectorize): Likewise.
1847         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
1848
1849 2007-04-16  Lawrence Crowl  <crowl@google.com>
1850
1851         * doc/invoke.texi (Debugging Options): Add documentation for the
1852         -femit-struct-debug options -femit-struct-debug-baseonly,
1853         -femit-struct-debug-reduced, and
1854         -femit-struct-debug-detailed[=...].
1855
1856         * c-opts.c (c_common_handle_option): Add
1857         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
1858         and OPT_femit_struct_debug_detailed_.
1859         * c.opt: Add specifications for
1860         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
1861         and -femit-struct-debug-detailed[=...].
1862         * opts.c (set_struct_debug_option): Parse the
1863         -femit-struct-debug-... options.
1864         * opts.c (matches_main_base, main_input_basename,
1865         main_input_baselength, base_of_path, matches_main_base): Add
1866         variables and functions to compare header base name to compilation
1867         unit base name.
1868         * opts.c (should_emit_struct_debug): Add to determine to emit a
1869         structure based on the option.
1870         (dump_struct_debug) Also disabled function to debug this
1871         function.
1872         * opts.c (handle_options): Save the base name of the
1873         compilation unit.
1874
1875         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
1876         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
1877         This hook indicates if a type is generic.  Set it by default
1878         to "never generic".
1879         * langhooks.h (struct lang_hooks_for_types): Add a new hook
1880         to determine if a struct type is generic or not.
1881         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
1882         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
1883         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
1884         with live C++ hook.
1885
1886         * flags.h (enum debug_info_usage): Add an enumeration to describe
1887         a program's use of a structure type.
1888         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
1889         to indicate the program's usage of the type.  Filter structs based
1890         on the -femit-struct-debug-... specification.
1891         (gen_type_die): Split into two routines, gen_type_die and
1892         gen_type_die_with_usage.  gen_type_die is now a wrapper
1893         that assumes direct usage.
1894         (gen_type_die_with_usage): Replace calls to gen_type_die
1895         with gen_type_die_with_usage adding the program usage of
1896         the referenced type.
1897         (dwarf2out_imported_module_or_decl): Suppress struct debug
1898         information using should_emit_struct_debug when appropriate.
1899
1900 2007-04-16  Ian Lance Taylor  <iant@google.com>
1901
1902         PR tree-optimization/31522
1903         * tree-vrp.c (vr_phi_edge_counts): New static variable.
1904         (vrp_initialize): Allocate vr_phi_edge_counts.
1905         (vrp_visit_phi_node): Don't push to infinity if we saw a new
1906         executable edge.  Drop test for all constants.
1907         (vrp_finalize): Free vrp_phi_edge_counts.
1908
1909         * doc/cpp.texi (Common Predefined Macros): Clarify description of
1910         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
1911
1912         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
1913         predecessors at head rather than tail.
1914
1915 2007-04-16  Matthias Klose  <doko@debian.org>
1916
1917         * config/alpha/linux.h (CPP_SPEC): Define.
1918         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
1919
1920 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
1921
1922         * function.h: Remove sequence_stack extern declaration.
1923
1924 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
1925
1926         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
1927         TARGET_FIDOA.
1928         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
1929         defined.
1930
1931 2007-04-16  Anatoly Sokolov <aesok@post.ru>
1932
1933         * config/avr/avr.c (avr_arch_types): Rearranging  array.
1934         (enum avr_arch): Add.
1935         (avr_mcu_types): Use avr_arch enumeration constants instead of
1936         numbers.
1937         * config/avr/avr.h (LINK_SPEC): Simplify.
1938
1939 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
1940
1941         * config/m68k/m68k.c (m68k_libcall_value,
1942         m68k_function_value): Use macros for register names more.
1943
1944         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
1945         instead.
1946         (M68K_REGNAME): Use A6_REG.
1947         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
1948
1949 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1950
1951         PR middle-end/28071
1952         * sched-int.h (struct deps): Split field 'pending_lists_length' into
1953         'pending_read_list_length' and 'pending_write_list_length'.  Update
1954         comment.
1955         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
1956         to handle two length counters instead of one.  Update all uses.
1957         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
1958         two length counters instead of one.
1959         * sched-rgn.c (propagate_deps): Update to handle two length counters
1960         instead of one.
1961
1962 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
1963
1964         PR target/31582
1965         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
1966         copy of source, pass it to ix86_expand_vector_set and return
1967         it as target.
1968
1969 2007-04-16  David Ung  <davidu@mips.com>
1970             Joseph Myers  <joseph@codesourcery.com>
1971
1972         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
1973         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
1974         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
1975         Add 74K processor information.
1976         * config/mips/mips.md: Include 74k.md.
1977         (cpu): Add 74kc,74kf,74kx.
1978         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
1979         * config/mips/74k.md: New.
1980         * doc/invoke.texi (MIPS Options): Document 74K support.
1981
1982 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
1983
1984         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
1985         vectorizable_* functions.
1986         * tree-vect-transform.c (vectorizable_call): Add check for
1987         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
1988         (vectorizable_store): likewise.
1989         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
1990         Add comments.
1991         (vectorizable_operation, vectorizable_type_demotion): Likewise.
1992         (vectorizable_type_promotion, vectorizable_load): Likewise.
1993         (vectorizable_live_operation, vectorizable_condition): Likewise.
1994         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
1995         STMT_VINFO_LIVE_P.
1996         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
1997
1998 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1999
2000         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
2001         register numbers more.
2002         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
2003         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
2004         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
2005         FUNCTION_VALUE_REGNO_P): Likewise.
2006         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
2007         STATIC_CHAIN_REGNUM): Likewise.
2008         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
2009         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
2010         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
2011         * config/m68k/m68k.md (FP_REG): New.
2012
2013 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
2014
2015         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
2016         alignment on fido.
2017
2018 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
2019
2020         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
2021         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
2022         comment typos.
2023
2024 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
2025
2026         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
2027         cold loops.
2028
2029 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2030
2031         PR c/31520
2032         * c-decl.c (finish_decl): Grab the type of the decl after the call
2033         to store_init_value.
2034
2035 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
2036
2037         * common.opt (fforward-propagate): Fix "Optimization" annotation.
2038
2039 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
2040
2041         PR c++/25874
2042         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
2043         post dominators and cleanup cfg before returning.
2044
2045 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
2046
2047         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
2048         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
2049
2050 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
2051
2052         * config.gcc: Recognize fido.
2053         * config/m68k/m68k-devices.def (fidoa): New.
2054         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
2055         __mfido__.
2056         (FL_FIDOA, TARGET_FIDOA): New.
2057         * config/m68k/m68k.opt (mfidoa): New.
2058
2059 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2060
2061         PR middle-end/31322
2062         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
2063         when a personality function is used.
2064
2065 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
2066
2067         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
2068
2069 2007-04-13  Mike Stump  <mrs@apple.com>
2070
2071         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
2072         we can...
2073         * config/darwin.opt (fapple-kext): Make C++ only.
2074         * config/darwin.c (darwin_override_options): Remove code to ensure
2075         -fapple-kext is given for C++ only.
2076
2077 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
2078
2079         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
2080         * config/mips/mips.c (override_options): Call
2081         SUBTARGET_OVERRIDE_OPTIONS, if defined.
2082
2083 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
2084
2085         * config/i386/i386.opt (msvr3-shlib): Removed.
2086
2087         * doc/invoke.texi: Remove -msvr3-shlib.
2088
2089 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
2090
2091         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
2092         with "popcnt" instruction.
2093
2094 2007-04-13  Richard Guenther  <rguenther@suse.de>
2095
2096         PR tree-optimization/21258
2097         * tree-vrp.c (compare_case_labels): New helper.
2098         (find_switch_asserts): New function.
2099         (find_assert_locations): Call it for SWITCH_EXPRs.
2100
2101 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
2102
2103         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
2104         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
2105         check is now implied in X87_FLOAT_MODE_P.
2106         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
2107         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
2108         (fix_trunc<mode>_i386_fisttp): Ditto.
2109         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
2110         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
2111         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
2112         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
2113         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
2114         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
2115         (unnamed_splitters): Ditto.
2116         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
2117         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
2118         FIRST_SSE_REG for local functions when SSE math is enabled or
2119         for functions with sseregparm attribute.
2120         (standard_80387_constant_p): Return -1 if mode is not
2121         X87_FLOAT_MODE_P.
2122         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
2123         (ix86_expand_compare): Ditto.
2124         (ix86_expand_carry_flag_compare): Ditto.
2125         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
2126         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
2127         DECIMAL_FLOAT_MODE_P.
2128         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
2129         of SCALAR_FLOAT_MODE_P.
2130         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
2131         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
2132         checks before FLOAT_MODE_P.
2133         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
2134         before FLOAT_MODE_P.
2135         [DIV]: Ditto.
2136         [NEG]: Ditto.
2137         [ABS]: Ditto.
2138         [SQRT]: Ditto.
2139         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
2140
2141 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
2142             Charles Wilson  <libtool@cwilson.fastmail.fm>
2143
2144         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
2145         (libgcc.mvars): Don't depend on them.
2146         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
2147         * exec-tool.in: New.
2148
2149 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
2150
2151         * doc/invoke.text (--help): Document --help=common.
2152
2153 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
2154
2155         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
2156
2157 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2158
2159         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
2160         * genemit.c (main): Emit #include "integrate.h".
2161         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
2162         (LOADGP_RTP): New mips_loadgp_style.
2163         * config/mips/mips.h: Include config/vxworks-dummy.h.
2164         (TARGET_RTP_PIC): New macro.
2165         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
2166         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
2167         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
2168         for TARGET_RTP_PIC.
2169         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
2170         -mvxworks-pic when using -mrtp and a PIC option.
2171         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
2172         for RTP PIC.
2173         (mips_symbolic_constant_p, mips_symbolic_address_p)
2174         (mips_symbol_insns): Handle SYMBOL_HALF.
2175         (override_options): Warn about -G and -mrtp being used together.
2176         Initialize mips_lo_relocs[SYMBOL_HALF].
2177         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
2178         (mips_emit_loadgp): Handle LOADGP_RTP.
2179         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
2180         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
2181         (tablejump): Handle function-relative case table entries if
2182         TARGET_RTP_PIC.
2183         * config/mips/predicates.md (symbol_ref_operand): New predicate.
2184
2185 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2186
2187         * config/mips/mips.md (load_call<mode>): Allow any general register.
2188         destination.
2189         (sibcall_value_internal, sibcall_value_multiple_internal)
2190         (call_value_internal, call_value_split, call_value_multiple_internal)
2191         (call_value_multiple_split): Remove constraints from operand 0.
2192
2193 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2194
2195         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
2196         rather than loadgp_noshared.
2197         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
2198         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
2199         gen_loadgp.
2200         * config/mips/mips.md (loadgp): Rename to...
2201         (loadgp_newabi): ...this.
2202         (loadgp_noshared): Rename to...
2203         (loadgp_absolute): ...this.
2204
2205 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2206
2207         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
2208         false for locally-binding symbols.
2209         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
2210
2211 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2212
2213         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
2214         (SYMBOL_GOT_PAGE_OFST): ...this.
2215         (SYMBOL_GOT_GLOBAL): Rename to...
2216         (SYMBOL_GOT_DISP): ...this.
2217         (SYMBOL_GOTOFF_GLOBAL): Rename to...
2218         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
2219         * config/mips/mips.c (mips_global_symbol_p): New function.
2220         (mips_symbol_binds_local_p): Likewise.
2221         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
2222         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
2223         and mips_symbol_binds_local_p.
2224         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
2225         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
2226         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
2227         SYMBOL_GOTOFF_DISP.
2228         (mips_ok_for_lazy_binding_p): New function.
2229         (mips_load_call_address, mips_expand_call): Use it.
2230         (mips_dangerous_for_la25_p): Likewise.
2231         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
2232         (*got_disp<mode>): Use got_disp_operand instead of
2233         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
2234         SYMBOL_GOTOFF_GLOBAL.
2235         (*got_page<mode>): Use got_page_ofst_operand instead of
2236         local_got_operand.
2237         * config/mips/predicates.md (const_call_insn_operand): Use
2238         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
2239         (global_got_operand): Rename to...
2240         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
2241         SYMBOL_GOT_GLOBAL.
2242         (local_got_operand): Rename to...
2243         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
2244         of SYMBOL_GOT_LOCAL.
2245
2246 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2247
2248         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
2249         TARGET_CALL_CLOBBERED_GP.
2250         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
2251         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
2252         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
2253         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
2254         of TARGET_ABICALLS && !TARGET_NEWABI.
2255         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
2256         * config/mips/mips.c (mips_load_call_address): Check
2257         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
2258         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
2259         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
2260         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
2261         TARGET_ABICALLS && TARGET_NEWABI.
2262         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
2263         TARGET_ABICALLS.
2264         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
2265         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
2266         TARGET_ABICALLS && TARGET_NEWABI.
2267         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
2268         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
2269         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
2270         whether indirect calls must use $25.
2271         (mips_extra_live_on_entry): Check TARGET_GOT instead of
2272         TARGET_ABICALLS.
2273         * config/mips/mips.md (jal_macro): Check flag_pic and
2274         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
2275         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
2276         instead of TARGET_ABICALLS.
2277         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
2278         TARGET_ABICALLS && TARGET_OLDABI.
2279         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
2280         (sibcall): In the comment above the define_insn, mention
2281         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
2282         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
2283         instead of TARGET_ABICALLS.
2284
2285 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2286
2287         * doc/md.texi (Blackfin family constraints): Document PA and PB.
2288         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
2289         (MACFLAGS_MATCH_P): New macro.
2290         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
2291         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
2292         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
2293         the other MACFLAG constants.
2294         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
2295         (flag_machi): Tighten constraints.  Renumber some of the operands.
2296         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
2297         output template.
2298         (flag_machi_parts_acconly): New pattern.
2299         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
2300         used.
2301         (flag_macinit1hi): Tighten constraints.
2302         (flag_mul_macv2hi_parts_acconly): New pattern.
2303
2304         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
2305         Use a more efficient implementation.
2306         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
2307         inline sequences when not optimizing for size.
2308
2309         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
2310         movhi_high2low): Delete, merge functionality into...
2311         (packv2hi): ... this pattern.
2312
2313         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
2314         * config/bfin/bfin.opt (msim): New option.
2315         (mcpu=): New option.
2316         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
2317         (bfin_cpu_t): Typedef of enum bfin_cpu.
2318         (bfin_cpu_type): New declaration.
2319         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
2320         -msim and -mcpu= options.
2321         (LIB_SPEC): Likewise.
2322         * config/bfin/bfin.c (bfin_cpu_type): Define.
2323         (bfin_handle_option): Handle -mcpu= option.
2324         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
2325         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
2326         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
2327
2328 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2329
2330         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
2331         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
2332         (powerpc-wrs-vxworksae): Use ${tm_file}.
2333         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
2334         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
2335         * config/i386/vx-common.h: New file.
2336
2337 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
2338
2339         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
2340         of crt0.o%s.
2341
2342 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
2343
2344         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
2345         ldxtr.
2346
2347 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
2348
2349         PR c++/31078
2350         PR c++/31103
2351         * c-common.c (c_build_qualified_type): Set canonical type
2352         appropriately.
2353
2354 2007-04-12  Richard Guenther  <rguenther@suse.de>
2355
2356         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
2357         lower bound and element size if lower bound is not zero
2358         or either of the ARRAY_REF operands is set.
2359
2360 2007-04-12  Richard Guenther  <rguenther@suse.de>
2361
2362         PR tree-optimization/24689
2363         PR tree-optimization/31307
2364         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
2365         indices by value.
2366         * gimplify.c (canonicalize_addr_expr): To be consistent with
2367         gimplify_compound_lval only set operands two and three of
2368         ARRAY_REFs if they are not gimple_min_invariant.  This makes
2369         it never at this place.
2370         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
2371
2372 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2373
2374         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
2375         null before emitting a .nsubspa directive.
2376
2377 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
2378
2379         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
2380         need_to_partition_p if there are no memory statements in the
2381         function.
2382
2383 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
2384
2385         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
2386         (gcd_of_steps_may_divide_p): New function.
2387         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
2388
2389 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2390
2391         * reload.c (find_reloads_toplev, find_reloads_address,
2392         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
2393         not a pointer equality test, to decide if we need to call
2394         push_reg_equiv_alt_mem.
2395
2396 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
2397
2398         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
2399         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
2400         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
2401
2402 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
2403
2404         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
2405         vector to be positive.
2406
2407 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
2408
2409         PR 30735
2410         PR 31090
2411         * doc/invoke.texi: Document --params max-aliased-vops and
2412         avg-aliased-vops.
2413         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
2414         debug_memory_partitions): Move to tree-flow.h
2415         * params.h (AVG_ALIASED_VOPS): Define.
2416         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
2417         users.
2418         (mp_info_t): Likewise.
2419         (get_mem_sym_stats_for): New.
2420         (set_memory_partition): Move from tree-flow-inline.h.
2421         (mark_non_addressable): Only clear the set of symbols for the
2422         partition if it exists.
2423         (dump_memory_partitions): Move from tree-ssa-operands.c
2424         (debug_memory_partitions): Likewise.
2425         (need_to_partition_p): New.
2426         (dump_mem_ref_stats): New.
2427         (debug_mem_ref_stats): New.
2428         (dump_mem_sym_stats): New.
2429         (debug_mem_sym_stats): New.
2430         (update_mem_sym_stats_from_stmt): New.
2431         (compare_mp_info_entries): New.
2432         (mp_info_cmp): Call it.
2433         (sort_mp_info): Change argument to a list of mem_sym_stats_t
2434         objects.
2435         (get_mpt_for): Move from tree-ssa-operands.c.
2436         (find_partition_for): New.
2437         (create_partition_for): Remove.
2438         (estimate_vop_reduction): New.
2439         (update_reference_counts): New.
2440         (build_mp_info): New.
2441         (compute_memory_partitions): Refactor.
2442         Document new heuristic.
2443         Call build_mp_info, update_reference_counts,
2444         find_partition_for and estimate_vop_reduction.
2445         (compute_may_aliases): Populate virtual operands before
2446         calling debugging dumps.
2447         (delete_mem_sym_stats): New.
2448         (delete_mem_ref_stats): New.
2449         (init_mem_ref_stats): New.
2450         (init_alias_info): Call it.
2451         (maybe_create_global_var): Remove alias_info argument.
2452         Get number of call sites and number of pure/const call sites
2453         from gimple_mem_ref_stats().
2454         (dump_alias_info): Call dump_memory_partitions first.
2455         (dump_points_to_info_for): Show how many times a pointer has
2456         been dereferenced.
2457         * opts.c (decode_options): For -O2 set --param
2458         max-aliased-vops to 500.
2459         For -O3 set --param max-aliased-vops to 1000 and --param
2460         avg-aliased-vops to 3.
2461         * fortran/options.c (gfc_init_options): Remove assignment to
2462         MAX_ALIASED_VOPS.
2463         * tree-flow-inline.h (gimple_mem_ref_stats): New.
2464         * tree-dfa.c (dump_variable): Dump memory reference
2465         statistics.
2466         Dump NO_ALIAS* settings.
2467         (referenced_var_lookup): Tidy.
2468         (mem_sym_stats): New.
2469         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
2470         and ORIG are different SSA names for a memory partition.
2471         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
2472         * tree-flow.h (struct mem_sym_stats_d): Define.
2473         (mem_sym_stats_t): Define.
2474         (struct mem_ref_stats_d): Define.
2475         (struct gimple_df): Add field mem_ref_stats.
2476         (enum noalias_state): Define.
2477         (struct var_ann_d): Add bitfield noalias_state.
2478         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
2479         debug_mem_ref_stats, debug_memory_partitions,
2480         debug_mem_sym_stats): Declare.
2481         * tree-ssa-structalias.c (update_alias_info): Update call
2482         sites, pure/const call sites and asm sites in structure
2483         returned by gimple_mem_ref_stats.
2484         Remove local variable IS_POTENTIAL_DEREF.
2485         Increase NUM_DEREFS if the memory expression is a potential
2486         dereference.
2487         Call update_mem_sym_stats_from_stmt.
2488         If the memory references memory, call
2489         update_mem_sym_stats_from_stmt for all the direct memory
2490         symbol references found.
2491         (intra_create_variable_infos): Set noalias_state field for
2492         pointer arguments according to the value of
2493         flag_argument_noalias.
2494         * tree-ssa-structalias.h (struct alias_info): Remove fields
2495         num_calls_found and num_pure_const_calls_found.
2496         (update_mem_sym_stats_from_stmt): Declare.
2497         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
2498         Set default value to 100.
2499         (PARAM_AVG_ALIASED_VOPS): Define.
2500
2501 2007-04-11  Richard Guenther  <rguenther@suse.de>
2502
2503         PR middle-end/31530
2504         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
2505         a * -b + c as c - a * b if we honor sign dependent rounding.
2506
2507 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2508
2509         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
2510         bfin_expand_strmov.
2511         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
2512         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
2513         variables.
2514         (initialize_trampoline): Don't use old-style function definition.
2515         (bfin_secondary_reload): Mark IN_P argument as unused.
2516
2517 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
2518
2519         PR tree-optimization/31343
2520         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
2521         (build_polynomial_chrec): Return a scalar when the evolution is zero.
2522         * testsuite/gcc.dg/vect/pr31343.c: New.
2523
2524 2007-04-10  Eric Christopher  <echristo@apple.com>
2525
2526         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
2527         * config/i386/i386.md (*cmpfp0): Use.
2528         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
2529         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
2530         (fix_trunc<mode>_i386_fisttp): Ditto.
2531         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
2532         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
2533         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
2534         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
2535         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
2536         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
2537         (unnamed_splitters): Ditto.
2538         * config/i386/i386.c (output_fix_trunc): Assert that
2539         we're not being passed a TFmode operand.
2540
2541 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
2542
2543         PR tree-optimization/31526
2544         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
2545         n_basic_blocks to find newly added blocks.
2546
2547 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
2548
2549         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
2550         alternative.
2551         (fix_trunc<mode>si_sse): Ditto.
2552         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
2553         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
2554         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
2555         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
2556         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
2557         expander using SSEMODEF mode macro.
2558         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
2559         expander using SSEMODEF mode macro.
2560         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
2561         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
2562         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
2563         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
2564         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
2565         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
2566         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
2567         Macroize insn using X87MODEF mode macro.
2568
2569 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
2570
2571         * config/i386/sse.md (sse2_pinsrw): Removed.
2572         (sse2_pextrw): Renamed to ...
2573         (*sse2_pextrw): This.
2574
2575 2007-04-09  Jan Hubicka  <jh@suse.cz>
2576
2577         PR target/27869
2578         * config/i386/sse.md
2579         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
2580         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
2581         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
2582         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
2583
2584 2007-04-09  Jan Hubicka  <jh@suse.cz>
2585
2586         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
2587         multiple fields of union.
2588
2589 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
2590
2591         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
2592         (create_preheaders): Check that loops are available.
2593         (fix_loop_structure): Clean up, improve comments.
2594         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
2595         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
2596         state flags.
2597         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
2598         * predict.c (tree_estimate_probability): Do not call
2599         calculate_dominance_info.  Call create_preheaders.
2600         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
2601         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
2602         flags.
2603         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
2604         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
2605         * tree-cfg.c (tree_split_edge): Make an assert more precise.
2606         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
2607         arguments.
2608
2609 2007-04-08  Jan Hubicka  <jh@suse.cz>
2610
2611         * tree.h (maybe_fold_offset_to_component_ref): Declare.
2612         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
2613         * fold-const.c (fold_unary): Use it.
2614
2615 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2616
2617         * varasm.c (assemble_variable): Remove call to
2618         lang_hooks.decls.prepare_assemble_variable.
2619         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
2620         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
2621         * langhooks.h (lang_hooks_for_decls): Remove
2622         prepare_assemble_variable.
2623
2624 2007-04-08  Mike Stump  <mrs@apple.com>
2625
2626         * config/i386/i386.c: Use inc/dec on Core2.
2627
2628 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
2629
2630         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
2631         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
2632         lhd_tree_inlining_end_inlining): Remove.
2633         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
2634         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
2635         end_inlining hooks.
2636         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
2637         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
2638         lhd_tree_inlining_end_inlining): Remove prototypes.
2639         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
2640         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
2641         LANG_HOOKS_TREE_INLINING_START_INLINING,
2642         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
2643
2644         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
2645         not set it.
2646
2647 2007-04-08  Anatoly Sokolov <aesok@post.ru>
2648
2649         PR target/29932
2650         * config/avr/predicates.md (io_address_operand): Delete predicate.
2651         (low_io_address_operand): Don't use 'mode' argument.
2652         (higth_io_address_operand): Rename ...
2653         (high_io_address_operand): ... to this. Don't use 'mode' argument.
2654         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
2655         for above change.
2656
2657 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
2658
2659         Revert change removing staticp.
2660
2661 2007-04-07  Anatoly Sokolov <aesok@post.ru>
2662
2663         PR target/30289
2664         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
2665         earlyclobber.
2666
2667 2007-04-07  Bruce Korb  <bkorb@gnu.org>
2668
2669         * c.opt: Add -Wformat-contains-nul.
2670         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
2671           -Wformat setting.
2672         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
2673         the NUL byte warning.
2674
2675 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
2676
2677         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
2678
2679 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
2680
2681         * tree.c (staticp): No longer use staticp langhook.
2682         * langhooks.c (lhd_staticp): Removed.
2683         * langhooks.h (struct lang_hooks): Remove staticp.
2684         * c-common.c (c_staticp): Remove.
2685         * c-common.h (c_staticp): Ditto.
2686         * langhooks-defs.h (lhd_staticp): Ditto.
2687         (LHD_HOOKS_STATICP): Ditto
2688         * tree.h (gcc_assert_lowered): New macro.
2689
2690 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
2691
2692         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
2693         argument "reliable".
2694         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
2695         Add argument "reliable".  Propagate it through calls.
2696         (infer_loop_bounds_from_undefined):  Derive number of iterations
2697         estimates from references in blocks that do not dominate loop latch.
2698         (gcov_type_to_double_int): New function.
2699         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
2700         and expected_loop_iterations_unbounded.
2701         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
2702         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
2703         * tree-data-ref.c (estimated_loop_iterations): Export.
2704         (get_references_in_stmt): Fix -- do not return addresses of local
2705         objects.
2706         * cfgloop.h (expected_loop_iterations_unbounded,
2707         estimated_loop_iterations): Declare.
2708
2709 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
2710
2711         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
2712
2713 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
2714
2715         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
2716         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
2717         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
2718         Use output_387_reg_move().
2719         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
2720         expander using X87MODEF12 mode macro.
2721         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
2722         choosing register preferences.  Use output_387_reg_move().
2723         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
2724         instead of "x".  Use output_387_reg_move().
2725         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
2726         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
2727         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
2728         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
2729         Use output_387_reg_move().
2730         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
2731         mode macro.
2732         (*truncxf?f_i387 splitter): Ditto.
2733
2734 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
2735
2736         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
2737         LANG_HOOKS_SAFE_FROM_P.
2738         * expr.c (safe_from_p): Remove langhook call.
2739         * langhooks.h (lang_hooks): Remove safe_from_p.
2740         (lhd_safe_from_p): Remove prototype.
2741         * langhooks.c (lhd_safe_from_p): Remove.
2742
2743 2007-04-06  Jan Hubicka  <jh@suse.cz>
2744
2745         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
2746         functions.
2747
2748 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
2749
2750         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
2751         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
2752         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
2753         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
2754         alternative.
2755         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
2756         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
2757
2758 2007-04-05  Richard Henderson  <rth@redhat.com>
2759
2760         * config/alpha/alpha.c (print_operand) [+]: Remove.
2761         (alpha_end_function): Print nop if call at end of function.
2762         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
2763         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
2764         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
2765         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
2766         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
2767         the call pattern. Update peepholes to match.
2768
2769 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
2770
2771         * doc/extend.texi (Other Builtins): Add decimal float variants
2772         of signbit.
2773         * builtins.def: Ditto.
2774         * builtins.c (expand_builtin): Ditto.
2775
2776 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
2777             H.J. Lu  <hongjiu.lu@intel.com>
2778
2779         PR target/31478
2780         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
2781         of V8HImode when calling ix86_binary_operator_ok.
2782         (sse2_pmaddwd): Call ix86_binary_operator_ok.
2783         (sdot_prodv8hi): Operands 1 and 2 must be register.
2784
2785 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2786
2787         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
2788         initialize align to silence bogus warning.
2789
2790 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2791
2792         PR middle-end/22156
2793         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
2794         all_no_warning.
2795         (struct sra_walk_fns): Remove use_all parameter from use.
2796         (sra_hash_tree): Handle BIT_FIELD_REFs.
2797         (sra_elt_hash): Don't hash bitfld blocks.
2798         (sra_elt_eq): Skip them in parent compares as well.  Handle
2799         BIT_FIELD_REFs.
2800         (sra_walk_expr): Don't maintain or pass down use_all_p.
2801         (scan_use): Remove use_all parameter.
2802         (scalarize_use): Likewise.  Re-expand assignment to
2803         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
2804         output, and re-scalarize after output.  Don't mark anything
2805         for no warning.
2806         (scalarize_ldst): Adjust.
2807         (scalarize_walk_gimple_modify_statement): Likewise.
2808         (build_element_name_1): Handle BIT_FIELD_REFs.
2809         (instantiate_element): Don't warn for any element whose parent
2810         is used as a whole.
2811         (instantiate_missing_elements_1): Return the sra_elt.
2812         (canon_type_for_field): New.
2813         (try_instantiate_multiple_fields): New.
2814         (instantiate_missing_elemnts): Use them.
2815         (mark_no_warning): Removed.
2816         (generate_one_element_ref): Handle BIT_FIELD_REFs.
2817         (REPLDUP, sra_build_elt_assignment): New.
2818         (generate_copy_inout): Use them.
2819         (generate_element_copy): Likewise.  Handle bitfld differences.
2820         (generate_element_zero): Don't recurse for blocks.  Use
2821         sra_build_elt_assignment.
2822         (generate_one_element_int): Take elt instead of var.  Use
2823         sra_build_elt_assignment.
2824         (generate_element_init_1): Adjust.
2825         (scalarize_use, scalarize_copy): Use REPLDUP.
2826         (scalarize_ldst): Move assert before dereference.
2827         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
2828
2829 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
2830
2831         * regmove.c: Fix unused variable warnings due to previous commit.
2832
2833 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
2834
2835         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
2836         (regmove_bb_head): Remove.
2837         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
2838         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
2839         problems with fixup_match_1.
2840         Don't initialize/free regmove_bb_head.
2841
2842         (reg_is_remote_constant_p): If an insn is in the same basic block
2843         but not before INSN, consider it remote, too.
2844
2845 2007-04-05  Anatoly Sokolov <aesok@post.ru>
2846
2847         PR target/25448
2848         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
2849         DECL_ASSEMBLER_NAME, not the DECL_NAME.
2850
2851 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
2852
2853         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
2854         (CONDITIONAL_REGISTER_USAGE): Likewise.
2855
2856 2007-04-04  Richard Henderson  <rth@redhat.com>
2857
2858         * config/alpha/lib1funcs.asm: Remove unused file.
2859
2860 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2861
2862         PR other/31356
2863         * opts.c (print_specific_help): Fix --help=<language>
2864         header line.
2865         (common_handle_option): Support --help=common.
2866
2867 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2868
2869         PR other/31353
2870         * gcc.c (main): Do not run the linker if
2871         print_subprocess_help indicates that it shouldn't be
2872         run.
2873
2874 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2875
2876         PR doc/31355
2877         * doc/invoke.texi (--help=): Document <languages> value, fix
2878         formatting in tables of values.
2879
2880 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
2881
2882         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
2883         dllimport attribute of virtual methods.
2884
2885 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
2886
2887         * config/score/crti.asm: Change _bss_start to __bss_start.
2888         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
2889         (OUTGOING_REG_PARM_STACK_SPACE) update.
2890         * config/score/score.opt: add options to make backend support
2891         score5, score5u, score7 and score7d.
2892         * config/score/score.md: Likewise.
2893         * config/score/misc.md: Likewise.
2894         * config/score/mac.md: Likewise.
2895         * doc/invoke.texi: Likewise.
2896         * doc/md.texi: update constraints define.
2897
2898 2007-04-03  Richard Henderson  <rth@redhat.com>
2899
2900         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
2901         an appropriate type, use the mode instead.
2902
2903 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
2904
2905         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
2906         Set the default --with-arch setting to mips2.
2907         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
2908         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2909         (MULTILIB_OSDIRNAMES): Delete.
2910         (MULTILIB_DIRNAMES): Define.
2911         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
2912         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
2913         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
2914         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
2915         VXWORKS_OS_CPP_BUILTINS.
2916         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
2917         (MIPS_DEBUGGING_INFO): Undefine.
2918         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
2919
2920 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
2921
2922         PR middle-end/30704
2923         * fold-const.c (native_encode_real): Encode real.c provided longs
2924         as a series of 32-bit native integers.
2925         (native_interpret_real): Interpret buffer as a series of 32-bit
2926         native integers.
2927
2928 2007-04-03  Richard Guenther  <rguenther@suse.de>
2929
2930         * genpreds.c (write_insn_constraint_len): Write function
2931         optimized for CONSTRAINT_LEN implementation.
2932         (write_tm_preds_h): Output insn_constraint_len inline and
2933         use it for CONSTRAINT_LEN.
2934         (write_insn_preds_c): Don't output insn_constraint_len.
2935         * doc/md.texi (define_register_constraint): Document multi-letter
2936         constraints shall have the same length if they start with the same
2937         letter.
2938
2939 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
2940
2941         PR target/31175
2942         * config/i386/i386.md (isinf<mode>2): Expand only when
2943         TARGET_C99_FUNCTIONS is set.
2944
2945 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
2946
2947         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
2948         (x86_64-*-linux*): Ditto.
2949         * config/i386/i386.opt (mpc): New option.
2950         * config/i386/i386.c (overrride_options): Handle
2951         ix87_precision_string.
2952         * config/i386/crtprec.c: New file.
2953         * config/i386/t-crtpc: Ditto.
2954         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
2955         and -mpc80 options.
2956         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
2957         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
2958         crtprec32.o, crtprec64.o and crtprec80.o.
2959
2960         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
2961         and -mpc80 options.
2962         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
2963
2964 2007-04-02  Eric Christopher  <echristo@apple.com>
2965
2966         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
2967         limitations on darwin.
2968
2969 2007-04-02  Anatoly Sokolov <aesok@post.ru>
2970
2971         PR target/31137
2972         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
2973
2974 2007-04-02  Dave Korn  <dave.korn@artimi.com>
2975
2976         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
2977
2978 2007-04-02  Dave Korn  <dave.korn@artimi.com>
2979
2980         * libgcc2.h (exception_descriptor): Don't forward-declare.
2981         (__get_eh_table_language, __get_eh_table_version): Delete
2982         prototypes of long-dead functions.
2983
2984 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
2985
2986         * ebitmap.h: New file
2987         * ebitmap.c: New file
2988         * Makefile.in (ebitmap.o): New target.
2989
2990 2007-04-01  Jan Hubicka  <jh@suse.cz>
2991
2992         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
2993         before very first instruction.
2994
2995 2007-04-01  Jan Hubicka  <jh@suse.cz>
2996
2997         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
2998         waring on 64bit hosts.
2999         * bitmap.h: Fix typo in bitmap_head_def.
3000
3001 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
3002
3003         PR rtl-optimization/31391
3004         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
3005         into a DELETED_LABEL note, and the label is in an empty basic
3006         block, update BB_END as well as BB_HEAD.
3007
3008 2007-04-01  Richard Henderson  <rth@redhat.com>
3009
3010         PR tree-optimization/31169
3011         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
3012         to varying if the range is outside [0,  prec-1].
3013
3014 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
3015
3016         PR target/31388
3017         * config/mips/mips.md (load_const_gp): New insn.
3018         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
3019         the MIPS16 GP pseudo register if no_new_pseudos.
3020         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
3021
3022 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3023
3024         PR target/31364
3025         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
3026         secureplt.
3027         (call_value): Likewise.
3028
3029 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
3030             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3031
3032         PR 14737
3033         * doc/invoke.texi: (optimization options): Reword description
3034         of -ffast-math. Document its primary purpose.
3035
3036 2007-03-31  Richard Guenther  <rguenther@suse.de>
3037
3038         * omp-low.c (splay-tree.h): Include.
3039         (lookup_decl): Replace splay-tree usage by pointer-map.
3040         (maybe_lookup_decl): Likewise.
3041         (new_omp_context): Likewise.
3042         (delete_omp_context): Likewise.
3043         * gimplify.c (splay-tree.h): Include.
3044         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
3045         pointer-map.
3046         (remap_ssa_name): Likewise.
3047         (remap_decl): Likewise.
3048         (remap_type_1): Likewise.
3049         (remap_type): Likewise.
3050         (copy_body_r): Likewise.
3051         (expand_call_inline): Likewise.
3052         (clone_body): Likewise.
3053         (copy_tree_r): Likewise.
3054         (remap_save_expr): Likewise.
3055         (unsave_r): Likewise.
3056         (unsave_expr_now): Likewise.
3057         (tree_function_versioning): Likewise.
3058         (build_duplicate_type): Likewise.
3059         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
3060         (struct copy_body_data): Replace splay-tree by pointer-map.
3061         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
3062         not $(SPLAY_TREE_H).
3063         (gimplify.o): Depend on $(SPLAY_TREE_H).
3064         (omp-low.p): Likewise.
3065
3066 2007-03-31  Anatoly Sokolov <aesok@post.ru>
3067
3068         * config/avr/predicates.md (even_register_operand,
3069         odd_register_operand): New predicates.
3070         * config/avr/avr.md (movw peephole2): New.
3071         (movw_r peephole2): New.
3072
3073 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
3074
3075         * tree.h (get_signed_or_unsigned_type): New.
3076         * fold-const.c (operand_equal_for_comparison_p): Use
3077         get_signed_or_unsigned_type instead of
3078         lang_hooks.types.signed_or_unsigned_type.
3079         * expr.c (store_expr): Ditto.
3080         * langhooks.c (get_signed_or_unsigned_type): New.
3081         (lhd_signed_or_unsigned_type): New.
3082         * langhooks.h (lhd_signed_or_unsigned_type): New.
3083         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
3084
3085 2007-03-30  Richard Henderson  <rth@redhat.com>
3086
3087         * tree-ssa-loop-ivopts.c: Include target.h.
3088         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
3089         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
3090         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
3091         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
3092
3093 2007-03-30  Richard Henderson  <rth@redhat.com>
3094             Kai Tietz  <kai.tietz@onevision.com>
3095
3096         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
3097         default for 64-bit.
3098         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
3099         (TARGET_64BIT_MS_ABI): New.
3100         (DBX_REGISTER_NUMBER): Handle 64-bit.
3101         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
3102         (LONG_TYPE_SIZE): Force to 32.
3103         (REG_PARM_STACK_SPACE): New.
3104         (OUTGOING_REG_PARM_STACK_SPACE): New.
3105         (REGPARM_MAX, SSE_REGPARM_MAX): New.
3106         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
3107         (STACK_BOUNDARY): Use 128 for 64-bit.
3108         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
3109         Add 64-bit implementation.
3110         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
3111         argument unused.
3112         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
3113         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
3114         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
3115         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
3116         (ix86_handle_cconv_attribute): Don't warn when ignoring if
3117         TARGET_64BIT_MS_ABI.
3118         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
3119         (ix86_pass_by_reference): Likewise.
3120         (ix86_function_value_regno_p): Likewise.
3121         (ix86_build_builtin_va_list): Likewise.
3122         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
3123         (function_arg_advance_ms_64): New.
3124         (function_arg_advance): Call it.
3125         (function_arg_ms_64): New.
3126         (function_arg): Call it.
3127         (function_value_ms_64): New.
3128         (ix86_function_value_1): Call it.
3129         (return_in_memory_ms_64): New.
3130         (ix86_return_in_memory): Call it.
3131         (setup_incoming_varargs_ms_64): New.
3132         (ix86_setup_incoming_varargs): Call it.
3133         (ix86_expand_prologue): Handle 64-bit stack probing.
3134         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
3135         (output_pic_addr_const): Likewise.
3136         (x86_this_parameter): Likewise.
3137         (x86_output_mi_thunk): Likewise.
3138         (x86_function_profiler): Likewise.
3139         (TARGET_STRICT_ARGUMENT_NAMING): New.
3140         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
3141         (TARGET_64BIT_MS_ABI): New.
3142         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
3143         * config/i386/i386.md (allocate_stack_worker): Remove.
3144         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
3145         describe the clobber of eax without a match_scratch.
3146         (allocate_stack_worker_postreload): Remove.
3147         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
3148         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
3149         (allocate_stack_worker_rex64_postreload): Remove.
3150         (allocate_stack): Handle 64-bit.
3151         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
3152         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
3153         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
3154         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
3155         (STANDARD_STARTFILE_PREFIX_1): Likewise.
3156         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
3157         * config.build (x86_64-*-mingw*): New host.
3158         * config.host (x86_64-*-mingw*): New host.
3159         * config.gcc (x86_64-*-mingw*): New target.
3160         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
3161
3162 2007-03-30  Richard Henderson  <rth@redhat.com>
3163             Kai Tietz  <kai.tietz@onevision.com>
3164
3165         * c-pragma.c (struct def_pragma_macro_value): New.
3166         (struct def_pragma_macro): New.
3167         (pushed_macro_table): New.
3168         (dpm_hash, dpm_eq): New.
3169         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
3170         (init_pragma): Install them.
3171         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
3172
3173 2007-03-30  Anatoly Sokolov <aesok@post.ru>
3174
3175         * config/avr/avr.c (avr_override_options): Clear
3176         'flag_delete_null_pointer_checks'.
3177
3178 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
3179
3180         PR c++/26099
3181         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
3182         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
3183         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
3184         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
3185         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
3186         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
3187         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
3188         C++ extensions.
3189         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
3190
3191 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
3192
3193         * regmove.c: Move all of pass_stack_adjustments from here...
3194         * combine-stack-adj.c: ...to this new file.
3195         * Makefile.in: Add rules for combine-stack-adj.o.
3196
3197 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
3198
3199         PR tree-optimization/31383
3200         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
3201         to have the same length.
3202
3203 2007-03-30  Jan Hubicka  <jh@suse.cz>
3204
3205         PR middle-end/30700
3206         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
3207         availablility; add more sanity checking; ask varpool only about
3208         VAR_DECL.
3209
3210 2007-03-29  Richard Henderson  <rth@redhat.com>
3211
3212         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
3213         to decide, but __SIZEOF_LONG_LONG__.
3214
3215 2007-03-29  Richard Henderson  <rth@redhat.com>
3216
3217         * emutls.c (struct __emutls_array): New.
3218         (emutls_destroy): Use it instead of casting element 0 from void*.
3219         (__emutls_get_address): Likewise.
3220
3221 2007-03-29  Richard Henderson  <rth@redhat.com>
3222
3223         * varasm.c (initializer_constant_valid_p): Don't deny
3224         DECL_DLLIMPORT_P on functions.
3225
3226         * config/i386/cygming.h: Remove function declarations.
3227         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
3228         (ASM_OUTPUT_LABELREF): Remove.
3229         (COMMON_ASM_OP): Remove.
3230         (ASM_OUTPUT_COMMON): Remove.
3231         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
3232         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
3233         (ASM_DECLARE_FUNCTION_NAME): Likewise.
3234         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
3235         Rename from TARGET_ENCODE_SECTION_INFO.
3236         * config/i386/netware.h: Likewise.
3237         * config/i386/i386-protos.h: Update.
3238         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
3239         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
3240         (legitimate_constant_p): Reject dllimports.
3241         (dllimport_map, get_dllimport_decl): New.
3242         (legitimize_dllimport_symbol): New.
3243         (legitimize_address, ix86_expand_move): Use it.
3244         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
3245         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
3246         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
3247         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
3248         * config/i386/predicates.md (constant_call_address_operand): Only
3249         accept symbols; reject dllimport_p symbols.
3250         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
3251         i386_pe_maybe_record_exported_symbol.
3252         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
3253         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
3254         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
3255         trust the setting of DECL_DLLIMPORT_P.
3256         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
3257         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
3258         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
3259         tidy the argument scanning loop.
3260         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
3261         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
3262         (i386_pe_strip_name_encoding): Remove.
3263         (i386_pe_binds_local_p): New.
3264         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
3265         (i386_pe_output_labelref): Remove.
3266         (i386_pe_asm_output_aligned_decl_common): New.
3267         (i386_pe_maybe_record_exported_symbol): Rename from
3268         i386_pe_record_exported_symbol; check for dllexported symbols.
3269
3270 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
3271
3272         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
3273         add comment explaining why vsnprintf cannot be used.
3274
3275 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
3276
3277         PR tree-optimization/30666
3278         * tree.c (build_complex_type): When creating type names for DWARF2
3279         debug info, create TYPE_DECLs for TYPE_NAME instead of
3280         IDENTIFIER_NODEs.
3281         (build_common_tree_nodes_2): Use build_complex_type when building
3282         predefined complex types, to preserve canonical types.
3283
3284 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
3285
3286         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
3287         (noce_get_alt_condition): Look at it to determine whether to
3288         reverse the condition or not.
3289         (noce_get_condition): Substitute the truth for lies.
3290         (noce_find_if_block): Set the then_else_reversed field.
3291
3292 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
3293
3294         * config/fr30/fr30.md (movdi): Do not accept immediates as the
3295         destination of this insn.
3296         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
3297         than calling gen_rtx_SET directly.  Use r0 to hold the value of
3298         'address + 4' rather than a stack based temporary which can be
3299         mis-optimized away.
3300
3301 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
3302
3303         * config/s390/s390.c (s390_secondary_input_reload_class,
3304         s390_secondary_output_reload_class): Functions removed.
3305         (s390_secondary_reload): New function.
3306         (TARGET_SECONDARY_RELOAD): Target macro defined.
3307         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
3308         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
3309         * config/s390/s390.md ("reload_outti", "reload_outdi",
3310         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
3311         "reload_out<mode>"): Expanders removed.
3312         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
3313         "reload<mode>_nonoffmem_out"): Expanders added.
3314
3315 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
3316
3317         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
3318         SRC->DEST replacement failed anyway.
3319
3320 2007-03-28  Mike Stump  <mrs@apple.com>
3321
3322         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
3323         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
3324         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
3325
3326 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3327
3328         * config.gcc: Accept barcelona as a variant of amdfam10.
3329         * config/i386/i386.c (override_options): Likewise.
3330         * doc/invoke.texi: Likewise.
3331
3332 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
3333
3334         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
3335         offsets for BIT_FIELD_REF and COMPONENT_REF.
3336
3337 2007-03-28  Richard Guenther  <rguenther@suse.de>
3338
3339         * tree.c (is_global_var): Move ...
3340         * tree-flow-inline.h (is_global_var): ... here.
3341         * tree.h (is_global_var): Remove declaration.
3342
3343 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
3344
3345         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
3346         option.
3347         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
3348         * config/i386/i386.c (ix86_tune_features): Initialize new
3349         tuning option.
3350         * config/i386/predicates.md (promotable_binary_operator): Use
3351         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
3352
3353 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
3354
3355         PR target/31380
3356         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
3357
3358 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
3359
3360         * config/fr30/fr30.md (movsi_internal): Change destination
3361         constraint from m to V and add m to the end.
3362
3363 2007-03-28  Christian Bruel  <christian.bruel@st.com>
3364
3365         * config/sh/sh.md (movsi_i): Fix type attribute.
3366
3367 2007-03-28  Christian Bruel  <christian.bruel@st.com>
3368
3369         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
3370         (movsf_ie): Likewise.
3371
3372 2007-03-28  Christian Bruel  <christian.bruel@st.com>
3373
3374         * config.gcc: Add sh4-300 to multilib.
3375         * config/sh/t-mlib-sh4-300: New file.
3376
3377 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
3378
3379         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
3380         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
3381         fix_trunc<mode>di2.
3382         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
3383         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
3384         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
3385         "fixuns_trunctddi2"): Whitespace fix.
3386
3387 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3388
3389         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
3390         the definition of struct sh_args.
3391         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
3392         CALL_COOKIE_INT_REG_GET): Likewise.
3393
3394 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
3395
3396         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
3397         transformations are applied successfully.
3398
3399 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
3400
3401         * tree.c (tree_contains_struct): Permit 512 tree codes.
3402         * tree.h (tree_contains_struct): Ditto.
3403         (MAX_TREE_CODES): Ditto.
3404         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
3405         SPARE member to store remaining padding bits.
3406
3407 2007-03-27  Anatoly Sokolov <aesok@post.ru>
3408
3409         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
3410         architecture.
3411
3412 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
3413
3414         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
3415         * configure: Regenerate.
3416
3417         * configure: Regenerate using the correct version of autoconf.
3418
3419 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
3420
3421         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
3422         pointer regs.
3423         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
3424         regs to "__SP_L__" and "__SP_H__".
3425
3426 2007-03-27  Richard Guenther  <rguenther@suse.de>
3427
3428         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
3429         computations with it with a HOST_WIDE_INT variable.
3430
3431 2007-03-26  Mike Stump  <mrs@apple.com>
3432
3433         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
3434         objective-c-header, objective-c++-header and objc++-cpp-output
3435         support.
3436         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
3437
3438 2007-03-26  Richard Henderson  <rth@redhat.com>
3439
3440         PR target/31361
3441         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
3442         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
3443         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
3444         IX86_BUILTIN_PSRLQ128): New.
3445         (ix86_init_mmx_sse_builtins): Add them.
3446         (ix86_expand_builtin): Expand them.
3447         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
3448         operand 2 be TImode.
3449         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
3450         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
3451         _mm_srli_epi64): Mark __B const.
3452         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
3453         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
3454         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
3455         new two-vector shift builtins.
3456
3457 2007-03-26  Ian Lance Taylor  <iant@google.com>
3458
3459         PR tree-optimization/31345
3460         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
3461         [+INF, +INF(OVF)] into VARYING.
3462
3463 2007-03-26  Zack Weinberg  <zackw@panix.com>
3464
3465         * gengtype-parse.c: New file.
3466         * gengtype-yacc.y: Delete.
3467         * gengtype-lex.l: Don't include gengtype-yacc.h.
3468         Define YY_DECL and yyterminate appropriately for recursive
3469         descent parser.  yylval is now a string out-parameter to yylex.
3470         (HWS, EOID): New shorthand.
3471         (IWORD): Add a couple more types.
3472         (yylex): Add a setup stanza.  Remove the complex rules for
3473         detecting GTY'ed types and typedefs; replace with simple
3474         keyword detectors.  Adjust everything for the changed
3475         definition of yylval.  Ignore all pp-directives, not just #define.
3476         (yyerror): Delete.
3477         (parse_file): Rename yybegin; do not call yyparse.
3478         (yyend): New.
3479         * gengtype.c (xasprintf): Export again.
3480         (this_file): New.  Use everywhere __FILE__ was being used.
3481         (get_lang_bitmap): Special case types defined in gengtype.c.
3482         (do_typedef, new_structure): Suppress definition of certain types.
3483         (new_structure): Improve diagnostics of duplicate definitions.
3484         Make sure location_s is associated with input.h.
3485         (nreverse_pairs, define_location_structures): New functions.
3486         (main): Improve tagging of kludge types.  Remove old kludges
3487         for input.h types; use define_location_structures.
3488         * gengtype.h: Update prototypes.  Define token codes here.
3489         * Makefile.in: Remove all references to gengtype-yacc.
3490         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
3491         and gengtype.
3492         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
3493         add GTY((skip)) to the field that's only conditionally there.
3494         * doc/install.texi: Document that Bison is no longer required
3495         unless building treelang.
3496
3497         * gengtype.c: Don't include gtyp-gen.h.
3498         (srcdir): Declare here.
3499         (base_files, lang_dir_names): Allocate dynamically.
3500         (gt_files, num_gt_files, num_lang_dirs): New globals.
3501         (measure_input_list, read_input_line, read_input_list)
3502         (set_lang_bitmap): New functions.
3503         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
3504         simplify, relying on read_input_list to set up the bitmaps.
3505         (main): Arguments are no longer unused.  Check for correct number
3506         of command line arguments, set srcdir and srcdir_len, then call
3507         read_input_list, before doing anything else.  No need to worry
3508         about duplicates in main loop.
3509         * configure.ac: Simplify the calculation of all_gtfiles.
3510         Put language tags in there.  Don't set or substitute
3511         all_gtfiles_files_langs or all_gtfiles_files_frags.
3512         * Makefile.in: Revamp the way gengtype is invoked, now that it
3513         takes a file on its command line with a much simpler format.
3514         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
3515         (GTFILES): Remove duplicates and C source files.
3516         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
3517         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
3518         * configure: Regenerate.
3519
3520         * gengtype.h: Remove all type definitions to gengtype.c; leave
3521         only definitions of options_p, type_p, and pair_p as opaque
3522         pointers.  Update prototypes.
3523         * gengtype.c: Many type definitions moved here from gengtype.h.
3524         Consolidate type definitions at the top of the file.
3525         (xvasprintf): Delete.
3526         (xasprintf): Make static.
3527         (create_nested_pointer_option): Add 'next' parameter.
3528         (create_field_all, create_field_at): New functions.
3529         (create_field): Now a thin wrapper around create_field_all.
3530         (create_optional_field): Rename create_optional_field_ and add
3531         line argument.  Original name is now a macro which supplies
3532         __LINE__.
3533         (oprintf): Use vsnprintf directly.
3534         (close_output_files): Use fatal rather than perror/exit.
3535         (note_def_vec, note_def_vec_alloc): Use create_field_at.
3536         (main): Set progname.  Don't use exit.
3537         * gengtype-yacc.y (struct_fields): Use create_field_at.
3538         (option, optionseqopt): Delete.
3539         (optionseq): Consolidate productions from option here so we
3540         can use the first argument to create_option.
3541
3542         * gengtype-lex.l: Distinguish unions from structures in the
3543         token type.  Don't call find_structure; return the tag as a string.
3544         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
3545         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
3546         Reorganize typedef_struct production accordingly.
3547         Use create_nested_ptr_option.
3548         * gengtype.c (create_nested_ptr_option): New function.
3549         * gengtype.h: Declare it.
3550
3551         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
3552         (string_type): Don't declare.
3553         (do_scalar_typedef): Declare.
3554         (create_scalar_type): Update prototype.
3555         * gengtype.c (string_type): Make static.
3556         (scalar_nonchar, scalar_char): New.
3557         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
3558         (resolve_typedef): Use scalar_nonchar for error recovery.
3559         (create_scalar_type): Remove name_len field.  Return scalar_char
3560         or scalar_nonchar as appropriate.
3561         (adjust_field_type): Look at scalar_is_char boolean to decide whether
3562         to use string_type.
3563         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
3564         whenever possible.
3565         (main): Initialize scalar_char and scalar_nonchar before calling
3566         gen_rtx_next.
3567         * gengtype-lex.l: Adjust for removal of second argument to
3568         create_scalar_type.  Use yylval.s instead of yylval.t when
3569         returning SCALAR.
3570         * gengtype-yacc.y: Type of SCALAR is string.  Call
3571         create_scalar_type from type:SCALAR rule.  Adjust for removal of
3572         second argument to create_scalar_type.
3573
3574         * vec.h: Remove all #if IN_GENGTYPE blocks.
3575         Add comment saying that changes may require adjustments to gengtype.
3576         * gengtype.c: Don't include coretypes.h or tm.h.
3577         Add comment to inclusion of errors.h.
3578         (note_def_vec, note_def_vec_alloc): New functions.
3579         * gengtype.h: Declare new functions.
3580         * gengtype-lex.l: Don't include coretypes.h.
3581         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
3582         Delete.
3583         (update_lineno): Remove unnecessary prototype.
3584         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
3585         (VEC rule): Just return VEC_TOKEN.
3586         * gengtype-yacc.y (VEC_TOKEN): New token type.
3587         (type): Add a production for VEC(a,b).
3588         * Makefile.in: Update dependencies.
3589
3590         * gengtype-lex.l: Remove rules for parsing pointer-to-function
3591         typedefs that use the old PARAMS macro.
3592
3593         * gengtype-lex.l: Remove all rules and states relating to yacc
3594         input files.
3595         * gengtype-yacc.y: Similarly.
3596         * gengtype.c (note_yacc_type): Delete function.
3597         * gengtype.h: Update prototypes.
3598
3599 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
3600
3601         * tree-pretty-print.c (dump_generic_node): Report precision of
3602         unnamed integer types.
3603
3604 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
3605
3606         * ifcvt.c (noce_try_store_flag_constants): Don't check
3607         no_new_pseudos here.
3608         (noce_try_store_flag_constants): Don't check no_new_pseudos.
3609         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
3610         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
3611         noce_try_sign_mask): Likewise.
3612         (if_convert): Check no_new_pseudos here.
3613
3614         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
3615         Remove prototypes.
3616         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
3617         (noce_get_condition): Handle new then_else_reversed argument.
3618         (noce_init_if_info): Remove, fold into noce_find_if_block.
3619         (noce_process_if_block): Take a struct noce_if_info as the
3620         argument.  Don't set up one based on ce_if_info.  Update pointer
3621         references accordingly.
3622         (cond_move_process_if_block): Likewise.
3623         (process_if_block): Removed.
3624         (find_if_block): Removed.  Move functionality two new functions,
3625         noce_find_if_block and cond_exec_find_if_block.
3626         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
3627         blocks and the symmetric IF-ELSE-JOIN case.
3628         (cond_exec_find_if_block): Also new function mostly based on old
3629         find_if_block and process_if_block.
3630         (find_if_header): Replace find_if_block call with separately
3631         guarded calls to noce_find_if_block and cond_exec_find_if_block.
3632         (find_cond_trap): Update noce_get_condition call.
3633         (dead_or_predicable): Likewise.
3634
3635 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
3636
3637         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
3638         Remove.
3639         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
3640         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
3641         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
3642         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
3643         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
3644         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
3645         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
3646         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
3647         __builtin_ia32_psrad128 builtins.
3648
3649 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
3650
3651         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
3652         * config/i386/constraints.md
3653         (define_constraint "I"): Use IN_RANGE macro.
3654         (define_constraint "J"): Ditto.
3655         (define_constraint "K"): Ditto.
3656         (define_constraint "M"): Ditto.
3657         (define_constraint "N"): Ditto.
3658         (define_constraint "O"): Ditto.
3659         * config/i386/predicates.md
3660         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
3661         (define_predicate "const_0_to_3_operand"): Ditto.
3662         (define_predicate "const_0_to_7_operand"): Ditto.
3663         (define_predicate "const_0_to_15_operand"): Ditto.
3664         (define_predicate "const_0_to_63_operand"): Ditto.
3665         (define_predicate "const_0_to_255_operand"): Ditto.
3666         (define_predicate "const_1_to_31_operand"): Ditto.
3667         (define_predicate "const_2_to_3_operand"): Ditto.
3668         (define_predicate "const_4_to_7_operand"): Ditto.
3669
3670 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
3671
3672         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
3673         in SImode for save_world.
3674         * config/rs6000/altivec.md (save_world, restore_world): Convert to
3675         LR hard reg.
3676
3677 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
3678
3679         PR tree-optimization/30784
3680         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
3681         BIT_FIELD_REF.
3682
3683 2007-03-25  Revital Eres  <eres@il.ibm.com>
3684
3685         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
3686           Fold movement_possibility function into it.
3687
3688 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
3689
3690         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
3691         (load_macho_picbase_{si,di}): Convert to LR hard reg.
3692         (call_indirect_nonlocal_darwin64): Same.
3693         (call_nonlocal_darwin64): Same.
3694         (call_value_indirect_nonlocal_darwin64): Same.
3695         (call_value_nonlocal_darwin64): Same.
3696         (sibcall_nonlocal_darwin64): Same.
3697         (sibcall_value_nonlocal_darwin64): Same.
3698         (sibcall_symbolic_64): Same.
3699         (sibcall_value_symbolic_64): Same.
3700         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
3701         LR pseudo.
3702         (rs6000_emit_load_toc_table): Same.
3703         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
3704         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
3705         (mull_call): Same.
3706         (divss_call): Same.
3707         (divus_call): Same.
3708         (quoss_call): Same.
3709         (quous_call): Same.
3710         (load_toc_v4_pic_si): Same
3711         (load_toc_v4_PIC_1): Same.
3712         (load_toc_v4_PIC_1b): Same.
3713         (call_indirect_aix{32,64}): Same.
3714         (call_value_indirect_aix{32,64}): Same.
3715         (call): Same.
3716         (call_value): Same.
3717         (call_local{32,64}): Same.
3718         (call_value_local{32,64}): Same.
3719         (call_indirect_nonlocal_aix{32,64}): Same.
3720         (call_nonlocal_aix{32,64}): Same.
3721         (call_value_indirect_nonlocal_aix{32,64}): Same.
3722         (call_value_nonlocal_aix{32,64}): Same.
3723         (call_indirect_nonlocal_sysv<mode>): Same.
3724         (call_nonlocal_sysv<mode>): Same.
3725         (call_value_indirect_nonlocal_sysv<mode>): Same.
3726         (call_value_nonlocal_sysv<mode>): Same.
3727         (sibcall): Same.
3728         (sibcall_local{32,64}): Same.
3729         (sibcall_value_local{32,64}): Same.
3730         (sibcall_nonlocal_aix{32,64}): Same.
3731         (sibcall_value_nonlocal_aix{32,64}): Same.
3732         (sibcall_nonlocal_sysv<mode>): Same.
3733         (sibcall_value): Same.
3734         (sibcall_value_nonlocal_sysv<mode>): Same.
3735
3736 2007-03-24  Paul Brook  <paul@codesourcery.com>
3737
3738         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
3739         * config/arm/linux-eabi.h: Remove legacy syscall hack.
3740
3741 2007-03-24  Richard Henderson  <rth@redhat.com>
3742
3743         * config/ia64/constraints.md: New file.
3744         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
3745         satisfies_constraint_?.
3746         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
3747         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
3748         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
3749         ia64_output_mi_thunk): Likewise.
3750         (ia64_const_ok_for_letter_p): Remove.
3751         (ia64_const_double_ok_for_letter_p): Remove.
3752         (ia64_extra_constraint): Remove.
3753         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
3754         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
3755         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
3756         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
3757         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
3758         EXTRA_MEMORY_CONSTRAINT): Remove.
3759         * config/ia64/ia64.md: Include constriants.md.  Replace
3760         CONST_OK_FOR_? with satisfies_constraint_?.
3761
3762 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
3763             H.J. Lu  <hongjiu.lu@intel.com>
3764
3765         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
3766         DPD or BID name.
3767         (name macros): Use DPD_BID_NAME to convert names properly.
3768
3769         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
3770         decimal floating point format.
3771         (init_floating_libfuncs): Change decimal functions so that they
3772         have a "bid_" prefix if the decimal system uses the BID format,
3773         and "dpd_" prefix if the decimal system uses the DPD format.
3774         (init_interclass_conv_libfuncs): Ditto.
3775         (init_intraclass_conv_libfuncs): Ditto.
3776
3777         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
3778         using the BID format.
3779
3780         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
3781         whether we are using the BID decimal format.
3782         * configure: Regenerate.
3783
3784         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
3785         the compiler has decimal floating point enabled.  Define
3786         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
3787         instead of DPD.
3788
3789         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
3790         using the BID format.
3791
3792         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
3793         whether we are using the BID decimal format.
3794         * configure: Regenerate.
3795
3796         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
3797         the compiler has decimal floating point enabled.  Define
3798         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
3799         instead of DPD.
3800
3801         * doc/install.texi (--enable-decimal-float): Document BID and DPD
3802         options, and that it is enabled for i386/x86_64 systems.
3803
3804         * Makefile.in (enable_decimal_float): New.
3805         (DECNUMFMT): New.
3806         (DECNUMINC): Add  -I$(DECNUMFMT).
3807         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
3808         to $(DECNUMFMT) from $(DECNUM).
3809
3810         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
3811         Substitute enable_decimal_float.
3812         * configure: Regenerated.
3813
3814         PR other/30529
3815         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
3816         unsigned long.
3817
3818         * configure.ac: Enable decimal float for x86_64-*-linux*.
3819         * configure: Regenerated.
3820
3821         PR other/30530
3822         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
3823         decimal128ClearSign to flip and clear the sign bit in decimal128.
3824         (decimal_real_maxval): Set decimal128SetSign to set the sign
3825         bit in decimal128.
3826
3827 2007-03-23  Ian Lance Taylor  <iant@google.com>
3828
3829         * fold-const.c (fold_binary): Correct warning for X - c >= X.
3830
3831 2007-03-23  Ian Lance Taylor  <iant@google.com>
3832
3833         * tree-dump.c (dump_files): Correct comment.
3834
3835 2007-03-23  Ian Lance Taylor  <iant@google.com>
3836
3837         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
3838
3839 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
3840
3841         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
3842         in cfglayout mode.  Don't go into and out of cfglayout mode.
3843         Link the blocks in the order of the constructed traces.
3844         (rest_of_handle_tracer): Adjust call to tracer.
3845         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
3846         Don't go into cfglayout mode.
3847         (rtl_loop_done): Don't go out of cfglayout mode.
3848         * cfglayout.c (relink_block_chain): New function, split out from...
3849         (fixup_reorder_chain): ...here.  Remove redundant checking.
3850         (cfg_layout_finalize): Don't clear the header, footer, and aux
3851         fields here, move the code to do so to relink_block_chain.  Likewise
3852         for free_original_copy_tables.
3853         * rtl.h (tracer): Update prototype.
3854         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
3855         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
3856         mode.  Use relink_block_chain to serialize the CFG according to the
3857         new basic block order.  Move targetm.cannot_modify_jumps_p check from
3858         here...
3859         (gate_handle_reorder_blocks): ...to here.
3860         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
3861         from here...
3862         (gate_duplicate_computed_gotos): ...to here.
3863         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
3864         something always changes when going into and out of cfglayout mode.
3865         Perform an expensive cfg cleanup while going into cfglayout mode.
3866         Always update liveness information on HAVE_conditional_execution
3867         targets.  Reserialize the basic blocks and go out of cfglayout mode.
3868         * reg-stack.c: Include cfglayout.h.
3869         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
3870         the call to reorder_basic_blocks.
3871         * basic-block.h (reorder_basic_blocks): Update prototype.
3872         (relink_block_chain): New prototype.
3873         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
3874
3875 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
3876
3877         * config/mips/mips.md (type, hazard, *movdi_32bit,
3878         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
3879         *movhi_internal, *movqi_internal, *movsf_hardfloat,
3880         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
3881         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
3882         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
3883         applicable.
3884         (movcc): Change first xfer to multi.
3885         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
3886         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
3887         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
3888         config/mips/generic.md: Change reservations using "xfer" to use
3889         "mfc,mtc".
3890         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
3891         using match_operand.
3892         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
3893         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
3894         examining mode.
3895         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
3896
3897 2007-03-22  Richard Henderson  <rth@redhat.com>
3898
3899         * config/i386/i386.c: Remove unnecessary function declarations.
3900         Move targetm definition, and all related macros, to the end of
3901         the file.  Resort some functions to put definitions before uses.
3902         (ix86_attribute_table): Make static.  Move to end of file.
3903         (ix86_gimplify_va_arg): Make static.
3904
3905 2007-03-22  Richard Henderson  <rth@redhat.com>
3906
3907         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
3908         don't increase local_regparm with force_align_arg_pointer check.
3909         (ix86_function_sseregparm): Assert 32-bit.
3910         (type_has_variadic_args_p): New.
3911         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
3912         type_has_variadic_args_p.
3913         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
3914         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
3915         use memset instead.  Do maybe_vaarg check first; skip attribute
3916         tests if true; skip attribute tests for 64-bit.
3917         (construct_container): Remove TARGET_DEBUG_ARG.
3918         (function_arg_advance_32, function_arg_advance_64): Split out ...
3919         (function_arg_advance): ... from here.
3920         (function_arg_32, function_arg_64): Split out ...
3921         (function_arg): ... from here.
3922         (ix86_pass_by_reference): Tidy.
3923         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
3924         (function_value_32): New, from parts of ix86_function_value
3925         and ix86_value_regno.
3926         (function_value_64): New, from parts of ix86_function_value
3927         and ix86_libcall_value.
3928         (ix86_function_value_1): New.
3929         (ix86_function_value, ix86_libcall_value): Use it.
3930         (return_in_memory_32, return_in_memory_64): Split out ...
3931         (ix86_return_in_memory): ... from here.
3932         (ix86_struct_value_rtx): Skip for 64-bit.
3933         (ix86_libcall_value, ix86_value_regno): Remove.
3934         (setup_incoming_varargs_64): Split out ...
3935         (ix86_setup_incoming_varargs): ... from here.
3936         (ix86_va_start): Remove TARGET_DEBUG_ARG.
3937         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
3938         * config/i386/i386-protos.h (ix86_function_value): Remove.
3939         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
3940
3941 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3942
3943         PR other/23572
3944         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
3945         infinities not supported, otherwise emit warning if -Woverflow. On
3946         underflow, emit warning if -Woverflow.
3947         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
3948         and 0 otherwise.
3949         * real.h (real_from_string): Update declaration
3950
3951 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
3952             Richard Henderson  <rth@redhat.com>
3953
3954         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
3955         * calls.c (compute_argument_block_size, expand_call,
3956         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
3957         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
3958         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
3959         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
3960         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
3961         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
3962         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
3963         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
3964         Set to 1.
3965
3966 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
3967
3968         * c-incpath.c (add_sysroot_to_chain): New.
3969         (merge_include_chains): Add sysroot argument.  Call
3970         add_sysroot_to_chain if sysrooted.
3971         (register_include_chains): Update call to merge_include_chains.
3972         * doc/cppopts.texi: Document use of '=' in include directory
3973         arguments.
3974
3975 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
3976
3977         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
3978         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
3979         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
3980         insn pattern using X87MODEF12 mode macro.
3981
3982 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
3983
3984         * regmove.c (regmove_optimize): Use reg_mentioned_p
3985         instead of reg_overlap_mentioned_p for DST.
3986
3987 2007-03-21  Mike Stump  <mrs@app