OSDN Git Service

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