OSDN Git Service

rtl-optimization/32296
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2
3         rtl-optimization/32296
4         * pa.md (return): Delete pattern.
5         (return_internal): Remove "(const_int 1)" from pattern.
6         (epilogue): Use return_internal pattern for trivial returns.
7         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
8         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
9
10 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
11         
12         Fix PR tree-optimization/32540
13         Fix PR tree-optimization/31651
14
15         * tree-ssa-sccvn.c: New file.
16
17         * tree-ssa-sccvn.h: Ditto.
18         
19         * tree-vn.c: Include tree-ssa-sccvn.h
20         (val_expr_paid_d): Removed.
21         (value_table): Ditto.
22         (vn_compute): Ditto.
23         (val_expr_pair_hash): Ditto.
24         (val_expr_pair_expr_eq): Ditto.
25         (copy_vuses_from_stmt): Ditto.
26         (vn_delete): Ditto.
27         (vn_init): Ditto.
28         (shared_vuses_from_stmt): Ditto.
29         (print_creation_to_file): Moved up.
30         (sort_vuses): Ditto.
31         (sort_vuses_heap): Ditto.
32         (set_value_handle): Make non-static.
33         (make_value_handle): Ditto.
34         (vn_add): Rewritten to use sccvn lookups.
35         (vn_add_with_vuses): Ditto.
36         (vn_lookup): Ditto (and second argument removed).
37         (vn_lookup_with_vuses): Ditto.
38         (vn_lookup_or_add): Ditto (and second argument removed);
39         (vn_lookup_or_add_with_vuses): Ditto.
40         (vn_lookup_with_stmt): New.
41         (vn_lookup_or_add_with_stmt): Ditto.
42         (create_value_handle_for_expr): Ditto.
43
44         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
45         (seen_during_translate): New function.
46         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
47         (phi_trans_add): Ditto.
48         (constant_expr_p): FIELD_DECL is always constant.
49         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
50         Use constant_expr_p.
51         Avoid infinite recursion on mutually valued expressions.
52         Change callers of vn_lookup_or_add.
53         (phi_translate): New function.
54         (compute_antic_safe): Allow phi nodes.
55         (create_component_ref_by_pieces): Update for FIELD_DECL change.
56         (find_or_generate_expression): Rewrite slightly.
57         (create_expression_by_pieces): Updated for vn_lookup_or_add
58         change.
59         Update VN_INFO for new names.
60         (insert_into_preds_of_block): Update for new names.
61         (add_to_exp_gen): New function.
62         (add_to_sets): Use vn_lookup_or_add_with_stmt.
63         (find_existing_value_expr): Rewrite to changed vn_lookup.
64         (create_value_expr_from): Ditto, and use add_to_exp_gen.
65         (try_look_through_load): Removed.
66         (try_combine_conversion): Ditto.
67         (get_sccvn_value): New function.
68         (make_values_for_phi): Ditto.
69         (make_values_for_stmt): Ditto.
70         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
71         SCCVN.
72         (init_pre): Update for SCCVN changes.
73         (fini_pre): Ditto.
74         (execute_pre): Ditto.
75
76         * tree-flow.h (make_value_handle): Declare.
77         (set_value_handle): Ditto.
78         (sort_vuses_heap): Ditto.
79         (vn_lookup_or_add_with_stmt): Ditto.
80         (vn_lookup_with_stmt): Ditto.
81         (vn_compute): Remove.
82         (vn_init): Ditto.
83         (vn_delete): Ditto.
84         (vn_lookup): Update arguments.
85
86         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
87         (tree-vn.o): Ditto.
88         (tree-ssa-sccvn.o): New.
89         (OBJS-common): Add tree-ssa-sccvn.o
90         
91 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
92
93         PR c/4076
94         * c-typeck.c (build_external_ref): Don't mark as used if called
95         from itself.
96         * calls.c (rtx_for_function_call): Likewise.
97         
98 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
99
100         Revert:
101
102         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
103
104         * dce.c (deletable_insn_p_1): New function, split out from...
105         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
106         specially, not those inside PARALLELs.  Remove BODY argument
107         and adjust recursive call accordingly.
108         (prescan_insns_for_dce): Update call to delete_insn_p.
109
110 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
111
112         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
113         (try_combine): Move potential calls to undo_all() so they happen
114         before we commit to using the combined insns.
115
116 2006-06-30  Jan Hubicka  <jh@suse.cz>
117
118         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit    
119         code.
120
121 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
122
123         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
124         (cgraph_remove_unreachable_nodes): Likewise.
125         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
126         * ipa-inline.c (update_caller_keys): Cast according to the coding
127         conventions.
128         (cgraph_decide_recursive_inlining): Likewise.
129         (cgraph_decide_inlining_of_small_function): Likewise.
130         (try_inline): Likewise.
131         (cgraph_decide_inlining_incrementally): Likewise.
132         * ipa-pure-const.c (get_function_state): Likewise.
133         (scan_function): Likewise.
134         (analyze_function): Likewise.
135         (static_execute): Likewise.
136         * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
137         (merge_callee_local_info): Likewise.
138         (analyze_function): Use type safe memory macros.
139         (static_execute): Likewise. Cast according to the coding conventions.
140         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
141         conventions.
142         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
143         names.
144         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
145         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
146         variable names.
147
148 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
149
150         PR middle-end/30024
151         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
152         for complex modes (both int and real).
153
154 2007-06-29  Jan Hubicka  <jh@suse.cz>
155
156         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
157
158 2007-06-29  Jan Hubicka  <jh@suse.cz>
159
160         PR middle-end/32372
161         * cse.c (cse_insn): Avoid invalid sharing in between register note and
162         the insn pattern.
163
164 2007-06-29  Anatoly Sokolov <aesok@post.ru>
165
166         PR target/32335
167         * config/avr/avr.c: Include dataflow header file.
168         (expand_prologue): Adjust for prologue insn change.
169         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
170         inside a insn.
171
172 2007-06-29  Richard Guenther  <rguenther@suse.de>
173
174         PR middle-end/32493
175         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
176         during type verification.
177
178 2007-06-29  Jan Hubicka  <jh@suse.cz>
179
180         * recog.c (validate_change_rtx_1): Unshare TO argument.
181
182 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
183
184         PR tree-optimization/24659
185         * tree-vect-transform.c (vectorizable_call): Handle
186         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
187
188         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
189         * config/i386/i386.c (enum ix86_builtins)
190         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
191         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
192         description.
193         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
194         const using def_builtin_const.
195         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
196         input operands in the same modes as the result.
197         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
198
199 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
200
201         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
202         (df_set_dead_notes_for_mw): Likewise.
203
204 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
205
206         * c-common.c (pointer_int_sum): Do the negation in sizetype.
207
208 2007-06-28  DJ Delorie  <dj@redhat.com>
209
210         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
211
212 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
213
214         * doc/invoke.texi (C++ Dialect Options): Document
215         fvisibility-ms-compat.
216         * c.opt (fvisibility-ms-compat): New.
217
218 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
219
220         PR tree-opt/32417
221         * tree-affine.c (aff_combination_add_elt): Handle
222         pointer addition specially.
223
224 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
225
226         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
227         decl is non-external for AIX ABI.
228
229 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
230
231         * config/rs6000/predicates.md (current_file_function_operand):
232         Ensure the symbol is non-external for AIX ABI.
233
234 2007-06-28  Nick Clifton  <nickc@redhat.com>
235
236         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
237         (fdce, fdse, fpredictive-commoning): Likewise.
238
239 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
240
241         PR other/31400
242         * gcc.c (process_command): Recognize the new -static-libgfortran
243         option.
244
245 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
246
247         PR target/32418
248         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
249         Use a call clobbered hard reg instead of a pseudo reg.
250
251 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
252
253         * config/sh/sh.md (load_gbr): Use correct operand constraint.
254
255 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
256
257         PR target/32479
258         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
259         REG_LIBCALL and REG_RETVAL notes.
260         (divsi3, mulsi3): Likewise.
261         (mulhisi3): Likewise.  Use emit_libcall_block.
262         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
263
264 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
265
266         PR rtl-optimization/32481
267         * combine.c (adjust_for_new_dest): Rescan the changed insn.
268
269 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
270
271         * dce.c (deletable_insn_p_1): New function, split out from...
272         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
273         specially, not those inside PARALLELs.  Remove BODY argument
274         and adjust recursive call accordingly.
275         (prescan_insns_for_dce): Update call to delete_insn_p.
276
277 2007-06-27  Richard Guenther  <rguenther@suse.de>
278
279         PR middle-end/32492
280         * tree.h (fold_convertible_p): Declare.
281         * fold-const.c (fold_convertible_p): New function.
282         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
283         instead of lang_hooks.types_compatible_p.
284
285 2007-06-26  Jan Hubicka  <jh@suse.cz>
286
287         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
288         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
289         early use validate_unshare_change.
290         (reload_combine): Likewise.
291         * recog.c (change_t): New field unshare.
292         (validate_change_1): Rename from validate_change; add argument unshare.
293         (validate_change): Turn into wrapper of validate_change_1; update
294         prototype for bools.
295         (validate_unshare_change): New.
296         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
297         calls of df_insn_rescan.
298         * recog.h (validate_change): Replace ints by bools.
299         (validate_unshare_change): Declare.
300
301 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
302
303         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
304         
305 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
306
307         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
308
309 2007-06-25  Jan Hubicka  <jh@suse.cz>
310
311         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
312         uninlinable call.
313         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
314         cgraph_decide_inlining_incrementally): Move uninlinability checks to
315         places other call site specific checks are performed.
316
317 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
318
319         PR tree-opt/32421
320         * tree-vect-transform.c (vectorizable_operation): Convert
321         POINTER_PLUS_EXPR over to PLUS_EXPR.
322
323 2007-06-25  Chao-ying Fu  <fu@mips.com>
324
325         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
326         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
327         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
328         Document GET_MODE_IBIT, and GET_MODE_FBIT.
329
330         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
331         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
332         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
333         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
334         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
335         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
336         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
337         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
338         ALL_FIXED_POINT_MODE_P): New define.
339         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
340         MODE_UACCUM.
341         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
342
343         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
344         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
345         MODE_VECTOR_UACCUM): New mode classes.
346
347         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
348         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
349         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
350         USA, UDA, and UTA.
351
352         * genmodes.c (struct mode_data): Add ibit and fbit fields.
353         (blank_mode): Initialize ibit and fbit.
354         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
355         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
356         (new_adjust): Change required_class to required_class_from and
357         required_class_to for testing within a range.
358         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
359         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
360         MODE_VECTOR_UACCUM.
361         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
362         (make_fixed_point_mode): New.
363         (_ADD_ADJUST): Change C to C1 and C2.
364         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
365         use a range for machine classes.
366         (ADJUST_IBIT, ADJUST_FBIT): New.
367         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
368         CONST_MODE_FBIT.
369         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
370         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
371         Emit adjustment for ibit and fbit.
372         (emit_mode_ibit, emit_mode_fbit): New.
373         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
374
375 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
376
377         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
378         as the source of the set.
379
380 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
381
382         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
383         FP_REGNO_P): Use IN_RANGE.
384         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
385         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
386         (DATA_REG_P): Use DATA_REGNO_P.
387         (FP_REG_P): Use FP_REGNO_P.
388         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
389         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
390         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
391
392 2007-06-24  Jan Hubicka  <jh@suse.cz>
393
394         PR middle-end/30563
395         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
396
397 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
398
399         PR middle-end/32461
400         * fold-const.c (fold_binary): Strip nops of operand 0
401         of BIT_NOT_EXPR before calling operand_equal_p.
402         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
403         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
404
405 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
406
407         * doc/extend.texi: Document that dllimport and dllexport imply
408         default visibility.
409         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
410         imported or exported declaration, including type declarations.
411         * c-common.c (handle_visibility_attribute): Check for conflicts
412         with dllimport/dllexport.
413         (c_determine_visibility): Handle dllimport/dllexport as an
414         explicit visibility atttribute.
415
416 2007-06-23  Richard Guenther  <rguenther@suse.de>
417
418         PR tree-optimization/16876
419         PR middle-end/29478
420         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
421         for CALL_EXPRs.
422         * tree-inline.c (initialize_inlined_parameters): Do not call
423         lang_hooks.tree_inlining.convert_parm_for_inlining.
424         * cgraphbuild.c (initialize_inline_failed): Set inline failed
425         reason for mismatched types.
426         * gimplify.c (gimplify_call_expr): Verify the call expression
427         arguments match the called function type signature.  Otherwise
428         mark the call expression to be not considered for inlining
429         using CALL_CANNOT_INLINE_P flag.
430         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
431         edges call expression.
432         (cgraph_decide_inlining_of_small_function): Likewise.
433         (cgraph_decide_inlining): Likewise.
434         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
435         Remove define.
436         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
437         * c-typeck.c (c_convert_parm_for_inlining): Remove.
438         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
439         Remove declaration.
440         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
441         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
442         Remove.
443         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
444         convert_parm_for_inlining member.
445
446 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
447
448         PR target/31152
449         * arm.md (negscc): Match the correct operand for optimized LT0 test.
450         Remove optimization for GT.
451
452 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
453
454         PR middle-end/32437
455         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
456         is a PARALLEL.
457         (prescan_insns_for_dce): Add extra parameter.
458         
459 2007-06-23  Jan Hubicka  <jh@suse.cz>
460
461         PR middle-end/31541
462         * gimplify.c (mark_addressable): New function.
463         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
464
465 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
466
467         PR middle-end/32374
468         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
469
470 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
471
472         PR target/32413
473         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
474         moves between MMX/SSE registers to at least 8 units to prevent
475         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
476
477 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
478
479         * config/i386/i386.c (override_options): Correct x86_sahf
480         setting condition.
481
482 2007-06-21  David Daney  <ddaney@avtrex.com>
483
484         PR target/32406
485         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
486         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
487         (exception_receiver): Renamed to ...
488         (nonlocal_goto_receiver): ... this.
489
490 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
491
492         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
493         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
494         partial register accesses.
495
496 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
497
498         * fold-const.c (debug_fold_checksum): Move it under
499         ENABLE_FOLD_CHECKING.
500
501 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
502
503         PR middle-end/20623
504         * tree.h (debug_fold_checksum): Declared.
505         * fold-const.c (build_fold_addr_expr_with_type_1): New.
506         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
507         build_fold_addr_expr_with_type_1.
508         (fold_addr_expr, debug_fold_checksum): New.
509         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
510         (fold_unary, fold_comparison, split_address_to_core_and_offset):
511         Use fold_addr_expr.
512         
513 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
514
515         PR tree-optimization/19590
516         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
517         of scev is a constant.
518         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
519
520 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
521
522         * df-problems.c (df_note_bb_compute): Made computation of live
523         info consistent with df_lr.
524
525 2007-06-21  Richard Guenther  <rguenther@suse.de>
526
527         PR tree-optimization/32453
528         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
529         for pointer anti-range.
530
531 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
532
533         * config/i386/i386.c (processor_target_table): Increase maximum
534         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
535         default 64bit.
536
537         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
538         byte alignment if > 8 byte alignment is preferred.
539         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
540
541 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
542
543         PR tree-optimization/31866
544         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
545         if ASM_EXPR's input is not a SSA_NAME.
546
547         PR middle-end/32362
548         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
549         but decl is a global var, instead return decl.
550         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
551         even for is_global_var decls, if they are private in some outer
552         context.
553
554 2007-06-21  Richard Guenther  <rguenther@suse.de>
555
556         PR tree-optimization/32451
557         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
558
559 2007-06-21  Christian Bruel  <christian.bruel@st.com>
560
561         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
562         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
563         (push_regs): Changed saving order or banked registers.
564         (sh_expand_epilogue): Likewise.
565         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
566         (FIRST_BANKED_REG): Likewise.
567         (LAST_BANKED_REG): Likewise.
568         * config/sh/sh.md (banked) New attribute.
569         (in_delay_slot): Check banked attribute.
570         
571 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
572
573         PR tree-optimization/32075
574         * tree-data-ref.c (subscript_dependence_tester_1, 
575         analyze_miv_subscript, analyze_overlapping_iterations,
576         add_distance_for_zero_overlaps, build_classic_dist_vector,
577         subscript_dependence_tester_1, analyze_overlapping_iterations,
578         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
579         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
580         to evolution_function_is_affine_multivariate_p.
581
582 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
583
584         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
585
586 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
587
588         PR target/32335
589         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
590         for TARGET_A16.
591         * config/m32c/prologue.md (epilogue_exitd_16): New.
592         (epilogue_reit_16): New.
593         (epilogue_exitd): Rename to epilogue_exitd_24.
594         (epilogue_reit): Rename to epilogue_reit_24.
595
596 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
597             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
598
599         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
600         New counters.
601         * haifa-sched.c (queue_to_ready): Don't requeue next insn
602         if dbg_cnt (sched_insn) reaches the limit.
603         (choose_ready): New parameter INSN_PTR and new return value.
604         (schedule_block): Handle dbg_cnt (sched_insn). Handle
605         the new return value from choose_ready.
606         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
607         (rest_of_handle_global_alloc): New global_alloc_at_func.
608
609 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
610
611         PR tree-optimization/25737
612         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
613         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
614         * tree-flow.h (struct fieldoff): Add new field alias_set.
615         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
616         argument addressable_type.  Set alias_set of fieldoff.
617         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
618         (create_overlap_variables_for): Pass alias_set from fieldoff to
619         create_sft.
620         * alias.c (get_alias_set): Use alias_set from SFT if set.
621
622 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
623
624         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
625         of a variable as an unsigned HOST_WIDE_INT integer.
626
627 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
628
629         PR rtl-optimization/32405
630         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
631
632 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
633
634         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
635
636         PR middle-end/31959
637         * builtins.c: Include diagnostic.h.
638         (expand_builtin_expect): Make gcc_assert more permissive.
639         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
640
641         PR inline-asm/32109
642         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
643         and !allows_mem.
644
645         PR middle-end/32285
646         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
647         if ACCUMULATE_OUTGOING_ARGS.
648
649 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
650
651         * config/m68hc11/m68hc11.c: Include dataflow header file.
652         (m68hc11_reorg): Port to dataflow.
653
654 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
655
656         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
657         (struct df_problem.free_blocks_on_set_blocks): New field.
658         (struct dataflow.optional_p): New field.
659         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
660         (df_live_set_all_dirty): New function.
661         * df-scan.c (df_scan_alloc): Initialize optional_p.
662         (problem_SCAN): Initialize free_blocks_on_set_blocks.
663         * df-core.c (df_set_blocks): Removed use of
664         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
665         df_problem.free_blocks_on_set_blocks to determine which blocks are
666         recycled.
667         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
668         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
669         uses dataflow.optional_p to determine if problem should be
670         deleted.
671         (rest_of_handle_df_initialize): Only start live problem if 
672         -02 or above.
673         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
674         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
675         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
676         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
677         problem_NOTE):  Initialize free_blocks_on_set_blocks.
678         (df_lr_bb_local_compute): Recompute luids if df_live problem is
679         not active.
680         (df_live_set_all_dirty, df_note_alloc): New function.
681         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
682         df_get_live_*.
683         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
684         * postreload.c (reload_combine): Ditto.
685         * cse.c (cse_extended_basic_block): Ditto.
686         * regmove.c (mark_flags_life_zones): Ditto.
687         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
688         erase_matching_seqs): Ditto.
689         * bt-load.c (compute_defs_uses_and_gen): Ditto.
690         * integrate (allocate_initial_values): Ditto.
691         * combine.c (reg_dead_at_p): Ditto.
692         * resource.c (mark_target_live_regs): Ditto.
693         * sched-rgn.c (check_live_1, update_live_1): Ditto.
694         * config/sh/sh.c (find_r0_life_regions): Ditto.
695         * global.c (rest_of_handle_global_alloc): Only add back df_live
696         for -O > 1.
697         * local-alloc.c (rest_of_handle_local_alloc): Only remove
698         df_live for -O > 1.
699         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
700         df_get_live_*.
701         (if_convert): Make sure df_live is there at -O == 1.
702         (pass_if_after_combine): Cleanup flags.
703         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
704         is there at -O == 1.
705         
706 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
707
708         * config/arm/arm.c (arm_get_frame_offsets): Set
709         offsets->locals_base to avoid negative stack size.
710         (thumb1_expand_prologue): Assert on negative stack size.
711
712 2007-04-19  Sebastian Pop  <sebpop@gmail.com>
713
714         PR tree-optimization/32367
715         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
716         of the chrec has no evolution in that loop.
717         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
718
719 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
720
721         * config/xtensa/xtensa.c: Include "df.h".
722         (xtensa_builtin_saveregs): Use adjust_address instead of change_address.
723         (xtensa_va_start): Invoke make_tree with sizetype for
724         expand_builtin_saveregs and then convert the result to a pointer.
725         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
726         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
727         Subtract argument size from index value as integers and then use
728         POINTER_PLUS_EXPR to add the result to the array address.
729         
730 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
731
732         PR target/32335
733         * config/m32c/m32c.c: Include dataflow header file.
734         (m32c_emit_prologue): Adjust for prologue insn change.
735         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
736         once inside a PARALLEL. Assume frame size passed in operand 0
737         includes space to save the fb register.
738         (prologue_enter_24): Likewise.
739         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
740
741 2007-06-19  David Daney  <ddaney@avtrex.com
742
743         PR target/32313
744         * config/mips/mips.md (cprestore): Mark $gp as used.
745
746 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
747
748         PR target/32369
749         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
750         (frv_ifcvt_modify_insn): Likewise.
751
752 2007-06-19  Richard Guenther  <rguenther@suse.de>
753
754         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
755         only handle positive offsets that fit in a HOST_WIDE_INT.
756
757 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
758
759         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
760         result of rsqrt insn for zero input argument to avoid NaN.
761
762 2007-06-19  Richard Guenther  <rguenther@suse.de>
763
764         PR middle-end/31950
765         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
766
767 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
768
769         PR tree-optimization/32353
770         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
771
772 2007-06-19  Nick Clifton  <nickc@redhat.com>
773
774         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
775
776 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
777
778         PR target/32389
779         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
780         * config/i386/i386.c (assign_386_stack_local): Assert that
781         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
782         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
783         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
784         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
785
786 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
787
788         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
789
790 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
791
792         PR rtl-optimization/32321
793         * gcse.c (replace_store_insn): Update the note before
794         calling emit_insn_after.
795
796 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
797
798         PR middle-end/32355
799         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
800         cse_main.
801         * df-problems.c (df_note_bb_compute): Fix dumping info.
802         
803 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
804
805         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
806         insn with emit_jump_insn.
807
808 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
809
810         PR tree-optimization/32383
811         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
812         * targhooks.h (default_builtin_reciprocal): Update prototype.
813         * target.h (struct gcc_target): Update builtin_reciprocal.
814         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
815         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
816         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
817         when fndecl is in BUILT_IN_MD class.
818         (execute_convert_to_rsqrt): Ditto.
819
820         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
821         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
822         Convert BUILT_IN_SQRTF code only  when md_fn is false.
823
824 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
825
826         * bt-load.c (move_btr_def): Fix the order of arguments
827         to validate_replace_rtx.
828
829 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
830
831         * config/m68k/m68k-devices.def: Add 54450..54455.
832
833 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
834
835         PR rtl-optimization/32366
836         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
837         FLOAT_EXTEND]: Prevent non-scalar modes from entering
838         significand_size.
839
840 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
841
842         PR middle-end/32349
843         * modulo-sched (generate_reg_moves): Added rescan parameter and if
844         this is true, rescan insn being modified.
845         (sms_schedule): Added rescan parameter.
846         (rest_of_handle_sms): Moved freeing of dominance info to before
847         getting out of cfg_layout.
848         
849 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
850
851         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
852         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
853         appropriate.
854
855         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
856         FL_CF_EMAC from the entry for isac.
857
858         * config/m68k/predicates.md (const_call_operand): Adjust comment.
859         (const_sibcall_operand): New.
860         (sibcall_operand): Use it.
861         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
862         (m68k_isas): ISAC does not imply FPU or EMAC.
863         (override_options): Add ISA_C logic for symbolic jump & call.
864
865 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
866
867         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
868         return mode from the builtin itself.
869         (sparc_fold_builtin): Fix cast of zero constant.
870
871 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
872
873         * targhooks.c (default_builtin_reciprocal): New default target hook.
874         * targhooks.h (default_builtin_reciprocal): Add prototype.
875         * hooks.c (hook_tree_tree_bool_null): Remove hook.
876         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
877         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
878         default_builtin_reciprocal.
879
880 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
881
882         PR middle-end/31723
883         * hooks.c (hook_tree_tree_bool_null): New hook.
884         * hooks.h (hook_tree_tree_bool_null): Add prototype.
885         * tree-pass.h (pass_convert_to_rsqrt): Declare.
886         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
887         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
888         and convert it to reciprocal a*rfunc(b).
889         (execute_convert_to_rsqrt): New function.
890         (gate_convert_to_rsqrt): New function.
891         (pass_convert_to_rsqrt): New pass definition.
892         * target.h (struct gcc_target): Add builtin_reciprocal.
893         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
894         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
895         TARGET_BUILTIN_RECIPROCAL.
896         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
897
898         * config/i386/i386.h (TARGET_RECIP): New define.
899         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
900         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
901         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
902         and not optimizing for size.
903         (*rcpsf2_sse): New insn pattern.
904         (*rsqrtsf2_sse): Ditto.
905         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
906         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
907         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
908         and not optimizing for size.
909         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
910         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
911         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
912         and not optimizing for size.
913         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
914         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
915         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
916         and not optimizing for size.
917         (*sse_rsqrtv4sf2): Do not export.
918         (sqrtv4sf2): Ditto.
919         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
920         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
921         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
922         and not optimizing for size.
923         (sqrtv4sf2): Ditto.
924         * config/i386/i386.opt (mrecip): New option.
925         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
926         (ix86_emit_swsqrtsf): Ditto.
927         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
928         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
929         builtin definition.
930         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
931         ix86_expand_unop1_builtin.
932         (ix86_emit_swdivsf): New function.
933         (ix86_emit_swsqrtsf): Ditto.
934         (ix86_builtin_reciprocal): New function.
935         (TARGET_BUILTIN_RECIPROCAL): Use it.
936         (ix86_vectorize_builtin_conversion): Rename from
937         ix86_builtin_conversion.
938         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
939         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
940         "i386 and x86_64 Options" section.
941         (Intel 386 and AMD x86_64 Options): Document -mrecip.
942
943 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
944             Zdenek Dvorak <dvorakz@suse.cz>
945             Richard Guenther  <rguenther@suse.de>
946             Kaz Kojima  <kkojima@gcc.gnu.org>
947
948         * tree-vrp.c (compare_values_warnv): Convert val2 to
949         the type of val1.
950         (extract_range_from_assert): Create
951         POINTER_PLUS_EXPR for pointer types.
952         (extract_range_from_binary_expr): Handle
953         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
954         for pointer types.
955         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
956         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
957         POINTER_PLUS_EXPR as PLUS_EXPR.
958         (number_of_iterations_lt_to_ne):
959         For pointer types, use sizetype when
960         creating MINUS_EXPR/PLUS_EXPRs.
961         (assert_loop_rolls_lt): For pointer types, use sizetype when
962         creating MINUS_EXPR/PLUS_EXPRs.
963         (number_of_iterations_le): Likewise.
964         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
965         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
966         like PLUS_EXPR and MINUS_EXPR.
967         * tree-pretty-print.c (dump_generic_node): Handle
968         POINTER_PLUS_EXPR.
969         (op_prio): Likewise.
970         (op_symbol_1): Likewise.
971         * optabs.c (optab_for_tree_code): Likewise.
972         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
973         specially.
974         * tree-tailcall.c (process_assignment): Mention
975         POINTER_PLUS_EXPR in a TODO comment.
976         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
977         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
978         not used with a pointer and an integer type.
979         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
980         increment using chrec_convert_rhs instead of chrec_convert.
981         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
982         PLUS_EXPR except for the right hand side's type will be
983         sizetype.
984         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
985         (fold_used_pointer_cast): Kill.
986         (pointer_offset_p): Kill.
987         (fold_used_pointer): Kill.
988         (pointer_used_p): Kill.
989         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
990         call fold_used_pointer.
991         (instantiate_parameters_1): Convert the increment
992         using chrec_convert_rhs instead of chrec_convert.
993         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
994         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
995         instead of PLUS_EXPR.
996         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
997         PLUS_EXPR for pointers.
998         (std_gimplify_va_arg_expr): Likewise.
999         (fold_builtin_memory_op): Likewise.
1000         (fold_builtin_strstr): Likewise.
1001         (fold_builtin_strchr): Likewise.
1002         (fold_builtin_strrchr): Likewise.
1003         (fold_builtin_strpbrk): Likewise.
1004         (expand_builtin_memory_chk): Likewise.
1005         (fold_builtin_memory_chk): Likewise.
1006         (std_expand_builtin_va_start): Use
1007         sizetype for the call to make_tree and then convert
1008         to the pointer type.
1009         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
1010         instead of PLUS_EXPR for adding to a pointer.
1011         (std_gimplify_va_arg_expr): Use fold_build2 for
1012         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
1013         the operands to sizetype first and then cast the BIT_AND_EXPR
1014         back to the pointer type.
1015         * fold-const.c (build_range_check): Handle pointer types
1016         specially.
1017         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
1018         of PLUS_EXPR's. Make sure the offset is converted to
1019         sizetype.
1020         (try_move_mult_to_index): Strip the NOPs from the offset.
1021         Remove code argument and replace all uses with PLUS_EXPR.
1022         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
1023         specially. Don't use a pointer type for MINUS_EXPR.
1024         (fold_unary): Handle for (T1)(X op Y),
1025         only p+ as that is the only as that can be handled for
1026         binary operators now.
1027         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
1028         POINTER_PLUS_EXPR.
1029         <case PLUS_EXPR>: Add folding of PTR+INT into
1030         PTR p+ INT.
1031         Don't call try_move_mult_to_index.
1032         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
1033         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
1034         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
1035         Don't call try_move_mult_to_index.
1036         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
1037         (tree_expr_nonzero_p): Likewise.
1038         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
1039         of PLUS_EXPR for the complex expression folding.
1040         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
1041         first chrec is a pointer type, then the second should
1042         be sizetype and not the first's type.
1043         For POINTER_PLUS_EXPR, use a different right hand side type.
1044         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1045         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
1046         different right hand side type.
1047         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1048         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
1049         instead of PLUS_EXPR.
1050         When either operand is zero, convert the other operand.
1051         (chrec_apply): Use chrec_convert_rhs
1052         on the argument x instead of chrec_convert.
1053         (reset_evolution_in_loop): For pointer types, the new_evol
1054         should be sizetype.
1055         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
1056         different right hand side type.
1057         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1058         (chrec_convert_rhs): New function.
1059         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
1060         different right hand side type.
1061         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1062         * tree-chrec.h (chrec_convert_rhs): New prototype.
1063         (build_polynomial_chrec): For pointer types, the right hand
1064         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
1065         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
1066         Remove subtraction case as it is always addition now.
1067         Make sure the offset is converted to sizetype.
1068         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
1069         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
1070         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
1071         PLUS_EXPR in pointer type.
1072         Handle POINTER_PLUS_EXPR.
1073         (tree_to_aff_combination): Likewise.
1074         (force_expr_to_var_cost): Likewise.
1075         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
1076         instead of PLUS_EXPR for pointers.
1077         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
1078         instead of PLUS_EXPR of pointer types.
1079         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
1080         as PLUS_EXPR.
1081         (check_va_list_escapes): Likewise.
1082         (check_all_va_list_escapes): Likewise.
1083         * dwarf2out.c (loc_descriptor_from_tree_1):
1084         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
1085         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
1086         (string_constant): Likewise.
1087         * tree-ssa-address.c (tree_mem_ref_addr): When adding
1088         the offset to the base, use POINTER_PLUS_EXPR.
1089         (add_to_parts): Convert the index to sizetype.
1090         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
1091         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
1092         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
1093         Offset only holds something for PLUS_EXPR.
1094         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
1095         a PLUS_EXPR.
1096         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
1097         and not PLUS_EXPR.
1098         (analyze_accesses_for_modify_stmt): Likewise.
1099         Remove comment about the type being integral type as it is
1100         wrong now.
1101         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
1102         PLUS_EXPR.
1103         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
1104         and not PLUS_EXPR.
1105         Correct the type which the artimentic is done in (is now
1106         sizetype).
1107         Reindent one loop.
1108         * tree-data-ref.c (split_constant_offset): Handle
1109         POINTER_PLUS_EXPR
1110         * tree-affine.c (tree_to_aff_combination): Likewise.
1111         * c-typeck.c (build_unary_op): For pointers create the increment
1112         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
1113         for pointers.
1114         * gimplify.c (gimplify_self_mod_expr): Create a
1115         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1116         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
1117         * tree.def (POINTER_PLUS_EXPR): New tree code.
1118         * tree-predcom.c (ref_at_iteration): If we have a pointer
1119         type do the multiplication in sizetype.
1120         * tree-mudflap.c (mf_xform_derefs_1): Create a
1121         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1122         * tree-ssa-forwprop.c 
1123         (forward_propagate_addr_into_variable_array_index):
1124         Don't expect there to be a cast for the index as that
1125         does not exist anymore.
1126         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
1127         instead of PLUS_EXPR.
1128         Don't check for the first operand of the POINTER_PLUS_EXPR
1129         was the index as it cannot be.
1130         Call forward_propagate_addr_into_variable_array_index with
1131         the SSA_NAME instead of the statement.
1132         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
1133         (compare_constant): Likewise.
1134         (copy_constant): Likewise.
1135         (compute_reloc_for_constant): Likewise.
1136         (output_addressed_constants): Likewise.
1137         (initializer_constant_valid_p): Likewise.
1138         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
1139         Convert the MIN/MAX of the inner type to the outer
1140         type before comparing them.
1141         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
1142         POINTER_PLUS_EXPR instead of PLUS_EXPR.
1143         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
1144         of PLUS_EXPR for pointers.
1145         * tree-inline.c (estimate_num_insns_1): Handle
1146         POINTER_PLUS_EXPR.
1147         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
1148         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1149         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
1150         instead of PLUS_EXPR for the pointer increment statement.
1151         (vect_update_ivs_after_vectorizer): For pointer types, create
1152         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
1153         MULT_EXPR in sizetype.
1154         (vect_gen_niters_for_prolog_loop): Add a cast when creating
1155         byte_misalign.
1156         * tree-object-size.c (plus_expr_object_size): Handle
1157         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
1158         code which is trying to figure out which side is a pointer and 
1159         is the index.
1160         (check_for_plus_in_loops_1): Likewise.
1161         (check_for_plus_in_loops): Likewise.
1162         * c-common.c (pointer_int_sum): Create a
1163         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1164         * tree-ssa-structalias.c (handle_ptr_arith): Handle
1165         only POINTER_PLUS_EXPR.  Removing all the extra
1166         code which is trying to figure out which side is a pointer and 
1167         is the index.
1168         * tree-cfg.c (verify_expr): Add extra checking for pointers and
1169         PLUS_EXPR and MINUS_EXPR.
1170         Also add checking to make sure the operands of POINTER_PLUS_EXPR
1171         are correct.
1172         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
1173         with make_tree, instead of a pointer type.
1174         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
1175         for pointers instead of PLUS_EXPR.
1176         (s390_gimplify_va_arg): Likewise.
1177         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
1178         instead of PLUS_EXPR when doing addition on pointer
1179         types.  Use sizetype for the second operand.
1180         (spu_gimplify_va_arg_expr): Likewise.
1181         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
1182         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
1183         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
1184         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
1185         for the pointer addition and also use size_int/sizetype
1186         for the offset.
1187         (ix86_gimplify_va_arg): Likewise.
1188         Perform BIT_AND_EXPR on sizetype arguments.
1189         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
1190         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
1191         for the pointer additions and also use size_int for the offsets.
1192         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
1193         additions and also use size_int for the offsets.  Perform
1194         BIT_AND_EXPR on sizetype arguments.
1195         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
1196         POINTER_PLUS_EXPR for pointers and create the
1197         BIT_AND_EXPR in sizetype.
1198         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
1199         instead of PLUS_EXPR for pointer addition.
1200         (rs6000_va_start): Likewise.
1201         Also use sizetype for the offset.
1202         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
1203         as PLUS_EXPR/MINUS_EXPR.
1204         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
1205         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
1206         Don't use BIT_AND_EXPR on a pointer type, convert the
1207         expression to sizetype first.
1208         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
1209         for pointers.
1210         (mips_gimplify_va_arg_expr): Likewise.
1211         Don't create BIT_AND_EXPR in a pointer type.
1212
1213 2007-06-15  Eric Christopher  <echristo@apple.com>
1214
1215         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
1216         (x86_64-*-darwin*): Ditto.
1217         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
1218         for above.
1219
1220 2007-06-15  Matthew Wilcox <matthew@wil.cx>
1221
1222         * doc/extend.texi: Document behavior of __attribute__((aligned))
1223         on typedefs.
1224
1225 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
1226
1227         * rtlanal.c (note_stores): Improve documentation.
1228
1229 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
1230
1231         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
1232         LOCAL_LABEL_PREFIX): Delete.
1233         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
1234         (bfin_internal_label): Delete.
1235
1236 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
1237
1238         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
1239         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
1240         otherwise define to LIBGCC2_TF_CEXT.
1241         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
1242         (LIBGCC_TF_CEXT): Ditto.
1243         (TF_SIZE): Ditto.
1244
1245 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
1246
1247         PR rtl-optimization/32339
1248         * df-scan.c (df_uses_record): Don't modify flags but just add to
1249         it for df_ref_record.
1250
1251 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1252
1253         * tree-mudflap.c: Fix whitespace issues.
1254
1255 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
1256
1257         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
1258
1259 2007-06-14  Eric Christopher  <echristo@apple.com>
1260
1261         * config/i386/sse.md (movdi_to_sse): Rewrite body.
1262         (movv4sf): Use gcc_unreachable instead of abort.
1263
1264 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
1265
1266         PR target/32268
1267         * config/i386/sfp-machine.h (CMPtype): New define.
1268         (mach stubs): Use CMPtype instead of int as a return type.
1269
1270 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
1271
1272         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
1273         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
1274         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
1275         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
1276         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
1277         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
1278         config/soft-fp/soft-fp.h: Update from glibc CVS.
1279
1280 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1281
1282         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
1283
1284 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1285
1286         PR target/32341
1287         * config/v850/v850.c: Include dataflow header file.
1288         (substitute_ep_register): Fix typo.
1289
1290 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1291
1292         * configure.ac: Fix earlier checkin.
1293         * configure: Regenerated.
1294
1295 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1296
1297         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
1298         * aclocal.m4: Regenerate.
1299         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
1300         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
1301         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
1302         * configure: Regenerate.
1303         * Makefile.in (LOOSE_WARN): Subst loose_warn.
1304
1305         * Makefile.in (quickstrap): Build libgcc too.
1306
1307 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1308
1309         * configure.ac: Add --enable-checking=df.  Explicitly mention that
1310         the variables are initialized as for "release".
1311         * df-core.c: Use it.
1312         * configure: Regenerate.
1313         * config.in: Regenerate.
1314
1315 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
1316
1317         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
1318         validate_replace_rtx instead of replace_rtx.
1319         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
1320
1321 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
1322
1323         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
1324         (DWARF2_UNWIND_INFO): Override default if configured with
1325         SJLJ EH disabled.
1326         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
1327         (ENDFILE_SPEC): Add crtend.o.
1328         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
1329         (ENDFILE_SPEC): Add crtend.o.
1330         (TARGET_USE_JCR_SECTION): Define.
1331         (MD_UNWIND_SUPPORT): Define for 32-bit target.
1332
1333         * config/i386/cygming-crtbegin.c: New file.
1334         * config/i386/cygming-crtend.c: New file.
1335
1336 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
1337
1338         * config/i386/w32-unwind.h: New file.
1339
1340 2007-06-13  Eric Christopher  <echristo@apple.com>
1341
1342         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
1343         the user set a value below STACK_BOUNDARY.
1344
1345 2007-06-13  Thiemo Seufer  <ths@networkno.de>
1346
1347         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
1348         imply -lpthread for -pthread.
1349
1350 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1351
1352         * basic-block.h: Remove the prototype for
1353         free_basic_block_vars.
1354         * cfglayout.h: Remove the prototype for
1355         insn_locators_initialize.
1356         * tree.h: Remove the prototype for emit_line_note.
1357
1358         * tree-ssa-pre.c (mergephitemp): Remove.
1359         (init_pre): Don't use mergephitemp.
1360
1361 2007-06-13  Eric Christopher  <echristo@apple.com>
1362
1363         * config/i386/i386.c (override_options): If we've specified
1364         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
1365
1366 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
1367
1368         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
1369         is defined.
1370
1371 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1372
1373         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
1374         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
1375         (eh_store_handler): New pattern.
1376         (eh_return): Emit it instead of a plain move.
1377
1378 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
1379
1380         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
1381         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
1382         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
1383         def_builtin_const.
1384
1385 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1386
1387         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
1388         (find_next_insn_start, find_load): New functions.
1389         (bfin_reorg): Use them to deal with the fact that parallel insns are
1390         no longer represented as a SEQUENCE.
1391
1392 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
1393
1394         * config/sparc/sparc.c (sparc_override_options): Initialize
1395         fpu mask correctly.
1396
1397 2007-06-13  Dave Korn  <dave.korn@artimi.com>
1398
1399         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
1400         df_get_live_out.
1401
1402 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1403
1404         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
1405         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
1406         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
1407         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
1408         tree-vect-transform.c: Fix comment typos.  Follow spelling
1409         conventions.
1410
1411 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
1412
1413        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
1414        to the exit block use set.
1415        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
1416        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
1417        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
1418
1419 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
1420
1421         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
1422         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
1423         to indicate an error.
1424         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
1425         (dbg_cnt_process_opt): Print an error on a bad argument.
1426         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
1427         * common.opt (-fdbg-cnt-list): New.
1428         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
1429
1430 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
1431
1432         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
1433         flag on ref-all pointers.
1434
1435 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1436
1437         PR middle-end/31579
1438         * expr.c (expand_expr_addr_expr_1): Call expand_expr
1439         for the offset with the modifier as EXPAND_INITIALIZER
1440         if the modifier is EXPAND_INITIALIZER.
1441         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
1442         a register if we had an overflow.
1443
1444 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1445
1446         * real.c (real_isfinite): New.
1447         (real_sqrt): Use it.
1448         * real.h (real_isfinite): New.
1449         * builtins.c: Use it.
1450
1451 2007-06-12  Ian Lance Taylor  <iant@google.com>
1452             Daniel Berlin  <dberlin@dberlin.org>
1453
1454         PR libstdc++/29286
1455         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
1456         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
1457         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
1458         (DECL_NO_TBAA_P): Define.
1459         (struct tree_decl_common): Add no_tbaa_flag field.
1460         * tree-ssa-structalias.c (struct variable_info): Add
1461         no_tbaa_pruning field.
1462         (new_var_info): Initialize no_tbaa_pruning field.
1463         (unify_nodes): Copy no_tbaa_pruning field.
1464         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1465         (dump_solution_for_var): Print no_tbaa_pruning flag.
1466         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
1467         callers.
1468         (compute_tbaa_pruning): New static function.
1469         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
1470         Call compute_tbaa_pruning.
1471         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
1472         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1473         * gimple-low.c (lower_stmt): Likewise.
1474         * tree-gimple.c (is_gimple_stmt): Likewise.
1475         * tree-ssa-operands.c (get_expr_operands): Likewise.
1476         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1477         * tree-inline.c (estimate_num_insns_1): Likewise.
1478         (copy_result_decl_to_var): Likewise.
1479         * expr.c (expand_expr_real_1): Likewise.
1480         * tree-pretty-print.c (dump_generic_node): Likewise.
1481         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
1482         * omp-low.c (omp_copy_decl_2): Likewise.
1483         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
1484         * doc/c-tree.texi (Expression trees): Document
1485         CHANGE_DYNAMIC_TYPE_EXPR.
1486
1487 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1488
1489         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
1490         with !HONOR_NANS and !HONOR_INFINITIES.
1491         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
1492
1493 2007-06-12  Tristan Gingold  <gingold@adacore.com>
1494
1495         * gcov.c: Comments updated.
1496         (source_info): Add file_time field.
1497         (source_index): New variable.
1498         (mutiple_files): New variable.
1499         (generate_results): New function extracted from process_file.
1500         (process_file): Save and restore chain of functions, generate
1501         results and free structures only if not merging results.
1502         (release_structures): File names are now freed in create_file_names
1503         (create_file_names): Free previous file names.
1504         (find_source): File date is now read here and modifications in
1505         source files is checked here.
1506         (read_graph_file): Only reverse order of functions for the current
1507         object file.
1508         (make_gcov_file_name): Do not generate long names if input_name is
1509         NULL.
1510         (output_lines): If merging results do not display graph, data and
1511         runs informations.
1512         Checking source file modification is done in find_source.
1513
1514         * doc/gcov.texi: Append an s to sourcefile.
1515
1516 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1517
1518         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
1519         (forced_nop): New pattern.
1520         * config/bfin/bfin.c: Include "df.h".
1521         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
1522         (bfin_discover_loop): Use df_get_live_in instead of
1523         global_live_at_start.
1524         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
1525         df_analyze when done.
1526         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
1527         the insns.  Use QImode for the final insn in a bundle.  Call
1528         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
1529         gen_nop.
1530         (reorder_var_tracking_notes): New function.
1531         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
1532         update_life_info.  Call df_analyze after scheduling and bundle
1533         generation.  Call reorder_var_tracking_notes if generating these notes.
1534         Call df_finish_pass at the end.
1535
1536 2007-06-12  Dirk Mueller  <dmueller@suse.de>
1537
1538         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
1539         a comparison, not an assignment.
1540
1541 2007-06-12  Olivier Hainque  <hainque@adacore.com>
1542
1543         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
1544         Request walking the subtrees only, leaving the current is_lhs/val_only
1545         untouched.
1546         (convert_non_local_reference): Likewise.
1547
1548 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
1549
1550         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
1551
1552 2007-06-12  Richard Guenther  <rguenther@suse.de>
1553
1554         PR tree-optimization/15353
1555         PR tree-optimization/31657
1556         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
1557         * timevar.def: Add TV_TREE_IFCOMBINE.
1558         * tree-pass.h (pass_tree_ifcombine): Declare.
1559         * tree-ssa-ifcombine.c: New file.
1560         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
1561         * tree-flow.h (blocks_in_phiopt_order): Declare.
1562         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
1563         (tree-ssa-ifcombine.o): New dependencies.
1564
1565 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1566
1567         PR rtl-optimization/32293
1568         * combine.c (simplify_if_then_else): Truncate return from
1569         nonzero_bits() to correct mode.
1570
1571 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1572
1573         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
1574         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
1575
1576 2007-06-11  Diego Novillo  <dnovillo@google.com>
1577
1578         * Makefile.in (reload1.o-warn): Remove.
1579
1580 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
1581
1582         * combine.c (subst): Use reg_overlap_mentioned_p
1583         instead of comparing register numbers directly.
1584
1585 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1586
1587         * reload1.c (mark_home_live_1): Use the mode parameter.
1588
1589 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1590
1591         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
1592         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
1593         word "deferred".
1594         * df-core.c: Ditto.
1595
1596 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
1597
1598         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
1599
1600 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1601
1602         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
1603         from integer registers.
1604         (FP mode splitters): Handle TFmode.
1605
1606 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
1607
1608         * tree-ssa-structalias.c (find_what_p_points_to): Return false
1609         for ref-all pointers that point-to anything.
1610
1611 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
1612
1613         * config/arm/arm.c (arm_output_dwarf_dtprel,
1614         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
1615
1616 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1617
1618         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
1619         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
1620         to memory moves.
1621
1622 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
1623
1624         * gcc/tree.c (signed_or_unsigned_type_for): New.
1625         (unsigned_type_for): Use signed_or_unsigned_type_for.
1626         (signed_type_for): Use signed_or_unsigned_type_for.
1627         * gcc/tree.h (signed_or_unsigned_type_for): New.
1628         (get_signed_or_unsigned_type): Remove.
1629         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
1630         lang_hooks.types.signed_type
1631         (size_diffop): Likewise.
1632         (all_ones_mask_p): Likewise.
1633         (build_range_check): Likewise.
1634         (fold_cond_expr_with_comparison): Likewise.
1635         (fold_cond_expr_with_comparison): Likewise.
1636         (unextend): Likewise.
1637         (extract_muldiv_1): Likewise.
1638         (fold_single_bit_test_into_sign_test): Likewise.
1639         (fold_binary): Likewise.
1640         (fold_ternary): Likewise.
1641         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
1642         instead of get_signed_or_unsigned_type.
1643         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
1644         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1645         * gcc/expr.c (signed_or_unsigned_type_for): Use
1646         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
1647         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
1648         (lhd_signed_or_unsigned_type): Remove.
1649         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
1650         signed_or_unsigned_type.
1651         (lhd_signed_or_unsigned_type): Remove.
1652         * gcc/expmed.c (make_tree): Use signed_type_for instead of
1653         lang_hooks.types.signed_type.
1654         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
1655         c_common_signed_type instead of lang_hooks.types.signed_type.
1656         (c_common_unsigned_type): New.
1657         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
1658         (shorten_compare): Use c_common_unsigned_type instead of
1659         c_common_signed_or_unsigned_type.
1660         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
1661         unsigned_type_for.
1662         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
1663         lang_hooks.types.signed_type.
1664         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1665         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
1666         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
1667         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
1668         instead of unsigned_type_for.
1669         * gcc/c-decl.c (groakdeclarator): Likewise.
1670         * gcc/c-typeck.c (convert_for_assignment): Likewise.
1671         * gcc/c-common.h (c_common_unsigned_type): New.
1672
1673 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1674
1675         PR target/32280
1676         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
1677         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
1678
1679 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1680
1681         PR middle-end/32279
1682         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
1683         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
1684
1685 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
1686             Sebastian Pop  <sebpop@gmail.com>
1687
1688         * lambda-code.c (remove_iv): New.
1689         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
1690
1691 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
1692
1693         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
1694         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
1695         * tree-ssa-loop-prefetch.c: Include optabs.h.
1696         (FENCE_FOLLOWING_MOVNT): New macro.
1697         (struct mem_ref): Add independent_p and storent_p fields.
1698         (record_ref): Initalize the new fields.
1699         (gather_memory_references_ref): Return true if the reference
1700         could be analysed.
1701         (gather_memory_references): Check whether all memory accesses
1702         in loop were recorded.
1703         (should_issue_prefetch_p): Return false for nontemporal stores.
1704         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
1705         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
1706         (determine_loop_nest_reuse): Detect independent memory references.
1707         (loop_prefetch_arrays): Call mark_nontemporal_stores.
1708         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
1709         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
1710         * config/i386/i386.h (x86_mfence): Declare.
1711         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
1712         * config/i386/i386.c (x86_mfence): New variable.
1713         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
1714
1715         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
1716         * optabs.c (init_optabs): Initialize storent_optab.
1717         * optabs.h (enum optab_index): Add OTI_storent.
1718         (storent_optab): Declare.
1719         * genopinit.c (optabs): Add initialization for storent_optab.
1720         * tree.h (MOVE_NONTEMPORAL): New macro.
1721         * expr.c (expand_assignment, store_expr, store_constructor_field,
1722         store_constructor, store_field, expand_expr_real_1): Propagate
1723         nontemporality of the expanded store.
1724         (emit_storent_insn): New function.
1725         * expr.h (expand_assignment, store_expr): Declaration changed.
1726         * function.c (assign_parm_setup_reg): Pass false as nontemporality
1727         to expand_assignment.
1728         * stmt.c (expand_asm_expr): Ditto.
1729         * calls.c (initialize_argument_information): Pass false as
1730         nontemporality to store_expr.
1731         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
1732         storentsi): New.
1733
1734 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1735
1736         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
1737         parameter, use it.
1738         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
1739
1740 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1741
1742         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
1743         and allow DECL_P here.
1744
1745 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
1746
1747         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
1748         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
1749         track of the size of the expression.
1750         * cfghooks.c (merge_blocks): Remove block from loops structure only
1751         after call of the merge_blocks hook.
1752
1753 2007-06-09  Tom Tromey  <tromey@redhat.com>
1754
1755         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
1756         (deprecated_state): Removed.
1757         (start_decl): Update.
1758         (enum deprecated_states): Moved earlier.
1759         (groktypename): Update.
1760         (push_parm_decl): Likewise.
1761         (grokfield): Likewise.
1762         (start_function): Likewise.
1763
1764 2007-06-09  Ian Lance Taylor  <iant@google.com>
1765
1766         PR tree-optimization/32169
1767         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
1768         CONVERT_EXPR, check whether min and max both converted to an
1769         overflow infinity representation.
1770
1771 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
1772
1773         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
1774         not inserted on the edge.
1775
1776 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
1777
1778         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
1779         instructions if they are supported.
1780         (__divsi3, __umodsi3, __modsi3): Likewise.
1781         (__ashldi3, __ashrdi3, __lshrdi3): New.
1782         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
1783
1784 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
1785             Tony Linthicum <tony.linthicum@amd.com>
1786
1787         * doc/extend.texi: Add fvect-cost-model flag.
1788         * common.opt (fvect-cost-model): New flag.
1789         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
1790         cost fields in stmt_vec_info struct for STMT.
1791         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
1792         fields in stmt_vec_info struct and access functions for the same.
1793         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
1794         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
1795         load, store and vector to scalar operation.
1796         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
1797         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
1798         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
1799         (TARG_VEC_STORE_COST): Define cost of vector store.
1800         (vect_estimate_min_profitable_iters): Define new function.
1801         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
1802         check to evaluate if loop iterations are less than minimum profitable
1803         iterations determined by cost model or minimum vect loop bound defined
1804         by user, whichever is more conservative.
1805         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
1806         run-time check to evaluate if loop iterations are less than minimum
1807         profitable iterations determined by cost model or minimum vect loop
1808         bound defined by user, whichever is more conservative.
1809         (vect_estimate_min_profitable_iterations): New function to estimate
1810         mimimimum iterartions required for vector version of loop to be
1811         profitable over scalar version.
1812         (vect_model_reduction_cost): New function.
1813         (vect_model_induction_cost): New function.
1814         (vect_model_simple_cost): New function.
1815         (vect_cost_strided_group_size): New function.
1816         (vect_model_store_cost): New function.
1817         (vect_model_load_cost): New function.
1818         (vectorizable_reduction): Call vect_model_reduction_cost during
1819         analysis phase.
1820         (vectorizable_induction): Call vect_model_induction_cost during
1821         analysis phase.
1822         (vectorizable_load): Call vect_model_load_cost during analysis phase.
1823         (vectorizable_store): Call vect_model_store_cost during analysis phase.
1824         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
1825         vectorizable_promotion, vectorizable_demotion): Call
1826         vect_model_simple_cost during analysis phase.
1827
1828 2007-06-08  Simon Baldwin  <simonb@google.com>
1829
1830         * reg-stack.c (get_true_reg): Readability change.  Moved default case
1831         label into direct switch statement scope.
1832
1833 2007-06-08  Simon Baldwin  <simonb@google.com>
1834
1835         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
1836         in gcc_assert() with '==' comparison.
1837
1838 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1839
1840         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
1841         TARGET_ABM handling of x86_popcnt variable.
1842
1843 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1844
1845         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
1846         __builtin_copysignq and __builtin_infq built-in functions.
1847
1848 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1849
1850         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
1851         SSE4.2 section.  Correct built-in function names in SSE4A section.
1852
1853 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1854
1855         PR tree-optimization/32243
1856         * tree-vect-transform.c (vectorizable_type_promotion): Move check
1857         for ncopies after ratio check between nunits_out and nunits_in.
1858         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
1859
1860 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
1861
1862         PR tree-optimization/32224
1863         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
1864         vectorization upon a non GIMPLE_MODIFY_STMT.
1865
1866 2007-06-08  Christian Bruel  <christian.bruel@st.com>
1867
1868         PR target/29953
1869         * config/sh/sh.md (doloop_end): New pattern and splitter.
1870         * loop-iv.c (simple_rhs_p): Check for hardware registers.
1871
1872 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
1873
1874         PR middle-end/32209
1875         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
1876         functions.
1877         (verify_dominators): Do not change dominance tree.
1878
1879 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
1880
1881         * config/sh/constraints.md: New file.
1882         * config/sh/sh.c: Include tm-constrs.h.
1883         (reg_class_from_letter): Remove.
1884         (prepare_cbranch_operands): Use satisfies_constraint_*
1885         function instead of macro.
1886         (andcosts, broken_move, sh_secondary_reload): Likewise.
1887         * config/sh/predicates.md (trapping_target_operand): Likewise.
1888         (and_operand, arith_operand, arith_reg_or_0_operand,
1889         cmp_operand, logical_operand, target_operand,
1890         ua_address_operand, ua_offset, xor_operand): Likewise.
1891         * config/sh/sh.md: Include constraints.md.
1892         (*movsicc_t_false): Use satisfies_constraint_* function
1893         instead of macro.
1894         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
1895         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
1896         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
1897         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
1898         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
1899         (REG_CLASS_FROM_CONSTRAINT): Remove.
1900         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
1901         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
1902         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
1903         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
1904         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
1905         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
1906         function instead of macro.
1907         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
1908         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
1909         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
1910         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
1911         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
1912         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
1913         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
1914         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
1915         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
1916         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
1917         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
1918         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
1919         EXTRA_CONSTRAINT_STR): Likewise.
1920         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
1921
1922 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
1923
1924         * config/i386/darwin.h (STACK_BOUNDARY): Define.
1925
1926 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
1927
1928         PR c++/30759
1929         * c-common.h (flag_cpp0x): Replaced by...
1930         (cxx_dialect): ... this new variable specifying the C++ dialect that
1931         is used.
1932         * c-common.c (flag_cpp0x): Removed.
1933         (cxx_dialect): Defined.
1934         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
1935         cxx_dialect.
1936         * c-opts.c (c_common_post_options): Likewise.
1937         (set_std_cxx98): Set cxx_dialect to cxx98.
1938         (set_std_cxx0x): Set cxx_dialect to cxx0x.
1939
1940 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
1941             Hui-May Chang <hm.chang@apple.com>
1942
1943         * doc/invoke.texi (Darwin Options): Update documentation for
1944         -mmacosx-version-min.
1945         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
1946         * config/darwin-driver.c: New file.
1947         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
1948         * config/t-darwin (darwin-driver.o): New rule.
1949
1950         * config/darwin-c.c (version_as_macro): Ignore low digit.
1951
1952 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
1953
1954         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
1955         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
1956         (CSGNMODE): New mode macro.
1957         (CSGNVMODE): New mode attribute.
1958         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
1959         expander using CSGNMODE mode macro.  Handle TFmode.
1960         (copysign<mode>3_const): Rename from copysignsf3_const and
1961         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
1962         Handle TFmode.
1963         (copysign<mode>3_var): Rename from copysignsf3_var and
1964         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
1965         Handle TFmode.
1966         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
1967         mode macro.  Handle TFmode.
1968         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
1969         (iortf3, *iortf3): Ditto.
1970         (xortf3, *xortf3): Ditto.
1971         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
1972         TFmode and TImode masks.
1973         (ix86_expand_copysign): Expand TFmode copysign insn.
1974         (IX86_BUILTIN_INFQ): New.
1975         (IX86_BUILTIN_FABSQ): Ditto.
1976         (IX86_BUILTIN_COPYSIGNQ): Ditto.
1977         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
1978         [__builtin_fabsq]: Ditto.
1979         [__builtin_copysignq]: Ditto.
1980         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
1981         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
1982         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
1983         ix86_expand_binop_builtin().
1984
1985 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
1986
1987         * config/xtensa/lib1funcs.asm: Clean up whitespace.
1988
1989 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
1990
1991         PR target/31850
1992         * rtl.h (push_to_sequence2): New.
1993         * emit-rtl.c (push_to_sequence2): New.
1994         * function.c (assign_parm_data_all): Add new fields.
1995         (assign_parm_setup_block): Call push_to_sequence2 instead of
1996         push_to_sequence.
1997         (assign_parm_setup_reg): Ditto.
1998         (assign_parm_setup_stack): Ditto.
1999         (assign_parms_unsplit_complex): Ditto.
2000         (assign_parms): Change field name.
2001
2002 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
2003
2004         PR tree-optimization/32220
2005         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
2006         phi node is reached before defining statement.
2007
2008 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2009
2010         PR tree-opt/32231
2011         * tree-vect-transform.c (vectorizable_call): Call update_stmt
2012         after changing the right hand side of the assignment.
2013
2014 2007-06-06  Eric Christopher  <echristo@apple.com>
2015
2016         * config.gcc (i?86-*-darwin*): Remove arch parameter.
2017         (x86_64-*-darwin*): Ditto.
2018         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
2019         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2020
2021 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2022
2023         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
2024         coding conventions.
2025         (add_key): Likewise.
2026         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
2027         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
2028         variable names.
2029         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
2030         (add_cost_one_coalesce): Likewise.
2031         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
2032         variable names. Rename orig to orig_name for consistency.
2033         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
2034         conventions.
2035         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
2036         (record_equivalences_from_stmt): Likewise.
2037         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
2038         the coding conventions.
2039         (memory_ssa_name_same): Likewise.
2040         (dse_optimize_stmt): Likewise.
2041         (dse_record_phis): Likewise.
2042         (dse_finalize_block): Likewise.
2043         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
2044         keywords as variable names.
2045         (may_move_till): Cast according to the coding conventions.
2046         (force_move_till_expr): Avoid using C++ keywords as variable names.
2047         (force_move_till): Cast according to the coding conventions.
2048         (memref_hash): Likewise.
2049         (memref_eq): Likewise.
2050         (gather_mem_refs_stmt): Likewise.
2051         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
2052         keywords as variable names.
2053         (idx_find_step): Cast according to the coding conventions.
2054         (idx_record_use): Likewise.
2055         (find_depends): Likewise.
2056         (prepare_decl_rtl): Likewise.
2057         (mbc_entry_hash): Likewise.
2058         (mbc_entry_eq): Likewise.
2059         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
2060         (simplify_replace_tree): Avoid using C++ keywords as variable names.
2061         (idx_infer_loop_bounds): Cast according to the coding conventions.
2062         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
2063         * tree-ssa-math-opts.c (occ_new ): Likwise.
2064         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
2065         macros.
2066         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
2067         names.
2068         (add_use_op): Likewise.
2069         (add_vop): Likewise.
2070         (add_vuse_op): Likewise.
2071         (add_vdef_op): Likewise.
2072         (get_expr_operands): Likewise.
2073         (push_stmt_changes): Use type safe memory macros.
2074         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
2075         keywords as variable names.
2076         (conditional_replacement): Likewise.
2077         (minmax_replacement): Likewise.
2078         (abs_replacement): Likewise.
2079         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
2080         coding conventions.
2081         (insert_fake_stores): Avoid using C++ keywords as variable names.
2082         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
2083         conventions.
2084         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
2085         (heapvar_insert): Use type safe memory macros.
2086         (new_var_info): Cast according to the coding conventions.
2087         (new_constraint): Likewise.
2088         (remove_preds_and_fake_succs): Use type safe memory macros.
2089         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
2090         conventions.
2091         (thread_single_edge): Likewise.
2092         (thread_through_loop_header): Likewise.
2093
2094 2007-06-06  Eric Christopher  <echristo@apple.com>
2095
2096         * config/i386/i386.c (override_options): Move handling
2097         of TARGET_SUBTARGET* earlier.
2098
2099 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
2100
2101         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
2102         use %n on printf.
2103
2104 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
2105
2106         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
2107         emited outside of basic block.
2108         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
2109         the created blocks.
2110         * rtl.h (delete_insn_chain): Declaration changed.
2111         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
2112         non-removed insns.
2113         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
2114         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
2115         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
2116         to delete_insn_chain.
2117         (rtl_verify_flow_info_1): Verify that the insns in header and footer
2118         do not have bb field set.
2119         (rtl_verify_flow_info): Verify that insns between basic blocks do not
2120         have bb field set.
2121         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
2122         * cfgcleanup.c (try_optimize_cfg): Ditto.
2123
2124 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2125
2126         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
2127         (lambda_body_vector_new): Use type safe memory macros.
2128         (lambda_linear_expression_new): Likewise.
2129         (lambda_loopnest_new): Likewise.
2130         (lambda_lattice_new): Likewise.
2131         (replace_uses_equiv_to_x_with_y): Cast according to the coding
2132         conventions. Use type safe memory macros.
2133         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
2134         (lambda_body_vector_s): Likewise.
2135         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
2136         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
2137
2138 2007-06-06  Richard Guenther  <rguenther@suse.de>
2139
2140         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
2141         if we need to schedule cfg_cleanup.
2142         (tree_ssa_forward_propagate_single_use_vars): Do so.
2143
2144 2007-06-06  Ian Lance Taylor  <iant@google.com>
2145
2146         * fold-const.c (merge_ranges): If range_successor or
2147         range_predecessor fail, just return 0.
2148
2149 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2150
2151         PR tree-optimization/32216
2152         * tree-vectorizer.c (supportable_widening_operation): Determine
2153         signedness of FIX_TRUNC_EXPR from output operand.
2154         (supportable_narrowing_operation): Ditto.
2155         * tree-vect-generic.c (expand_vector_operations_1): Determine
2156         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
2157         from input operand.
2158
2159 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2160
2161         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
2162         (struct pta): ...from here. Change flags to unsigned to avoid
2163         excessive casting (as it is used as a bit mask).
2164         (override_options): Add casts according to the coding convenventions.
2165         (x86_64_elf_unique_section): Likewise.
2166         (examine_argument): Avoid using C++ keywords as variable names.
2167         (construct_container): Likewise.
2168         (legitimize_pic_address): Likewise.
2169         (get_dllimport_decl): Cast according to the coding conventions. Use
2170         type safe memory macros.
2171         (legitimize_address): Cast according to the coding conventions.
2172         (emit_i387_cw_initialization): Corrected the type of slot to enum
2173         ix86_stack_slot.
2174         (ix86_init_machine_status): Use type safe memory macros.
2175         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
2176         (bdesc_pcmpistr): Likewise.
2177         (bdesc_crc32): Likewise.
2178         (bdesc_sse_3arg): Likewise.
2179         (bdesc_2arg): Likewise.
2180         (bdesc_1arg): Likewise.
2181         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
2182         (ix86_expand_sse_pcmpistr): Likewise.
2183         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
2184         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
2185         int to match the langhook definition.
2186         (ix86_builtin_conversion): Change the type of code to unsigned init to
2187         match the langhook definition.
2188         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
2189         names.
2190         (ix86_preferred_output_reload_class): Likewise.
2191         (ix86_cannot_change_mode_class): Likewise.
2192         (ix86_memory_move_cost): Likewise.
2193         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
2194         avoid excessive casting later on.
2195         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
2196
2197 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2198
2199         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
2200         as flags setting insn.
2201         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
2202
2203 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2204
2205         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
2206         (UNSPEC_ROUND): New.
2207         ("sse4_1_round<mode>2"): New insn pattern.
2208         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
2209         SSE4.1 targets.
2210         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
2211         expander using SSEMODEF mode macro.  Expand using
2212         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2213         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
2214         expander using SSEMODEF mode macro.  Expand using
2215         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2216         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
2217         expander using SSEMODEF mode macro.  Expand using
2218         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2219         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
2220         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
2221         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
2222         UNSPEC_ROUNDS.
2223
2224 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
2225             Sebastian Pop  <sebpop@gmail.com>
2226
2227         * lambda.h (build_linear_expr): New.
2228         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
2229         Use build_linear_expr, call fold and force_gimple_operand.
2230         (lambda_loopnest_to_gcc_loopnest): Check that there is
2231         something to insert.
2232         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
2233
2234 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
2235
2236         PR preprocessor/23479
2237         * doc/extend.texi: Document the 0b-prefixed binary integer
2238         constant extension.
2239
2240 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2241
2242         PR tree-optimization/32215
2243         * tree-vectorizer.c (supportable_widening_operation): Return false
2244         for unsupported FIX_TRUNC_EXPR tree code.
2245         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
2246
2247 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
2248
2249         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
2250         register on SPE targets.  Change documentation to reflect
2251         reality.
2252         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
2253         Change FIXED_SCRATCH to 14 and document why we're keeping r14
2254         out of the register allocation pool.
2255         (rs6000_reg_live_or_pic_offset_p): New function.
2256         (rs6000_emit_prologue): Move the actual saving of LR up to free
2257         r0 for holding r11.  Split saving of SPE 64-bit registers into
2258         its own case.  Ensure that offsets will always be in-range for
2259         'evstdd' by using r11 as a scratch register to point at the start
2260         of the SPE save area.  Save r11 if necessary, as it is the static
2261         chain register.
2262         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
2263         into its own case.  Ensure that offsets will always be in-range
2264         for 'evldd' by using r11 as a scratch register to point at the
2265         start of the SPE save area.  Also adjust r11 when restoring
2266         the stack pointer to compensate for pre-loading r11.
2267
2268 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
2269
2270         * cfg.c (init_flow): Use type safe memory macros.
2271         (alloc_block): Likewise.
2272         (unchecked_make_edge): Likewise.
2273         (dump_flow_info): Avoid using C++ keywords as variable names.
2274         (copy_original_table_clear): Cast according to the coding conventions.
2275         (copy_original_table_set): Likewise.
2276         * cfgexpand (label_rtx_for_bb): Likewise.
2277         (expand_gimple_basic_block): Likewise.
2278         * cfghooks.c (dump_bb): Likewise.
2279         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
2280         variable names.
2281         (lv_add_condition_to_bb): Likewise.
2282         * cfglayout (relink_block_chain): Cast according to the coding
2283         conventions.
2284         (fixup_reorder_chain): Likewise.
2285         (fixup_fallthru_exit_predecessor): Likewise.
2286         * cfgloop.c (glb_enum_p): Likewise.
2287         (get_exit_description): Likewise.
2288         (dump_recorded_exit): Likewise.
2289         * cfgloop.h (enum loop_estimation): Move out of struct scope...
2290         (struct loop): ... from here.
2291         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
2292         conventions.
2293         * cfgrtl.c (rtl_create_basic_block): Likewise.
2294         (rtl_split_block): Likewise.
2295         (rtl_dump_bb): Likewise.
2296         (cfg_layout_split_block): Likewise.
2297         (init_rtl_bb_info): Use typesafe memory macros.
2298
2299         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
2300         * graphds.h: Updated all usages of edge to graph_edge.
2301         * graphds.c: Likewise.
2302         * cfgloopanal.c: Likewise.
2303
2304 2007-06-05  Ian Lance Taylor  <iant@google.com>
2305
2306         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
2307         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
2308         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
2309         expression.
2310         (test_for_singularity): Likewise.
2311
2312 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
2313
2314         * config/i386/constraints.md ("Y2"): Replaced by ...
2315         ("Yt"): This.
2316         * config/i386/i386.md: Likewise.
2317         * config/i386/mmx.md: Likewise.
2318         * config/i386/sse.md: Likewise.
2319
2320 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
2321
2322         * config/i386/constraints.md ("z"): Replaced by ...
2323         ("Y0"): This.
2324         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
2325         (sse4_1_blendvps): Likewise.
2326         (sse4_1_pblendvb): Likewise.
2327         (sse4_2_pcmpestr): Likewise.
2328         (sse4_2_pcmpestrm): Likewise.
2329         (sse4_2_pcmpestr_cconly): Likewise.
2330         (sse4_2_pcmpistr): Likewise.
2331         (sse4_2_pcmpistrm): Likewise.
2332         (sse4_2_pcmpistr_cconly): Likewise.
2333
2334 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
2335
2336         * matrix-reorg.c (transform_access_sites): Fix computation.
2337         (transform_allocation_sites): Same.
2338
2339 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2340
2341         * config/i386/i386.c (override_options): Use
2342         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
2343
2344 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2345
2346         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
2347         (nonimm_not_xmm0_operand): Ditto.
2348         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
2349         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
2350         as operand[2] predicate.  Require "z" class XMM register for
2351         operand[3].  Adjust asm template.
2352         ("sse4_1_blendvpd"): Ditto.
2353         ("sse4_1_pblendvb"): Ditto.
2354         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
2355         force op2 into xmm0 register for variable blend instructions.
2356
2357 2007-06-04  Tom Tromey  <tromey@redhat.com>
2358
2359         * c-tree.h (start_enum): Update.
2360         (build_enumerator): Likewise.
2361         * c-decl.c (enum_next_value): Removed.
2362         (enum_overflow): Likewise.
2363         (start_enum): Add c_enum_contents argument.  Don't use globals.
2364         (build_enumerator): Likewise.
2365         * c-tree.h (struct c_enum_contents): New struct.
2366
2367 2007-06-04  Tom Tromey  <tromey@redhat.com>
2368
2369         * c-common.c (c_common_get_alias_set): Fix indentation.
2370
2371 2007-06-04  Ian Lance Taylor  <iant@google.com>
2372
2373         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
2374         to overflow, reduce overflow infinity to regular infinity.
2375         (vrp_var_may_overflow): New static function.
2376         (vrp_visit_phi_node): Check vrp_var_may_overflow.
2377
2378 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
2379
2380         * stor-layout.c (layout_type): Remove duplicate code.
2381
2382 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
2383
2384         PR c/32191
2385         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
2386         before build_common_builtin_nodes ().
2387
2388 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
2389
2390         PR target/31733
2391         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
2392
2393 2007-06-04  Jan Hubicka  <jh@suse.cz>
2394
2395         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
2396         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
2397         instead of _stat version.
2398
2399 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2400
2401         PR tree-optimization/32194
2402         * tree-predcom.c (determine_offset): Check that both references have
2403         the same type.
2404
2405 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2406
2407         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
2408         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
2409         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
2410         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
2411         Add argument to iterate_fix_dominators call.
2412         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
2413         * gcse.c (hoist_code): Change domby to vector.
2414         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
2415         Add argument to iterate_fix_dominators call.
2416         * loop-doloop.c (doloop_modify): Changed recount_dominator to
2417         recompute_dominator.
2418         * lambda-code.c (perfect_nestify): Ditto.
2419         * cfgloopanal.c: Include graphds.h.
2420         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
2421         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
2422         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
2423         add_edge call.
2424         * graphds.c: New file.
2425         * graphds.h: New file.
2426         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
2427         (get_dominated_by, get_dominated_by_region): Change return type to
2428         vector.
2429         (verify_dominators): Recompute all dominators and compare the results.
2430         (recount_dominator): Renamed to ...
2431         (recompute_dominator): ... this.  Do not check that the block is
2432         dominated by entry.
2433         (iterate_fix_dominators): Reimplemented.
2434         (prune_bbs_to_update_dominators, root_of_dom_tree,
2435         determine_dominators_for_sons): New functions.
2436         * et-forest.c (et_root): New function.
2437         * et-forest.h (et_root): Declare.
2438         * Makefile.in (graphds.o): Add.
2439         (cfgloopanal.o): Add graphds.h dependency.
2440         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
2441         * basic-block.h (get_dominated_by, get_dominated_by_region,
2442         iterate_fix_dominators): Declaration changed.
2443         (recount_dominator): Renamed to ...
2444         (recompute_dominator): ... this.
2445         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
2446         (thread_through_all_blocks): Do not free dominance info.
2447
2448 2007-06-03  Andreas Schwab  <schwab@suse.de>
2449
2450         * config/m68k/m68k.c (override_options): Don't override
2451         REAL_MODE_FORMAT.
2452         * config/m68k/m68k-modes.def (SF, DF): Define to use
2453         motorola_single_format and motorola_double_format, resp.
2454         * real.c (motorola_single_format): Renamed from
2455         coldfire_single_format.
2456         (motorola_double_format): Renamed from coldfire_double_format.
2457         (encode_ieee_extended): Generate a proper canonical NaN image
2458         respecting canonical_nan_lsbs_set.
2459         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
2460         true.
2461         * real.h: Adjust declarations.
2462
2463 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2464
2465         PR target/32163
2466         * config/sh/sh.md (symGOT_load): Don't schedule insns when
2467         the symbol is generated with the stack protector.
2468
2469 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
2470
2471         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
2472         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
2473         "interrupt".
2474         * doc/extend.texi (interrupt): Mention m68k.
2475
2476 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
2477
2478         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
2479         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
2480         (ix86_expand_sse_pcmpestr): Do not check operands for
2481         "register_operand", when insn operand predicate is "register_operand".
2482         (ix86_expand_sse_pcmpistr): Ditto.
2483
2484 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
2485             Uros Bizjak  <ubizjak@gmail.com>
2486
2487         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
2488         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
2489         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
2490         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
2491         * config/i386/constraints.md ("z"): New register constraint
2492         for members of SSE_FIRST_REG class.
2493         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
2494         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
2495         SSE_FIRST_REG class.
2496         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
2497         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
2498         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
2499         (IX86_BUILTIN_PCMPESTRM128): Likewise.
2500         (IX86_BUILTIN_PCMPESTRA128): Likewise.
2501         (IX86_BUILTIN_PCMPESTRC128): Likewise.
2502         (IX86_BUILTIN_PCMPESTRO128): Likewise.
2503         (IX86_BUILTIN_PCMPESTRS128): Likewise.
2504         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
2505         (IX86_BUILTIN_PCMPISTRI128): Likewise.
2506         (IX86_BUILTIN_PCMPISTRM128): Likewise.
2507         (IX86_BUILTIN_PCMPISTRA128): Likewise.
2508         (IX86_BUILTIN_PCMPISTRC128): Likewise.
2509         (IX86_BUILTIN_PCMPISTRO128): Likewise.
2510         (IX86_BUILTIN_PCMPISTRS128): Likewise.
2511         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
2512         (struct builtin_description): Change "flag" field to unsigned.
2513         (bdesc_pcmpestr): New builtin description table.
2514         (bdesc_pcmpistr): Likewise.
2515         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
2516         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
2517         Initialize pcmp[ei]str[im] insns for SSE4.2.
2518         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
2519         (ix86_expand_sse_pcmpistr): Likewise.
2520         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
2521         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
2522         (UNSPEC_PCMPISTR): Likewise.
2523         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
2524         (sse4_2_pcmpestri):New isns pattern.
2525         (sse4_2_pcmpestrm): Likewise.
2526         (sse4_2_pcmpestr_cconly): Likewise.
2527         (sse4_2_pcmpistr): New insn patern and splitter.
2528         (sse4_2_pcmpistri):New isns pattern.
2529         (sse4_2_pcmpistrm): Likewise.
2530         (sse4_2_pcmpistr_cconly): Likewise.
2531         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
2532         in SSE4.2.
2533
2534 2007-06-01  David Daney  <ddaney@avtrex.com>
2535
2536         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
2537         LOADGP_ABSOLUTE and not binds_local_p.
2538
2539 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
2540
2541         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
2542
2543 2007-06-01  Ian Lance Taylor  <iant@google.com>
2544
2545         * tree-vrp.c (compare_name_with_value): Always set
2546         used_strict_overflow if we get a result from the variable itself.
2547
2548 2007-06-01  Ian Lance Taylor  <iant@google.com>
2549
2550         PR rtl-optimization/31455
2551         * lower-subreg.c (find_decomposable_subregs): Don't decompose
2552         subregs which have a cast between modes which are not tieable.
2553
2554 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
2555
2556         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
2557         breaks after return statements.
2558
2559 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
2560
2561         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
2562         only after no_new_pseudos.
2563
2564 2007-05-31  Eric Christopher  <echristo@apple.com>
2565
2566         * expr.c (convert_move): Assert that we don't have a BLKmode
2567         operand.
2568         (store_expr): Handle BLKmode moves by calling emit_block_move.
2569
2570 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
2571
2572         * c-typeck.c (build_indirect_ref): Include type in error message.
2573         (build_binary_op): Pass types to binary_op_error.
2574         * c-common.c (binary_op_error): Take two type arguments, print out
2575         types with error.
2576         * c-common.h (binary_op_error): Update prototype.
2577
2578 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2579
2580         * config/i386/i386.c: Correct coments on -mno-sse4.
2581
2582 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2583
2584         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
2585         (x86_64-*-*): Likewise.
2586         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
2587         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
2588         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
2589         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
2590         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
2591         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
2592         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
2593         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
2594         (OPTION_MASK_ISA_SSE4): Likewise.
2595         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
2596         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
2597         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
2598         (override_options): Support SSE4.2.
2599         (ix86_build_const_vector): Support SImode and DImode.
2600         (ix86_build_signbit_mask): Likewise.
2601         (ix86_expand_int_vcond): Support V2DImode.
2602         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
2603         (IX86_BUILTIN_CRC32HI): Likewise.
2604         (IX86_BUILTIN_CRC32SI): Likewise.
2605         (IX86_BUILTIN_CRC32DI): Likewise.
2606         (IX86_BUILTIN_PCMPGTQ): Likewise.
2607         (bdesc_crc32): Likewise.
2608         (bdesc_sse_3arg): Likewise.
2609         (ix86_expand_crc32): Likewise.
2610         (ix86_init_mmx_sse_builtins): Support SSE4.2.
2611         (ix86_expand_builtin): Likewise.
2612         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2613         __SSE4_2__ for -msse4.2.
2614         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
2615         (CRC32MODE): Likewise.
2616         (crc32modesuffix): Likewise.
2617         (crc32modeconstraint): Likewise.
2618         (sse4_2_crc32<mode>): Likewise.
2619         (sse4_2_crc32di): Likewise.
2620         * config/i386/i386.opt (msse4.2): New for SSE4.2.
2621         (msse4): Likewise.
2622         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
2623         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
2624         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
2625         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
2626         (vcondu<mode>): Likewise.
2627         * doc/extend.texi: Document SSE4.2 built-in functions.
2628         * doc/invoke.texi: Document -msse4.2/-msse4.
2629
2630 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
2631
2632         PR tree-optimization/32160
2633         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
2634         variable as gimple reg.
2635         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
2636
2637 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
2638
2639         * gcc.c (main): Don't consider linker options when issuing the
2640         warning about a linker input file not being used.
2641
2642 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2643
2644         * tree-vrp.c (compare_names): Initialize sop.
2645
2646 2007-05-30  Dirk Mueller  <dmueller@suse.de>
2647
2648         * cgraphunit.c (cgraph_analyze_function): Remove
2649         computation of inline parameters.
2650
2651 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
2652
2653         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
2654
2655 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
2656
2657         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
2658         Add vx-common.h.  Include vxworks.h between vx-common.h and
2659         arm/vxworks.h.
2660         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
2661         redefining.
2662         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
2663         (TARGET_ASM_DESTRUCTOR): Likewise.
2664         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
2665         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
2666         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
2667         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
2668         (VXWORKS_ENDIAN_SPEC): Define.
2669         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
2670         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
2671         VXWORKS_* equivalents.
2672         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
2673         (ASM_FILE_START): Delete.
2674         (TARGET_VERSION): Reformat.
2675         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
2676         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
2677         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
2678         (FPBIT, DPBIT): Define.
2679         (fp-bit.c, dp-bit.c): New rules.
2680         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
2681         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
2682         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
2683         * config/arm/arm.h: Include vxworks-dummy.h.
2684         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
2685         Mark with ATTRIBUTE_UNUSED.
2686         (arm_override_options): Do not allow VxWorks RTP PIC to be used
2687         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
2688         make it incompatible with -msingle-pic-base.
2689         (arm_function_ok_for_sibcall): Return false for calls that might
2690         go through a VxWorks PIC PLT entry.
2691         (require_pic_register): New function, split out from...
2692         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
2693         for VxWorks RTPs.
2694         (arm_load_pic_register): Handle the VxWorks RTP initialization
2695         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
2696         (arm_emit_call_insn): New function.
2697         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
2698         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
2699         (pic_offset_arm): New pattern.
2700         (call, call_value): Use arm_emit_call_insn.
2701         (call_internal, call_value_internal): New expanders.
2702         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
2703         VxWorks unless __PIC__.
2704
2705 2007-05-30  Eric Christopher  <echristo@gmail.com>
2706
2707         * genrecog.c: Include regs.h in generated file.
2708         * genemit.c: Ditto. Fix up formatting.
2709         * config/mn10300/constraints.md: New.
2710         * config/mn10300/mn10300.md: Include.
2711         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
2712         Fix up for removed macro.
2713         * config/mn10300/predicates.md (call_address_operand):  Ditto.
2714         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
2715         (CONST_OK_FOR_I): Ditto.
2716         (CONST_OK_FOR_J): Ditto.
2717         (CONST_OK_FOR_K): Ditto.
2718         (CONST_OK_FOR_L): Ditto.
2719         (CONST_OK_FOR_M): Ditto.
2720         (CONST_OK_FOR_N): Ditto.
2721         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
2722         (OK_FOR_Q): Ditto.
2723         (OK_FOR_R): Ditto.
2724         (OK_FOR_T): Ditto.
2725         (EXTRA_CONSTRAINT): Ditto.
2726
2727 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
2728
2729         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
2730         Remove defines.
2731         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
2732         OPTION_MASK_ISA_64BIT.
2733         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
2734
2735 2007-05-30  Richard Guenther  <rguenther@suse.de>
2736
2737         PR middle-end/32152
2738         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
2739         types for comparison.
2740         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
2741         with original typed arguments.
2742         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
2743
2744 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
2745
2746         PR tree-optimization/31769
2747         * except.c (duplicate_eh_regions): Clear prev_try if
2748         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
2749
2750 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
2751
2752         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
2753         * tree-ssa-sink.c (statement_sink_location): Return basic block and
2754         bsi of the location where statements should be inserted.
2755         (sink_code_in_bb): Take bsi from statement_sink_location.
2756         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
2757         instead of bsi_start.
2758         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
2759         bsi_insert_after.
2760         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
2761         (bsi_move_before): Document inconsistency with bsi_move_after.
2762         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
2763
2764 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
2765
2766         * config/i386/i386.h (TARGET_ABM): New define.
2767         (TARGET_POPCNT): Ditto.
2768         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
2769         New temporary defines to redefine from OPTION_ISA_* defines.
2770         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
2771         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
2772         (ix86_isa_flags): New extern int declaration.
2773         (TARGET_SUBTARGET_DEFAULT): New define.
2774         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
2775         (TARGET_SUBTARGET32_DEFAULT): Ditto.
2776         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
2777         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2778         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
2779         * config/i386/darwin.h: Change TARGET_64BIT define to
2780         OPTION_ISA_64BIT.
2781
2782         * config/i386/i386.opt (m3dnowa): Define as undocumented option
2783         using existing "ix86_isa_flags" varible.
2784         (m32, m64): Use existing "ix86_isa_flags" variable.
2785         (mmmx, m3dnow): Ditto.
2786         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
2787         (mabm): Define as non-negative option using "x86_abm" variable.
2788         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
2789
2790         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
2791         Rewrite feature test bitmap.
2792         (ix86_isa_flags): New initialized global int varible.
2793         (ix86_isa_flags_explicit): New static int variable.
2794         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
2795         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
2796         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
2797         target_flags_explicit.
2798         (override_options): Remove "target_enable" and "target_disable" fields
2799         from "struct ptt". Update processor_target_table accordingly. Remove
2800         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
2801         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
2802         "target_flags" and "ix86_isa_flags_explicit" instead of
2803         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
2804         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
2805         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
2806         to true when either of PTA_POPCNT or PTA_ABM is set in
2807         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
2808         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
2809         processor_alias_table flags entry.  Remove handling of
2810         "target_enable" and "target_disable" fields of processor_target_table.
2811         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
2812         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
2813         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
2814         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
2815         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
2816         "target_flags".
2817         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
2818
2819 2007-05-29  David Daney  <ddaney@avtrex.com>
2820
2821         PR gcc/31975
2822         * config/mips/mips.c (mips_output_mi_thunk): Emit
2823         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
2824
2825 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
2826         * config/i386/i386.c (ix86_function_regparm): Added checking of
2827         ix86_force_align_arg_pointer to determine the number of
2828         register parameters.
2829
2830 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
2831
2832         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
2833         (SET_DR_MISALIGNMENT): New.
2834         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
2835         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
2836         Use SET_DR_MISALIGNMENT.
2837         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
2838         pointer.
2839         * tree-data-ref.c (create_data_ref, compute_all_dependences,
2840         find_loop_nest): Export.
2841         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
2842         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
2843         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
2844         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
2845         New macros.
2846         (struct mem_ref): Add field reuse_distance.
2847         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
2848         Initialize reuse_distance field.
2849         (issue_prefetch_ref): Select temporality of prefetch according to
2850         reuse_distance.
2851         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
2852         self_reuse_distance, determine_loop_nest_reuse): New functions.
2853         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
2854         (tree_ssa_prefetch_arrays): Dump L2 cache size.
2855         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
2856         dependency.
2857
2858 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
2859
2860         * tree-ssa-alias.c: Add aliasing overview.
2861
2862 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
2863             Danny Smith  <dannysmith@users.sourceforge.net>
2864
2865         PR target/29498
2866         * config/i386/t-crtfm: Compile crtfastmath.o with
2867         -minline-all-stringops.
2868         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
2869         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
2870
2871 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2872
2873         * doc/md.texi: Document constraints on HP PA-RISC.
2874
2875         * pa/constraints.md: New file.
2876         * pa.md: Include constraints.md.
2877         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
2878         (integer_store_memory_operand, ldil_cint_p): New functions.
2879         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
2880         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
2881         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
2882         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
2883         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
2884
2885 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
2886
2887         PR c/31339
2888         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
2889         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
2890         case POSTDECREMENT_EXPR>): Return the error_mark_node
2891         if either the real or imaginary parts would an
2892         error_mark_node.
2893
2894 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
2895
2896         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
2897         name when we remove it from a call.
2898
2899 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
2900
2901         * targhooks.c (default_narrow_bitfield): Remove.
2902         * targhooks.h: Remove the prototype for
2903         default_narrow_bitfield.
2904
2905         * langhooks-def.h: Remove the prototype for
2906         hook_get_alias_set_0.
2907         * langhooks.c (hook_get_alias_set_0): Remove.
2908
2909         * global.c (EXECUTE_IF_CONFLICT): Remove.
2910
2911 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2912
2913         PR tree-opt/32100
2914         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
2915         return true when truth_value_p is true and the type
2916         is of signed:1.
2917
2918 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
2919
2920         * doc/install.texi (Prerequisites): We no longer require Autoconf
2921         2.13 for the top-level.
2922
2923 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
2924
2925         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
2926         memory access via x86_expand_vector_move_misalign() only for
2927         TImode values on 32-bit targets.
2928
2929 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
2930
2931         * matrix-reorg.c: New file. Implement matrix flattening and
2932         transposing optimization.
2933         * tree-pass.h: Add matrix reorg pass.
2934         * common.opt: Add fipa-mreorg flag.
2935         * Makefile.in: Add matrix-reorg.c.
2936         * passes.c: Add matrix reorg pass.
2937         * varpool.c (add_new_static_var): New function.
2938         * cgraph.h (add_new_static_var): Declare.
2939
2940 2007-05-27  Eric Christopher  <echristo@apple.com>
2941
2942         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
2943         sp_offset depending on stack size. Save r12 depending
2944         on registers we're saving later.
2945         (rs6000_emit_epilogue): Update sp_offset depending only
2946         on stack size.
2947
2948 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
2949
2950         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
2951         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
2952         * ifcvt.c (if_convert): Ditto.
2953         * tree-ssa-threadupdate.c (thread_block): Ditto.
2954         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
2955         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
2956         verify_loop_closed_ssa): Check number_of_loops instead of
2957         current_loops.
2958         * predict.c (tree_estimate_probability): Ditto.
2959         * tree-if-conv.c (main_tree_if_conversion): Ditto.
2960         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
2961         * modulo-sched.c (sms_schedule): Ditto.
2962         * tree-scalar-evolution.c (scev_const_prop): Ditto.
2963         (scev_finalize): Do not do anything if scev analysis was not
2964         initialized.
2965         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
2966         current_loops == NULL.
2967         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
2968         * loop-init.c (loop_optimizer_init): Do not free current_loops when
2969         there are no loops.
2970         (loop_optimizer_finalize): Assert that loops were analyzed.
2971         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
2972         rtl_doloop): Check number_of_loops instead of current_loops.
2973         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
2974         current_loops == NULL.
2975         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
2976         gate_tree_vectorize tree_linear_transform, check_data_deps,
2977         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
2978         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
2979         Check number_of_loops instead of current_loops.
2980         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
2981         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
2982         free loops if available.
2983         (execute_pre): Do not pass do_fre to fini_pre.
2984
2985 2007-05-27  Tobias Burnus  <burnus@net-b.de>
2986
2987         PR middle-end/32083
2988         * real.c (mpfr_from_real): Fix sign of -Inf.
2989
2990 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
2991
2992         * tree-vect-transform.c (vectorizable_conversion): Initialize
2993         tree_code variables to ERROR_MARK.
2994         (vectorizable_type_demotion): Likewise.
2995         (vectorizable_type_promotion): Likewise.
2996
2997 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
2998
2999         PR target/32065
3000         * config/i386/i386.md (movti): Handle push operands via
3001         ix86_expand_push().
3002
3003 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
3004
3005         * basic-block.h: Remove the prototype for merge_seq_blocks.
3006         * cfgcleanup.c (merge_seq_blocks): Remove.
3007
3008         * tree-flow.h: Remove the prototype for is_aliased_with.
3009         * tree-ssa-alias.c (is_aliased_with): Remove.
3010
3011 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
3012
3013         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
3014
3015         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
3016
3017         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
3018         ix86_expand_sse4_unpack if SSE4.1 is enabled.
3019         (vec_unpacks_hi_v16qi): Likewise.
3020         (vec_unpacku_lo_v16qi): Likewise.
3021         (vec_unpacks_lo_v16qi): Likewise.
3022         (vec_unpacku_hi_v8hi): Likewise.
3023         (vec_unpacks_hi_v8hi): Likewise.
3024         (vec_unpacku_lo_v8hi): Likewise.
3025         (vec_unpacks_lo_v8hi): Likewise.
3026         (vec_unpacku_hi_v4si): Likewise.
3027         (vec_unpacks_hi_v4si): Likewise.
3028         (vec_unpacku_lo_v4si): Likewise.
3029         (vec_unpacks_lo_v4si): Likewise.
3030
3031 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
3032
3033         * c-typeck.c, config/arm/arm.c, config/darwin.c,
3034         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
3035         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
3036         follow spelling conventions in various
3037         warning/error/diagnostic messages.
3038
3039         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
3040         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
3041         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
3042         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
3043         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
3044         * doc/tm.texi: Follow spelling conventions.
3045
3046 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3047
3048         PR tree-opt/32090
3049         * tree-ssa-forwprop.c
3050         (forward_propagate_addr_into_variable_array_index): Remove
3051         the lhs argument.  Use the type of def_rhs instead of lhs.
3052         (forward_propagate_addr_expr_1): Update use of
3053         forward_propagate_addr_into_variable_array_index.
3054
3055 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
3056             Nigel Stephens  <nigel@mips.com>
3057
3058         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
3059         function attributes, "far" being an alias for "long_call".
3060         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
3061         (mips_near_type_p, mips_far_type_p): New.
3062         (mips_comp_type_attributes): New function to check that attributes
3063         attached to a function type are compatible.
3064         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
3065         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
3066         to the target function of the thunk.
3067         (mips_encode_section_info): Check for "near" and "far" function
3068         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
3069
3070         * config/mips/predicates.md (const_call_insn_operand): Test only
3071         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
3072
3073         * doc/extend.texi (Function Attributes): Document MIPS "near" and
3074         "far" attributes.
3075
3076         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
3077         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
3078         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
3079         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
3080
3081 2007-05-25  Eric Christopher  <echristo@apple.com>
3082
3083         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
3084         to x86-darwin configurations.
3085         * config/i386/t-darwin: Add softfp support.
3086         * config/i386/t-darwin64: Ditto.
3087         * config/i386/sfp-machine.h: If mach then don't use
3088         aliasing, emit a stub to call.
3089
3090 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
3091
3092         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
3093         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
3094         tree-predcom.c, tree-ssa-alias-warnings.c,
3095         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
3096         comment typos.  Follow spelling conventions.
3097         * doc/cpp.texi, doc/invoke.texi: Fix typos.
3098
3099 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
3100
3101         PR target/32065
3102         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
3103         constants into memory.  Expand unaligned memory references for
3104         SSE modes via x86_expand_vector_move_misalign() function.
3105
3106 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
3107
3108         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
3109         "memory" attribute for "sseishft" type insn without operands[2].
3110
3111 2007-05-25  Dirk Mueller  <dmueller@suse.de>
3112             Marcus Meissner <meissner@suse.de>
3113
3114         * doc/extend.texi (alloc_size): New attribute.
3115         * c-common.c (handle_alloc_size_attribute): New.
3116         * tree-object-size.c (alloc_object_size): Use alloc_size
3117         attribute, if available.
3118
3119 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3120
3121         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
3122         with MASK_SSE2.
3123         (__builtin_ia32_vec_ext_v2di): Likewise.
3124         (__builtin_ia32_vec_ext_v4si): Likewise.
3125         (__builtin_ia32_vec_ext_v8hi): Likewise.
3126         (__builtin_ia32_vec_ext_v16qi): Likewise.
3127         (__builtin_ia32_vec_set_v8hi): Likewise.
3128
3129 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3130
3131         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
3132
3133 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
3134
3135         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
3136         (arm_is_longcall_p): Rename to...
3137         (arm_is_long_call_p): ...this.  Take a single tree argument and
3138         return a bool.
3139         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
3140         (CUMULATIVE_ARGS): Remove call_cookie.
3141         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
3142         (ENCODED_LONG_CALL_ATTR_P): Delete.
3143         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
3144         LONG_CALL_FLAG_CHAR cases.
3145         (ARM_DECLARE_FUNCTION_SIZE): Delete.
3146         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
3147         ARM_DECLARE_FUNCTION_SIZE.
3148         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
3149         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
3150         (arm_encode_call_attribute, current_file_function_operand): Delete.
3151         (arm_function_in_section_p): New function.
3152         (arm_is_longcall_p): Rename to...
3153         (arm_is_long_call_p): ...this.  Take the target function as a single
3154         argument and return a bool.  Do not rely on call cookies.  Check
3155         whether the target symbol is in the same section as the current
3156         function, not just the same compilation unit.
3157         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
3158         (arm_encode_section_info): Don't encode a call type.
3159         * config/arm/arm.md (call, call_value): Update calls to
3160         arm_is_long(_)call_p.  Simplify logic.
3161         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
3162         Update calls to arm_is_long(_)call_p.
3163
3164 2007-05-25  Richard Guenther  <rguenther@suse.de>
3165
3166         PR tree-optimization/31982
3167         * tree-ssa-forwprop.c
3168         (forward_propagate_addr_into_variable_array_index): Handle arrays
3169         with element size one.
3170
3171 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3172
3173         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
3174         (umulsi3_highpart): Likewise.
3175
3176 2007-05-24  Ian Lance Taylor  <iant@google.com>
3177
3178         PR rtl-optimization/32069
3179         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
3180         is NULL.
3181
3182 2007-05-24  Ollie Wild  <aaw@google.com>
3183
3184         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
3185         description.
3186
3187 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
3188
3189         * postreload-gcse.c (reg_changed_after_insn_p): New function.
3190         (oprs_unchanged_p): Use it to check all registers in a REG.
3191         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
3192         (reg_set_between_after_reload_p): Delete.
3193         (reg_used_between_after_reload_p): Likewise.
3194         (reg_set_or_used_since_bb_start): Likewise.
3195         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
3196         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
3197         Use reg_set_between_p instead of reg_set_between_after_reload_p.
3198         * rtlanal.c (reg_set_p): Check whether REG overlaps
3199         regs_invalidated_by_call, rather than just checking the
3200         membership of REGNO (REG).
3201
3202 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
3203
3204         * doc/passes.texi: Document predictive commoning.
3205         * doc/invoke.texi (-fpredictive-commoning): Document.
3206         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
3207         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
3208         adding indices to the generated name.
3209         (schedule_sm): Pass 0 to get_lsm_tmp_name.
3210         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
3211         * tree-pretty-print.c (op_symbol_1): Renamed to ...
3212         (op_symbol_code): ... and exported.
3213         (dump_omp_clause, op_symbol): Use op_symbol_code
3214         instead of op_symbol_1.
3215         * tree-pass.h (pass_predcom): Declare.
3216         * timevar.def (TV_PREDCOM): New timevar.
3217         * tree-ssa-loop.c (run_tree_predictive_commoning,
3218         gate_tree_predictive_commoning, pass_predcom): New.
3219         * tree-data-ref.c (find_data_references_in_loop): Find the
3220         references in dominance order.
3221         (canonicalize_base_object_address): Ensure that the result has
3222         pointer type.
3223         (dr_analyze_innermost): Export.
3224         (create_data_ref): Code to fail for references with invariant
3225         address moved ...
3226         (find_data_references_in_stmt): ... here.
3227         * tree-data-ref.h (dr_analyze_innermost): Declare.
3228         * tree-affine.c: Include tree-gimple.h and hashtab.h.
3229         (aff_combination_find_elt, name_expansion_hash,
3230         name_expansion_eq, tree_to_aff_combination_expand,
3231         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
3232         New functions.
3233         * tree-affine.h (aff_combination_constant_multiple_p,
3234         tree_to_aff_combination_expand): Declare.
3235         * tree-predcom.c: New file.
3236         * common.opt (fpredictive-commoning): New option.
3237         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
3238         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
3239         * Makefile.in (tree-predcom.o): Add.
3240         (tree-affine.o): Add TREE_GIMPLE_H dependency.
3241         * passes.c (init_optimization_passes):  Add dceloop after
3242         copy propagation in loop optimizer.  Add predictive commoning
3243         to loop optimizer passes.
3244
3245 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3246
3247         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
3248         default hook.
3249
3250 2007-05-24  Jan Hubicka  <jh@suse.cz>
3251
3252         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
3253         statistics.
3254         (genheader): Include statistics.h.
3255
3256         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
3257         notes are gone.
3258         * print-rtl.c (flag_dump_unnumbered): Update comments.
3259         (print_rtl): Fix my previous change.
3260         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
3261         specific data.
3262
3263 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
3264
3265         PR middle-end/32018
3266         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
3267         set_loop_copy.
3268         (thread_through_all_blocks): Call initialize_original_copy_tables
3269         and free_original_copy_tables.
3270         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
3271         Use set_loop_copy.
3272         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
3273         * cfghooks.c (duplicate_block): Use get_loop_copy.
3274         * cfg.c: Include cfgloop.h.
3275         (loop_copy): New hash table.
3276         (initialize_original_copy_tables): Initialize loop_copy table.
3277         (free_original_copy_tables): Free loop_copy table.
3278         (copy_original_table_clear, copy_original_table_set,
3279         set_loop_copy, get_loop_copy): New functions.
3280         (set_bb_original, set_bb_copy): Use copy_original_table_set.
3281         * cfgloop.h (struct loop): Remove copy field.
3282         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
3283         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
3284
3285 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3286
3287         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
3288         -msse/-msse2/-msse3.
3289
3290 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3291
3292         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
3293         __builtin_ia32_vec_set_v2di with MASK_64BIT.
3294
3295 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
3296
3297         PR target/27067
3298         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
3299         * targhooks.h (default_mangle_decl_assembler_name): Declare
3300         default hook.
3301         * targhooks.c (default_mangle_decl_assembler_name): Define
3302         default hook.
3303         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
3304         default hook.
3305         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
3306         * langhooks.c (lhd_set_decl_assembler_name): Call
3307         targetm.mangle_decl_assembler_name for names with global scope.
3308
3309         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
3310         default.
3311         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
3312         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
3313         Declare.
3314         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
3315         New. Factored out of i386_pe_encode_section_info.
3316         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
3317         Move check for prior decoration of stdcall
3318         symbols to i386_pe_encode_section_info.
3319         (i386_pe_encode_section_info): Adjust call to
3320         gen_stdcall_or_fastcall_suffix.  Use
3321         i386_pe_maybe_mangle_decl_assembler_name, if needed.
3322         (i386_pe_mangle_decl_assembler_name): New. Wrap
3323         i386_pe_maybe_mangle_decl_assembler_name.
3324
3325 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
3326
3327         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
3328         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
3329         * langhooks.c (get_signed_or_unsigned_type): Don't check for
3330         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
3331         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
3332         TYPE_UNSIGNED.
3333
3334 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
3335             Nigel Stephens  <nigel@mips.com>
3336             Richard Sandiford  <richard@codesourcery.com>
3337
3338         Fix up MIPS16 hard float and add support for complex.
3339
3340         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
3341         (TARGET_SOFT_FLOAT_ABI): New.
3342         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
3343         __mips_soft_float to reflect the ABI in use, not whether the
3344         FPU is directly accessible (e.g., in MIPS16 mode).
3345         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
3346         (UNITS_PER_FPVALUE): Likewise.
3347
3348         * config/mips/mips.c (mips_expand_call): Remove redundant
3349         TARGET_MIPS16 check.
3350         (mips_arg_regno): New.
3351         (function_arg_advance): When setting bits in cum->fp_code for
3352         MIPS16, don't subtract 1 from cum->arg_number, since it is now
3353         zero-based.
3354         (function_arg): Use mips_arg_regno.
3355         (mips_return_mode_in_fpr_p): New.
3356         (mips16_call_stub_mode_suffix): New.
3357         (mips16_cfun_returns_in_fpr_p): New.
3358         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
3359         (mips_output_function_prologue): Test mips16_hard_float, not
3360         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
3361         (mips_expand_epilogue): Call MIPS16 helper routines to copy
3362         return value into a floating-point register.
3363         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
3364         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
3365         (mips16_fp_args): Handle MIPS32r2 ISA which supports
3366         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
3367         word of double arguments from or to the high bits of 64-bit
3368         floating point registers.
3369         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
3370         (mips16_fpret_double): New helper function.
3371         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
3372         support for complex modes.  Fill in DECL_RESULT for stubdecl.
3373         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
3374
3375         * config/mips/mips16.S
3376         (RET, ARG1, ARG2): New.
3377         (MERGE_GPRf, MERGE_GPRt): New.
3378         (DELAYt, DELAYf): New.
3379         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
3380         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
3381         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
3382         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
3383         (SFOP): Renamed to...
3384         (OPSF3): This, and macro-ified.  Updated all uses.
3385         (SFOP2): Renamed to...
3386         (OPSF2): This, and macro-ified.  Updated all uses.
3387         (SFCMP): Renamed to...
3388         (CMPSF): This, and macro-ified.  Updated all uses.
3389         (SFREVCMP): Renamed to...
3390         (REVCMPSF): This, and macro-ified.  Updated all uses.
3391         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
3392         (LDDBL1, LDDBL2, RETDBL): Deleted.
3393         (DFOP): Renamed to...
3394         (OPDF3): This, and macro-ified.  Updated all uses.
3395         (DFOP2): Renamed to...
3396         (OPDF2): This, and macro-ified.  Updated all uses.
3397         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
3398         (DFCMP): Renamed to...
3399         (CMPDF): This, and macro-ified.  Updated all uses.
3400         (DFREVCMP): Renamed to...
3401         (REVCMPDF): This, and macro-ified.  Updated all uses.
3402         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
3403         (RET_FUNCTION): New.
3404         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
3405         (__mips16_ret_sc, __mips16_ret_dc): New.
3406         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
3407         STUB_ARGS_6, STUB_ARGS_10): New.
3408         (CALL_STUB_NO_RET): New.
3409         (__mips16_call_stub_1): Macro-ified.
3410         (__mips16_call_stub_5): Macro-ified.
3411         (__mips16_call_stub_2): Macro-ified.
3412         (__mips16_call_stub_6): Macro-ified.
3413         (__mips16_call_stub_9): Macro-ified.
3414         (__mips16_call_stub_10): Macro-ified.
3415         (CALL_STUB_RET): New.
3416         (__mips16_call_stub_sf_0): Macro-ified.
3417         (__mips16_call_stub_sf_1): Macro-ified.
3418         (__mips16_call_stub_sf_5): Macro-ified.
3419         (__mips16_call_stub_sf_2): Macro-ified.
3420         (__mips16_call_stub_sf_6): Macro-ified.
3421         (__mips16_call_stub_sf_9): Macro-ified.
3422         (__mips16_call_stub_sf_10): Macro-ified.
3423         (__mips16_call_stub_df_0): Macro-ified.
3424         (__mips16_call_stub_df_1): Macro-ified.
3425         (__mips16_call_stub_df_5): Macro-ified.
3426         (__mips16_call_stub_df_2): Macro-ified.
3427         (__mips16_call_stub_df_6): Macro-ified.
3428         (__mips16_call_stub_df_9): Macro-ified.
3429         (__mips16_call_stub_df_10): Macro-ified.
3430         (__mips16_call_stub_sc_0): New.
3431         (__mips16_call_stub_sc_1): New.
3432         (__mips16_call_stub_sc_5): New.
3433         (__mips16_call_stub_sc_2): New.
3434         (__mips16_call_stub_sc_6): New.
3435         (__mips16_call_stub_sc_9): New.
3436         (__mips16_call_stub_sc_10): New.
3437         (__mips16_call_stub_dc_0): New.
3438         (__mips16_call_stub_dc_1): New.
3439         (__mips16_call_stub_dc_5): New.
3440         (__mips16_call_stub_dc_2): New.
3441         (__mips16_call_stub_dc_6): New.
3442         (__mips16_call_stub_dc_9): New.
3443         (__mips16_call_stub_dc_10): New.
3444
3445         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
3446         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
3447         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
3448
3449 2007-05-23  Ian Lance Taylor  <iant@google.com>
3450
3451         * doc/invoke.texi (Invoking GCC): Document that the order of the
3452         -l option matters.
3453
3454 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
3455
3456         PR target/30987
3457         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
3458         * config/score/predicate.md (const_pow2, const_npow2): Remove.
3459         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
3460         undef.
3461
3462         PR target/30474
3463         * config/score/score.c (score_print_operand): Make sure that only
3464         lower bits are used.
3465
3466 2007-05-22  Ian Lance Taylor  <iant@google.com>
3467
3468         * tree-vrp.c (avoid_overflow_infinity): New static function,
3469         broken out of set_value_range_to_value.
3470         (set_value_range_to_value): Call avoid_overflow_infinity.
3471         (extract_range_from_assert): Likewise.
3472
3473 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3474
3475         PR middle-end/31095
3476          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
3477         change the type before looking for a COMPOUND_EXPR.
3478
3479 2007-05-22  Ian Lance Taylor  <iant@google.com>
3480
3481         * lower-subreg.c (decompose_multiword_subregs): If we change an
3482         insn, call remove_retval_note on it.
3483
3484 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3485
3486         * regs.h (end_hard_regno): New function.
3487         (END_HARD_REGNO, END_REGNO): New macros.
3488         (add_to_hard_reg_set): New function.
3489         (remove_from_hard_reg_set): Likewise.
3490         (in_hard_reg_set_p): Likewise.
3491         (overlaps_hard_reg_set_p): Likewise.
3492         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
3493         (note_btr_set): Use END_HARD_REGNO.
3494         * caller-save.c (setup_save_areas): Use end_hard_regno.
3495         (mark_set_regs): Use END_HARD_REGNO.
3496         (add_stored_regs): Use end_hard_regno.
3497         (mark_referenced_regs): Use add_to_hard_reg_set.
3498         * combine.c (update_table_tick): Use END_REGNO.
3499         (record_value_for_reg): Likewise.
3500         (record_dead_and_set_regs): Likewise.
3501         (get_last_value_validate): Likewise.
3502         (use_crosses_set_p): Likewise.
3503         (reg_dead_at_p_1): Likewise.
3504         (reg_dead_at_p): Likewise.
3505         (mark_used_regs_combine): Use add_to_hard_reg_set.
3506         (move_deaths): Use END_HARD_REGNO.
3507         (reg_bitfield_target_p): Use end_hard_regno.
3508         (distribute_notes): Use END_HARD_REGNO.
3509         * cse.c (mention_regs): Use END_REGNO.
3510         (insert): Use add_to_hard_reg_set.
3511         (invalidate): Use END_HARD_REGNO.
3512         (invalidate_for_call): Likewise.
3513         (exp_equiv_p): Use END_REGNO.
3514         (cse_insn): Likewise.
3515         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
3516         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
3517         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
3518         * function.c (keep_stack_depressed): Use end_hard_regno.
3519         * global.c (global_alloc): Use end_hard_regno.
3520         (global_conflicts): Use add_to_hard_reg_set instead of
3521         mark_reg_live_nc.
3522         (find_reg): Likewise.
3523         (mark_reg_store): Likewise.
3524         (mark_reg_conflicts): Likewise.
3525         (mark_reg_death): Use remove_from_hard_reg_set.
3526         (mark_reg_live_nc): Delete.
3527         (set_preference): Use end_hard_regno.
3528         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
3529         remove_from_hard_reg_set.
3530         (post_mark_life): Use add_to_hard_reg_set.
3531         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
3532         (reg_becomes_live): Use add_to_hard_reg_set.
3533         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
3534         (peep2_find_free_register): Use add_to_hard_reg_set.
3535         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
3536         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
3537         * regrename.c (note_sets): Use add_to_hard_reg_set.
3538         (clear_dead_regs): Use remove_from_hard_reg_set.
3539         (regrename_optimize): Use add_to_hard_reg_set.
3540         (find_oldest_value_reg): Use in_hard_reg_set_p.
3541         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
3542         (hard_reg_set_here_p): Use end_hard_regno.
3543         (decompose): Likewise.
3544         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
3545         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
3546         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
3547         (mark_home_live): Use end_hard_regno.
3548         (spill_hard_reg): Likewise.
3549         (clear_reload_reg_in_use): Likewise.
3550         * reorg.c (delete_prior_computation): Use END_REGNO.
3551         * resource.c (update_live_status): Use END_HARD_REGNO.
3552         (mark_referenced_resources): Use add_to_hard_reg_set.
3553         (mark_set_resources): Likewise.
3554         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
3555         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
3556         (reg_overlap_mentioned_p): Likewise.
3557         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
3558         (covers_regno_no_parallel_p): Use END_REGNO.
3559         (find_regno_note): Likewise.
3560         (find_reg_fusage): Use END_HARD_REGNO.
3561         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
3562         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
3563
3564 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3565
3566         * mode-switching.c (reg_dies): Change type of second argument to
3567         "HARD_REG_SET *".
3568         (optimize_mode_switching): Update accordingly.
3569
3570 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
3571
3572         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
3573         in favor of...
3574         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
3575         (hard_reg_set_empty_p): ...these new functions.
3576         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
3577         GO_IF_HARD_REG_SUBSET.
3578         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
3579         instead of GO_IF_HARD_REG_EQUAL.
3580         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
3581         instead of GO_IF_HARD_REG_EQUAL.
3582         * global.c (find_reg): Use hard_reg_set_empty_p instead of
3583         GO_IF_HARD_REG_SUBSET.
3584         (modify_reg_pav): Use hard_reg_set_empty_p instead of
3585         GO_IF_HARD_REG_EQUAL.
3586         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
3587         of GO_IF_HARD_REG_SUBSET.
3588         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
3589         instead of GO_IF_HARD_REG_EQUAL.
3590         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
3591         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
3592         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
3593         of GO_IF_HARD_REG_SUBSET,
3594         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
3595         GO_IF_HARD_REG_SUBSET.
3596         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
3597         instead of GO_IF_HARD_REG_EQUAL.
3598         * config/sh/sh.c (push_regs, calc_live_regs): Use
3599         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
3600         (hard_regs_intersect_p): Delete.
3601
3602 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
3603
3604         * doc/sourcebuild.texi (Test Directives) Add dg-message.
3605
3606 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
3607             Richard Henderson  <rth@redhat.com>
3608
3609         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
3610         extra_headers.
3611         (x86_64-*-*): Likewise.
3612
3613         * i386/i386-modes.def (V2QI): New.
3614
3615         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
3616         SSE4A.
3617         (override_options): Support SSE4.1.
3618         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
3619         (IX86_BUILTIN_BLENDPS): Likewise.
3620         (IX86_BUILTIN_BLENDVPD): Likewise.
3621         (IX86_BUILTIN_BLENDVPS): Likewise.
3622         (IX86_BUILTIN_PBLENDVB128): Likewise.
3623         (IX86_BUILTIN_PBLENDW128): Likewise.
3624         (IX86_BUILTIN_DPPD): Likewise.
3625         (IX86_BUILTIN_DPPS): Likewise.
3626         (IX86_BUILTIN_INSERTPS128): Likewise.
3627         (IX86_BUILTIN_MOVNTDQA): Likewise.
3628         (IX86_BUILTIN_MPSADBW128): Likewise.
3629         (IX86_BUILTIN_PACKUSDW128): Likewise.
3630         (IX86_BUILTIN_PCMPEQQ): Likewise.
3631         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
3632         (IX86_BUILTIN_PMAXSB128): Likewise.
3633         (IX86_BUILTIN_PMAXSD128): Likewise.
3634         (IX86_BUILTIN_PMAXUD128): Likewise.
3635         (IX86_BUILTIN_PMAXUW128): Likewise.
3636         (IX86_BUILTIN_PMINSB128): Likewise.
3637         (IX86_BUILTIN_PMINSD128): Likewise.
3638         (IX86_BUILTIN_PMINUD128): Likewise.
3639         (IX86_BUILTIN_PMINUW128): Likewise.
3640         (IX86_BUILTIN_PMOVSXBW128): Likewise.
3641         (IX86_BUILTIN_PMOVSXBD128): Likewise.
3642         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
3643         (IX86_BUILTIN_PMOVSXWD128): Likewise.
3644         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
3645         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
3646         (IX86_BUILTIN_PMOVZXBW128): Likewise.
3647         (IX86_BUILTIN_PMOVZXBD128): Likewise.
3648         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
3649         (IX86_BUILTIN_PMOVZXWD128): Likewise.
3650         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
3651         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
3652         (IX86_BUILTIN_PMULDQ128): Likewise.
3653         (IX86_BUILTIN_PMULLD128): Likewise.
3654         (IX86_BUILTIN_ROUNDPD): Likewise.
3655         (IX86_BUILTIN_ROUNDPS): Likewise.
3656         (IX86_BUILTIN_ROUNDSD): Likewise.
3657         (IX86_BUILTIN_ROUNDSS): Likewise.
3658         (IX86_BUILTIN_PTESTZ): Likewise.
3659         (IX86_BUILTIN_PTESTC): Likewise.
3660         (IX86_BUILTIN_PTESTNZC): Likewise.
3661         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
3662         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
3663         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
3664         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
3665         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
3666         (bdesc_ptest): New.
3667         (bdesc_sse_3arg): Likewise.
3668         (bdesc_2arg): Likewise.
3669         (bdesc_1arg): Likewise.
3670         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
3671         with 3 args.
3672         (ix86_expand_sse_4_operands_builtin): New.
3673         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
3674         smaller than 8 bits as the 2nd arg.
3675         (ix86_expand_sse_ptest): New.
3676         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
3677         (ix86_expand_vector_set): Support SSE4.1.
3678         (ix86_expand_vector_extract): Likewise.
3679
3680         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
3681         __SSE4_1__ for -msse4.1.
3682
3683         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
3684         (UNSPEC_INSERTPS): Likewise.
3685         (UNSPEC_DP): Likewise.
3686         (UNSPEC_MOVNTDQA): Likewise.
3687         (UNSPEC_MPSADBW): Likewise.
3688         (UNSPEC_PHMINPOSUW): Likewise.
3689         (UNSPEC_PTEST): Likewise.
3690         (UNSPEC_ROUNDP): Likewise.
3691         (UNSPEC_ROUNDS): Likewise.
3692
3693         * config/i386/i386.opt (msse4.1): New for SSE4.1.
3694
3695         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
3696         (const_pow2_1_to_32768_operand): Likewise.
3697
3698         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
3699         file.
3700
3701         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
3702         SSE4.1.
3703         (sse4_1_insertps): Likewise.
3704         (*sse4_1_extractps): Likewise.
3705         (sse4_1_ptest): Likewise.
3706         (sse4_1_mulv2siv2di3): Likewise.
3707         (*sse4_1_mulv4si3): Likewise.
3708         (*sse4_1_smax<mode>3): Likewise.
3709         (*sse4_1_umax<mode>3): Likewise.
3710         (*sse4_1_smin<mode>3): Likewise.
3711         (*sse4_1_umin<mode>3): Likewise.
3712         (sse4_1_eqv2di3): Likewise.
3713         (*sse4_1_pinsrb): Likewise.
3714         (*sse4_1_pinsrd): Likewise.
3715         (*sse4_1_pinsrq): Likewise.
3716         (*sse4_1_pextrb): Likewise.
3717         (*sse4_1_pextrb_memory): Likewise.
3718         (*sse4_1_pextrw_memory): Likewise.
3719         (*sse4_1_pextrq): Likewise.
3720         (sse4_1_blendpd): Likewise.
3721         (sse4_1_blendps): Likewise.
3722         (sse4_1_blendvpd): Likewise.
3723         (sse4_1_blendvps): Likewise.
3724         (sse4_1_dppd): Likewise.
3725         (sse4_1_dpps): Likewise.
3726         (sse4_1_movntdqa): Likewise.
3727         (sse4_1_mpsadbw): Likewise.
3728         (sse4_1_packusdw): Likewise.
3729         (sse4_1_pblendvb): Likewise.
3730         (sse4_1_pblendw): Likewise.
3731         (sse4_1_phminposuw): Likewise.
3732         (sse4_1_extendv8qiv8hi2): Likewise.
3733         (*sse4_1_extendv8qiv8hi2): Likewise.
3734         (sse4_1_extendv4qiv4si2): Likewise.
3735         (*sse4_1_extendv4qiv4si2): Likewise.
3736         (sse4_1_extendv2qiv2di2): Likewise.
3737         (*sse4_1_extendv2qiv2di2): Likewise.
3738         (sse4_1_extendv4hiv4si2): Likewise.
3739         (*sse4_1_extendv4hiv4si2): Likewise.
3740         (sse4_1_extendv2hiv2di2): Likewise.
3741         (*sse4_1_extendv2hiv2di2): Likewise.
3742         (sse4_1_extendv2siv2di2): Likewise.
3743         (*sse4_1_extendv2siv2di2): Likewise.
3744         (sse4_1_zero_extendv8qiv8hi2): Likewise.
3745         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
3746         (sse4_1_zero_extendv4qiv4si2): Likewise.
3747         (*sse4_1_zero_extendv4qiv4si2): Likewise.
3748         (sse4_1_zero_extendv2qiv2di2): Likewise.
3749         (*sse4_1_zero_extendv2qiv2di2): Likewise.
3750         (sse4_1_zero_extendv4hiv4si2): Likewise.
3751         (*sse4_1_zero_extendv4hiv4si2): Likewise.
3752         (sse4_1_zero_extendv2hiv2di2): Likewise.
3753         (*sse4_1_zero_extendv2hiv2di2): Likewise.
3754         (sse4_1_zero_extendv2siv2di2): Likewise.
3755         (*sse4_1_zero_extendv2siv2di2): Likewise.
3756         (sse4_1_roundpd): Likewise.
3757         (sse4_1_roundps): Likewise.
3758         (sse4_1_roundsd): Likewise.
3759         (sse4_1_roundss): Likewise.
3760         (mulv4si3): Don't expand for SSE4.1.
3761         (smax<mode>3): Likewise.
3762         (umaxv4si3): Likewise.
3763         (uminv16qi3): Likewise.
3764         (umin<mode>3): Likewise.
3765         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
3766
3767         * doc/extend.texi: Document SSE4.1 built-in functions.
3768
3769         * doc/invoke.texi: Document -msse4.1.
3770
3771 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
3772
3773         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
3774         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
3775         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
3776         (ASM_SPEC): Add asm_pcrel_spec.
3777         (EXTRA_SPECS): Add asm_pcrel_spec.
3778
3779 2007-05-21  David Daney  <ddaney@avtrex.com>
3780
3781         * doc/install.texi (Building a cross compiler): Add requirements
3782         for Java cross compiler.
3783
3784 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3785
3786         PR middle-end/31995
3787         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
3788         Add loopno argument.  Use evolution_function_is_invariant_rec_p
3789         instead of evolution_function_is_constant_p.
3790         Update calls to evolution_function_is_affine_multivariate_p.
3791         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
3792         Add loopno argument.
3793         * tree-scalar-evolution.c (gather_chrec_stats): Call
3794         evolution_function_is_affine_multivariate_p with a loop
3795         number of 0.
3796         * tree-data-ref.c (analyze_miv_subscript): Likewise.
3797         (analyze_overlapping_iterations): Likewise.
3798         (access_functions_are_affine_or_constant_p): Likewise.
3799         (build_classic_dist_vector_1): If the access functions
3800         are equal, don't do anything.
3801
3802 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
3803             Paolo Carlini  <pcarlini@suse.de>
3804             Uros Bizjak  <ubizjak@gmail.com>
3805
3806         * c-cppbuiltin.c (c_cpp_builtins): Define
3807         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
3808         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
3809         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
3810         * doc/cpp.texi ([Standard Predefined Macros]): Document.
3811
3812 2007-05-21  Mike Stump  <mrs@apple.com>
3813
3814         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
3815         handling as well.
3816         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
3817
3818 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
3819
3820         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
3821         implementation if __OPTIMIZE__ is not defined.
3822         (_mm_alignr_pi8): Ditto.
3823         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
3824         (_mm_inserti_si64): Ditto.
3825         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
3826         (_mm_slli_epi16): Ditto.
3827         (_mm_slli_epi32): Ditto.
3828         (_mm_slli_epi64): Ditto.
3829         (_mm_srai_epi16): Ditto.
3830         (_mm_srai_epi32): Ditto.
3831         (_mm_srli_si128): Ditto.
3832         (_mm_slli_si128): Ditto.
3833         (_mm_srli_epi16): Ditto.
3834         (_mm_srli_epi32): Ditto.
3835         (_mm_srli_epi64): Ditto.
3836         (_mm_extract_epi16): Ditto.
3837         (_mm_insert_epi16): Ditto.
3838         (_mm_shufflehi_epi16): Ditto.
3839         (_mm_shufflelo_epi16): Ditto.
3840         (_mm_shuffle_epi32): Ditto.
3841         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
3842         (_m_pextrw): Ditto.
3843         (_mm_insert_pi16): Ditto.
3844         (_m_pinsrw): Ditto.
3845         (_mm_shuffle_pi16): Ditto.
3846         (_m_pshufw): Ditto.
3847         (_mm_shufle_ps): Ditto.
3848         (_mm_prefetch): Ditto.
3849
3850 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
3851
3852         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
3853         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
3854         * real.c (encode_i370_single, decode_i370_single,
3855         encode_i370_double, decode_i370_double): Functions removed.
3856         (i370_single_format, i370_double_format): Initializations removed.
3857         (real_maxval, round_for_format, exact_real_truncate, significand_size):
3858         Consider the log2_b field to always be one.
3859         (ieee_single_format, mips_single_format, coldfire_single_format,
3860         ieee_double_format, mips_double_format, coldfire_double_format,
3861         ieee_extended_motorola_format, ieee_extended_intel_96_format,
3862         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
3863         ibm_extended_format, mips_extended_format, ieee_quad_format,
3864         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
3865         decimal_single_format, decimal_double_format, decimal_quad_format,
3866         c4x_single_format, c4x_extended_format, real_internal_format): Remove
3867         initialization of log2_b.
3868         * real.h (i370_single_format, i370_double_format): Declarations removed.
3869         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
3870         field to always be one.
3871
3872 2007-05-21  Andreas Schwab  <schwab@suse.de>
3873
3874         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
3875         NOTE_INSN_BASIC_BLOCK_P.
3876         (process_for_unwind_directive): Likewise.
3877
3878 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
3879
3880         * builtins.c (expand_builtin_setjmp_setup): Update comment.
3881         * function.h (struct function): Move va_list_gpr_size,
3882         va_list_fpr_size, function_frequency to front of bitfields.  Add
3883         calls_unwind_init.
3884         (current_function_calls_unwind_init): New.
3885         * except.c (expand_builtin_unwind_init): Set
3886         current_function_calls_unwind_init not
3887         current_function_has_nonlocal_label.
3888         * reload1.c (has_nonexceptional_receiver): New.
3889         (reload): Use it and current_function_calls_unwind_init to
3890         determine whether call-saved regs must be saved.
3891
3892 2007-05-20  Jan Hubicka  <jh@suse.cz>
3893
3894         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
3895         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3896         * ddg.c (create_ddg): LIkewise.
3897         * final.c (final): Remove hunk moving line numbernotes around since
3898         they are no longer present at this stage.
3899         (final_scan_insn): Use NOTE_KIND instead of
3900         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3901         (output_asm_label): Likewise.
3902         * reorg.c (dbr_schedule): Likewise.
3903         * haifa-sched.c (unlink_other_notes): Likewise.
3904         * mode-switching.c (optimize_mode_switching): Likewise.
3905         * graph.c (start_bb): Likewise.
3906         * rtl.def (NOTE): Update description.
3907         * jump.c (squeeze_notes): Delete.
3908         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
3909         NOTE_INSN_BASIC_BLOCK_P when possible.
3910         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
3911         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
3912         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3913         (dwarf2out_var_location): Likewise.
3914         * cfgbuild.c (make_edges): Likewise.
3915         (find_basic_blocks_1): Likewise.
3916         * function.c (reorder_blocks_1): Likewise.
3917         (epilogue_done): Likewise.
3918         (reposition_prologue_and_epilogue_notes): Likewise.
3919         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
3920         notes.
3921         (print_rtl): Likewise.
3922         (print_rtl_single): Likewise.
3923         * gcse.c (insert_insn_start_bb): Likewise.
3924         * alias.c (init_alias_analysis): Likewise.
3925         * calls.c (fixup_tail_calls): Likewise.
3926         * except.c (sjlj_emit_function_enter): Likewise.
3927         * emit-rtl.c (add_insn_after): Likeiwse.
3928         (emit_label_before): Likewise.
3929         (emit_label_after): Likewise.
3930         (emit_note_before, emit_note_after, emit_note): Update
3931         parameter to be enum insn_note; do not deal with source
3932         files.
3933         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
3934         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
3935         when possible.
3936         (merge_blocks_move_successor_nojumps): Simplify now when
3937         we don't have BLOCK notes.
3938         (try_optimize_cfg): Likewise.
3939         * cfglayout.c (skip_insns_after_block): Likewise.
3940         (record_effective_endpoints): Likewise.
3941         (duplicate_insn_chain): Likewise.
3942         * varasm.c (output_constant_pool_1): Likewise.
3943         * sched-deps.c (sched_analyze): Likewise.
3944         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
3945         Exterminate.
3946         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
3947         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
3948         (SET_INSN_DELETED): Simplify.
3949         (NOTE_LINE_NUMBER): Exterminate.
3950         (NOTE_LINE_KIND): New.
3951         (NOTE_INSN_BASIC_BLOCK_P): Update.
3952         (enum insn_note): Simplify.
3953         (GET_NOTE_INSN_NAME) Simplify.
3954         (emit_note_before, emit_note_after, emit_note): Update prototype.
3955         (squeeze_notes): Remove.
3956         * sched-int.h (NOTE_NOT_BB_P): Update.
3957         * resource.c (mark_target_live_regs): Update.
3958         * sched-rgn.c (debug_dependencies): Update.
3959         * sched-vis.c (print_insn): Update.
3960         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
3961         * config/i386/i386.c (ix86_output_function_epilogue): Update.
3962         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
3963         (TARGET_ADJUST_UNROLL_MAX): Likewise.
3964         (split_branches): Update.
3965         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
3966         4.0.0.
3967         (sh_adjust_unroll_max): Exterminate.
3968         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
3969         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
3970         (m68hc11_reorg): Likewise.
3971         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
3972         (emit_predicate_relation_info): Update.
3973         (process_for_unwind_directive): Update.
3974         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
3975         (output_call): Update.
3976         * config/pa/pa.c (output_lbranch): Update.
3977         (output_millicode_call): Update.
3978         (output_call): Update.
3979         (pa_combine_instructions): Update.
3980         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
3981         * config/bfin/bfin.c (gen_one_bundle): Update.
3982         * cfgrtl.c (can_delete_note_p): Update.
3983         (delete_insn): Update.
3984         (rtl_merge_blocks): Update.
3985         (commit_one_edge_insertion): Update.
3986         (rtl_verify_flow_info): Update.
3987         * stmt.c (expand_case): Do not call squeeze_notes.
3988
3989 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3990
3991         PR middle-end/7651
3992         PR c++/11856
3993         PR c/12963
3994         PR c/23587
3995         PR other/29694
3996         * c.opt (Wtype-limits): New.
3997         * doc/invoke.texi (Wtype-limits): Document it.
3998         (Wextra): Enabled by -Wextra.
3999         * c-opts.c (c_common_post_options): Enabled by -Wextra.
4000         * c-common.c (shorten_compare): Warn with Wtype-limits.
4001
4002 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
4003
4004         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
4005         inlined function, not as a macro.
4006         (_mm_alignr_pi8): Ditto.
4007         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
4008         (_mm_inserti_si64): Ditto.
4009         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
4010         (_mm_extract_epi16): Ditto.
4011         (_mm_insert_epi16): Ditto.
4012         (_mm_shufflehi_epi16): Ditto.
4013         (_mm_shufflelo_epi16): Ditto.
4014         (_mm_shuffle_epi32): Ditto.
4015         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
4016         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
4017         all functions.
4018         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
4019         float constant.
4020         (_m_to_float): Use C89 compatible assignment.
4021
4022 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
4023
4024         PR target/32007
4025         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
4026
4027 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4028
4029         PR middle-end/7651
4030         * doc/invoke.texi (Wreturn-type): Complete description.
4031         (Wextra): Delete item about return-type warning.
4032         * c-decl.c: Delete redundant Wextra warning.
4033
4034 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
4035
4036         PR target/31585
4037         * config/i386/pmmintrin.h: Do not include xmmintrin.h
4038         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
4039         inlined function, not as a macro.
4040         (_mm_prefetch): Ditto.
4041         (_m_pextrw): Ditto.
4042         (_mm_insert_pi16): Ditto.
4043         (_m_pinsrw): Ditto.
4044         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
4045         (_m_pshufw): Ditto. Add const to __N argument.
4046         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
4047         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
4048         (_mm_slli_epi32): Ditto.
4049         (_mm_srli_si128): Implement as always inlined function, not as a macro.
4050         Add __inline to function declaration.
4051         (_mm_slli_si128): Ditto.
4052
4053 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
4054
4055         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
4056         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
4057         New constants.
4058         (struct fenv): New structure.
4059         (FP_HANDLE_EXCEPTIONS): New define.
4060         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
4061         (_FP_DECL_EXP): New define.
4062         (FP_INIT_ROUNDMODE): New define.
4063         (FP_ROUNDMODE): New define.
4064
4065 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4066
4067         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
4068         (Wconversion): Update description.
4069         (Wconversion-sign): New.
4070         * c.opt (Wconversion-sign): New.
4071         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
4072         means disabled for C++. Otherwise, take the status of Wconversion.
4073         * c-common.c (conversion_warning): Warn with either Wconversion or
4074         Wconversion-sign.
4075         (warnings_for_convert_and_check): Conditions are already checked by
4076         conversion_warning.
4077         (convert_and_check): Don't check warnings if the conversion failed.
4078
4079 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
4080            Anatoly Sokolov <aesok@dol.ru>
4081
4082         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
4083         avr_epilogue_uses) : Add declaration.
4084         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
4085         * config/avr/constraints.md (R): New constraint.
4086         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
4087         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
4088         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
4089         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
4090         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
4091         call_prologue_saves, epilogue_restores, return_from_epilogue,
4092         return_from_main_epilogue, return_from_interrupt_epilogue,
4093         return_from_naked_epilogue, prologue, epilogue): New patterns.
4094         (jump): Handle symbol reference.
4095         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
4096         avr_output_function_prologue, avr_output_function_epilogue): Remove
4097         functions.
4098         (avr_init_machine_status, expand_prologue, expand_epilogue,
4099         avr_asm_function_end_prologue, avr_epilogue_uses,
4100         avr_asm_function_begin_epilogue): New functions.
4101         (prologue_size, epilogue_size, jump_tables_size): Remove global
4102         variables.
4103         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
4104         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
4105         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
4106         (avr_override_options): Initialise init_machine_status.
4107         (output_movhi): Handle all stack pointer loads.
4108         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
4109         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
4110         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
4111         (EPILOGUE_USES) Redefine.
4112         (machine_function) Declare.
4113
4114 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
4115
4116         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
4117         Use a single return statement.
4118
4119 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4120
4121         PR middle-end/30250
4122         * builtins.c (do_mpfr_lgamma_r): New.
4123         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
4124         * tree.h (CASE_FLT_FN_REENT): New.
4125
4126 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
4127
4128         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
4129         (output_die): Use 'unsigned long' with %x.
4130         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
4131         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
4132         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
4133
4134         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
4135
4136 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
4137
4138         PR target/31989
4139         PR target/31681
4140         PR target/31666
4141         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
4142         true if function has no argument.
4143
4144 2007-05-18  DJ Delorie  <dj@redhat.com>
4145
4146         * config/mips/mips.c (mips_offset_within_alignment_p): New.
4147         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
4148
4149 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
4150
4151         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
4152         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
4153         count_trailing_zeros.
4154         (__i386__): Implement count_leading_zeros using __builtin_clz().
4155         Implement count_trailing_zeros usign __builtin_ctz().
4156
4157 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
4158
4159         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
4160
4161 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
4162
4163         PR middle-end/31344
4164         * expr.c (emit_move_change_mode): Change mode of push operands here.
4165
4166 2007-05-17  Ian Lance Taylor  <iant@google.com>
4167
4168         PR tree-optimization/31953
4169         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
4170         Change all callers.
4171         (set_value_range_to_null): Call set_value_range_to_value.
4172         (extract_range_from_comparison): Likewise.
4173
4174 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4175
4176         * toplev.c (print_version): Output GMP/MPFR version info.
4177
4178         * builtins.c (CASE_MATHFN_REENT): New macro.
4179         (mathfn_built_in): Use it.
4180         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
4181         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
4182         BUILT_IN_LGAMMAL_R): New.
4183         * doc/extend.texi: Document new builtins.
4184
4185         PR middle-end/31796
4186         * builtins.c (do_mpfr_remquo): New.
4187         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
4188         (fold_builtin_3): Handle BUILT_IN_REMQUO.
4189
4190         PR middle-end/30251
4191         * builtins.c (fold_builtin_1): Handle y0, y1.
4192         (fold_builtin_2): Handle yn.
4193
4194         PR middle-end/30251
4195         * builtins.c (do_mpfr_bessel_n): New.
4196         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
4197         (fold_builtin_2): Handle BUILT_IN_JN.
4198
4199 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
4200
4201         PR target/31965
4202         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
4203         TYPE_PRECISION (intmax_type_node).
4204
4205 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
4206
4207         PR target/31850
4208         * reload.c (subst_reloads): Remove checking.
4209
4210 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
4211
4212         PR rtl-optimization/31691
4213         * combine.c (simplify_set): Build a new src pattern instead of
4214         substituting its operands in the COMPARE case.
4215
4216 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
4217
4218         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
4219         (execute_vrp): Preserve loops through jump threading.
4220         * tree-ssa-threadupdate.c (thread_single_edge,
4221         dbds_continue_enumeration_p, determine_bb_domination_status,
4222         thread_through_loop_header): New functions.
4223         (create_edge_and_update_destination_phis,
4224         create_edge_and_update_destination_phis): Set loops for the new blocks.
4225         (prune_undesirable_thread_requests): Removed.
4226         (redirect_edges): Do not pretend that redirect_edge_and_branch can
4227         create new blocks.
4228         (thread_block): Do not call prune_undesirable_thread_requests.
4229         Update loops.
4230         (mark_threaded_blocks): Select edges to thread here.
4231         (thread_through_all_blocks): Take may_peel_loop_headers argument.
4232         Thread edges through loop headers independently.
4233         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
4234         * tree-pass.h (TODO_mark_first_instance): New.
4235         (first_pass_instance): Declare.
4236         * cfghooks.c (duplicate_block): Put the block to the original loop
4237         if copy is not specified.
4238         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
4239         jump threading.  Pass may_peel_loop_headers to
4240         thread_through_all_blocks according to first_pass_instance.
4241         * cfgloop.h (create_preheader): Declare.
4242         * tree-flow.h (thread_through_all_blocks): Declaration changed.
4243         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
4244         * passes.c (first_pass_instance): New variable.
4245         (next_pass_1): Set TODO_mark_first_instance.
4246         (execute_todo): Set first_pass_instance.
4247
4248 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
4249
4250         PR tree-optimization/24659
4251         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
4252         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
4253         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
4254         OTI_vec_pack_ufix_trunc.
4255         (vec_unpacks_float_hi_optab): Define new macro.
4256         (vec_unpacks_float_lo_optab): Ditto.
4257         (vec_unpacku_float_hi_optab): Ditto.
4258         (vec_unpacku_float_lo_optab): Ditto.
4259         (vec_pack_sfix_trunc_optab): Ditto.
4260         (vec_pack_ufix_trunc_optab): Ditto.
4261         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
4262         and vec_pack_[s|u]fix_trunc_optab using
4263         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
4264         * tree-vectorizer.c (supportable_widening_operation): Handle
4265         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
4266         (supportable_narrowing_operation): New function.
4267         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
4268         * tree-vect-transform.c (vectorizable_conversion): Handle
4269         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
4270         (vect_gen_widened_results_half): Move before vectorizable_conversion.
4271         (vectorizable_type_demotion): Call supportable_narrowing_operation()
4272         to check for target support.
4273         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
4274         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
4275         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
4276         for VEC_PACK_FIX_TRUNC_EXPR.
4277         (expand_binop): Special case mode of the result for
4278         vec_pack_[u|s]fix_trunc_optab.
4279         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
4280         vec_pack_[u|s]fix_trunc_optab.
4281
4282         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
4283         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
4284         * tree-pretty-print.c (dump_generic_node): Handle
4285         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
4286         VEC_PACK_FIX_TRUNC_EXPR.
4287         (op_prio): Ditto.
4288         * expr.c (expand_expr_real_1): Ditto.
4289         * tree-inline.c (estimate_num_insns_1): Ditto.
4290         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
4291
4292         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
4293         (vec_unpacks_float_lo_v8hi): Ditto.
4294         (vec_unpacku_float_hi_v8hi): Ditto.
4295         (vec_unpacku_float_lo_v8hi): Ditto.
4296         (vec_unpacks_float_hi_v4si): Ditto.
4297         (vec_unpacks_float_lo_v4si): Ditto.
4298         (vec_pack_sfix_trunc_v2df): Ditto.
4299
4300         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
4301         Document.
4302         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
4303         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
4304         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
4305         [vec_pack_ufix_trunc]: Ditto.
4306         [vec_unpacks_float_hi]: Ditto.
4307         [vec_unpacks_float_lo]: Ditto.
4308         [vec_unpacku_float_hi]: Ditto.
4309         [vec_unpacku_float_lo]: Ditto.
4310
4311 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
4312
4313         * soft-fp/README: Update for new files.
4314         * soft-fp/floattisf.c: New file.
4315         * soft-fp/floattidf.c: New file.
4316         * soft-fp/floattitf.c: New file.
4317         * soft-fp/floatuntisf.c: New file.
4318         * soft-fp/floatuntidf.c: New file.
4319         * soft-fp/floatuntitf.c: New file.
4320         * soft-fp/fixsfti.c: New file.
4321         * soft-fp/fixdfti.c: New file.
4322         * soft-fp/fixtfti.c: New file.
4323         * soft-fp/fixunssfti.c: New file.
4324         * soft-fp/fixunsdfti.c: New file.
4325         * soft-fp/fixunstfti.c: New file.
4326         * soft-fp/extendxftf.c: New file.
4327         * soft-fp/trunctfxf.c: New file.
4328
4329         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
4330         (__trunctfxf2): Ditto.
4331
4332         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
4333         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
4334         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
4335         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
4336         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
4337         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
4338
4339         * config/i386/t-fprules-softfp64: New file.
4340         * config/i386/sfp-machine.h: New file.
4341         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
4342         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
4343         and soft-fp/t-softfp to tmake_file.
4344         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
4345         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
4346
4347         * config/i386/t-linux64 (softfp_wrap_start): New.
4348         (softfp_wrap_end): New.
4349         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
4350         supported for TARGET_64BIT.
4351
4352 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
4353
4354         * c-common.c (c_common_signed_or_unsigned_type): Emulate
4355         c_common_unsigned_type behavior.
4356
4357 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
4358
4359         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
4360         calls as pure.
4361
4362 2007-05-16  Eric Christopher  <echristo@apple.com>
4363
4364         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
4365         saving after stack push. Set sp_offset whenever we push.
4366         (rs6000_emit_epilogue): Move altivec register restore before
4367         stack push.
4368
4369 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
4370
4371         * configure.ac: Allow sysroots to be relocated under $prefix as
4372         well as $exec_prefix.
4373         * configure: Regenerate.
4374
4375 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
4376
4377         Revert:
4378
4379         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
4380
4381         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
4382         (gcc_tooldir): Likewise.
4383         * configure: Regenerate.
4384         * Makefile.in (libsubdir_to_prefix): New variable, based on the
4385         old configure.ac gcc_tooldir setting.
4386         (prefix_to_exec_prefix): New variable.
4387         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
4388         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
4389
4390 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
4391
4392         * c-typeck.c (build_binary_op): Return early for error.
4393
4394 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
4395
4396         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
4397         struct nb_iter_bound.
4398         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
4399         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
4400         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
4401         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
4402         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
4403         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
4404         (del_scev_info): Use ggc_free.
4405         (scev_initialize): Allocate scalar_evolution_info in gc memory.
4406         * loop-init.c: Include ggc.h.
4407         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
4408         (loop_optimizer_finalize): Use ggc_free.
4409         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
4410         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
4411         pass_iv_optimize): Add TODO_ggc_collect.
4412         * function.h (struct function): Remove skip marker from x_current_loops.
4413         * cfgloop.c: Include ggc.h.
4414         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
4415         memory.
4416         (establish_preds): Vector superloops is gc allocated.
4417         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
4418         loop->exits list.
4419         (flow_loops_find): Vector larray is gc allocated.
4420         (loop_exit_free): Use ggc_free.
4421         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
4422         that head of exits list is now not a part of struct loop.
4423         (record_loop_exits): Allocate exits table in gc memory.
4424         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
4425         head of exits list is now not a part of struct loop.
4426         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
4427         struct loop_exit): Add GTY marker.
4428         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
4429         Add skip marker to aux field.  Make head of exits list a separate
4430         object.
4431         (struct loops): Add GTY marker.  Make larray vector gc allocated.
4432         Add param marker to exits table.
4433         (get_loops): Type changed.
4434         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
4435         dependency.
4436         (cfgloop.o, loop-init.o): Add ggc.h dependency.
4437         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
4438         * basic-block.h (struct basic_block_def): Remove skip marker from
4439         loop_father field.
4440
4441 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
4442
4443         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
4444         of 0 in the call to expand_expr().
4445         (expand_builtin_mathfn_3): Ditto.
4446         (expand_builtin_interclass_mathfn): Ditto.
4447         (expand_builtin_cexpi): Ditto.
4448         (expand_builtin_int_roundingfn): Ditto.
4449         (expand_builtin_int_roundingfn_2): Ditto.
4450         (expand_builtin_pow): Ditto.
4451         (expand_builtin_powi): Ditto.
4452         (expand_builtin_bswap): Ditto.
4453         (expand_builtin_unop): Ditto.
4454         (expand_builtin_fabs): Ditto.
4455         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
4456         the call to expand_expr().
4457         (expand_builtin_sync_operation): Ditto.
4458         (expand_builtin_compare_and_swap): Ditto.
4459         (expand_builtin_lock_test_and_set): Ditto.
4460         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
4461         instead of 0 in the call to expand_expr().
4462         (expand_builtin_extract_return_addr): Ditto.
4463         (expand_builtin_eh_return): Ditto.
4464         (expand_eh_return): Ditto.
4465         * explow.c (expr_size): Ditto.
4466         * expr.c (optimize_bitfield_assignment_op): Ditto.
4467         (expand_assignement): Ditto.
4468         (store_expr): Ditto.
4469         (store_field): Ditto.
4470         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
4471         the call to expand_expr().
4472         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
4473         in the call to expand_expr().
4474         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
4475         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
4476         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
4477         of expand_expr().
4478         * optabs.c (expand_vec_shift_expr): Ditto.
4479         (expand_vec_cond_expr): Ditto.
4480         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
4481         call to expand_expr().
4482         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
4483         in the call to expand_expr().
4484
4485 2007-05-14  Dave Korn  <dave.korn@artimi.com>
4486
4487         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
4488
4489 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
4490
4491         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
4492         instead of c_common_unsigned_type.
4493         (c_common_unsigned_type): Remove.
4494         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
4495         c_common_unsigned_type.
4496         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
4497         c_common_unsigned_type.
4498         * c-common.h (c_common_unsigned_type): Remove.
4499         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
4500         c_common_unsigned_type.
4501         * c-format.c (check_format_types): Use unsigned_type_for instead of
4502         c_common_unsigned_type.
4503         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
4504         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
4505         c_common_unsigned_type.
4506         * convert.c (convert_to_integer): Use unsigned_type_for instead of
4507         lang_hooks.types.unsigned_type.
4508         * expmed.c (make_tree): Use unsigned_type_for instead of
4509         lang_hooks.types.unsigned_type.
4510         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
4511         lang_hooks.types.unsigned_type.
4512         (build_range_check): Likewise.
4513         (fold_unary): Likewise.
4514         (fold_binary): Likewise.
4515         (fold_ternary): Likewise.
4516         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
4517         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
4518         * tree.c (get_unsigned_type): New.
4519         (unsigned_type_for): Use get_unsigned_type instead of
4520         lang_hooks.types.unsigned_type.
4521
4522 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
4523
4524         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
4525         to m68k_get_function_kind.  Update its prototype.
4526         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
4527         interrupt_thread.
4528         (m68k_interrupt_function_p): Return enum m68k_function_type
4529         instead of bool.  Rename to m68k_get_function_kind.
4530         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
4531         target is not fido.
4532         (m68k_compute_frame_layout): Don't mark any register for save
4533         if an interrupt_thread attribute is specified.
4534         (m68k_hard_regno_rename_ok): Update a use of
4535         m68k_interrupt_function_p.
4536         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
4537         m68k_interrupt_function_p.
4538         (m68k_function_type): New.
4539         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
4540         for a function with an interrupt_thread attribute.
4541         * doc/extend.texi: Document the interrupt_thread attribute.
4542
4543 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
4544
4545         Fix PR tree-optimization/31911
4546         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
4547         if they didn't change the expression.
4548
4549 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
4550
4551         * tree-scalar-evolution.c (resolve_mixers): Exported.
4552         * tree-scalar-evolution.h (resolve_mixers): Declare.
4553         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
4554         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
4555         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
4556         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
4557         init_array_ref, init_pointer_ref, analyze_indirect_ref,
4558         strip_conversion, analyze_offset_expr, address_analysis,
4559         object_analysis, analyze_offset): Removed.
4560         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
4561         split_constant_offset, canonicalize_base_object_address,
4562         object_address_invariant_in_loop_p, disjoint_objects_p,
4563         dr_may_alias_p, dr_address_invariant_p): New functions.
4564         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
4565         and dr_analyze_alias.
4566         (initialize_data_dependence_relation): Use dr_may_alias_p
4567         and object_address_invariant_in_loop_p.
4568         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
4569         is chrec_dont_know.
4570         (find_data_references_in_stmt): Restrict the analysis of data references
4571         to the given loop nest.
4572         (find_data_references_in_loop): Made static.  Pass loop nest to
4573         find_data_references_in_stmt.
4574         (compute_data_dependences_for_loop): Use DR_VOPS.
4575         (free_data_ref): Free DR_VOPS.
4576         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
4577         (struct innermost_loop_behavior): ... new.
4578         (struct base_object_info): Replaced by ...
4579         (struct indices): ... new.
4580         (struct dr_alias): New.
4581         (enum data_ref_type): Removed.
4582         (struct data_reference): Consist of struct innermost_loop_behavior,
4583         struct indices and struct dr_alias.
4584         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
4585         (DR_MEMTAG): Renamed to ...
4586         (DR_SYMBOL_TAG): ... this.
4587         (find_data_references_in_loop): Declaration removed.
4588         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
4589         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
4590         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
4591         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
4592
4593 2007-05-13  Revital Eres  <eres@il.ibm.com>
4594
4595         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
4596         which walks virtual def-use chains to find redundant stores.
4597         (dse_optimize_stmt): Call it.
4598
4599 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
4600
4601         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
4602         * passes.c (init_optimization_passes): Move pass_jump_bypass
4603         after loop2.
4604
4605         * basic-block.h (bb_has_eh_pred): Fix style issue.
4606
4607 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
4608
4609         PR rtl-optimization/31848
4610         * loop-invariant.c (move_invariant_reg): If we move an insn
4611         with a REG_EQUAL note, and that insn is not always executed,
4612         remove the REG_EQUAL note.
4613
4614 2007-05-12  Richard Guenther  <rguenther@suse.de>
4615
4616         PR tree-optimization/31797
4617         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
4618         propagate into a stmt that has volatile ops.
4619
4620 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
4621
4622         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
4623         (gcc_tooldir): Likewise.
4624         * configure: Regenerate.
4625         * Makefile.in (libsubdir_to_prefix): New variable, based on the
4626         old configure.ac gcc_tooldir setting.
4627         (prefix_to_exec_prefix): New variable.
4628         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
4629         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
4630
4631 2007-05-11  Silvius Rus  <rus@google.com>
4632
4633         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
4634         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
4635         * c-common.h (strict_aliasing_warning): Change return type.
4636         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
4637         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
4638         (build_c_cast): Condition call to strict_aliasing_warning.
4639         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
4640         * flags.h (set_Wstrict_aliasing): Declare.
4641         * opts.c (set_Wstrict_alising): Define, add call to.
4642         * tree-flow.h (strict_aliasing_warning_backend): Declare.
4643         * tree-ssa-alias-warnings.c: New file.
4644         * tree-ssa-alias.c (compute_may_aliases): Add call to
4645         strict_aliasing_warning_backend.
4646
4647 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
4648
4649         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
4650         Use loop_depth and loop_outer accessor functions.
4651         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
4652         determine_invariantness_stmt, move_computations_stmt): Ditto.
4653         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
4654         add_loop, loopify, unloop, fix_loop_structure): Ditto.
4655         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
4656         * tree-scalar-evolution.c (interpret_loop_phi,
4657         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
4658         instantiate_parameters_1, scev_const_prop): Ditto.
4659         * cfghooks.c (make_forwarder_block): Ditto.
4660         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
4661         * modulo-sched.c (loop_canon_p): Ditto.
4662         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
4663         slpeel_can_duplicate_loop_p): Ditto.
4664         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
4665         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
4666         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
4667         cancel_loop, verify_loop_structure): Ditto.
4668         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
4669         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
4670         superloops vector instead of "pred" array.
4671         (establish_preds): Take father loop as an argument.  Initialize the
4672         superloops vector.
4673         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
4674         initialize loop->outer.
4675         (flow_loop_tree_node_remove): Truncate the superloops vector.
4676         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
4677         "pred" merged to "superloops" vector.
4678         (loop_depth, loop_outer): New.
4679         (fel_init): Use loop_outer.
4680
4681 2007-05-11  Jan Hubicka  <jh@suse.cz>
4682
4683         * cgraphunit.c: Include gt-cgraphunit.h
4684         (static_ctors, static_dtors): New static vars.
4685         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
4686         based on implementation in c-common.c
4687         (cgraph_finalize_function): Call record_cdtor_fn.
4688         (cgraph_optimize): Call cgraph_build_cdtor_fns.
4689         * decl.c (finish_function): Do not call c_record_cdtor_fn.
4690         (c_write_global_declarations): Do not call c_build_cdtor_fns.
4691         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
4692         build_cdtor, c_build_cdtor_fns): Remove.
4693         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
4694         c_build_cdtor_fns): Remove prototype.
4695
4696 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
4697
4698         PR other/31852
4699         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
4700         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
4701         * builtins.c (fold_builtin_memchr): New.
4702         (expand_builtin_memchr): Call the latter.
4703         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
4704         * doc/extend.texi ([Other built-in functions provided by GCC]):
4705         Document memchr.
4706
4707 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
4708
4709         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
4710         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
4711         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
4712         PFPO_OP1_TYPE_SHIFT): Constants added.
4713         (DFP_ALL): Mode macro defined.
4714         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
4715         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
4716         Insn definitions added.
4717         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
4718         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
4719         Expanders added.
4720
4721 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
4722
4723         PR tree-optimization/31885
4724         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
4725         to be undetermined.
4726         (automatically_generated_chrec_p): Return false for NULL.
4727
4728 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
4729
4730         * config/bfin/bfin.h (MOVE_RATIO): Define.
4731
4732 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
4733
4734         * config.gcc (sparc-wrs-vxworks): New target.
4735         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
4736         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
4737         * config/sparc/sparc.h: Include vxworks-dummy.h.
4738         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
4739         include LABEL_REFs too.
4740         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
4741         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
4742         VxWorks.
4743         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
4744         on VxWorks.
4745         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
4746         (sparc_emit_call_insn): New function.
4747         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
4748         functions when generating VxWorks PIC.
4749         * config/sparc/sparc.md (vxworks_load_got): New pattern.
4750         (call, call_value): Use sparc_emit_call_insn instead of
4751         emit_call_insn.
4752
4753 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
4754
4755         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
4756
4757 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
4758
4759         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
4760         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
4761         instead of operand_subword.
4762
4763 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
4764
4765         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
4766         * config/bfin/bfin.c (bfin_local_alignment): New function.
4767         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
4768
4769 2007-05-08  Chao-ying Fu  <fu@mips.com>
4770
4771         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
4772         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
4773         (smsub_widen_optab, umsub_widen_optab): Define.
4774         * optabs.c (init_optabs): Initialize smsub_widen_optab and
4775         umsub_widen_optab.
4776         * genopinit.c (optabs): Fill in smsub_widen_optab and
4777         umsub_widen_optab.
4778         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
4779         and umsub_widen_optab to implement multiply-subtract sequences.
4780         * config/mips/mips.md (*msac<u>_di): Rename to...
4781         (<u>msubsidi4): ...this.  Extend condition to include
4782         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
4783         of operand 0 to "ka" and use the three-operand form of msub<u>
4784         for TARGET_DSPR2.
4785         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
4786         to define_expands.
4787
4788 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
4789
4790         PR rtl-optimization/28011
4791         * reload.c (push_reload): Set dont_share if IN appears in OUT
4792         also when IN is a PLUS rtx.
4793         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
4794         are same PLUS rtx.
4795
4796 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
4797
4798         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
4799         call unshare_all_decls.
4800         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
4801         (unshare_all_decls): Remove.
4802
4803 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
4804
4805         PR 31847
4806         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
4807         dumps.
4808
4809 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
4810             Nigel Stephens  <nigel@mips.com>
4811
4812         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
4813         Update comments and all uses.
4814         (MIN_FPRS_PER_FMT): Define.
4815         * config/mips/mips.c (function_arg): Fix to correctly handle
4816         the -mips32r2 -mfp64 -mabi=32 case.
4817         (override_options): Enable use of odd-numbered registers for
4818         SFmode values on MIPS32.
4819         (mips_save_reg_p): Save whole floating-point register pair if
4820         either half is used.
4821         (compute_frame_size): Fix comment.
4822
4823 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
4824
4825         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
4826         argument of type bool.
4827         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
4828         argument. Safely select temporary P register according to it.
4829         (do_link): Change call site of add_to_reg accordingly.
4830         (do_unlink): Add epilogue_p as a fourth argument and pass it
4831         to add_to_reg.
4832         (expand_interrupt_handler_epilogue): Change call of do_unlink
4833         accordingly.
4834         (bfin_expand_prologue): Add a third argument sibcall_p.
4835         * config/bfin/bfin.md (epilogue): Change call of
4836         bfin_expand_epilogue accordingly.
4837         (sibcall_epilogue): Likewise.
4838         (eh_return_internal): Likewise.
4839
4840         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
4841         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
4842         * config/bfin/bfin.c (bfin_handle_option): Handle
4843         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
4844         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
4845         Support bf534, bf536 and bf561.
4846         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
4847
4848 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
4849
4850         PR target/31854
4851         * config/i386/i386.c (ix86_function_regparm): Process local
4852         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
4853
4854 2007-05-07  Mike Stump  <mrs@apple.com>
4855
4856         * doc/invoke.texi (Warning Options): Document that -Wempty-body
4857         also checks for and while statements in C++.
4858
4859 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
4860
4861         * gcc.c (at_file_supplied): New variable.
4862         (main): Set it if we expanded argv.
4863         (do_spec_1): Pass an @-file to the linker if we were called with
4864         an @-file argument and HAVE_GNU_LD.
4865         * collect2.c (at_file_supplied): New variable.
4866         (response_file): New variable.
4867         (collect_exit): Unlink response_file if necessary.
4868         (handler): Likewise.
4869         (do_wait): Likewise.
4870         (main): Set at_file_supplied if we expanded argv.
4871         (collect_execute): Pass an @-file to subprocesses if we were called
4872         with an @-file argument.
4873         * configure.ac: Add define for HAVE_GNU_LD.
4874         * configure: Regenerate.
4875         * config.in: Regenerate.
4876
4877 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
4878
4879         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
4880         operand to HI mode.
4881         (mulsi3): New.
4882         (divsi3): New.
4883         (udivsi3): New.
4884
4885 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
4886
4887         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
4888         (TARGET_ENCODE_SECTION_INFO): Re-define.
4889         (m32c_encode_section_info): New
4890         (function_vector_handler): New
4891         (current_function_special_page_vector): New
4892         (m32c_special_page_vector_p): New.
4893         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
4894         Prototype.
4895         * config/m32c/jump.md: Added instruction JSRS for functions
4896         with attribute "function_vector".
4897         * doc/extend.texi (function_vector): Added description
4898         for M16C, M32C targets.
4899
4900 2007-05-07  DJ Delorie  <dj@redhat.com>
4901
4902         PR 31794
4903         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
4904         ashrpsi3, lshrpsi3): Update shift count constraint.
4905
4906 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
4907             Nathan Froyd  <froydnj@codesourcery.com>
4908
4909         PR 22133
4910         * c-incpath.c (add_path): Strip trailing path separators.
4911
4912 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
4913
4914         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
4915         Free dominance info before purging EH edges.
4916         (eliminate_degenerate_phis): Likewise.
4917         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
4918
4919 2007-05-07  Jan Hubicka  <jh@suse.cz>
4920
4921         * gimplify.c (gimplify_expr): Do not crash when folding
4922         (void *)(int)&a + 4.
4923
4924 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4925
4926         PR driver/31694
4927         * c-opts.c (lang_fortran): Make it non static.
4928         * c-common.h (lang_fortran): New prototype.
4929         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
4930         -lang-fortran option was passed by the driver.
4931
4932 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
4933
4934         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
4935         of ASSERT_CHECKING.  Tweak message.
4936
4937 2007-05-06  Revital Eres  <eres@il.ibm.com>
4938
4939         PR 30957
4940         * loop-unroll.c (insert_var_expansion_initialization):
4941         Initialize the expansions with -zero instead of +zero.
4942
4943 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
4944
4945         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
4946         into pic and non-pic versions. Mark r19 as used for
4947         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
4948         for tgd_load, tld_load and tie_load .
4949         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
4950         version of tgd_load, tld_load and tie_load depending on the
4951         value of flag_pic.
4952
4953 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
4954             Jakub Jelinek  <jakub@redhat.com>
4955
4956         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
4957         (__do_global_dtors_aux): Use more paranoid loop to run
4958         destructors if HIDDEN_DTOR_LIST_END.
4959         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
4960
4961 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
4962
4963         * varasm.c (align_variable): Don't increase alignment for
4964         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
4965         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
4966
4967 2007-05-04  Josh Conner  <jconner@apple.com>
4968
4969         * basic-block.h (cdi_direction): Assign values to all enumeration
4970         constants.
4971         (dom_computed): Remove.
4972         (dom_info_state): New.
4973         (set_dom_info_availability): New.
4974         * tree-ssa-loop-im.c (determine_invariantness): Initialize
4975         walk_data.dom_direction.
4976         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
4977         instead of dom_computed[].
4978         (split_edge): Likewise.
4979         (create_basic_block): Likewise.
4980         (merge_blocks): Likewise.
4981         * ifcvt.c (find_if_header): Likewise.
4982         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
4983         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
4984         * tree-ssa.c (verify_ssa): Likewise.
4985         * tree-cfg.c (tree_verify_flow_info): Likewise.
4986         (remove_edge_and_dominated_blocks): Likewise.
4987         * dominance.c (dom_computed): Make static.
4988         (calc_dfs_tree_nonrec): Change third param to a bool.
4989         (calc_dfs_tree): Change second param to a bool.
4990         (calc_idioms): Change second param to a bool.  Use
4991         dom_convert_dir_to_idx.
4992         (init_dom_info): Validate dir before using.
4993         (dom_convert_dir_to_idx): New.
4994         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
4995         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
4996         (free_dominance_info): Use dom_convert_dir_to_idx.
4997         (get_immediate_dominator): Likewise.
4998         (set_immediate_dominator): Likewise.
4999         (get_dominated_by): Likewise.
5000         (redirect_immediate_dominators): Likewise.
5001         (nearest_common_denominator): Likewise.
5002         (dominated_by_p): Likewise.
5003         (bb_dom_dfs_in): Likewise.
5004         (bb_dom_dfs_out): Likewise.
5005         (recount_dominator): Likewise.
5006         (iterate_fix_dominators): Likewise.
5007         (add_to_dominance_info): Likewise.
5008         (delete_from_dominance_info): Likewise.
5009         (first_dom_son): Likewise.
5010         (next_dom_son): Likewise.
5011         (dom_info_available_p): Likewise.
5012         (dom_info_state): New.
5013         (set_dom_info_availability): New.
5014
5015 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5016
5017         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
5018         Expander removed.
5019         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
5020
5021 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
5022
5023         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
5024         (subdi3, subdi_carry): Delete.
5025
5026 2007-05-04  Jan Hubicka  <jh@suse.cz>
5027             Richard Guenther  <rguenther@suse.de>
5028
5029         * opts.c (decode_options): Do not fiddle with inlining
5030         parameters in case of optimizing for size.
5031         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
5032         for size do nothing.
5033         (cgraph_decide_inlining_of_small_function): When optimizing for
5034         size never inline functions increasing caller size.
5035         (cgraph_early_inlining): Inline for size when optimizing for size.
5036
5037 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
5038
5039         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
5040         logical operations piecewise.
5041         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
5042         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
5043         subdi_sesidi_di): Delete.
5044         (add_with_carry): Produce carry in CC instead of a DREG to shorten
5045         the generated sequence.  Allow three-reg add in constraints.  Rewrite
5046         the rtl expression for carry to avoid zero_extend of a constant.
5047         (sub_with_carry): New pattern.
5048         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
5049         different sequence not involving jumps.
5050         (notbi): Now a named pattern.
5051
5052 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
5053
5054         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
5055         Add the note about a significant loss of accuracy of some
5056         mathematical routines when these options are used.
5057
5058 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5059
5060         * haifa-sched.c (rtx_vec_t): New typedef.
5061         (contributes_to_priority_p): Extract piece of priority () into new
5062         static function.
5063         (priority): Use the function.  Add assertion.
5064         (rank_for_schedule, set_priorities): Add assertion to check that
5065         insn's priority is initialized.
5066         (clear_priorities, calc_priorities): Change signature.  Make it update
5067         all relevant insns.  Update all callers ('add_to_speculative_block ()'
5068         and 'create_block_check_twin ()').
5069         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
5070         Add new field 'priority_status'.
5071         (INSN_PRIORITY_STATUS): New macro.
5072         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
5073
5074 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5075
5076         * sched-ebb.c (debug_ebb_dependencies): New static function.
5077         (init_ready_list): Use it.
5078
5079         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
5080         with changed signature and 'debug_rgn_dependencies ()'.
5081         (debug_rgn_dependencies): New static function.
5082         (init_ready_list): Use it.
5083
5084         * sched-int.h (debug_dependencies): Declare.
5085
5086 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
5087
5088         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
5089
5090 2007-05-04  Dirk Mueller  <dmueller@suse.de>
5091
5092         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
5093
5094 2007-05-03  Jan Hubicka  <jh@suse.cz>
5095
5096         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
5097         for pointer type in more cases than before.
5098
5099         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
5100
5101         * tree-object-size.c (plus_expr_object_size): When operand size is
5102         unknown, return unknown.
5103
5104 2007-05-03  Dirk Mueller  <dmueller@suse.de>
5105
5106         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
5107
5108         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
5109         options.
5110
5111         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
5112
5113 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
5114
5115         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
5116
5117 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
5118
5119         * config/soft-fp/double.h, config/soft-fp/extended.h,
5120         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
5121         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
5122         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
5123         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
5124         glibc CVS.
5125
5126 2007-05-03  Ian Lance Taylor  <iant@google.com>
5127
5128         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
5129         MASK_PPC_GFXOPT for 8540 or 8548.
5130
5131 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
5132
5133         * tree-vect-transform.c (vect_update_inits_of_drs): Use
5134         vect_print_dump_info() to output debug information.
5135
5136 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
5137
5138         PR target/31768
5139         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
5140         operands of size 2 when operand is not MEM_P.
5141
5142 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
5143
5144         PR tree-optimization/30565
5145         * lambda-code.c (perfect_nestify): Fix updating of dominators.
5146
5147 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5148
5149         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
5150         (umulsi3_highpart): Use them.
5151         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
5152         for final accumulator to D regisster tranfser.
5153
5154 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
5155
5156         PR tree-optimization/31699
5157         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
5158         code.
5159         (vect_enhance_data_refs_alignment): Compute peel amount using
5160         TYPE_VECTOR_SUBPARTS instead of vf.
5161         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
5162
5163 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
5164
5165         PR bootstrap/31776
5166         * system.h: Remove inclusion of double-int.h
5167         * tree.h: Include double-int.h
5168         * gengtype.c: Likewise
5169         * cfgloop.h: Likewise
5170         * Makefile.in: Adjust dependencies on double-int.h
5171
5172 2007-05-02  Eric Christopher  <echristo@apple.com>
5173
5174         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
5175         -shared to -Zdynamiclib.
5176
5177 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
5178
5179         PR c++/31663
5180         * c-common.c (strip_pointer_or_array_types): New function.
5181         * c-common.h (strip_pointer_or_array_types): New function declaration.
5182
5183 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
5184
5185         PR tree-optimization/31771
5186         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
5187
5188 2007-05-02  Paul Brook  <paul@codesourcery.com>
5189
5190         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
5191
5192 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5193
5194         PR middle-end/29715
5195         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
5196         transformation.
5197
5198 2007-05-02  Nick Clifton  <nickc@redhat.com>
5199
5200         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
5201
5202 2007-05-02  Richard Guenther  <rguenther@suse.de>
5203
5204         PR tree-optimization/31146
5205         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
5206         argument, single_use_p.  If we have a single use that is
5207         a conversion to the definition rhs type, propagate that rhs.
5208         (forward_propagate_addr_expr): Pass single_use_p argument
5209         to forward_propagate_addr_expr_1.
5210
5211 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
5212
5213         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
5214         variable.
5215
5216 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5217
5218         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
5219         'AMD Family 10 core'.
5220
5221 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5222
5223         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
5224         and athlon64-sse3 as improved versions of k8, opteron and athlon64
5225         with SSE3 instruction set support.
5226         * doc/invoke.texi: Likewise.
5227
5228 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5229
5230         * config/i386/i386.c (override_options): Tuning 32-byte loop
5231         alignment for amdfam10 architecture. Increasing the max loop
5232         alignment to 24 bytes.
5233
5234 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
5235
5236         * config/m68k/constraints.md: New.
5237         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
5238         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
5239         EXTRA_CONSTRAINT): Remove.
5240         * config/m68k/m68k.md: Include constraints.md.
5241         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
5242
5243 2007-05-01  Ian Lance Taylor  <iant@google.com>
5244
5245         PR tree-optimization/31739
5246         * tree-vrp.c (vrp_val_is_max): New static function.
5247         (vrp_val_is_min): New static function.
5248         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
5249         copying the node.
5250         (set_value_range): Use vrp_val_is_{max,min}.
5251         (extract_range_from_assert): Likewise.
5252         (extract_range_from_binary_expr): Likewise.
5253         (extract_range_from_unary_expr): Likewise.
5254         (dump_value_range, vrp_meet): Likewise.
5255         (vrp_visit_phi_node): Likewise.
5256         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
5257
5258 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
5259
5260         * config/i386/gmon-sol2.c (size_t): New type.
5261         (intptr_t): Likewise.
5262         (s_textsize): Declare as size_t.
5263         (sbrk): Declare.
5264         (monstartup): Use size_t for sizes.
5265         (_mcount): Save and restore registers.
5266         (internal_mcount): Pass 0 as the first argument to monstartup
5267         in 64-bit mode.
5268         (moncontrol): Convert pointer to appropriately sized integer
5269         before passing to profil.
5270
5271 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
5272
5273         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
5274         __NO_FPRS__, not just if _SOFT_DOUBLE.
5275         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
5276         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
5277         also for E500 double.
5278         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
5279         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
5280         && !TARGET_FPRS).
5281
5282 2007-05-01  Richard Guenther  <rguenther@suse.de>
5283
5284         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
5285         is NULL.
5286
5287 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
5288
5289         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
5290
5291 2007-05-01  Jan Hubicka  <jh@suse.cz>
5292
5293         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
5294         invariant.
5295
5296 2007-05-01  Jan Hubicka  <jh@suse.cz>
5297
5298         * tree.h (maybe_fold_offset_to_component_ref): Remove.
5299         (maybe_fold_offset_to_reference): Declare.
5300         * fold-const.c (fold_unary): Do not fold
5301         (type *)&A into &A->field_of_type_and_offset_0
5302         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
5303         size is unknown, give up.
5304         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
5305         offsets.
5306         (maybe_fold_offset_to_reference): New.
5307         (maybe_fold_stmt_indirect): Use it.
5308         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
5309         * gimplify.c (gimplify_conversion): Canonicalize conversions to
5310         field references.
5311         (gimplify_expr): Likewise for plus_expr.
5312
5313 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
5314
5315         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
5316         bsi_after_labels.  Always insert statements before bsi.
5317         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
5318         * predict.c (apply_return_prediction): Check for empty blocks.
5319         * cfgexpand.c (lab_rtx_for_bb): New variable.
5320         (label_rtx_for_bb): Do not create new tree labels.
5321         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
5322         (tree_expand_cfg): Initialize lab_rtx_for_bb.
5323         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
5324         creating edges.
5325         (label_for_bb): Add field used.
5326         (update_eh_label, main_block_label): Mark the label used.
5327         (cleanup_dead_labels): Remove unused labels.
5328
5329 2007-05-01  Richard Guenther  <rguenther@suse.de>
5330
5331         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
5332         if it is not about to be set.
5333         (get_value_range): Do not pre-allocate equiv bitmap.
5334         (update_value_range): No need to clear equiv field.
5335         (add_equivalence): Change prototype to get bitmap pointer.
5336         Allocate bitmap here if it is not already.
5337         (extract_range_from_assert): Do not allocate bitmap here.
5338         Update callers to add_equivalence.
5339         (extract_range_from_ssa_name): Likewise.
5340         (get_vr_for_comparison): New static helper.
5341         (compare_name_with_value): Handle NULL equiv bitmap by
5342         peeling the first iteration of the comparison loop.
5343         Use get_vr_for_comparison.
5344         (compare_names): Handle NULL equiv bitmaps by using fake
5345         ones.  Use get_vr_for_comparison.
5346
5347 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
5348
5349         * double-int.c (mpz_set_double_int): Moved from
5350         tree-ssa-loop-niter.c.
5351         (mpz_get_double_int): Likewise; also, add option to wrap
5352         out-of-range integers.
5353         * double-int.h: New prototypes for above.
5354         * tree.c (get_static_type_bounds): Moved from
5355         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
5356         TYPE_MAX_VALUE if they exist..
5357         * tree.h: New prototype for above.
5358         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
5359         get_type_bounds calls.
5360         (mpz_set_double_int): Move to double-int.c.
5361         (get_type_bounds): Move to tree.c, rename to
5362         get_static_type_bounds.
5363         (mpz_to_double_int): Move to double-int.c, rename to
5364         mpz_get_double_int.
5365
5366 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
5367
5368         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
5369         DIV0 exception can fall through to a normal return.
5370
5371 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
5372
5373         PR middle-end/22156
5374         Temporarily revert:
5375         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
5376         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
5377         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5378         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
5379         initialize align to silence bogus warning.
5380         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5381         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
5382         all_no_warning.
5383         (struct sra_walk_fns): Remove use_all parameter from use.
5384         (sra_hash_tree): Handle BIT_FIELD_REFs.
5385         (sra_elt_hash): Don't hash bitfld blocks.
5386         (sra_elt_eq): Skip them in parent compares as well.  Handle
5387         BIT_FIELD_REFs.
5388         (sra_walk_expr): Don't maintain or pass down use_all_p.
5389         (scan_use): Remove use_all parameter.
5390         (scalarize_use): Likewise.  Re-expand assignment to
5391         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
5392         output, and re-scalarize after output.  Don't mark anything
5393         for no warning.
5394         (scalarize_ldst): Adjust.
5395         (scalarize_walk_gimple_modify_statement): Likewise.
5396         (build_element_name_1): Handle BIT_FIELD_REFs.
5397         (instantiate_element): Don't warn for any element whose parent
5398         is used as a whole.
5399         (instantiate_missing_elements_1): Return the sra_elt.
5400         (canon_type_for_field): New.
5401         (try_instantiate_multiple_fields): New.
5402         (instantiate_missing_elemnts): Use them.
5403         (mark_no_warning): Removed.
5404         (generate_one_element_ref): Handle BIT_FIELD_REFs.
5405         (REPLDUP, sra_build_elt_assignment): New.
5406         (generate_copy_inout): Use them.
5407         (generate_element_copy): Likewise.  Handle bitfld differences.
5408         (generate_element_zero): Don't recurse for blocks.  Use
5409         sra_build_elt_assignment.
5410         (generate_one_element_int): Take elt instead of var.  Use
5411         sra_build_elt_assignment.
5412         (generate_element_init_1): Adjust.
5413         (scalarize_use, scalarize_copy): Use REPLDUP.
5414         (scalarize_ldst): Move assert before dereference.
5415         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
5416
5417 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5418
5419         PR C++/31721
5420         * tree.c (reconstruct_complex_type): Reconstruct a reference
5421         correctly.
5422         Also use the same mode for the pointer as the old pointer type.
5423
5424 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
5425
5426         * doc/trouble.texi (Interoperation): Remove note about Ultrix
5427         Fortran compiler.
5428
5429 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
5430
5431         PR rtl-optimization/31676
5432         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
5433         (df_refs_record): Call it.
5434
5435 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
5436
5437         * rtl.def (SS_ABS): New code.
5438         * config/bfin/bfin.c (print_operand): New modifier 'v'.
5439         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
5440         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
5441         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
5442         (bfin_init_builtins): Define them.
5443         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
5444         (bfin_expand_builtin): ... and handle the others here.
5445         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
5446         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
5447         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
5448         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
5449         operand is only HImode.
5450
5451 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
5452
5453         * regclass.c (scan_one_insn): Remove splitting of
5454         two address insns.
5455
5456 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
5457             Nigel Stephens  <nigel@mips.com>
5458
5459         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
5460
5461 2007-04-28  Jan Hubicka  <jh@suse.cz>
5462
5463         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
5464         insn_locators_alloc instead of insn_locators_initialize;
5465         call reset_block_changes.
5466         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5467         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
5468         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
5469         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
5470         * config/score/score.c (th_output_mi_thunk): Likewise.
5471         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
5472         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
5473         tolerate uninitialized locator info.
5474
5475         Re-apply:
5476         * function.c (init_function_start): Don't init line number info.
5477         (expand_function_end): Update.
5478         (reset_block_changes, record_block_change, finalize_block_changes,
5479         check_block_change, free_block_changes): Kill.
5480         * function.h (reset_block_changes, record_block_change,
5481         finalize_block_changes, check_block_change, free_block_changes): Remove
5482         prototypes.
5483         (struct function): Remove ib_boundaries_block.
5484         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
5485         Use curr_insn_locator to initialize locator.
5486         (emit_line_note): Remove.
5487         * cfgexpand.c (expand_gimple_cond_expr): Update.
5488         (construct_exit_block): Likewise.
5489         (tree_expand_cfg): Initialize/finalize locators.
5490         * expr.c (expand_expr_real): Update.
5491         * cfglayout.c (line_locators_locs, line_locators_lines,
5492         file_locators_locs, file_locators_files): Remove.
5493         (set_block_levels): Move to cfgexpand.c.
5494         (insn_locators_initialize): Remove.
5495         (pass_insn_locators_initialize): Remove.
5496         (locations_locators_locs, locations_locators_vals): New static vars.
5497         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
5498         Likewise.
5499         (insn_locators_alloc, insn_locators_finalize,
5500         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5501         New functions.
5502         (locator_location): New.
5503         (locator_line, locator_file): Rewrite.
5504         * rtl.h (emit_line_note): Kill.
5505         (insn_locators_alloc, insn_locators_finalize,
5506         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5507         Declare.
5508         * tree-inline.c (initialize_cfun): Do not initialize
5509         ib_boundaries_block.
5510         * passes.c (pass_insn_locators_initialize): Remove.
5511
5512 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
5513
5514         * tree-cfg.c (move_block_to_fn): Release bb from dominance
5515         info.  Update last_basic_block correctly.
5516
5517 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
5518
5519         PR target/31701
5520         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
5521         register itself to hold the offset constant.  Tell flow the use
5522         of r4 and r5 when they are used.
5523
5524 2007-04-27  Richard Guenther  <rguenther@suse.de>
5525
5526         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
5527         if we simplified anything.
5528         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
5529         warnings until we did a simplification and the stmt was not
5530         marked as TREE_NO_WARNING.
5531
5532 2007-04-27  Mike Stump  <mrs@apple.com>
5533
5534         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
5535
5536 2007-04-27  Ian Lance Taylor  <iant@google.com>
5537
5538         PR middle-end/31710
5539         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
5540         TYPE_MAX_VALUE exist, convert them to the new type.
5541
5542 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5543
5544         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
5545         if it claims to be available.
5546         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
5547         edge is redirected.
5548         (perform_tree_ssa_dce): Always free postdominators.
5549
5550 2007-04-27  Richard Henderson  <rth@redhat.com>
5551
5552         * config/alpha/predicates.md (aligned_memory_operand): Mark
5553         as define_special_predicate.
5554         (unaligned_memory_operand, normal_memory_operand): Likewise.
5555         (reg_or_unaligned_mem_operand): Remove.
5556         (any_memory_operand): Match the documentation and check for
5557         non-renumbered pseudos during reload.
5558         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
5559         alpha_secondary_reload_class, update to new interface, make static.
5560         Handle CQImode like HImode.  Remove FP subreg check.
5561         (alpha_expand_mov): Use replace_equiv_address.
5562         (alpha_expand_mov_nobwx): Use any_memory_operand.
5563         (TARGET_SECONDARY_RELOAD): New.
5564         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
5565         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
5566         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
5567         * config/alpha/alpha.md: ... here.
5568         (RELOAD12, reloadmode): New.
5569         (movcqi): New.
5570         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
5571         Don't handle the aligned case here.
5572         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
5573         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
5574         reload_inhi_help.  Don't expect a scratch register.
5575         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
5576         reload_outhi_help.
5577         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
5578
5579 2007-04-27  Richard Guenther  <rguenther@suse.de>
5580
5581         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
5582
5583 2007-04-27  Richard Guenther  <rguenther@suse.de>
5584
5585         PR tree-optimization/30965
5586         PR tree-optimization/30978
5587         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
5588         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
5589         (find_equivalent_equality_comparison): Likewise.
5590         (simplify_cond): Likewise.
5591         (get_prop_source_stmt): New helper.
5592         (get_prop_dest_stmt): Likewise.
5593         (can_propagate_from): Likewise.
5594         (remove_prop_source_from_use): Likewise.
5595         (combine_cond_expr_cond): Likewise.
5596         (forward_propagate_comparison): New function.
5597         (forward_propagate_into_cond): Rewrite to use fold for
5598         tree combining.
5599         (tree_ssa_forward_propagate_single_use_vars): Call
5600         forward_propagate_comparison to propagate comparisons.
5601
5602 2007-04-27  Richard Guenther  <rguenther@suse.de>
5603
5604         PR tree-optimization/31715
5605         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
5606         sure to do computation on the offset in an appropriate
5607         signed type.
5608
5609 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
5610
5611         * reload.h (elimination_target_reg_p): Declare.
5612         * reload.c (find_reloads): Don't apply the reg_rtx move
5613         optimization if the SET_DEST satisfies elimination_target_reg_p.
5614         * reload1.c (elimination_target_reg_p): New function.
5615         (gen_reload): In the move/add2 fallback, make sure that op0
5616         does not overlap the destination register.
5617
5618 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5619
5620         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
5621         transform only GIMPLE_MODIFY_STMTs.
5622         * tree-complex.c (expand_complex_operations_1): Ditto.
5623         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
5624         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
5625         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
5626         branches.
5627         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
5628         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
5629         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
5630         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
5631         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
5632         slpeel_add_loop_guard): Ditto.
5633         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
5634         * lambda-code.c (perfect_nestify): Ditto.
5635         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
5636         before the first statement.
5637         * tree-optimize.c (execute_free_datastructures): Fix comments.
5638         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
5639         * tree-flow.h (disband_implicit_edges): Declaration removed.
5640         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
5641         branches.
5642         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
5643         without gotos.
5644         (disband_implicit_edges, has_label_p): Removed.
5645         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
5646         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
5647         branches.
5648         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
5649         side effects.
5650         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
5651         also for COND_EXPRs.
5652         * cfgexpand.c (label_rtx_for_bb): New function.
5653         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
5654         Use label_rtx_for_bb to find the labels.
5655         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
5656         last block.  Detect fallthru edges.
5657
5658 2007-04-26  Ian Lance Taylor  <iant@google.com>
5659
5660         PR target/28675
5661         * reload.c (find_reloads_subreg_address): If the address was valid
5662         in the original mode but not in the new mode, reload the whole
5663         address.
5664
5665 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5666
5667         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
5668         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
5669         (cleanup_control_expr_graph): Do not invalidate dominance info.
5670         Record altered blocks.
5671         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
5672         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
5673         cleanup_tree_cfg_bb): New functions.
5674         (remove_forwarder_block): Do not maintain the worklist of blocks.
5675         Record altered blocks.
5676         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
5677         not over whole cfg.
5678         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
5679         delete_unreachable_blocks if dominators are not available.
5680         * tree-inline.c (optimize_inline_calls): Free dominance information
5681         earlier.
5682         * tree-flow.h (remove_edge_and_dominated_blocks,
5683         cfgcleanup_altered_bbs): Altered.
5684         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
5685         blocks.
5686         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
5687         functions.
5688         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
5689         do not invalidate dominators.
5690
5691 2007-04-26  Anatoly Sokolov <aesok@post.ru>
5692
5693         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
5694         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
5695         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
5696         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
5697
5698 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
5699
5700         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
5701
5702 2007-04-26  Richard Guenther  <rguenther@suse.de>
5703
5704         PR tree-optimization/31703
5705         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
5706         the right type for the target of the bittest.
5707
5708 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5709
5710         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
5711         ix86_sol10_return_in_memory.
5712
5713 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5714
5715         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
5716         variables.
5717
5718 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
5719
5720         PR c++/31598
5721         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
5722
5723         PR tree-optimization/30558
5724         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
5725         clear this_state.prev_try.
5726
5727 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5728             Mark Mitchell  <mark@codesourcery.com>
5729
5730         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
5731         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
5732         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
5733
5734 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5735
5736         PR driver/31107
5737         * doc/invoke.texi (%:print-asm-header): Document.
5738         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
5739         and -ftarget-help.
5740         (static_spec_functions): Add print-asm-header.
5741         (main): Print a banner before the --target-help linker options.
5742         (print_asm_header_spec_function): New function.
5743
5744 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
5745
5746         PR target/31403
5747         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
5748         (movsf_ie): Likewise.
5749
5750 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
5751
5752         * doc/extend.texi ([Type Traits]): Adjust per N2255.
5753
5754 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
5755
5756         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
5757         for divide-by-zero.
5758         (__umodsi3, __modsi3): Likewise.
5759
5760 2007-04-25  Dirk Mueller  <dmueller@suse.de>
5761
5762         * c-typeck.c (build_compound_expr): Annotate warning()
5763         call with OPT_Wunused_value.
5764         * tree-ssa.c (warn_uninit): Annotate warning with
5765         OPT_Wunintialized.
5766         * c-common.c (handle_sentinel_attribute): Annotate warning
5767         call with OPT_Wattributes.
5768
5769 2007-04-25  Thiemo Seufer  <ths@mips.com>
5770
5771         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
5772         (mips16): Fix typo.
5773         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
5774         on to the assembler.  Improve handling of -mno-mips16.  Add handling
5775         of -mno-mips3d, -mno-dsp, -mno-dspr2.
5776         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
5777         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
5778         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
5779
5780 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
5781
5782         PR target/31680
5783         * config/i386/winnt.c (i386_pe_file_end): Strip only
5784         USER_LABEL_PREFIX when writing export name.
5785
5786 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
5787
5788         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
5789         sh/elf.h, vx-common.h and vxworks.h.
5790         * config/sh/sh.h: Include config/vxworks-dummy.h.
5791         (SUBTARGET_OVERRIDE_OPTIONS): Define.
5792         (OVERRIDE_OPTIONS): Use it.
5793         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
5794         (vxworks_picreg): New pattern.
5795         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
5796         VXWORKS_OS_CPP_BUILTINS.
5797         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
5798         to their VXWORKS_* equivalents.
5799         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
5800         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
5801         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
5802         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
5803         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
5804         -mrtp/-fPIC multilibs.
5805         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
5806         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
5807         (MULTILIB_OSDIRNAMES): Delete.
5808
5809 2007-04-25  Anatoly Sokolov <aesok@post.ru>
5810
5811         PR target/18989
5812         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
5813
5814 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
5815
5816         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
5817         rounding mode to be specified by the caller.
5818         (real_to_mpfr) Likewise.
5819         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
5820         include new arguments.
5821         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
5822
5823 2007-04-24  Ian Lance Taylor  <iant@google.com>
5824
5825         PR tree-optimization/31605
5826         * tree-vrp.c (set_value_range): Check that min and max are not
5827         both overflow infinities.
5828         (set_value_range_to_value): New static function.
5829         (extract_range_from_binary_expr): Call set_value_range_to_value.
5830         (extract_range_from_cond_expr): Likewise.
5831         (extract_range_from_expr): Likewise.
5832         (extract_range_from_unary_expr): Likewise.  Don't create a range
5833         which overflows on both sides.
5834         (vrp_meet): Check for a useless range.
5835         (vrp_visit_phi_node): If we see a constant which looks like an
5836         overflow infinity, turn off the TREE_OVERFLOW flag.
5837
5838 2007-04-24  Ian Lance Taylor  <iant@google.com>
5839
5840         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
5841
5842 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
5843
5844         PR diagnostic/25923
5845         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
5846         diagnostic message is being built.
5847         * tree-pretty-print.c (dump_generic_node): Only write the
5848         formatted text into BUFFER's stream if we are not building a
5849         diagnostic message.
5850         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
5851         dump_generic_node.
5852         * Makefile.in (toplev.o): Depend on tree-pass.h.
5853
5854 2007-04-24  Ian Lance Taylor  <iant@google.com>
5855
5856         PR tree-optimization/31602
5857         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
5858         conditionals in the copied loop header.
5859         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
5860         warnings if TREE_NO_WARNING is set.
5861         * doc/invoke.texi (Warning Options): Clarify that
5862         -Wstrict-overflow does not warn about loops.
5863
5864 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
5865
5866         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
5867         expand on the comment about _Decimal128 arguments and check the
5868         integer result of the modulus operation; for 64-bit ELF ABI, ensure
5869         that _Decimal128 argument uses even/odd register pair.
5870         (function_arg): Ditto.
5871
5872 2007-04-24  Hui-May Chang <hm.chang@apple.com>
5873
5874         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
5875         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
5876
5877 2007-04-24  Richard Guenther  <rguenther@suse.de>
5878             Olga Golovanevsky  <olga@il.ibm.com>
5879
5880         * fold-const.c (multiple_of_p): Check for bottom
5881         to be zero.
5882
5883 2007-04-24  Richard Henderson  <rth@redhat.com>
5884
5885         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
5886         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
5887         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
5888         looking for non-zero bits shifted out.  Avoid a recursive call
5889         when constructing the scalar.
5890         (__floatundisf): Likewise.
5891
5892 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
5893
5894         * dwarf2out.c (field_byte_offset): Move the existing logic
5895         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
5896         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
5897
5898 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5899
5900         PR target/31641
5901         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
5902         argument of 0 for memset.
5903         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
5904         unsigned shift instead of the signed variant.
5905
5906 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5907
5908         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
5909         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
5910         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
5911         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
5912         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
5913         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
5914         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
5915         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
5916         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
5917         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
5918         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
5919         "mul<mode>3", "div<mode>3"): Insn definitions added.
5920         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
5921         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
5922         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
5923         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
5924         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
5925         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
5926         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
5927         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
5928         TARGET_FLOAT_FORMAT): Macro definitions removed.
5929         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
5930         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
5931         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
5932         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
5933         (s390_gen_rtx_const_DI): Function removed.
5934         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
5935
5936 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
5937
5938         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
5939         over an external ffs function.
5940
5941 2007-04-24  Chao-ying Fu  <fu@mips.com>
5942             Richard Sandiford  <richard@nildram.co.uk>
5943
5944         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
5945         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
5946         (smadd_widen_optab, umadd_widen_optab): Define.
5947         * optabs.c (init_optabs): Initialize smadd_widen_optab and
5948         umadd_widen_optab.
5949         * genopinit.c (optabs): Fill in smadd_widen_optab and
5950         umadd_widen_optab.
5951         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
5952         and umadd_widen_optab to implement multiply-add sequences.
5953         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
5954         (<u>maddsidi4): ...this.  Extend condition to include
5955         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
5956         of operand 0 to "ka" and use the three-operand form of madd<u>
5957         for TARGET_DSPR2.
5958         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
5959         to define_expands.
5960         * config/mips/constraints.md (ka): New register constraint.
5961
5962 2007-04-24  Jan Hubicka  <j@suse.cz>
5963
5964         Revert:
5965
5966         2007-04-23  Jan Hubicka  <jh@suse.cz>
5967         * function.c (init_function_start): Don't init line number info.
5968         (expand_function_end): Update.
5969         (reset_block_changes, record_block_change, finalize_block_changes,
5970         check_block_change, free_block_changes): Kill.
5971         * function.h (reset_block_changes, record_block_change,
5972         finalize_block_changes, check_block_change, free_block_changes): Remove
5973         prototypes.
5974         (struct function): Remove ib_boundaries_block.
5975         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
5976         Use curr_insn_locator to initialize locator.
5977         (emit_line_note): Remove.
5978         * cfgexpand.c (expand_gimple_cond_expr): Update.
5979         (construct_exit_block): Likewise.
5980         (tree_expand_cfg): Initialize/finalize locators.
5981         * expr.c (expand_expr_real): Update.
5982         * cfglayout.c (line_locators_locs, line_locators_lines,
5983         file_locators_locs, file_locators_files): Remove.
5984         (set_block_levels): Move to cfgexpand.c.
5985         (insn_locators_initialize): Remove.
5986         (pass_insn_locators_initialize): Remove.
5987         (locations_locators_locs, locations_locators_vals): New static vars.
5988         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
5989         Likewise.
5990         (insn_locators_alloc, insn_locators_finalize,
5991         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5992         New functions.
5993         (locator_location): New.
5994         (locator_line, locator_file): Rewrite.
5995         * rtl.h (emit_line_note): Kill.
5996         (insn_locators_alloc, insn_locators_finalize,
5997         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5998         Declare.
5999         * tree-inline.c (initialize_cfun): Do not initialize
6000         ib_boundaries_block.
6001         * passes.c (pass_insn_locators_initialize): Remove.
6002
6003 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
6004
6005         * doc/invoke.texi: Removed leading '-' from option index entries.
6006
6007 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
6008
6009         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
6010         Use phi_nodes_ptr.
6011         (create_phi_node): Use set_phi_nodes.
6012         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
6013         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
6014         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
6015         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
6016         (bsi_start, bsi_last): Use bb_stmt_list.
6017         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
6018         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
6019         Traverse the statements using tsi iterator.
6020         * basic-block.h (struct basic_block_def): Fields stmt_list
6021         and phi_nodes moved to ...
6022         (struct tree_bb_info): ... new structure.
6023         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
6024         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
6025         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
6026         (tree_verify_flow_info): Verify that il.tree is not set for
6027         entry and exit block.
6028         (tree_split_block): Use set_bb_stmt_list.
6029
6030 2007-04-23  Mike Stump  <mrs@apple.com>
6031
6032         * config/i386/i386.c (ix86_tune_features
6033         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
6034         nocona and core2.
6035
6036 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
6037
6038         * config/i386/i386.md (prefix_extra): New attribute.
6039         (length): Add prefix_extra.
6040
6041         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
6042         (sse2_movntv2di): Likewise.
6043         (sse2_cvtps2dq): Likewise.
6044         (sse2_cvtpd2pi): Likewise.
6045         (sse2_cvttpd2pi): Likewise.
6046         (*sse2_cvtpd2ps): Likewise.
6047         (*add<mode>3): Likewise.
6048         (sse2_ssadd<mode>3): Likewise.
6049         (sse2_usadd<mode>3): Likewise.
6050         (*sub<mode>3): Likewise.
6051         (sse2_sssub<mode>3): Likewise.
6052         (sse2_ussub<mode>3): Likewise.
6053         (*mulv8hi3): Likewise.
6054         (*smulv8hi3_highpart): Likewise.
6055         (*umulv8hi3_highpart): Likewise.
6056         (sse2_umulv2siv2di3): Likewise.
6057         (sse2_pmaddwd): Likewise.
6058         (ashr<mode>3): Likewise.
6059         (lshr<mode>3): Likewise.
6060         (ashl<mode>3): Likewise.
6061         (sse2_ashlti3): Likewise.
6062         (sse2_lshrti3): Likewise.
6063         (*umaxv16qi3): Likewise.
6064         (*smaxv8hi3): Likewise.
6065         (*uminv16qi3): Likewise.
6066         (*sminv8hi3): Likewise.
6067         (sse2_eq<mode>3): Likewise.
6068         (sse2_gt<mode>3): Likewise.
6069         (*and<mode>3): Likewise.
6070         (sse2_nand<mode>3): Likewise.
6071         (*ior<mode>3): Likewise.
6072         (*xor<mode>3): Likewise.
6073         (sse2_packsswb): Likewise.
6074         (sse2_packssdw): Likewise.
6075         (sse2_packuswb): Likewise.
6076         (sse2_punpckhbw): Likewise.
6077         (sse2_punpcklbw): Likewise.
6078         (sse2_punpckhwd): Likewise.
6079         (sse2_punpcklwd): Likewise.
6080         (sse2_punpckhdq): Likewise.
6081         (sse2_punpckldq): Likewise.
6082         (sse2_punpckhqdq): Likewise.
6083         (sse2_punpcklqdq): Likewise.
6084         (*sse2_pinsrw): Likewise.
6085         (*sse2_pextrw): Likewise.
6086         (sse2_pshufd_1): Likewise.
6087         (sse2_uavgv16qi3): Likewise.
6088         (sse2_uavgv8hi3): Likewise.
6089         (sse2_psadbw): Likewise.
6090         (sse2_pmovmskb): Likewise.
6091         (*sse2_maskmovdqu): Likewise.
6092         (*sse2_maskmovdqu_rex64): Likewise.
6093         (sse4a_extrqi): Likewise.
6094         (sse4a_extrq): Likewise.
6095         (sse3_lddqu): Set prefix_rep.
6096         (sse3_addsubv4sf3): Likewise.
6097         (sse3_haddv4sf3): Likewise.
6098         (sse3_hsubv4sf3): Likewise.
6099         (sse_cvtss2si): Likewise.
6100         (sse_cvtss2si_2): Likewise.
6101         (sse_cvtss2siq): Likewise.
6102         (sse_cvtss2siq_2): Likewise.
6103         (sse_cvttss2si): Likewise.
6104         (sse_cvttss2siq): Likewise.
6105         (sse2_cvttps2dq): Likewise.
6106         (sse3_movshdup): Likewise.
6107         (sse3_movsldup): Likewise.
6108         (sse2_cvtsd2si): Likewise.
6109         (sse2_cvtsd2si_2): Likewise.
6110         (sse2_cvtsd2siq): Likewise.
6111         (sse2_cvtsd2siq_2): Likewise.
6112         (sse2_cvttsd2si): Likewise.
6113         (sse2_cvttsd2siq): Likewise.
6114         (*sse2_cvtpd2dq): Likewise.
6115         (*sse2_cvttpd2dq): Likewise.
6116         (sse2_pshuflw_1): Likewise.
6117         (sse2_pshufhw_1): Likewise.
6118         (sse4a_insertqi): Likewise.
6119         (sse4a_insertq): Likewise.
6120         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
6121         (ssse3_phadddv4si3): Likewise.
6122         (ssse3_phaddswv8hi3): Likewise.
6123         (ssse3_phsubwv8hi3): Likewise.
6124         (ssse3_phsubdv4si3): Likewise.
6125         (ssse3_phsubswv8hi3): Likewise.
6126         (ssse3_pmaddubswv8hi3): Likewise.
6127         (ssse3_pmulhrswv8hi3): Likewise.
6128         (ssse3_pshufbv16qi3): Likewise.
6129         (ssse3_psign<mode>3): Likewise.
6130         (ssse3_palignrti): Likewise.
6131         (abs<mode>2): Likewise.
6132         (ssse3_phaddwv4hi3): Set prefix_extra.
6133         (ssse3_phadddv2si3): Likewise.
6134         (ssse3_phaddswv4hi3): Likewise.
6135         (ssse3_phsubwv4hi3): Likewise.
6136         (ssse3_phsubdv2si3): Likewise.
6137         (ssse3_phsubswv4hi3): Likewise.
6138         (ssse3_pmaddubswv4hi3): Likewise.
6139         (ssse3_pmulhrswv4hi3): Likewise.
6140         (ssse3_pshufbv8qi3): Likewise.
6141         (ssse3_psign<mode>3): Likewise.
6142         (ssse3_palignrdi): Likewise.
6143         (abs<mode>2): Likewise.
6144         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
6145         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
6146         (sse2_pmovmskb): Set mode to SI instead of V2DF.
6147
6148 2007-04-23  Nick Clifton  <nickc@redhat.com>
6149
6150         * params.def: Fix formatting of emacs local variables.
6151
6152 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
6153
6154         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
6155         move if inter-unit move isn't allowed.
6156         Don't split moving the first element of V2DI to DI to inter-unit
6157         move if inter-unit move isn't allowed.
6158
6159 2007-04-23  Richard Guenther  <rguenther@suse.de>
6160
6161         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
6162         and CDI_POST_DOMINATORS separately.
6163
6164 2007-04-23  Nick Clifton  <nickc@redhat.com>
6165
6166         * c.opt (Wformat-contains-nul): Add warning attribute.
6167
6168 2007-04-23  Jan Hubicka  <jh@suse.cz>
6169
6170         * function.c (init_function_start): Don't init line number info.
6171         (expand_function_end): Update.
6172         (reset_block_changes, record_block_change, finalize_block_changes,
6173         check_block_change, free_block_changes): Kill.
6174         * function.h (reset_block_changes, record_block_change,
6175         finalize_block_changes, check_block_change, free_block_changes): Remove
6176         prototypes.
6177         (struct function): Remove ib_boundaries_block.
6178         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
6179         Use curr_insn_locator to initialize locator.
6180         (emit_line_note): Remove.
6181         * cfgexpand.c (expand_gimple_cond_expr): Update.
6182         (construct_exit_block): Likewise.
6183         (tree_expand_cfg): Initialize/finalize locators.
6184         * expr.c (expand_expr_real): Update.
6185         * cfglayout.c (line_locators_locs, line_locators_lines,
6186         file_locators_locs, file_locators_files): Remove.
6187         (set_block_levels): Move to cfgexpand.c.
6188         (insn_locators_initialize): Remove.
6189         (pass_insn_locators_initialize): Remove.
6190         (locations_locators_locs, locations_locators_vals): New static vars.
6191         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
6192         Likewise.
6193         (insn_locators_alloc, insn_locators_finalize,
6194         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6195         New functions.
6196         (locator_location): New.
6197         (locator_line, locator_file): Rewrite.
6198         * rtl.h (emit_line_note): Kill.
6199         (insn_locators_alloc, insn_locators_finalize,
6200         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6201         Declare.
6202         * tree-inline.c (initialize_cfun): Do not initialize
6203         ib_boundaries_block.
6204         * passes.c (pass_insn_locators_initialize): Remove.
6205
6206 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6207
6208         PR middle-end/31448
6209         * expr.c (reduce_to_bit_field_precision): Handle
6210         CONST_INT rtx's.
6211
6212 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
6213
6214         PR tree-optimization/24659
6215         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
6216         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
6217         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
6218         * genopinit.c (optabs): Rename vec_pack_mod_optab
6219         to vec_pack_trunc_optab.
6220         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
6221         early for scalar floating point operands for NOP_EXPR.
6222         (vectorizable_type_promotion): Ditto.
6223         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
6224         vec_pack_trunc_optab.
6225         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
6226
6227         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
6228         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
6229         Rename from VEC_PACK_MOD_EXPR.
6230         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
6231         * expr.c (expand_expr_real_1): Ditto.
6232         * tree-inline.c (estimate_num_insns_1): Ditto.
6233         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
6234
6235         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
6236         (vec_unpacks_lo_v4sf): Ditto.
6237         (vec_pack_trunc_v2df): Ditto.
6238         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
6239         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
6240         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
6241
6242         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
6243         vec_pack_mod_v8hi.
6244         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
6245
6246         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
6247         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
6248         packing of floating point operands.
6249         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
6250         represent unpacking of floating point operands.
6251         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
6252         [vec_unpacks_hi]: Ditto.
6253         [vec_unpacks_lo]: Ditto.
6254
6255 2007-04-22  Jan Hubicka  <jh@suse.cz>
6256
6257         * final.c (rest_of_handle_final): Call
6258         targetm.asm_out.constructor/targetm.asm_out.destructor
6259         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
6260         proper priority via decl_*_priority_insert.
6261         * c-common.c (c_expand_body): Likewise.
6262
6263 2007-04-22  Richard Guenther  <rguenther@suse.de>
6264
6265         PR tree-optimization/29789
6266         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
6267         (rewrite_reciprocal): New helper split out from
6268         determine_invariantness_stmt.
6269         (rewrite_bittest): Likewise.
6270         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
6271         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
6272         is not.
6273
6274 2007-04-22  Revital Eres  <eres@il.ibm.com>
6275
6276         * loop-unroll.c (var_to_expand): New field to support also
6277         insns of the form x = something + x.
6278         (analyze_insn_to_expand_var): Use it.
6279         (expand_var_during_unrolling): Likewise.
6280
6281 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
6282
6283         * predict.c: Include pointer-set.h.
6284         (bb_predictions): New variable.
6285         (tree_predicted_by_p, tree_predict_edge,
6286         remove_predictions_associated_with_edge): Use bb_predictions map
6287         instead of bb->predictions.
6288         (clear_bb_predictions, assert_is_empty): New functions.
6289         (combine_predictions_for_bb): Use bb_predictions map.  Call
6290         clear_bb_predictions.
6291         (tree_estimate_probability): Create and free bb_predictions map.
6292         * Makefile.in (predict.o): Add pointer-set.h dependency.
6293         * basic-block.h (struct basic_block_def): Remove predictions
6294         field.
6295         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
6296
6297 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
6298
6299         PR target/31480
6300         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
6301         is null.
6302
6303 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6304
6305         * timevar.c (timevar_print): Change reference of --disable-checking to
6306         --enable-checking=release.  Also warn if assert checking is disabled.
6307
6308 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6309
6310         PR C/30265
6311         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
6312         decl as addressable if the compound literal was marked as
6313         addressable.
6314         Mark the decl as a gimple register if it is a complex or
6315         vector decl and does not live in memory.
6316
6317 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6318
6319         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
6320         (GENERIC_NEXT): New function macro.
6321         (PHI_CHAIN): Use phi_node's new chain variable.
6322         (tree_phi_node): Change tree_common to tree_base
6323         and add the chain field.
6324         * tree-phinodes.c (make_phi_node): Don't set
6325         TREE_TYPE on the new node.
6326         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
6327         instead of checking GIMPLE_TUPLE_P in chain_next.
6328         * tree-vect-transform.c
6329         (get_initial_def_for_induction): Look at
6330         PHI_RESULT_TREE for the type of the phi node.
6331         (update_vuses_to_preheader): Use PHI_CHAIN
6332         instead of TREE_CHAIN on the phi node.
6333         * tree-ssa-structalias.c (compute_points_to_sets):
6334         Likewise.
6335         (ipa_pta_execute): Likewise.
6336
6337 2007-04-21  Richard Guenther  <rguenther@suse.de>
6338
6339         PR middle-end/31136
6340         * fold-const.c (fold_unary): Call fold_convert_const on the
6341         original tree.
6342
6343 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
6344
6345         * gcse.c (store_killed_in_insn): Handle PARALLELs.
6346         (store_killed_in_pat): New.
6347
6348 2007-04-20  Richard Henderson  <rth@redhat.com>
6349
6350         PR target/31628
6351         * config/i386/i386.c (type_has_variadic_args_p): Look for any
6352         TREE_LIST with a void_type_node value, not void_list_node exactly.
6353
6354 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
6355
6356         * doc/standards.texi: Re-arrange into language-specific
6357         subsections. Add a C++ section, documenting which standards we
6358         support.
6359
6360 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
6361
6362         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
6363         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
6364
6365 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
6366
6367         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
6368         ecrti.o and crtbegin.o.
6369         (LIB_DEFAULT_SPEC): Include -lc.
6370         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
6371
6372 2007-04-20  Richard Henderson  <rth@redhat.com>
6373
6374         PR target/28623
6375         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
6376         argument; update all callers.
6377         (get_unaligned_offset): New.
6378         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
6379         get_unaligned_address, just pass on the address directly.
6380         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
6381         the subreg in the helper patterns.
6382         (unaligned_extendqidi_le): Use get_unaligned_offset.
6383         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
6384         (unaligned_extendhidi_be): Likewise.
6385         (unaligned_extendhidi): Tidy.
6386         * config/alpha/alpha-protos.h: Update.
6387
6388 2007-04-20  Richard Henderson  <rth@redhat.com>
6389
6390         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
6391         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
6392         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
6393         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6394         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6395         (CPP_SPEC): Don't include %(cpp_subtarget).
6396         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
6397         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
6398         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
6399
6400 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
6401
6402         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
6403         for __builtin_ia32_cmpordss.
6404
6405         PR tree-optimization/31632
6406         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
6407         and arg1 for optimizations of comparison against min/max values.
6408         Fold arg0 to arg1's type for optimizations of comparison against
6409         min+1 and max-1 values.
6410
6411 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
6412
6413         * reload.c (combine_reloads): When trying to use a dying register,
6414         check whether it's uninitialized and don't use if so.
6415
6416 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
6417
6418         * fold-const.c: Remove prototypes for native_encode_expr and
6419         native_interpret_expr.
6420         (native_encode_expr): Make non-static.
6421         (native_interpret_expr): Likewise.
6422         * tree.h: Add prototypes for the above.
6423
6424 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
6425
6426         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
6427         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
6428         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
6429         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
6430         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
6431         Add length attributes.
6432
6433 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
6434
6435         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
6436         not that it is 1.
6437
6438         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
6439         __STDC_WANT_DEC_FP__.
6440
6441 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
6442
6443         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
6444         for long double compatibility.
6445         * configure: Regenerate.
6446
6447 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
6448
6449         PR rtl-optimization/29841
6450         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
6451         trap instructions.
6452         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
6453         that may cause control flow transfer from being moved.
6454
6455 2007-04-18  Jan Hubicka  <jh@suse.cz>
6456
6457         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
6458         types.
6459
6460 2007-04-18  Eric Christopher  <echristo@apple.com>
6461
6462         * config/rs6000/darwin.md (load_macho_picbase): Use link register
6463         only. Update operands.
6464         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
6465         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
6466         link register to pic register.
6467
6468 2007-04-18  Dirk Mueller  <dmueller@suse.de>
6469
6470         PR diagnostic/31227
6471         * tree-vrp.c (search_for_addr_array): New.
6472         (check_array_bounds): Suppress warning about
6473         address taken of array refs if its not de-referenced.
6474
6475 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6476
6477         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
6478         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
6479
6480         * tree-vectorizer.h (NITERS_KNOWN_P): New.
6481         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
6482         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
6483
6484         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
6485         dump print.
6486         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
6487         print message.
6488         (vect_analyze_scalar_cycles): Fix indentation.
6489         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
6490         (vect_mark_relevant): Include phis in relevance analysis.
6491
6492         * tree-vect-transform.c (vect_transform_loop): Add an assert.
6493
6494 2007-04-18  Anatoly Sokolov <aesok@post.ru>
6495
6496         * config/avr/avr.c (ptrreg_to_str): Replace error() with
6497         output_operand_lossage().
6498
6499 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6500
6501         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
6502         the unused code for reduction without adjust-in-epilog to simplify the
6503         function.
6504
6505 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
6506
6507         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
6508         (S390_TDC_NEGATIVE_ZERO): New constant.
6509         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
6510         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
6511         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
6512         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
6513         (S390_TDC_POSITIVE_INFINITY): New constant.
6514         (S390_TDC_NEGATIVE_INFINITY): New constant.
6515         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
6516         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
6517         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
6518         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
6519         (S390_TDC_INFINITY): New constant.
6520         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
6521         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
6522         optimization for UNSPEC_CCZ_TO_INT.
6523         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
6524         ("*ccz_to_int"): New insn.
6525         ("isinf<mode>2"): New insn.
6526         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
6527         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
6528         (UNSPEC_CCZ_TO_INT): New constant.
6529
6530 2007-04-18  Richard Guenther  <rguenther@suse.de>
6531
6532         PR tree-optimization/19431
6533         PR tree-optimization/21463
6534         * tree-pass.h (pass_phiprop): Declare.
6535         * passes.c (init_optimization_passes): New phiprop pass.
6536         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
6537         (phivn_valid_p): New helper function.
6538         (phiprop_insert_phi): Likewise.
6539         (propagate_with_phi): Likewise.
6540         (tree_ssa_phiprop): New propagator propagating loads
6541         through phi nodes if profitable.
6542
6543 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6544
6545         * tree-vect-analyze.c (process_use): New function.
6546         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
6547         Check phis in all bbs.
6548         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
6549         assert.
6550
6551 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
6552
6553         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
6554         we use REG_EQUAL.
6555
6556 2007-04-17  Anatoly Sokolov <aesok@post.ru>
6557
6558         PR target/30483
6559         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
6560         error().
6561
6562 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
6563
6564         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
6565         on "0".
6566         (sse_vmmulv4sf3): Likewise.
6567         (sse2_vmaddv2df3): Likewise.
6568         (sse2_vmmulv2df3): Likewise.
6569
6570 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
6571
6572         PR rtl-optimization/31360
6573         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
6574         (target_reg_cost): New.
6575         (init_set_costs): Initialize target_reg_cost.  Add comments
6576         regarding the rationale of the costs.
6577         (global_cost_for_size): Renamed to...
6578         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
6579         of register pressure.
6580         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
6581         estimate_reg_pressure_cost.  Add number of ivs.
6582         (determine_set_costs): Dump target_reg_cost.
6583         * loop-invariant.c (gain_for_invariant):  Use
6584         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
6585         (best_gain_for_invariant, find_invariants_to_move): Remove
6586         n_inv_uses.
6587         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
6588         (target_reg_cost): Declare.
6589         (global_cost_for_size): Declaration removed.
6590         (estimate_reg_pressure_cost): Declare.
6591
6592 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
6593
6594         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
6595         regnos into even/odd register pairs.
6596         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
6597         TDmode similar to the other floating point modes.
6598         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
6599         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
6600         define_expand's.
6601         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
6602         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
6603         (movdd_hardfloat64): Use TARGET_MFPGPR.
6604
6605 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
6606
6607         * reload1.c (delete_output_reload): Don't count output in n_inherited.
6608
6609         Revert
6610         2005-01-05  Richard Henderson  <rth@redhat.com>
6611         PR rtl-opt/10692
6612         * reload1.c (do_input_reload): Restrict the optimization deleteing
6613         a previous output reload to RELOAD_FOR_INPUT.
6614
6615 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
6616
6617         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
6618         induc_vec_info_type.
6619         (vectorizable_induction): New function declaration.
6620         * tree-vect-transform.c (get_initial_def_for_induction): No need to
6621         check if already vectorized.  Find first place in BB where new stmts
6622         can be inserted.  Takes only one argument.
6623         (vectorizable_induction): New function.
6624         (vect_transform_stmt): Add case for induc_vec_info_type to call
6625         vectorizable_induction.
6626         (vect_transform_loop): Consider phis for vectorization.
6627         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
6628         condition.
6629         (analyze_operations): Call vectorizable_induction when analyzing phis.
6630         Fix comment.
6631         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
6632         (vect_mark_relevant): Include phis in relevance analysis.
6633         (vect_mark_stmts_to_be_vectorize): Likewise.
6634         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
6635
6636 2007-04-16  Lawrence Crowl  <crowl@google.com>
6637
6638         * doc/invoke.texi (Debugging Options): Add documentation for the
6639         -femit-struct-debug options -femit-struct-debug-baseonly,
6640         -femit-struct-debug-reduced, and
6641         -femit-struct-debug-detailed[=...].
6642
6643         * c-opts.c (c_common_handle_option): Add
6644         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
6645         and OPT_femit_struct_debug_detailed_.
6646         * c.opt: Add specifications for
6647         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
6648         and -femit-struct-debug-detailed[=...].
6649         * opts.c (set_struct_debug_option): Parse the
6650         -femit-struct-debug-... options.
6651         * opts.c (matches_main_base, main_input_basename,
6652         main_input_baselength, base_of_path, matches_main_base): Add
6653         variables and functions to compare header base name to compilation
6654         unit base name.
6655         * opts.c (should_emit_struct_debug): Add to determine to emit a
6656         structure based on the option.
6657         (dump_struct_debug) Also disabled function to debug this
6658         function.
6659         * opts.c (handle_options): Save the base name of the
6660         compilation unit.
6661
6662         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
6663         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
6664         This hook indicates if a type is generic.  Set it by default
6665         to "never generic".
6666         * langhooks.h (struct lang_hooks_for_types): Add a new hook
6667         to determine if a struct type is generic or not.
6668         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
6669         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
6670         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
6671         with live C++ hook.
6672
6673         * flags.h (enum debug_info_usage): Add an enumeration to describe
6674         a program's use of a structure type.
6675         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
6676         to indicate the program's usage of the type.  Filter structs based
6677         on the -femit-struct-debug-... specification.
6678         (gen_type_die): Split into two routines, gen_type_die and
6679         gen_type_die_with_usage.  gen_type_die is now a wrapper
6680         that assumes direct usage.
6681         (gen_type_die_with_usage): Replace calls to gen_type_die
6682         with gen_type_die_with_usage adding the program usage of
6683         the referenced type.
6684         (dwarf2out_imported_module_or_decl): Suppress struct debug
6685         information using should_emit_struct_debug when appropriate.
6686
6687 2007-04-16  Ian Lance Taylor  <iant@google.com>
6688
6689         PR tree-optimization/31522
6690         * tree-vrp.c (vr_phi_edge_counts): New static variable.
6691         (vrp_initialize): Allocate vr_phi_edge_counts.
6692         (vrp_visit_phi_node): Don't push to infinity if we saw a new
6693         executable edge.  Drop test for all constants.
6694         (vrp_finalize): Free vrp_phi_edge_counts.
6695
6696         * doc/cpp.texi (Common Predefined Macros): Clarify description of
6697         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
6698
6699         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
6700         predecessors at head rather than tail.
6701
6702 2007-04-16  Matthias Klose  <doko@debian.org>
6703
6704         * config/alpha/linux.h (CPP_SPEC): Define.
6705         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
6706
6707 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
6708
6709         * function.h: Remove sequence_stack extern declaration.
6710
6711 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
6712
6713         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
6714         TARGET_FIDOA.
6715         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
6716         defined.
6717
6718 2007-04-16  Anatoly Sokolov <aesok@post.ru>
6719
6720         * config/avr/avr.c (avr_arch_types): Rearranging  array.
6721         (enum avr_arch): Add.
6722         (avr_mcu_types): Use avr_arch enumeration constants instead of
6723         numbers.
6724         * config/avr/avr.h (LINK_SPEC): Simplify.
6725
6726 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
6727
6728         * config/m68k/m68k.c (m68k_libcall_value,
6729         m68k_function_value): Use macros for register names more.
6730
6731         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
6732         instead.
6733         (M68K_REGNAME): Use A6_REG.
6734         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
6735
6736 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
6737
6738         PR middle-end/28071
6739         * sched-int.h (struct deps): Split field 'pending_lists_length' into
6740         'pending_read_list_length' and 'pending_write_list_length'.  Update
6741         comment.
6742         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
6743         to handle two length counters instead of one.  Update all uses.
6744         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
6745         two length counters instead of one.
6746         * sched-rgn.c (propagate_deps): Update to handle two length counters
6747         instead of one.
6748
6749 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
6750
6751         PR target/31582
6752         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
6753         copy of source, pass it to ix86_expand_vector_set and return
6754         it as target.
6755
6756 2007-04-16  David Ung  <davidu@mips.com>
6757             Joseph Myers  <joseph@codesourcery.com>
6758
6759         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
6760         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
6761         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
6762         Add 74K processor information.
6763         * config/mips/mips.md: Include 74k.md.
6764         (cpu): Add 74kc,74kf,74kx.
6765         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
6766         * config/mips/74k.md: New.
6767         * doc/invoke.texi (MIPS Options): Document 74K support.
6768
6769 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
6770
6771         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
6772         vectorizable_* functions.
6773         * tree-vect-transform.c (vectorizable_call): Add check for
6774         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
6775         (vectorizable_store): likewise.
6776         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
6777         Add comments.
6778         (vectorizable_operation, vectorizable_type_demotion): Likewise.
6779         (vectorizable_type_promotion, vectorizable_load): Likewise.
6780         (vectorizable_live_operation, vectorizable_condition): Likewise.
6781         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
6782         STMT_VINFO_LIVE_P.
6783         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
6784
6785 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
6786
6787         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
6788         register numbers more.
6789         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
6790         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
6791         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
6792         FUNCTION_VALUE_REGNO_P): Likewise.
6793         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
6794         STATIC_CHAIN_REGNUM): Likewise.
6795         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
6796         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
6797         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
6798         * config/m68k/m68k.md (FP_REG): New.
6799
6800 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
6801
6802         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
6803         alignment on fido.
6804
6805 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
6806
6807         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
6808         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
6809         comment typos.
6810
6811 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
6812
6813         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
6814         cold loops.
6815
6816 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6817
6818         PR c/31520
6819         * c-decl.c (finish_decl): Grab the type of the decl after the call
6820         to store_init_value.
6821
6822 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
6823
6824         * common.opt (fforward-propagate): Fix "Optimization" annotation.
6825
6826 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
6827
6828         PR c++/25874
6829         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
6830         post dominators and cleanup cfg before returning.
6831
6832 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
6833
6834         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
6835         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
6836
6837 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
6838
6839         * config.gcc: Recognize fido.
6840         * config/m68k/m68k-devices.def (fidoa): New.
6841         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
6842         __mfido__.
6843         (FL_FIDOA, TARGET_FIDOA): New.
6844         * config/m68k/m68k.opt (mfidoa): New.
6845
6846 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6847
6848         PR middle-end/31322
6849         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
6850         when a personality function is used.
6851
6852 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
6853
6854         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
6855
6856 2007-04-13  Mike Stump  <mrs@apple.com>
6857
6858         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
6859         we can...
6860         * config/darwin.opt (fapple-kext): Make C++ only.
6861         * config/darwin.c (darwin_override_options): Remove code to ensure
6862         -fapple-kext is given for C++ only.
6863
6864 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
6865
6866         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
6867         * config/mips/mips.c (override_options): Call
6868         SUBTARGET_OVERRIDE_OPTIONS, if defined.
6869
6870 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
6871
6872         * config/i386/i386.opt (msvr3-shlib): Removed.
6873
6874         * doc/invoke.texi: Remove -msvr3-shlib.
6875
6876 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
6877
6878         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
6879         with "popcnt" instruction.
6880
6881 2007-04-13  Richard Guenther  <rguenther@suse.de>
6882
6883         PR tree-optimization/21258
6884         * tree-vrp.c (compare_case_labels): New helper.
6885         (find_switch_asserts): New function.
6886         (find_assert_locations): Call it for SWITCH_EXPRs.
6887
6888 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
6889
6890         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
6891         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
6892         check is now implied in X87_FLOAT_MODE_P.
6893         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
6894         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
6895         (fix_trunc<mode>_i386_fisttp): Ditto.
6896         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
6897         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
6898         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
6899         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
6900         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
6901         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
6902         (unnamed_splitters): Ditto.
6903         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
6904         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
6905         FIRST_SSE_REG for local functions when SSE math is enabled or
6906         for functions with sseregparm attribute.
6907         (standard_80387_constant_p): Return -1 if mode is not
6908         X87_FLOAT_MODE_P.
6909         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
6910         (ix86_expand_compare): Ditto.
6911         (ix86_expand_carry_flag_compare): Ditto.
6912         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
6913         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
6914         DECIMAL_FLOAT_MODE_P.
6915         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
6916         of SCALAR_FLOAT_MODE_P.
6917         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
6918         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
6919         checks before FLOAT_MODE_P.
6920         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
6921         before FLOAT_MODE_P.
6922         [DIV]: Ditto.
6923         [NEG]: Ditto.
6924         [ABS]: Ditto.
6925         [SQRT]: Ditto.
6926         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
6927
6928 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
6929             Charles Wilson  <libtool@cwilson.fastmail.fm>
6930
6931         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
6932         (libgcc.mvars): Don't depend on them.
6933         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
6934         * exec-tool.in: New.
6935
6936 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
6937
6938         * doc/invoke.text (--help): Document --help=common.
6939
6940 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
6941
6942         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
6943
6944 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6945
6946         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
6947         * genemit.c (main): Emit #include "integrate.h".
6948         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
6949         (LOADGP_RTP): New mips_loadgp_style.
6950         * config/mips/mips.h: Include config/vxworks-dummy.h.
6951         (TARGET_RTP_PIC): New macro.
6952         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
6953         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
6954         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
6955         for TARGET_RTP_PIC.
6956         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
6957         -mvxworks-pic when using -mrtp and a PIC option.
6958         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
6959         for RTP PIC.
6960         (mips_symbolic_constant_p, mips_symbolic_address_p)
6961         (mips_symbol_insns): Handle SYMBOL_HALF.
6962         (override_options): Warn about -G and -mrtp being used together.
6963         Initialize mips_lo_relocs[SYMBOL_HALF].
6964         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
6965         (mips_emit_loadgp): Handle LOADGP_RTP.
6966         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
6967         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
6968         (tablejump): Handle function-relative case table entries if
6969         TARGET_RTP_PIC.
6970         * config/mips/predicates.md (symbol_ref_operand): New predicate.
6971
6972 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6973
6974         * config/mips/mips.md (load_call<mode>): Allow any general register.
6975         destination.
6976         (sibcall_value_internal, sibcall_value_multiple_internal)
6977         (call_value_internal, call_value_split, call_value_multiple_internal)
6978         (call_value_multiple_split): Remove constraints from operand 0.
6979
6980 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6981
6982         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
6983         rather than loadgp_noshared.
6984         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
6985         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
6986         gen_loadgp.
6987         * config/mips/mips.md (loadgp): Rename to...
6988         (loadgp_newabi): ...this.
6989         (loadgp_noshared): Rename to...
6990         (loadgp_absolute): ...this.
6991
6992 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6993
6994         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
6995         false for locally-binding symbols.
6996         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
6997
6998 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6999
7000         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
7001         (SYMBOL_GOT_PAGE_OFST): ...this.
7002         (SYMBOL_GOT_GLOBAL): Rename to...
7003         (SYMBOL_GOT_DISP): ...this.
7004         (SYMBOL_GOTOFF_GLOBAL): Rename to...
7005         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
7006         * config/mips/mips.c (mips_global_symbol_p): New function.
7007         (mips_symbol_binds_local_p): Likewise.
7008         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
7009         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
7010         and mips_symbol_binds_local_p.
7011         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
7012         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
7013         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
7014         SYMBOL_GOTOFF_DISP.
7015         (mips_ok_for_lazy_binding_p): New function.
7016         (mips_load_call_address, mips_expand_call): Use it.
7017         (mips_dangerous_for_la25_p): Likewise.
7018         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
7019         (*got_disp<mode>): Use got_disp_operand instead of
7020         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
7021         SYMBOL_GOTOFF_GLOBAL.
7022         (*got_page<mode>): Use got_page_ofst_operand instead of
7023         local_got_operand.
7024         * config/mips/predicates.md (const_call_insn_operand): Use
7025         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
7026         (global_got_operand): Rename to...
7027         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
7028         SYMBOL_GOT_GLOBAL.
7029         (local_got_operand): Rename to...
7030         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
7031         of SYMBOL_GOT_LOCAL.
7032
7033 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7034
7035         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
7036         TARGET_CALL_CLOBBERED_GP.
7037         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7038         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
7039         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
7040         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
7041         of TARGET_ABICALLS && !TARGET_NEWABI.
7042         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7043         * config/mips/mips.c (mips_load_call_address): Check
7044         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
7045         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7046         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
7047         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
7048         TARGET_ABICALLS && TARGET_NEWABI.
7049         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
7050         TARGET_ABICALLS.
7051         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
7052         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
7053         TARGET_ABICALLS && TARGET_NEWABI.
7054         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
7055         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
7056         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
7057         whether indirect calls must use $25.
7058         (mips_extra_live_on_entry): Check TARGET_GOT instead of
7059         TARGET_ABICALLS.
7060         * config/mips/mips.md (jal_macro): Check flag_pic and
7061         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
7062         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
7063         instead of TARGET_ABICALLS.
7064         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
7065         TARGET_ABICALLS && TARGET_OLDABI.
7066         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
7067         (sibcall): In the comment above the define_insn, mention
7068         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
7069         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
7070         instead of TARGET_ABICALLS.
7071
7072 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
7073
7074         * doc/md.texi (Blackfin family constraints): Document PA and PB.
7075         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
7076         (MACFLAGS_MATCH_P): New macro.
7077         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
7078         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
7079         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
7080         the other MACFLAG constants.
7081         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
7082         (flag_machi): Tighten constraints.  Renumber some of the operands.
7083         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
7084         output template.
7085         (flag_machi_parts_acconly): New pattern.
7086         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
7087         used.
7088         (flag_macinit1hi): Tighten constraints.
7089         (flag_mul_macv2hi_parts_acconly): New pattern.
7090
7091         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
7092         Use a more efficient implementation.
7093         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
7094         inline sequences when not optimizing for size.
7095
7096         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
7097         movhi_high2low): Delete, merge functionality into...
7098         (packv2hi): ... this pattern.
7099
7100         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
7101         * config/bfin/bfin.opt (msim): New option.
7102         (mcpu=): New option.
7103         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
7104         (bfin_cpu_t): Typedef of enum bfin_cpu.
7105         (bfin_cpu_type): New declaration.
7106         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
7107         -msim and -mcpu= options.
7108         (LIB_SPEC): Likewise.
7109         * config/bfin/bfin.c (bfin_cpu_type): Define.
7110         (bfin_handle_option): Handle -mcpu= option.
7111         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
7112         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
7113         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
7114
7115 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7116
7117         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
7118         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
7119         (powerpc-wrs-vxworksae): Use ${tm_file}.
7120         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
7121         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
7122         * config/i386/vx-common.h: New file.
7123
7124 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
7125
7126         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
7127         of crt0.o%s.
7128
7129 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
7130
7131         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
7132         ldxtr.
7133
7134 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
7135
7136         PR c++/31078
7137         PR c++/31103
7138         * c-common.c (c_build_qualified_type): Set canonical type
7139         appropriately.
7140
7141 2007-04-12  Richard Guenther  <rguenther@suse.de>
7142
7143         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
7144         lower bound and element size if lower bound is not zero
7145         or either of the ARRAY_REF operands is set.
7146
7147 2007-04-12  Richard Guenther  <rguenther@suse.de>
7148
7149         PR tree-optimization/24689
7150         PR tree-optimization/31307
7151         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
7152         indices by value.
7153         * gimplify.c (canonicalize_addr_expr): To be consistent with
7154         gimplify_compound_lval only set operands two and three of
7155         ARRAY_REFs if they are not gimple_min_invariant.  This makes
7156         it never at this place.
7157         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
7158
7159 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7160
7161         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
7162         null before emitting a .nsubspa directive.
7163
7164 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
7165
7166         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
7167         need_to_partition_p if there are no memory statements in the
7168         function.
7169
7170 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7171
7172         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
7173         (gcd_of_steps_may_divide_p): New function.
7174         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
7175
7176 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7177
7178         * reload.c (find_reloads_toplev, find_reloads_address,
7179         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
7180         not a pointer equality test, to decide if we need to call
7181         push_reg_equiv_alt_mem.
7182
7183 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
7184
7185         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
7186         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
7187         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
7188
7189 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
7190
7191         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
7192         vector to be positive.
7193
7194 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
7195
7196         PR 30735
7197         PR 31090
7198         * doc/invoke.texi: Document --params max-aliased-vops and
7199         avg-aliased-vops.
7200         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
7201         debug_memory_partitions): Move to tree-flow.h
7202         * params.h (AVG_ALIASED_VOPS): Define.
7203         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
7204         users.
7205         (mp_info_t): Likewise.
7206         (get_mem_sym_stats_for): New.
7207         (set_memory_partition): Move from tree-flow-inline.h.
7208         (mark_non_addressable): Only clear the set of symbols for the
7209         partition if it exists.
7210         (dump_memory_partitions): Move from tree-ssa-operands.c
7211         (debug_memory_partitions): Likewise.
7212         (need_to_partition_p): New.
7213         (dump_mem_ref_stats): New.
7214         (debug_mem_ref_stats): New.
7215         (dump_mem_sym_stats): New.
7216         (debug_mem_sym_stats): New.
7217         (update_mem_sym_stats_from_stmt): New.
7218         (compare_mp_info_entries): New.
7219         (mp_info_cmp): Call it.
7220         (sort_mp_info): Change argument to a list of mem_sym_stats_t
7221         objects.
7222         (get_mpt_for): Move from tree-ssa-operands.c.
7223         (find_partition_for): New.
7224         (create_partition_for): Remove.
7225         (estimate_vop_reduction): New.
7226         (update_reference_counts): New.
7227         (build_mp_info): New.
7228         (compute_memory_partitions): Refactor.
7229         Document new heuristic.
7230         Call build_mp_info, update_reference_counts,
7231         find_partition_for and estimate_vop_reduction.
7232         (compute_may_aliases): Populate virtual operands before
7233         calling debugging dumps.
7234         (delete_mem_sym_stats): New.
7235         (delete_mem_ref_stats): New.
7236         (init_mem_ref_stats): New.
7237         (init_alias_info): Call it.
7238         (maybe_create_global_var): Remove alias_info argument.
7239         Get number of call sites and number of pure/const call sites
7240         from gimple_mem_ref_stats().
7241         (dump_alias_info): Call dump_memory_partitions first.
7242         (dump_points_to_info_for): Show how many times a pointer has
7243         been dereferenced.
7244         * opts.c (decode_options): For -O2 set --param
7245         max-aliased-vops to 500.
7246         For -O3 set --param max-aliased-vops to 1000 and --param
7247         avg-aliased-vops to 3.
7248         * fortran/options.c (gfc_init_options): Remove assignment to
7249         MAX_ALIASED_VOPS.
7250         * tree-flow-inline.h (gimple_mem_ref_stats): New.
7251         * tree-dfa.c (dump_variable): Dump memory reference
7252         statistics.
7253         Dump NO_ALIAS* settings.
7254         (referenced_var_lookup): Tidy.
7255         (mem_sym_stats): New.
7256         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
7257         and ORIG are different SSA names for a memory partition.
7258         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
7259         * tree-flow.h (struct mem_sym_stats_d): Define.
7260         (mem_sym_stats_t): Define.
7261         (struct mem_ref_stats_d): Define.
7262         (struct gimple_df): Add field mem_ref_stats.
7263         (enum noalias_state): Define.
7264         (struct var_ann_d): Add bitfield noalias_state.
7265         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
7266         debug_mem_ref_stats, debug_memory_partitions,
7267         debug_mem_sym_stats): Declare.
7268         * tree-ssa-structalias.c (update_alias_info): Update call
7269         sites, pure/const call sites and asm sites in structure
7270         returned by gimple_mem_ref_stats.
7271         Remove local variable IS_POTENTIAL_DEREF.
7272         Increase NUM_DEREFS if the memory expression is a potential
7273         dereference.
7274         Call update_mem_sym_stats_from_stmt.
7275         If the memory references memory, call
7276         update_mem_sym_stats_from_stmt for all the direct memory
7277         symbol references found.
7278         (intra_create_variable_infos): Set noalias_state field for
7279         pointer arguments according to the value of
7280         flag_argument_noalias.
7281         * tree-ssa-structalias.h (struct alias_info): Remove fields
7282         num_calls_found and num_pure_const_calls_found.
7283         (update_mem_sym_stats_from_stmt): Declare.
7284         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
7285         Set default value to 100.
7286         (PARAM_AVG_ALIASED_VOPS): Define.
7287
7288 2007-04-11  Richard Guenther  <rguenther@suse.de>
7289
7290         PR middle-end/31530
7291         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
7292         a * -b + c as c - a * b if we honor sign dependent rounding.
7293
7294 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7295
7296         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
7297         bfin_expand_strmov.
7298         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
7299         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
7300         variables.
7301         (initialize_trampoline): Don't use old-style function definition.
7302         (bfin_secondary_reload): Mark IN_P argument as unused.
7303
7304 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
7305
7306         PR tree-optimization/31343
7307         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
7308         (build_polynomial_chrec): Return a scalar when the evolution is zero.
7309         * testsuite/gcc.dg/vect/pr31343.c: New.
7310
7311 2007-04-10  Eric Christopher  <echristo@apple.com>
7312
7313         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
7314         * config/i386/i386.md (*cmpfp0): Use.
7315         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
7316         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
7317         (fix_trunc<mode>_i386_fisttp): Ditto.
7318         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
7319         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
7320         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
7321         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
7322         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
7323         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
7324         (unnamed_splitters): Ditto.
7325         * config/i386/i386.c (output_fix_trunc): Assert that
7326         we're not being passed a TFmode operand.
7327
7328 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
7329
7330         PR tree-optimization/31526
7331         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
7332         n_basic_blocks to find newly added blocks.
7333
7334 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
7335
7336         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
7337         alternative.
7338         (fix_trunc<mode>si_sse): Ditto.
7339         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
7340         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
7341         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
7342         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
7343         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
7344         expander using SSEMODEF mode macro.
7345         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
7346         expander using SSEMODEF mode macro.
7347         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
7348         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
7349         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
7350         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
7351         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
7352         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
7353         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
7354         Macroize insn using X87MODEF mode macro.
7355
7356 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7357
7358         * config/i386/sse.md (sse2_pinsrw): Removed.
7359         (sse2_pextrw): Renamed to ...
7360         (*sse2_pextrw): This.
7361
7362 2007-04-09  Jan Hubicka  <jh@suse.cz>
7363
7364         PR target/27869
7365         * config/i386/sse.md
7366         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
7367         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
7368         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
7369         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
7370
7371 2007-04-09  Jan Hubicka  <jh@suse.cz>
7372
7373         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
7374         multiple fields of union.
7375
7376 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
7377
7378         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
7379         (create_preheaders): Check that loops are available.
7380         (fix_loop_structure): Clean up, improve comments.
7381         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
7382         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
7383         state flags.
7384         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
7385         * predict.c (tree_estimate_probability): Do not call
7386         calculate_dominance_info.  Call create_preheaders.
7387         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
7388         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
7389         flags.
7390         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
7391         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
7392         * tree-cfg.c (tree_split_edge): Make an assert more precise.
7393         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
7394         arguments.
7395
7396 2007-04-08  Jan Hubicka  <jh@suse.cz>
7397
7398         * tree.h (maybe_fold_offset_to_component_ref): Declare.
7399         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
7400         * fold-const.c (fold_unary): Use it.
7401
7402 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7403
7404         * varasm.c (assemble_variable): Remove call to
7405         lang_hooks.decls.prepare_assemble_variable.
7406         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
7407         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
7408         * langhooks.h (lang_hooks_for_decls): Remove
7409         prepare_assemble_variable.
7410
7411 2007-04-08  Mike Stump  <mrs@apple.com>
7412
7413         * config/i386/i386.c: Use inc/dec on Core2.
7414
7415 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
7416
7417         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
7418         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
7419         lhd_tree_inlining_end_inlining): Remove.
7420         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
7421         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
7422         end_inlining hooks.
7423         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
7424         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
7425         lhd_tree_inlining_end_inlining): Remove prototypes.
7426         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
7427         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
7428         LANG_HOOKS_TREE_INLINING_START_INLINING,
7429         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
7430
7431         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
7432         not set it.
7433
7434 2007-04-08  Anatoly Sokolov <aesok@post.ru>
7435
7436         PR target/29932
7437         * config/avr/predicates.md (io_address_operand): Delete predicate.
7438         (low_io_address_operand): Don't use 'mode' argument.
7439         (higth_io_address_operand): Rename ...
7440         (high_io_address_operand): ... to this. Don't use 'mode' argument.
7441         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
7442         for above change.
7443
7444 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
7445
7446         Revert change removing staticp.
7447
7448 2007-04-07  Anatoly Sokolov <aesok@post.ru>
7449
7450         PR target/30289
7451         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
7452         earlyclobber.
7453
7454 2007-04-07  Bruce Korb  <bkorb@gnu.org>
7455
7456         * c.opt: Add -Wformat-contains-nul.
7457         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
7458           -Wformat setting.
7459         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
7460         the NUL byte warning.
7461
7462 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
7463
7464         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
7465
7466 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
7467
7468         * tree.c (staticp): No longer use staticp langhook.
7469         * langhooks.c (lhd_staticp): Removed.
7470         * langhooks.h (struct lang_hooks): Remove staticp.
7471         * c-common.c (c_staticp): Remove.
7472         * c-common.h (c_staticp): Ditto.
7473         * langhooks-defs.h (lhd_staticp): Ditto.
7474         (LHD_HOOKS_STATICP): Ditto
7475         * tree.h (gcc_assert_lowered): New macro.
7476
7477 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
7478
7479         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
7480         argument "reliable".
7481         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
7482         Add argument "reliable".  Propagate it through calls.
7483         (infer_loop_bounds_from_undefined):  Derive number of iterations
7484         estimates from references in blocks that do not dominate loop latch.
7485         (gcov_type_to_double_int): New function.
7486         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
7487         and expected_loop_iterations_unbounded.
7488         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
7489         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
7490         * tree-data-ref.c (estimated_loop_iterations): Export.
7491         (get_references_in_stmt): Fix -- do not return addresses of local
7492         objects.
7493         * cfgloop.h (expected_loop_iterations_unbounded,
7494         estimated_loop_iterations): Declare.
7495
7496 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
7497
7498         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
7499
7500 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
7501
7502         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
7503         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
7504         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
7505         Use output_387_reg_move().
7506         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
7507         expander using X87MODEF12 mode macro.
7508         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
7509         choosing register preferences.  Use output_387_reg_move().
7510         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
7511         instead of "x".  Use output_387_reg_move().
7512         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
7513         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
7514         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
7515         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
7516         Use output_387_reg_move().
7517         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
7518         mode macro.
7519         (*truncxf?f_i387 splitter): Ditto.
7520
7521 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
7522
7523         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
7524         LANG_HOOKS_SAFE_FROM_P.
7525         * expr.c (safe_from_p): Remove langhook call.
7526         * langhooks.h (lang_hooks): Remove safe_from_p.
7527         (lhd_safe_from_p): Remove prototype.
7528         * langhooks.c (lhd_safe_from_p): Remove.
7529
7530 2007-04-06  Jan Hubicka  <jh@suse.cz>
7531
7532         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
7533         functions.
7534
7535 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
7536
7537         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
7538         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
7539         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
7540         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
7541         alternative.
7542         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
7543         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
7544
7545 2007-04-05  Richard Henderson  <rth@redhat.com>
7546
7547         * config/alpha/alpha.c (print_operand) [+]: Remove.
7548         (alpha_end_function): Print nop if call at end of function.
7549         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
7550         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
7551         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
7552         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
7553         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
7554         the call pattern. Update peepholes to match.
7555
7556 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
7557
7558         * doc/extend.texi (Other Builtins): Add decimal float variants
7559         of signbit.
7560         * builtins.def: Ditto.
7561         * builtins.c (expand_builtin): Ditto.
7562
7563 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
7564             H.J. Lu  <hongjiu.lu@intel.com>
7565
7566         PR target/31478
7567         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
7568         of V8HImode when calling ix86_binary_operator_ok.
7569         (sse2_pmaddwd): Call ix86_binary_operator_ok.
7570         (sdot_prodv8hi): Operands 1 and 2 must be register.
7571
7572 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7573
7574         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
7575         initialize align to silence bogus warning.
7576
7577 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7578
7579         PR middle-end/22156
7580         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
7581         all_no_warning.
7582         (struct sra_walk_fns): Remove use_all parameter from use.
7583         (sra_hash_tree): Handle BIT_FIELD_REFs.
7584         (sra_elt_hash): Don't hash bitfld blocks.
7585         (sra_elt_eq): Skip them in parent compares as well.  Handle
7586         BIT_FIELD_REFs.
7587         (sra_walk_expr): Don't maintain or pass down use_all_p.
7588         (scan_use): Remove use_all parameter.
7589         (scalarize_use): Likewise.  Re-expand assignment to
7590         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
7591         output, and re-scalarize after output.  Don't mark anything
7592         for no warning.
7593         (scalarize_ldst): Adjust.
7594         (scalarize_walk_gimple_modify_statement): Likewise.
7595         (build_element_name_1): Handle BIT_FIELD_REFs.
7596         (instantiate_element): Don't warn for any element whose parent
7597         is used as a whole.
7598         (instantiate_missing_elements_1): Return the sra_elt.
7599         (canon_type_for_field): New.
7600         (try_instantiate_multiple_fields): New.
7601         (instantiate_missing_elemnts): Use them.
7602         (mark_no_warning): Removed.
7603         (generate_one_element_ref): Handle BIT_FIELD_REFs.
7604         (REPLDUP, sra_build_elt_assignment): New.
7605         (generate_copy_inout): Use them.
7606         (generate_element_copy): Likewise.  Handle bitfld differences.
7607         (generate_element_zero): Don't recurse for blocks.  Use
7608         sra_build_elt_assignment.
7609         (generate_one_element_int): Take elt instead of var.  Use
7610         sra_build_elt_assignment.
7611         (generate_element_init_1): Adjust.
7612         (scalarize_use, scalarize_copy): Use REPLDUP.
7613         (scalarize_ldst): Move assert before dereference.
7614         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
7615
7616 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
7617
7618         * regmove.c: Fix unused variable warnings due to previous commit.
7619
7620 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
7621
7622         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
7623         (regmove_bb_head): Remove.
7624         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
7625         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
7626         problems with fixup_match_1.
7627         Don't initialize/free regmove_bb_head.
7628
7629         (reg_is_remote_constant_p): If an insn is in the same basic block
7630         but not before INSN, consider it remote, too.
7631
7632 2007-04-05  Anatoly Sokolov <aesok@post.ru>
7633
7634         PR target/25448
7635         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
7636         DECL_ASSEMBLER_NAME, not the DECL_NAME.
7637
7638 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
7639
7640         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
7641         (CONDITIONAL_REGISTER_USAGE): Likewise.
7642
7643 2007-04-04  Richard Henderson  <rth@redhat.com>
7644
7645         * config/alpha/lib1funcs.asm: Remove unused file.
7646
7647 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7648
7649         PR other/31356
7650         * opts.c (print_specific_help): Fix --help=<language>
7651         header line.
7652         (common_handle_option): Support --help=common.
7653
7654 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7655
7656         PR other/31353
7657         * gcc.c (main): Do not run the linker if
7658         print_subprocess_help indicates that it shouldn't be
7659         run.
7660
7661 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7662
7663         PR doc/31355
7664         * doc/invoke.texi (--help=): Document <languages> value, fix
7665         formatting in tables of values.
7666
7667 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
7668
7669         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
7670         dllimport attribute of virtual methods.
7671
7672 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
7673
7674         * config/score/crti.asm: Change _bss_start to __bss_start.
7675         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
7676         (OUTGOING_REG_PARM_STACK_SPACE) update.
7677         * config/score/score.opt: add options to make backend support
7678         score5, score5u, score7 and score7d.
7679         * config/score/score.md: Likewise.
7680         * config/score/misc.md: Likewise.
7681         * config/score/mac.md: Likewise.
7682         * doc/invoke.texi: Likewise.
7683         * doc/md.texi: update constraints define.
7684
7685 2007-04-03  Richard Henderson  <rth@redhat.com>
7686
7687         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
7688         an appropriate type, use the mode instead.
7689
7690 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
7691
7692         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
7693         Set the default --with-arch setting to mips2.
7694         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
7695         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
7696         (MULTILIB_OSDIRNAMES): Delete.
7697         (MULTILIB_DIRNAMES): Define.
7698         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
7699         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
7700         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
7701         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
7702         VXWORKS_OS_CPP_BUILTINS.
7703         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
7704         (MIPS_DEBUGGING_INFO): Undefine.
7705         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
7706
7707 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
7708
7709         PR middle-end/30704
7710         * fold-const.c (native_encode_real): Encode real.c provided longs
7711         as a series of 32-bit native integers.
7712         (native_interpret_real): Interpret buffer as a series of 32-bit
7713         native integers.
7714
7715 2007-04-03  Richard Guenther  <rguenther@suse.de>
7716
7717         * genpreds.c (write_insn_constraint_len): Write function
7718         optimized for CONSTRAINT_LEN implementation.
7719         (write_tm_preds_h): Output insn_constraint_len inline and
7720         use it for CONSTRAINT_LEN.
7721         (write_insn_preds_c): Don't output insn_constraint_len.
7722         * doc/md.texi (define_register_constraint): Document multi-letter
7723         constraints shall have the same length if they start with the same
7724         letter.
7725
7726 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
7727
7728         PR target/31175
7729         * config/i386/i386.md (isinf<mode>2): Expand only when
7730         TARGET_C99_FUNCTIONS is set.
7731
7732 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
7733
7734         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
7735         (x86_64-*-linux*): Ditto.
7736         * config/i386/i386.opt (mpc): New option.
7737         * config/i386/i386.c (overrride_options): Handle
7738         ix87_precision_string.
7739         * config/i386/crtprec.c: New file.
7740         * config/i386/t-crtpc: Ditto.
7741         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
7742         and -mpc80 options.
7743         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
7744         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
7745         crtprec32.o, crtprec64.o and crtprec80.o.
7746
7747         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
7748         and -mpc80 options.
7749         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
7750
7751 2007-04-02  Eric Christopher  <echristo@apple.com>
7752
7753         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
7754         limitations on darwin.
7755
7756 2007-04-02  Anatoly Sokolov <aesok@post.ru>
7757
7758         PR target/31137
7759         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
7760
7761 2007-04-02  Dave Korn  <dave.korn@artimi.com>
7762
7763         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
7764
7765 2007-04-02  Dave Korn  <dave.korn@artimi.com>
7766
7767         * libgcc2.h (exception_descriptor): Don't forward-declare.
7768         (__get_eh_table_language, __get_eh_table_version): Delete
7769         prototypes of long-dead functions.
7770
7771 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
7772
7773         * ebitmap.h: New file
7774         * ebitmap.c: New file
7775         * Makefile.in (ebitmap.o): New target.
7776
7777 2007-04-01  Jan Hubicka  <jh@suse.cz>
7778
7779         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
7780         before very first instruction.
7781
7782 2007-04-01  Jan Hubicka  <jh@suse.cz>
7783
7784         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
7785         waring on 64bit hosts.
7786         * bitmap.h: Fix typo in bitmap_head_def.
7787
7788 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
7789
7790         PR rtl-optimization/31391
7791         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
7792         into a DELETED_LABEL note, and the label is in an empty basic
7793         block, update BB_END as well as BB_HEAD.
7794
7795 2007-04-01  Richard Henderson  <rth@redhat.com>
7796
7797         PR tree-optimization/31169
7798         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
7799         to varying if the range is outside [0,  prec-1].
7800
7801 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
7802
7803         PR target/31388
7804         * config/mips/mips.md (load_const_gp): New insn.
7805         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
7806         the MIPS16 GP pseudo register if no_new_pseudos.
7807         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
7808
7809 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7810
7811         PR target/31364
7812         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
7813         secureplt.
7814         (call_value): Likewise.
7815
7816 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
7817             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7818
7819         PR 14737
7820         * doc/invoke.texi: (optimization options): Reword description
7821         of -ffast-math. Document its primary purpose.
7822
7823 2007-03-31  Richard Guenther  <rguenther@suse.de>
7824
7825         * omp-low.c (splay-tree.h): Include.
7826         (lookup_decl): Replace splay-tree usage by pointer-map.
7827         (maybe_lookup_decl): Likewise.
7828         (new_omp_context): Likewise.
7829         (delete_omp_context): Likewise.
7830         * gimplify.c (splay-tree.h): Include.
7831         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
7832         pointer-map.
7833         (remap_ssa_name): Likewise.
7834         (remap_decl): Likewise.
7835         (remap_type_1): Likewise.
7836         (remap_type): Likewise.
7837         (copy_body_r): Likewise.
7838         (expand_call_inline): Likewise.
7839         (clone_body): Likewise.
7840         (copy_tree_r): Likewise.
7841         (remap_save_expr): Likewise.
7842         (unsave_r): Likewise.
7843         (unsave_expr_now): Likewise.
7844         (tree_function_versioning): Likewise.
7845         (build_duplicate_type): Likewise.
7846         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
7847         (struct copy_body_data): Replace splay-tree by pointer-map.
7848         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
7849         not $(SPLAY_TREE_H).
7850         (gimplify.o): Depend on $(SPLAY_TREE_H).
7851         (omp-low.p): Likewise.
7852
7853 2007-03-31  Anatoly Sokolov <aesok@post.ru>
7854
7855         * config/avr/predicates.md (even_register_operand,
7856         odd_register_operand): New predicates.
7857         * config/avr/avr.md (movw peephole2): New.
7858         (movw_r peephole2): New.
7859
7860 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
7861
7862         * tree.h (get_signed_or_unsigned_type): New.
7863         * fold-const.c (operand_equal_for_comparison_p): Use
7864         get_signed_or_unsigned_type instead of
7865         lang_hooks.types.signed_or_unsigned_type.
7866         * expr.c (store_expr): Ditto.
7867         * langhooks.c (get_signed_or_unsigned_type): New.
7868         (lhd_signed_or_unsigned_type): New.
7869         * langhooks.h (lhd_signed_or_unsigned_type): New.
7870         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
7871
7872 2007-03-30  Richard Henderson  <rth@redhat.com>
7873
7874         * tree-ssa-loop-ivopts.c: Include target.h.
7875         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
7876         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
7877         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
7878         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
7879
7880 2007-03-30  Richard Henderson  <rth@redhat.com>
7881             Kai Tietz  <kai.tietz@onevision.com>
7882
7883         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
7884         default for 64-bit.
7885         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
7886         (TARGET_64BIT_MS_ABI): New.
7887         (DBX_REGISTER_NUMBER): Handle 64-bit.
7888         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
7889         (LONG_TYPE_SIZE): Force to 32.
7890         (REG_PARM_STACK_SPACE): New.
7891         (OUTGOING_REG_PARM_STACK_SPACE): New.
7892         (REGPARM_MAX, SSE_REGPARM_MAX): New.
7893         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
7894         (STACK_BOUNDARY): Use 128 for 64-bit.
7895         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
7896         Add 64-bit implementation.
7897         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
7898         argument unused.
7899         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
7900         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
7901         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
7902         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
7903         (ix86_handle_cconv_attribute): Don't warn when ignoring if
7904         TARGET_64BIT_MS_ABI.
7905         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
7906         (ix86_pass_by_reference): Likewise.
7907         (ix86_function_value_regno_p): Likewise.
7908         (ix86_build_builtin_va_list): Likewise.
7909         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
7910         (function_arg_advance_ms_64): New.
7911         (function_arg_advance): Call it.
7912         (function_arg_ms_64): New.
7913         (function_arg): Call it.
7914         (function_value_ms_64): New.
7915         (ix86_function_value_1): Call it.
7916         (return_in_memory_ms_64): New.
7917         (ix86_return_in_memory): Call it.
7918         (setup_incoming_varargs_ms_64): New.
7919         (ix86_setup_incoming_varargs): Call it.
7920         (ix86_expand_prologue): Handle 64-bit stack probing.
7921         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
7922         (output_pic_addr_const): Likewise.
7923         (x86_this_parameter): Likewise.
7924         (x86_output_mi_thunk): Likewise.
7925         (x86_function_profiler): Likewise.
7926         (TARGET_STRICT_ARGUMENT_NAMING): New.
7927         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
7928         (TARGET_64BIT_MS_ABI): New.
7929         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
7930         * config/i386/i386.md (allocate_stack_worker): Remove.
7931         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
7932         describe the clobber of eax without a match_scratch.
7933         (allocate_stack_worker_postreload): Remove.
7934         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
7935         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
7936         (allocate_stack_worker_rex64_postreload): Remove.
7937         (allocate_stack): Handle 64-bit.
7938         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
7939         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
7940         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
7941         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
7942         (STANDARD_STARTFILE_PREFIX_1): Likewise.
7943         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
7944         * config.build (x86_64-*-mingw*): New host.
7945         * config.host (x86_64-*-mingw*): New host.
7946         * config.gcc (x86_64-*-mingw*): New target.
7947         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
7948
7949 2007-03-30  Richard Henderson  <rth@redhat.com>
7950             Kai Tietz  <kai.tietz@onevision.com>
7951
7952         * c-pragma.c (struct def_pragma_macro_value): New.
7953         (struct def_pragma_macro): New.
7954         (pushed_macro_table): New.
7955         (dpm_hash, dpm_eq): New.
7956         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
7957         (init_pragma): Install them.
7958         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
7959
7960 2007-03-30  Anatoly Sokolov <aesok@post.ru>
7961
7962         * config/avr/avr.c (avr_override_options): Clear
7963         'flag_delete_null_pointer_checks'.
7964
7965 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
7966
7967         PR c++/26099
7968         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
7969         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
7970         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
7971         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
7972         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
7973         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
7974         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
7975         C++ extensions.
7976         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
7977
7978 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
7979
7980         * regmove.c: Move all of pass_stack_adjustments from here...
7981         * combine-stack-adj.c: ...to this new file.
7982         * Makefile.in: Add rules for combine-stack-adj.o.
7983
7984 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
7985
7986         PR tree-optimization/31383
7987         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
7988         to have the same length.
7989
7990 2007-03-30  Jan Hubicka  <jh@suse.cz>
7991
7992         PR middle-end/30700
7993         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
7994         availablility; add more sanity checking; ask varpool only about
7995         VAR_DECL.
7996
7997 2007-03-29  Richard Henderson  <rth@redhat.com>
7998
7999         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
8000         to decide, but __SIZEOF_LONG_LONG__.
8001
8002 2007-03-29  Richard Henderson  <rth@redhat.com>
8003
8004         * emutls.c (struct __emutls_array): New.
8005         (emutls_destroy): Use it instead of casting element 0 from void*.
8006         (__emutls_get_address): Likewise.
8007
8008 2007-03-29  Richard Henderson  <rth@redhat.com>
8009
8010         * varasm.c (initializer_constant_valid_p): Don't deny
8011         DECL_DLLIMPORT_P on functions.
8012
8013         * config/i386/cygming.h: Remove function declarations.
8014         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
8015         (ASM_OUTPUT_LABELREF): Remove.
8016         (COMMON_ASM_OP): Remove.
8017         (ASM_OUTPUT_COMMON): Remove.
8018         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
8019         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
8020         (ASM_DECLARE_FUNCTION_NAME): Likewise.
8021         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
8022         Rename from TARGET_ENCODE_SECTION_INFO.
8023         * config/i386/netware.h: Likewise.
8024         * config/i386/i386-protos.h: Update.
8025         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
8026         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
8027         (legitimate_constant_p): Reject dllimports.
8028         (dllimport_map, get_dllimport_decl): New.
8029         (legitimize_dllimport_symbol): New.
8030         (legitimize_address, ix86_expand_move): Use it.
8031         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
8032         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
8033         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
8034         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
8035         * config/i386/predicates.md (constant_call_address_operand): Only
8036         accept symbols; reject dllimport_p symbols.
8037         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
8038         i386_pe_maybe_record_exported_symbol.
8039         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
8040         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
8041         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
8042         trust the setting of DECL_DLLIMPORT_P.
8043         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
8044         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
8045         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
8046         tidy the argument scanning loop.
8047         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
8048         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
8049         (i386_pe_strip_name_encoding): Remove.
8050         (i386_pe_binds_local_p): New.
8051         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
8052         (i386_pe_output_labelref): Remove.
8053         (i386_pe_asm_output_aligned_decl_common): New.
8054         (i386_pe_maybe_record_exported_symbol): Rename from
8055         i386_pe_record_exported_symbol; check for dllexported symbols.
8056
8057 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
8058
8059         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
8060         add comment explaining why vsnprintf cannot be used.
8061
8062 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
8063
8064         PR tree-optimization/30666
8065         * tree.c (build_complex_type): When creating type names for DWARF2
8066         debug info, create TYPE_DECLs for TYPE_NAME instead of
8067         IDENTIFIER_NODEs.
8068         (build_common_tree_nodes_2): Use build_complex_type when building
8069         predefined complex types, to preserve canonical types.
8070
8071 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
8072
8073         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
8074         (noce_get_alt_condition): Look at it to determine whether to
8075         reverse the condition or not.
8076         (noce_get_condition): Substitute the truth for lies.
8077         (noce_find_if_block): Set the then_else_reversed field.
8078
8079 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
8080
8081         * config/fr30/fr30.md (movdi): Do not accept immediates as the
8082         destination of this insn.
8083         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
8084         than calling gen_rtx_SET directly.  Use r0 to hold the value of
8085         'address + 4' rather than a stack based temporary which can be
8086         mis-optimized away.
8087
8088 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
8089
8090         * config/s390/s390.c (s390_secondary_input_reload_class,
8091         s390_secondary_output_reload_class): Functions removed.
8092         (s390_secondary_reload): New function.
8093         (TARGET_SECONDARY_RELOAD): Target macro defined.
8094         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
8095         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
8096         * config/s390/s390.md ("reload_outti", "reload_outdi",
8097         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
8098         "reload_out<mode>"): Expanders removed.
8099         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
8100         "reload<mode>_nonoffmem_out"): Expanders added.
8101
8102 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
8103
8104         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
8105         SRC->DEST replacement failed anyway.
8106
8107 2007-03-28  Mike Stump  <mrs@apple.com>
8108
8109         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
8110         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
8111         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
8112
8113 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
8114
8115         * config.gcc: Accept barcelona as a variant of amdfam10.
8116         * config/i386/i386.c (override_options): Likewise.
8117         * doc/invoke.texi: Likewise.
8118
8119 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
8120
8121         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
8122         offsets for BIT_FIELD_REF and COMPONENT_REF.
8123
8124 2007-03-28  Richard Guenther  <rguenther@suse.de>
8125
8126         * tree.c (is_global_var): Move ...
8127         * tree-flow-inline.h (is_global_var): ... here.
8128         * tree.h (is_global_var): Remove declaration.
8129
8130 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
8131
8132         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
8133         option.
8134         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
8135         * config/i386/i386.c (ix86_tune_features): Initialize new
8136         tuning option.
8137         * config/i386/predicates.md (promotable_binary_operator): Use
8138         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
8139
8140 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
8141
8142         PR target/31380
8143         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
8144
8145 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
8146
8147         * config/fr30/fr30.md (movsi_internal): Change destination
8148         constraint from m to V and add m to the end.
8149
8150 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8151
8152         * config/sh/sh.md (movsi_i): Fix type attribute.
8153
8154 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8155
8156         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
8157         (movsf_ie): Likewise.
8158
8159 2007-03-28  Christian Bruel  <christian.bruel@st.com>
8160
8161         * config.gcc: Add sh4-300 to multilib.
8162         * config/sh/t-mlib-sh4-300: New file.
8163
8164 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
8165
8166         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
8167         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
8168         fix_trunc<mode>di2.
8169         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
8170         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
8171         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
8172         "fixuns_trunctddi2"): Whitespace fix.
8173
8174 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
8175
8176         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
8177         the definition of struct sh_args.
8178         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
8179         CALL_COOKIE_INT_REG_GET): Likewise.
8180
8181 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
8182
8183         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
8184         transformations are applied successfully.
8185
8186 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
8187
8188         * tree.c (tree_contains_struct): Permit 512 tree codes.
8189         * tree.h (tree_contains_struct): Ditto.
8190         (MAX_TREE_CODES): Ditto.
8191         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
8192         SPARE member to store remaining padding bits.
8193
8194 2007-03-27  Anatoly Sokolov <aesok@post.ru>
8195
8196         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
8197         architecture.
8198
8199 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
8200
8201         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
8202         * configure: Regenerate.
8203
8204         * configure: Regenerate using the correct version of autoconf.
8205
8206 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
8207
8208         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
8209         pointer regs.
8210         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
8211         regs to "__SP_L__" and "__SP_H__".
8212
8213 2007-03-27  Richard Guenther  <rguenther@suse.de>
8214
8215         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
8216         computations with it with a HOST_WIDE_INT variable.
8217
8218 2007-03-26  Mike Stump  <mrs@apple.com>
8219
8220         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
8221         objective-c-header, objective-c++-header and objc++-cpp-output
8222         support.
8223         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
8224
8225 2007-03-26  Richard Henderson  <rth@redhat.com>
8226
8227         PR target/31361
8228         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
8229         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
8230         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
8231         IX86_BUILTIN_PSRLQ128): New.
8232         (ix86_init_mmx_sse_builtins): Add them.
8233         (ix86_expand_builtin): Expand them.
8234         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
8235         operand 2 be TImode.
8236         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
8237         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
8238         _mm_srli_epi64): Mark __B const.
8239         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
8240         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
8241         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
8242         new two-vector shift builtins.
8243
8244 2007-03-26  Ian Lance Taylor  <iant@google.com>
8245
8246         PR tree-optimization/31345
8247         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
8248         [+INF, +INF(OVF)] into VARYING.
8249
8250 2007-03-26  Zack Weinberg  <zackw@panix.com>
8251
8252         * gengtype-parse.c: New file.
8253         * gengtype-yacc.y: Delete.
8254         * gengtype-lex.l: Don't include gengtype-yacc.h.
8255         Define YY_DECL and yyterminate appropriately for recursive
8256         descent parser.  yylval is now a string out-parameter to yylex.
8257         (HWS, EOID): New shorthand.
8258         (IWORD): Add a couple more types.
8259         (yylex): Add a setup stanza.  Remove the complex rules for
8260         detecting GTY'ed types and typedefs; replace with simple
8261         keyword detectors.  Adjust everything for the changed
8262         definition of yylval.  Ignore all pp-directives, not just #define.
8263         (yyerror): Delete.
8264         (parse_file): Rename yybegin; do not call yyparse.
8265         (yyend): New.
8266         * gengtype.c (xasprintf): Export again.
8267         (this_file): New.  Use everywhere __FILE__ was being used.
8268         (get_lang_bitmap): Special case types defined in gengtype.c.
8269         (do_typedef, new_structure): Suppress definition of certain types.
8270         (new_structure): Improve diagnostics of duplicate definitions.
8271         Make sure location_s is associated with input.h.
8272         (nreverse_pairs, define_location_structures): New functions.
8273         (main): Improve tagging of kludge types.  Remove old kludges
8274         for input.h types; use define_location_structures.
8275         * gengtype.h: Update prototypes.  Define token codes here.
8276         * Makefile.in: Remove all references to gengtype-yacc.
8277         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
8278         and gengtype.
8279         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
8280         add GTY((skip)) to the field that's only conditionally there.
8281         * doc/install.texi: Document that Bison is no longer required
8282         unless building treelang.
8283
8284         * gengtype.c: Don't include gtyp-gen.h.
8285         (srcdir): Declare here.
8286         (base_files, lang_dir_names): Allocate dynamically.
8287         (gt_files, num_gt_files, num_lang_dirs): New globals.
8288         (measure_input_list, read_input_line, read_input_list)
8289         (set_lang_bitmap): New functions.
8290         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
8291         simplify, relying on read_input_list to set up the bitmaps.
8292         (main): Arguments are no longer unused.  Check for correct number
8293         of command line arguments, set srcdir and srcdir_len, then call
8294         read_input_list, before doing anything else.  No need to worry
8295         about duplicates in main loop.
8296         * configure.ac: Simplify the calculation of all_gtfiles.
8297         Put language tags in there.  Don't set or substitute
8298         all_gtfiles_files_langs or all_gtfiles_files_frags.
8299         * Makefile.in: Revamp the way gengtype is invoked, now that it
8300         takes a file on its command line with a much simpler format.
8301         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
8302         (GTFILES): Remove duplicates and C source files.
8303         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
8304         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
8305         * configure: Regenerate.
8306
8307         * gengtype.h: Remove all type definitions to gengtype.c; leave
8308         only definitions of options_p, type_p, and pair_p as opaque
8309         pointers.  Update prototypes.
8310         * gengtype.c: Many type definitions moved here from gengtype.h.
8311         Consolidate type definitions at the top of the file.
8312         (xvasprintf): Delete.
8313         (xasprintf): Make static.
8314         (create_nested_pointer_option): Add 'next' parameter.
8315         (create_field_all, create_field_at): New functions.
8316         (create_field): Now a thin wrapper around create_field_all.
8317         (create_optional_field): Rename create_optional_field_ and add
8318         line argument.  Original name is now a macro which supplies
8319         __LINE__.
8320         (oprintf): Use vsnprintf directly.
8321         (close_output_files): Use fatal rather than perror/exit.
8322         (note_def_vec, note_def_vec_alloc): Use create_field_at.
8323         (main): Set progname.  Don't use exit.
8324         * gengtype-yacc.y (struct_fields): Use create_field_at.
8325         (option, optionseqopt): Delete.
8326         (optionseq): Consolidate productions from option here so we
8327         can use the first argument to create_option.
8328
8329         * gengtype-lex.l: Distinguish unions from structures in the
8330         token type.  Don't call find_structure; return the tag as a string.
8331         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
8332         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
8333         Reorganize typedef_struct production accordingly.
8334         Use create_nested_ptr_option.
8335         * gengtype.c (create_nested_ptr_option): New function.
8336         * gengtype.h: Declare it.
8337
8338         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
8339         (string_type): Don't declare.
8340         (do_scalar_typedef): Declare.
8341         (create_scalar_type): Update prototype.
8342         * gengtype.c (string_type): Make static.
8343         (scalar_nonchar, scalar_char): New.
8344         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
8345         (resolve_typedef): Use scalar_nonchar for error recovery.
8346         (create_scalar_type): Remove name_len field.  Return scalar_char
8347         or scalar_nonchar as appropriate.
8348         (adjust_field_type): Look at scalar_is_char boolean to decide whether
8349         to use string_type.
8350         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
8351         whenever possible.
8352         (main): Initialize scalar_char and scalar_nonchar before calling
8353         gen_rtx_next.
8354         * gengtype-lex.l: Adjust for removal of second argument to
8355         create_scalar_type.  Use yylval.s instead of yylval.t when
8356         returning SCALAR.
8357         * gengtype-yacc.y: Type of SCALAR is string.  Call
8358         create_scalar_type from type:SCALAR rule.  Adjust for removal of
8359         second argument to create_scalar_type.
8360
8361         * vec.h: Remove all #if IN_GENGTYPE blocks.
8362         Add comment saying that changes may require adjustments to gengtype.
8363         * gengtype.c: Don't include coretypes.h or tm.h.
8364         Add comment to inclusion of errors.h.
8365         (note_def_vec, note_def_vec_alloc): New functions.
8366         * gengtype.h: Declare new functions.
8367         * gengtype-lex.l: Don't include coretypes.h.
8368         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
8369         Delete.
8370         (update_lineno): Remove unnecessary prototype.
8371         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
8372         (VEC rule): Just return VEC_TOKEN.
8373         * gengtype-yacc.y (VEC_TOKEN): New token type.
8374         (type): Add a production for VEC(a,b).
8375         * Makefile.in: Update dependencies.
8376
8377         * gengtype-lex.l: Remove rules for parsing pointer-to-function
8378         typedefs that use the old PARAMS macro.
8379
8380         * gengtype-lex.l: Remove all rules and states relating to yacc
8381         input files.
8382         * gengtype-yacc.y: Similarly.
8383         * gengtype.c (note_yacc_type): Delete function.
8384         * gengtype.h: Update prototypes.
8385
8386 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
8387
8388         * tree-pretty-print.c (dump_generic_node): Report precision of
8389         unnamed integer types.
8390
8391 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
8392
8393         * ifcvt.c (noce_try_store_flag_constants): Don't check
8394         no_new_pseudos here.
8395         (noce_try_store_flag_constants): Don't check no_new_pseudos.
8396         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
8397         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
8398         noce_try_sign_mask): Likewise.
8399         (if_convert): Check no_new_pseudos here.
8400
8401         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
8402         Remove prototypes.
8403         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
8404         (noce_get_condition): Handle new then_else_reversed argument.
8405         (noce_init_if_info): Remove, fold into noce_find_if_block.
8406         (noce_process_if_block): Take a struct noce_if_info as the
8407         argument.  Don't set up one based on ce_if_info.  Update pointer
8408         references accordingly.
8409         (cond_move_process_if_block): Likewise.
8410         (process_if_block): Removed.
8411         (find_if_block): Removed.  Move functionality two new functions,
8412         noce_find_if_block and cond_exec_find_if_block.
8413         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
8414         blocks and the symmetric IF-ELSE-JOIN case.
8415         (cond_exec_find_if_block): Also new function mostly based on old
8416         find_if_block and process_if_block.
8417         (find_if_header): Replace find_if_block call with separately
8418         guarded calls to noce_find_if_block and cond_exec_find_if_block.
8419         (find_cond_trap): Update noce_get_condition call.
8420         (dead_or_predicable): Likewise.
8421
8422 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
8423
8424         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
8425         Remove.
8426         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
8427         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
8428         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
8429         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
8430         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
8431         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
8432         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
8433         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
8434         __builtin_ia32_psrad128 builtins.
8435
8436 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
8437
8438         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
8439         * config/i386/constraints.md
8440         (define_constraint "I"): Use IN_RANGE macro.
8441         (define_constraint "J"): Ditto.
8442         (define_constraint "K"): Ditto.
8443         (define_constraint "M"): Ditto.
8444         (define_constraint "N"): Ditto.
8445         (define_constraint "O"): Ditto.
8446         * config/i386/predicates.md
8447         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
8448         (define_predicate "const_0_to_3_operand"): Ditto.
8449         (define_predicate "const_0_to_7_operand"): Ditto.
8450         (define_predicate "const_0_to_15_operand"): Ditto.
8451         (define_predicate "const_0_to_63_operand"): Ditto.
8452         (define_predicate "const_0_to_255_operand"): Ditto.
8453         (define_predicate "const_1_to_31_operand"): Ditto.
8454         (define_predicate "const_2_to_3_operand"): Ditto.
8455         (define_predicate "const_4_to_7_operand"): Ditto.
8456
8457 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
8458
8459         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
8460         in SImode for save_world.
8461         * config/rs6000/altivec.md (save_world, restore_world): Convert to
8462         LR hard reg.
8463
8464 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
8465
8466         PR tree-optimization/30784
8467         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
8468         BIT_FIELD_REF.
8469
8470 2007-03-25  Revital Eres  <eres@il.ibm.com>
8471
8472         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
8473           Fold movement_possibility function into it.
8474
8475 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
8476
8477         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
8478         (load_macho_picbase_{si,di}): Convert to LR hard reg.
8479         (call_indirect_nonlocal_darwin64): Same.
8480         (call_nonlocal_darwin64): Same.
8481         (call_value_indirect_nonlocal_darwin64): Same.
8482         (call_value_nonlocal_darwin64): Same.
8483         (sibcall_nonlocal_darwin64): Same.
8484         (sibcall_value_nonlocal_darwin64): Same.
8485         (sibcall_symbolic_64): Same.
8486         (sibcall_value_symbolic_64): Same.
8487         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
8488         LR pseudo.
8489         (rs6000_emit_load_toc_table): Same.
8490         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
8491         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
8492         (mull_call): Same.
8493         (divss_call): Same.
8494         (divus_call): Same.
8495         (quoss_call): Same.
8496         (quous_call): Same.
8497         (load_toc_v4_pic_si): Same
8498         (load_toc_v4_PIC_1): Same.
8499         (load_toc_v4_PIC_1b): Same.
8500         (call_indirect_aix{32,64}): Same.
8501         (call_value_indirect_aix{32,64}): Same.
8502         (call): Same.
8503         (call_value): Same.
8504         (call_local{32,64}): Same.
8505         (call_value_local{32,64}): Same.
8506         (call_indirect_nonlocal_aix{32,64}): Same.
8507         (call_nonlocal_aix{32,64}): Same.
8508         (call_value_indirect_nonlocal_aix{32,64}): Same.
8509         (call_value_nonlocal_aix{32,64}): Same.
8510         (call_indirect_nonlocal_sysv<mode>): Same.
8511         (call_nonlocal_sysv<mode>): Same.
8512         (call_value_indirect_nonlocal_sysv<mode>): Same.
8513         (call_value_nonlocal_sysv<mode>): Same.
8514         (sibcall): Same.
8515         (sibcall_local{32,64}): Same.
8516         (sibcall_value_local{32,64}): Same.
8517         (sibcall_nonlocal_aix{32,64}): Same.
8518         (sibcall_value_nonlocal_aix{32,64}): Same.
8519         (sibcall_nonlocal_sysv<mode>): Same.
8520         (sibcall_value): Same.
8521         (sibcall_value_nonlocal_sysv<mode>): Same.
8522
8523 2007-03-24  Paul Brook  <paul@codesourcery.com>
8524
8525         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
8526         * config/arm/linux-eabi.h: Remove legacy syscall hack.
8527
8528 2007-03-24  Richard Henderson  <rth@redhat.com>
8529
8530         * config/ia64/constraints.md: New file.
8531         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
8532         satisfies_constraint_?.
8533         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
8534         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
8535         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
8536         ia64_output_mi_thunk): Likewise.
8537         (ia64_const_ok_for_letter_p): Remove.
8538         (ia64_const_double_ok_for_letter_p): Remove.
8539         (ia64_extra_constraint): Remove.
8540         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
8541         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
8542         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
8543         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
8544         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
8545         EXTRA_MEMORY_CONSTRAINT): Remove.
8546         * config/ia64/ia64.md: Include constriants.md.  Replace
8547         CONST_OK_FOR_? with satisfies_constraint_?.
8548
8549 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
8550             H.J. Lu  <hongjiu.lu@intel.com>
8551
8552         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
8553         DPD or BID name.
8554         (name macros): Use DPD_BID_NAME to convert names properly.
8555
8556         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
8557         decimal floating point format.
8558         (init_floating_libfuncs): Change decimal functions so that they
8559         have a "bid_" prefix if the decimal system uses the BID format,
8560         and "dpd_" prefix if the decimal system uses the DPD format.
8561         (init_interclass_conv_libfuncs): Ditto.
8562         (init_intraclass_conv_libfuncs): Ditto.
8563
8564         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
8565         using the BID format.
8566
8567         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
8568         whether we are using the BID decimal format.
8569         * configure: Regenerate.
8570
8571         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
8572         the compiler has decimal floating point enabled.  Define
8573         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
8574         instead of DPD.
8575
8576         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
8577         using the BID format.
8578
8579         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
8580         whether we are using the BID decimal format.
8581         * configure: Regenerate.
8582
8583         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
8584         the compiler has decimal floating point enabled.  Define
8585         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
8586         instead of DPD.
8587
8588         * doc/install.texi (--enable-decimal-float): Document BID and DPD
8589         options, and that it is enabled for i386/x86_64 systems.
8590
8591         * Makefile.in (enable_decimal_float): New.
8592         (DECNUMFMT): New.
8593         (DECNUMINC): Add  -I$(DECNUMFMT).
8594         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
8595         to $(DECNUMFMT) from $(DECNUM).
8596
8597         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
8598         Substitute enable_decimal_float.
8599         * configure: Regenerated.
8600
8601         PR other/30529
8602         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
8603         unsigned long.
8604
8605         * configure.ac: Enable decimal float for x86_64-*-linux*.
8606         * configure: Regenerated.
8607
8608         PR other/30530
8609         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
8610         decimal128ClearSign to flip and clear the sign bit in decimal128.
8611         (decimal_real_maxval): Set decimal128SetSign to set the sign
8612         bit in decimal128.
8613
8614 2007-03-23  Ian Lance Taylor  <iant@google.com>
8615
8616         * fold-const.c (fold_binary): Correct warning for X - c >= X.
8617
8618 2007-03-23  Ian Lance Taylor  <iant@google.com>
8619
8620         * tree-dump.c (dump_files): Correct comment.
8621
8622 2007-03-23  Ian Lance Taylor  <iant@google.com>
8623
8624         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
8625
8626 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
8627
8628         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
8629         in cfglayout mode.  Don't go into and out of cfglayout mode.
8630         Link the blocks in the order of the constructed traces.
8631         (rest_of_handle_tracer): Adjust call to tracer.
8632         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
8633         Don't go into cfglayout mode.
8634         (rtl_loop_done): Don't go out of cfglayout mode.
8635         * cfglayout.c (relink_block_chain): New function, split out from...
8636         (fixup_reorder_chain): ...here.  Remove redundant checking.
8637         (cfg_layout_finalize): Don't clear the header, footer, and aux
8638         fields here, move the code to do so to relink_block_chain.  Likewise
8639         for free_original_copy_tables.
8640         * rtl.h (tracer): Update prototype.
8641         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
8642         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
8643         mode.  Use relink_block_chain to serialize the CFG according to the
8644         new basic block order.  Move targetm.cannot_modify_jumps_p check from
8645         here...
8646         (gate_handle_reorder_blocks): ...to here.
8647         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
8648         from here...
8649         (gate_duplicate_computed_gotos): ...to here.
8650         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
8651         something always changes when going into and out of cfglayout mode.
8652         Perform an expensive cfg cleanup while going into cfglayout mode.
8653         Always update liveness information on HAVE_conditional_execution
8654         targets.  Reserialize the basic blocks and go out of cfglayout mode.
8655         * reg-stack.c: Include cfglayout.h.
8656         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
8657         the call to reorder_basic_blocks.
8658         * basic-block.h (reorder_basic_blocks): Update prototype.
8659         (relink_block_chain): New prototype.
8660         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
8661
8662 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
8663
8664         * config/mips/mips.md (type, hazard, *movdi_32bit,
8665         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
8666         *movhi_internal, *movqi_internal, *movsf_hardfloat,
8667         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
8668         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
8669         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
8670         applicable.
8671         (movcc): Change first xfer to multi.
8672         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
8673         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
8674         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
8675         config/mips/generic.md: Change reservations using "xfer" to use
8676         "mfc,mtc".
8677         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
8678         using match_operand.
8679         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
8680         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
8681         examining mode.
8682         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
8683
8684 2007-03-22  Richard Henderson  <rth@redhat.com>
8685
8686         * config/i386/i386.c: Remove unnecessary function declarations.
8687         Move targetm definition, and all related macros, to the end of
8688         the file.  Resort some functions to put definitions before uses.
8689         (ix86_attribute_table): Make static.  Move to end of file.
8690         (ix86_gimplify_va_arg): Make static.
8691
8692 2007-03-22  Richard Henderson  <rth@redhat.com>
8693
8694         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
8695         don't increase local_regparm with force_align_arg_pointer check.
8696         (ix86_function_sseregparm): Assert 32-bit.
8697         (type_has_variadic_args_p): New.
8698         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
8699         type_has_variadic_args_p.
8700         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
8701         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
8702         use memset instead.  Do maybe_vaarg check first; skip attribute
8703         tests if true; skip attribute tests for 64-bit.
8704         (construct_container): Remove TARGET_DEBUG_ARG.
8705         (function_arg_advance_32, function_arg_advance_64): Split out ...
8706         (function_arg_advance): ... from here.
8707         (function_arg_32, function_arg_64): Split out ...
8708         (function_arg): ... from here.
8709         (ix86_pass_by_reference): Tidy.
8710         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
8711         (function_value_32): New, from parts of ix86_function_value
8712         and ix86_value_regno.
8713         (function_value_64): New, from parts of ix86_function_value
8714         and ix86_libcall_value.
8715         (ix86_function_value_1): New.
8716         (ix86_function_value, ix86_libcall_value): Use it.
8717         (return_in_memory_32, return_in_memory_64): Split out ...
8718         (ix86_return_in_memory): ... from here.
8719         (ix86_struct_value_rtx): Skip for 64-bit.
8720         (ix86_libcall_value, ix86_value_regno): Remove.
8721         (setup_incoming_varargs_64): Split out ...
8722         (ix86_setup_incoming_varargs): ... from here.
8723         (ix86_va_start): Remove TARGET_DEBUG_ARG.
8724         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
8725         * config/i386/i386-protos.h (ix86_function_value): Remove.
8726         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
8727
8728 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8729
8730         PR other/23572
8731         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
8732         infinities not supported, otherwise emit warning if -Woverflow. On
8733         underflow, emit warning if -Woverflow.
8734         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
8735         and 0 otherwise.
8736         * real.h (real_from_string): Update declaration
8737
8738 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
8739             Richard Henderson  <rth@redhat.com>
8740
8741         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
8742         * calls.c (compute_argument_block_size, expand_call,
8743         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
8744         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
8745         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
8746         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
8747         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
8748         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
8749         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
8750         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
8751         Set to 1.
8752
8753 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
8754
8755         * c-incpath.c (add_sysroot_to_chain): New.
8756         (merge_include_chains): Add sysroot argument.  Call
8757         add_sysroot_to_chain if sysrooted.
8758         (register_include_chains): Update call to merge_include_chains.
8759         * doc/cppopts.texi: Document use of '=' in include directory
8760         arguments.
8761
8762 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
8763
8764         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
8765         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
8766         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
8767         insn pattern using X87MODEF12 mode macro.
8768
8769 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
8770
8771         * regmove.c (regmove_optimize): Use reg_mentioned_p
8772         instead of reg_overlap_mentioned_p for DST.
8773
8774 2007-03-21  Mike Stump  <mrs@apple.com>
8775
8776         * c.opt: Fixup for Objective-C/C++.
8777
8778 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
8779
8780         * explow.c (convert_memory_address): Fold memory reference when
8781         POINTERS_EXTEND_UNSIGNED < 0
8782
8783 2007-03-21  Richard Henderson  <rth@redhat.com>
8784
8785         PR target/31245
8786         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
8787         * config/i386/mmintrin.h (__m64): Likewise.
8788         * config/i386/xmmintrin.h (__m128): Likewise.
8789
8790 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
8791
8792         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
8793         (VXWORKS_OS_CPP_BUILTINS): Define.
8794         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
8795         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
8796
8797 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
8798
8799         * rtl.h (constant_pool_reference_p): Delete.
8800         (find_constant_src): Declare.
8801         * rtlanal.c (find_constant_src): New function.
8802         * simplify-rtx.c (constant_pool_reference_p): Delete.
8803         * config/i386/i386.md: Use find_constant_src instead of
8804         constant_pool_reference_p/avoid_constant_pool_reference pairs.
8805
8806 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
8807
8808         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
8809         * c-cppbuiltin.c (c_cpp_builtins): Define them.
8810
8811 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
8812
8813         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
8814         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
8815         (arm_elf_asm_constructor): Use it.
8816         (arm_elf_asm_destructor): New function.
8817
8818 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
8819
8820         * jump.c (mark_jump_label): Treat SEQUENCE specially.
8821
8822 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
8823
8824         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
8825
8826 2007-03-19  Andrew Haley  <aph@redhat.com>
8827
8828         PR tree-optimization/31264
8829         * tree-vrp.c (register_edge_assert_for_1): Don't look though
8830         VIEW_CONVERT_EXPRs.
8831
8832 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
8833
8834         PR rtl-optimization/30907
8835         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
8836         (fwprop_init): Always call loop_optimizer_initialize.
8837         (fwprop_done): Always call loop_optimizer_finalize.
8838         (fwprop): We always have loop info now.
8839         (gate_fwprop_addr): Remove.
8840         (pass_fwprop_addr): Use gate_fwprop as gate.
8841
8842         PR rtl-optimization/30841
8843         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
8844         df_chain_alloc): Call df_reorganize_refs unconditionally.
8845         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
8846         refs_organized to refs_organized_size.
8847         (df_ref_create_structure): Use refs_organized_size instead of
8848         bitmap_size if refs had been organized, and keep refs_organized_size
8849         up-to-date.
8850         * df.h (struct df_ref_info): Change refs_organized to
8851         refs_organized_size.
8852         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
8853         bitmap_size.
8854
8855 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
8856
8857         * except.c (output_function_exception_table): Do not reference the
8858         EH personality routine for functions that do not require an
8859         exception table.
8860
8861 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
8862
8863         PR c/30762
8864         * c-typeck.c (convert_for_assignment): Call comptypes for
8865         RECORD_TYPE or UNION_TYPE.
8866
8867         PR inline-asm/30505
8868         * reload1.c (reload): Do invalid ASM checking after
8869         cleanup_subreg_operands.
8870
8871 2007-03-19  Jeff Law  <law@redhat.com>
8872
8873         * tree-cfg.c (find_taken_edge): Tighten conditions for
8874         optimizing computed gotos.
8875
8876 2007-03-19  Michael Matz  <matz@suse.de>
8877
8878         * builtins.c (expand_builtin_sync_operation,
8879         expand_builtin_compare_and_swap,
8880         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
8881         correctly.
8882
8883         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
8884         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
8885         for operand 3.
8886
8887 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8888
8889         * doc/tm.texi: Add brackets around the return type of
8890         TARGET_SECONDARY_RELOAD.
8891
8892 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8893         Richard Guenther  <rguenther@suse.de>
8894
8895         PR tree-optimization/31254
8896         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
8897         Use handled_component_p () where appropriate.  Continue
8898         propagating into the rhs if we propagated into an INDIRECT_REF
8899         on the lhs.
8900
8901 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8902
8903         * config/s390/s390.md (op_type attribute): RRR instruction type added.
8904         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
8905         (xde, xdee): Mode attributes adjusted to support DFP modes.
8906         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
8907         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
8908         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
8909         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
8910         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
8911         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
8912         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
8913         numbers.
8914         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
8915         "movsf"): Insn definitions removed.
8916         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
8917         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
8918         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
8919         definitions added.
8920         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
8921         "reload_in<mode>", "reload_out<mode>"): Expander added.
8922         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
8923         Expander removed.
8924
8925 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8926
8927         * config/s390/s390.md: Only non-functional changes.  Renamed
8928         FPR mode macro to BFP all over the file.
8929
8930 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8931
8932         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
8933         (op_type attribute): RRF instruction type added.
8934         (fT0): New mode attribute.
8935         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
8936         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
8937         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
8938         no secondary memory is needed when moving DFmode values between GPRs
8939         and FPRs.
8940
8941 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8942
8943         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
8944         inverted and documentation adjusted.
8945         ("mhard-dfp", "msoft-dfp"): New options.
8946         * config/s390/s390.c (s390_handle_arch_option): New architecture
8947         switch: z9-ec.
8948         (override_options): Sanity checks for the new options added.
8949         * config.gcc: New architecture switch: z9-ec.
8950         * config/s390/s390.h (processor_flags): PF_DFP added.
8951         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
8952         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
8953         when the bit is NOT set so remove it from the defaults.
8954
8955 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8956
8957         * genemit.c (main): Print include statement for dfp.h.
8958         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
8959         is not available.
8960
8961 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
8962
8963         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
8964
8965 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
8966
8967         PR target/31022
8968         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
8969         instead of PATTERN.
8970
8971 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8972
8973         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
8974         attr_length_call, output_call, output_indirect_call): Cleanup
8975         formatting of targetm calls.
8976
8977 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
8978
8979         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
8980
8981 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8982
8983         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
8984         reservation, bypass and anti-bypass descriptions for these instructions.
8985         Update move patterns.
8986         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
8987         TYPE_FPSTORE.
8988
8989 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
8990
8991         * tree-vect-transform.c (get_initial_def_for_induction): Replace
8992         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
8993         (get_initial_def_for_reduction): Likewise.
8994
8995 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
8996
8997         Fix PR tree-optimization/29922
8998         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
8999         (get_representative): Removed.
9000         (value_dies_in_block_x): Update for rvuse removal.
9001         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
9002         (compute_antic_aux): Handle when PHI nodes appear in
9003         non-single-successors.
9004         (dump_bitmap_of_names): Removed.
9005         (compute_antic_safe): Renamed and removed rvuse calculation.
9006         Calculate only antic safe.
9007         (insert_into_preds_of_block): Remove assert.
9008         (execute_pre): Update for renamed functions.
9009         (defer_or_phi_translate_block): New function.
9010
9011 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
9012
9013         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
9014         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
9015         typos.
9016         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
9017         Follow spelling conventions.
9018
9019         * tree-data-ref.h: Remove the prototype for analyze_array.
9020
9021 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
9022
9023         PR tree-optimization/31041
9024         * tree-vect-transform.c (get_initial_def_for_induction): Call
9025         force_gimple_operand.
9026
9027 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
9028
9029         * ipa-type-escape.c (look_for_casts) : Revert code to use
9030         handled_component_p due to ada test a-numaux.adb.
9031
9032 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
9033
9034         * final.c (final_scan_insn): Alter the condition of a
9035         conditional trap if we have nonstandard CC.
9036
9037 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9038
9039         * configure.ac: Remove excess quoting from asm line 0 test.
9040         * configure: Rebuilt.
9041
9042 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9043
9044         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
9045         * c-common.c (convert_and_check): Move warning logic to...
9046         (warnings_for_convert_and_check): ...here. Define.
9047         * c-common.h (warnings_for_convert_and_check): Declare.
9048
9049 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9050
9051         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
9052         (output_call): Likewise.
9053
9054 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
9055
9056         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
9057
9058 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
9059
9060         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
9061
9062 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
9063
9064         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
9065         opteron, athlon-64 and athlon-fx processor_alias_table entries.
9066
9067 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
9068
9069         PR tree-optimization/31183
9070         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
9071         Use double_int instead of unsigned int for representing access_strides.
9072         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
9073
9074 2007-03-16  Richard Guenther  <rguenther@suse.de>
9075
9076         PR tree-optimization/31146
9077         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
9078         to allow recursion of forward_propagate_addr_expr.
9079         (forward_propagate_addr_into_variable_array_index): Likewise.
9080         (forward_propagate_addr_expr): Likewise.
9081         (tree_ssa_forward_propagate_single_use_vars): Likewise.
9082         (forward_propagate_addr_expr_1): Recurse on simple copies
9083         instead of propagating into them.  Do so for useless conversions
9084         as well.
9085         (forward_propagate_addr_expr): Clean up unused statements after
9086         recursion.
9087
9088 2007-03-16  Richard Guenther  <rguenther@suse.de>
9089
9090         * builtins.c (expand_builtin_cexpi): Use the right argument
9091         for the expansion via cexp.
9092
9093 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9094
9095         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
9096         * configure: Rebuilt.
9097
9098 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
9099
9100         PR debug/29906
9101         * dwarf2out.c (force_type_die): Adjust comment.
9102         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
9103
9104 2007-03-15  DJ Delorie  <dj@redhat.com>
9105
9106         * config/frv/predicates.md (minmax_operator): Don't check operands
9107         here.
9108
9109 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
9110
9111         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
9112         Update constant estimates of number of iterations.
9113         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
9114         argument renamed to "realistic".
9115         (compute_estimated_nb_iterations): Removed.
9116         (record_niter_bound): New function.
9117         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
9118         call record_nonwrapping_iv with upper = false.
9119         (infer_loop_bounds_from_signedness): Pass upper argument to
9120         record_nonwrapping_iv.
9121         (estimate_numbers_of_iterations_loop): Do not call
9122         compute_estimated_nb_iterations.  Record estimate based on profile
9123         information.  Initialize the constant estimates of number of
9124         iterations.
9125         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
9126         estimates.
9127         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
9128         number of iterations is too small.
9129         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
9130         (EST_NOT_AVAILABLE): Removed.
9131         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
9132         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
9133         fields.
9134
9135 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
9136
9137         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
9138         Handle NE_EXPR guards.
9139
9140 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9141
9142         PR c++/24924
9143         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
9144         Set also -pedantic-errors by default for the  preprocessor unless
9145         -fpermissive is given.
9146
9147 2007-03-15  Richard Guenther  <rguenther@suse.de>
9148
9149         PR middle-end/29719
9150         PR middle-end/31161
9151         * builtins.c (expand_builtin_cexpi): As a fallback if we
9152         don't have builtins for sincos or cexp create a function
9153         declaration for cexp and expand to a call to that.
9154         (expand_builtin_int_roundingfn): Always fall
9155         back to floor/ceil and its variants even if they may be
9156         not available.
9157
9158 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
9159
9160         PR middle-end/31159
9161         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
9162         jump tables, move the call to delete_dead_jumptables from here...
9163         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
9164         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
9165         don't allow merging of blocks that try_redirect_by_replacing_jump
9166         also does not handle when not optimizing.
9167
9168 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
9169             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
9170
9171         * config/i386/i386.md (x86_sahf_1): Correctly handle
9172         HAVE_AS_IX86_SAHF.
9173
9174 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
9175
9176         PR target/31167
9177         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
9178         x86_64_general_operand as operand[2] predicate.  Remove "iF"
9179         from operand constraints and use "e" constraint instead.
9180         (*subti3_1, *subti3_1 splitter): Ditto.
9181         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
9182         operand[1] predicate.
9183
9184 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
9185
9186         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
9187         arrays, multiply the access strides by the size of the sub-array.
9188         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
9189
9190 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
9191
9192         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
9193         the configured assembler supports the sahf mnemonic.
9194         * configure: Regenerate.
9195         * config.in: Regenerate.
9196
9197         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
9198         emit "sahf" or ".byte\t0x9e" as asm template.
9199
9200 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
9201
9202         PR 31018
9203         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
9204         option to replace hard coded TARGET_xxx in md file.
9205         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
9206         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
9207         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
9208         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
9209         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
9210         (X86_TUNE_NOT_VECTORMODE): Ditto.
9211         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
9212         (TUNE_AVOID_VECTOR_DECODE): Ditto.
9213         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
9214         (TUNE_SLOW_IMUL_IMM8): Ditto.
9215         (TUNE_MOVE_M1_VIA_OR): Ditto.
9216         (TUNE_NOT_UNPAIRABLE): Ditto.
9217         (TUNE_NOT_VECTORMODE): Ditto.
9218
9219         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
9220         options.
9221
9222         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
9223         tuning options instead of hard coded TARGET_xxx.
9224         (fix ssemode peephole2's): Ditto.
9225         (imul peephole2's): Ditto.
9226         (movsi_or): Ditto.
9227         (movdi_or_rex64): Ditto.
9228         (move peephole2): Ditto.
9229         (not peephole2's): Ditto.
9230
9231 2007-03-14  Dirk Mueller  <dmueller@suse.de>
9232
9233         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
9234         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
9235         * c-parser.c (c_parser_if_body): Always add an empty statement in case
9236         of empty body.
9237         * c-parser.c (c_parser_do_statement): Warn about empty body in
9238         do/while statement.
9239         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
9240         * doc/invoke.texi (-Wempty-body): Update documentation.
9241
9242 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9243
9244         PR c/21438
9245         * c-common.h (warn_for_div_by_zero): Declare.
9246         * c-common.c (warn_for_div_by_zero): Define.
9247         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
9248         warning.
9249
9250 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9251
9252         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
9253         to PREFIX and STANDARD_PREFIX.
9254
9255 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9256             Phil Edwards  <phil@codesourcery.com>
9257
9258         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
9259         (__gthread_once_t): Remove busy field for RTPs.
9260         (__GTHREAD_ONCE_INIT): Update accordingly.
9261
9262 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
9263
9264         * doc/invoke.texi: Document VxWorks options.
9265
9266 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
9267
9268         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
9269
9270 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
9271
9272         PR tree-optimization/30590
9273         * tree-nrv.c (tree_nrv): Check for the partial update of the
9274         return value.
9275
9276 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
9277
9278         * flags.h (flag_random_seed): Remove declaration, in favor of...
9279         * toplev.h (get_random_seed, set_random_seed): ... these.
9280         * tree.c (get_file_function_name): Use the former.
9281         * opts.c (common_handle_option): Use the latter.
9282         * toplev.c
9283
9284 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
9285
9286         PR middle-end/31127
9287         * cse.c (cse_find_path): Do not bail out if a basic block that
9288         we already visited now becomes part of a path that starts at a
9289         different basic block.  Just disallow this, to make sure we
9290         visit each basic block at most once.
9291
9292 2007-03-13  Jan Hubicka  <jh@suse.cz>
9293
9294         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
9295         when profile esitmate is present, calls with very low frequency are
9296         cold.
9297
9298 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
9299
9300         PR tree-optimization/30730
9301         PR tree-optimization/26900
9302         * tree-ssa-loop-niter.c: Include gmp.h.
9303         (bounds): New type.
9304         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
9305         split_to_var_and_offset, determine_value_range,
9306         bound_difference_of_offsetted_base, refine_bounds_using_guard,
9307         bound_difference, bounds_add, bounds_negate,
9308         number_of_iterations_ne_max, dump_affine_iv): New functions.
9309         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
9310         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
9311         difference of initial and final value of control iv to validate
9312         results.
9313         (number_of_iterations_cond): Add loop parameter.  Determine bounds
9314         on the difference of the extremes of the control iv.  Add dumps.
9315         (expand_simple_operations): Handle phi nodes.
9316         (simplify_using_initial_conditions): Do not record used conditions.
9317         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
9318         Do not set additional_info.
9319         (implies_nonnegative_p, implies_ge_p): Removed.
9320         (derive_constant_upper_bound): Do not use parameter `additional'.
9321         (record_estimate): Parameter `additional' removed.  Parameter
9322         `i_bound' added.  Do not call derive_constant_upper_bound.
9323         (record_nonwrapping_iv): Use derive_constant_upper_bound to
9324         bound the number of iterations estimate.
9325         (estimate_numbers_of_iterations_loop): Pass the estimate from
9326         the number of iterations analysis to record_estimate.
9327         * tree.h (multiple_of_p): Declare.
9328         * tree-scalar-evolution.c (expression_expensive_p): Removed.
9329         (scev_const_prop): Do not check expression_expensive_p.
9330         * fold-const.c (multiple_of_p): Exported.
9331         * double-int.c (double_int_mask): Exported.
9332         * double-int.h (double_int_mask): Declare.
9333         * tree-flow.h (struct tree_niter_desc): Removed additional_info
9334         field.  Added max field.
9335
9336 2007-03-13  David Taylor  <taylor@candd.org>
9337
9338         PR driver/12448:
9339         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
9340         default -MQ.
9341
9342 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9343
9344         PR target/31123
9345         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
9346         two unamed patterns.
9347
9348 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
9349
9350         * config/i386/i386.opt (mcx16, msahf): New options.
9351         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
9352         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
9353
9354         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
9355         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
9356         Output -mcx16 and -msahf options when corresponding bit is set.
9357
9358         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
9359         and -msahf options.
9360
9361 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
9362
9363         * configure.ac: Test for assembler tolerance to # 0 "".
9364         * configure, config.in: Rebuilt.
9365         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
9366
9367 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
9368
9369         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
9370
9371         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
9372         (handle_syscall): Handle direct system calls.
9373         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
9374
9375 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
9376
9377         * doc/invoke.texi: Fix cpp.info cross-reference.
9378         * doc/passes.texi: Fix gcc.info cross-reference.
9379
9380 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
9381
9382         PR tree-optimization/30835
9383         * lambda-code.c (can_convert_to_perfect_nest): Check whether
9384         bb_for_stmt is not NULL before accessing it.
9385
9386 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
9387
9388         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
9389         some multilibs.
9390
9391 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
9392
9393         PR 30635
9394         * doc/install.texi: Document --enable-stage1-languages
9395
9396 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
9397
9398         * tree-pass.h (pass_into_cfg_layout_mode,
9399         pass_outof_cfg_layout_mode): Declare.
9400         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
9401         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
9402         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
9403         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
9404
9405 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
9406
9407         * c-decl.c (warn_variable_length_array): New function.
9408         Refactored from grokdeclarator to handle warn_vla
9409         and handle unnamed array case.
9410         (grokdeclarator): Refactored VLA warning case.
9411         * c.opt (Wvla): New flag.
9412         * doc/invoke.texi (Wvla): New warning.
9413
9414 2007-03-12  Richard Henderson  <rth@redhat.com>
9415
9416         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
9417         (TARGET_SECTION_TYPE_FLAGS): New.
9418
9419 2007-03-12  Richard Henderson  <rth@redhat.com>
9420
9421         * config/darwin.c (machopic_reloc_rw_mask): New.
9422         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
9423         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
9424
9425 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
9426
9427         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
9428         * cppdefault.h (cpp_PREFIX): Document.
9429         (cpp_PREFIX_len): Likewise.
9430         (cpp_EXEC_PREFIX): New variable.
9431         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
9432         * c-incpath.c (add_standard_paths): Correct logic for relocating
9433         paths within prefix.
9434
9435 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
9436
9437         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
9438         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
9439         mode macro.
9440         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
9441         fix_truncdfdi_sse using SSEMODEF mode macro.
9442         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
9443         fix_truncdfsi_sse using SSEMODEF mode macro.
9444         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
9445         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
9446
9447 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
9448
9449         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
9450         elfos.h to tm_file.
9451
9452 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
9453
9454         * tree.h : Add multiple_of_p declaration.
9455         * fold-const.c (multiple_of_p): Make multiple_of_p public.
9456         * ipa-type-escape.c (results_of_malloc): Redundant.
9457         (visited_stmts): New. Visited stmt for walk_use_def_chains.
9458         (cast_type): Extended with new members.
9459         (check_cast): Returns cast_type.
9460         (cast): New structure for data of walk_use_def_chains.
9461         (is_malloc_result, is_cast_from_non_pointer_1,
9462         is_cast_from_non_pointer,
9463         is_array_access_through_pointer_and_index): New functions.
9464         (look_for_casts): Returns cast types.
9465         (check_call): Returns void.
9466         (okay_pointer_operation): Use support of pointer plus index,
9467         pointer plus constant and allow all multiplications.
9468
9469 2007-03-11  Richard Guenther  <rguenther@suse.de>
9470
9471         PR tree-optimization/31115
9472         * tree-vrp.c (extract_range_from_binary_expr): Make sure
9473         the shift count is positive and non-anti-range for RSHIFT_EXPR.
9474         A shift count of zero is not special as with *_DIV_EXPR.
9475         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
9476         direction.
9477
9478 2007-03-11  Ian Lance Taylor  <iant@google.com>
9479
9480         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
9481         the *_DIV_EXPR codes correctly with overflow infinities.
9482
9483 2007-03-11  Ira Rosen  <irar@il.ibm.com>
9484
9485         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
9486         indicate success/failure of the analysis. Add negation to subtrahend
9487         in case of subtraction. Fail if both operands contain constants.
9488         (create_data_ref): Fail if analyze_offset fails.
9489
9490 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
9491
9492         * config/i386/i386.md (frndintxf2): Rename to ...
9493         (rintxf2): ... this. Remove expander having same name.
9494         (rintsf2, rintdf2): Implement using SSEMODEF macro.
9495         (roundsf2, rounddf2): Ditto.
9496         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
9497         (lround<mode>di2, lround<mode>si2): Ditto.
9498
9499 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
9500
9501         * lower-subreg.c: Include except.h.
9502         (decompose_multiword_subregs): Verify that the only control flow
9503         insns we can split are loads to multi-words pseudos.
9504         Handle breaking such blocks after splitting, instead of calling
9505         find_many_sub_basic_blocks.
9506
9507         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
9508         on the new basic block.  Add a lengthy comment explaining why we
9509         thought this was necessary.
9510         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
9511
9512 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
9513
9514         PR c++/30924
9515         * tree.c (walk_type_fields): Recurse into the element type of
9516         ARRAY_TYPEs if there is a pointer set.
9517
9518 2007-03-10  Dirk Mueller  <dmueller@suse.de>
9519
9520         * c-common.c (warn_logical_operator): Fix condition.
9521
9522 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
9523
9524         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
9525         quotation mark.
9526         * config/darwin.c (machopic_select_section): Remove superfluous
9527         argument in call to categorize_decl_for_section.  Remove unused
9528         variable shlib.
9529
9530 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
9531
9532         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
9533         defined.
9534         * configure: Regenerate.
9535
9536 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
9537
9538         PR target/31101
9539         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
9540         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
9541         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
9542         Add LABEL_NUSES to emitted label.
9543         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
9544         branch probability value to emitted jump insn.
9545         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
9546         Do not check life information and do not re-arrange input operands
9547         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
9548
9549 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9550
9551         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
9552         the change of decode_asm_operands.
9553
9554 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9555
9556         * mode-switching.c (create_pre_exit): Skip blockage insn.
9557
9558 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
9559
9560         * tree-pass.h (TODO_update_smt_usage): Remove.
9561         Update all users.
9562         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
9563         argument SOME.
9564         Update all users.
9565
9566 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9567
9568         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
9569         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
9570         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
9571         SOM target.
9572
9573 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
9574
9575         * gcc.c: Document %{, in big comment at top.
9576         (input_suffix_matches): Remove special handling for .s and
9577         .S.
9578         (input_spec_matches): New.
9579         (handle_braces): Handle %{,.
9580         (validate_switches): ',' indicates a value which is not a switch.
9581         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
9582         to detect assembler input.
9583         * config/i386/sol2.h (CPP_SPEC): Likewise.
9584         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
9585         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
9586         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
9587         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
9588         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
9589         -m64 causes deployment target to default to 10.5.
9590         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
9591
9592 2007-03-09  Richard Henderson  <rth@redhat.com>
9593
9594         PR target/26090
9595         * target.h (targetm.asm.out.reloc_rw_mask): New.
9596         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
9597         (TARGET_ASM_OUT): Use it.
9598         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
9599         * varasm.c (categorize_decl_for_section): Remove shlib argument;
9600         use the new reloc_rw_mask target hook instead.
9601         (default_section_type_flags_1): Merge into...
9602         (default_section_type_flags): ... here.
9603         (decl_readonly_section_1): Merge into...
9604         (decl_readonly_section): ... here.
9605         (default_elf_select_section_1): Merge into...
9606         (default_elf_select_section): ... here.
9607         (default_unique_section_1): Merge into...
9608         (default_unique_section): ... here.
9609         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
9610         (default_select_rtx_section): Use it.
9611         (default_elf_select_rtx_section): Likewise.
9612         * output.h: Update to match.
9613         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
9614         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
9615         (TARGET_ASM_RELOC_RW_MASK): New.
9616         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
9617         to categorize_decl_for_section.
9618         (x86_64_elf_unique_section): Likewise.
9619         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
9620         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
9621         (TARGET_ASM_RELOC_RW_MASK): New.
9622         * config/ia64/ia64.c (ia64_rwreloc_select_section,
9623         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
9624         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
9625         (TARGET_RWRELOC): Remove.
9626         (ia64_section_type_flags): Adjust call to default_section_type_flags.
9627         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
9628         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
9629         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
9630         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
9631         (rs6000_xcoff_select_section): Use decl_readonly_section.
9632         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
9633         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
9634         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
9635         (TARGET_SECTION_TYPE_FLAGS): Remove.
9636         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
9637
9638 2007-03-09  Roger Sayle  <roger@eyesopen.com>
9639
9640         * fold-const.c (fold_comparison): Remove compile-time evaluation of
9641         complex constant equality/inequality comparisons for here.
9642         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
9643         known at compile-time or can be simplified to a scalar comparison.
9644         (fold_relational_const): Move compile-time evaluation of complex
9645         constant equality/inequality comparisons to here.
9646
9647 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9648
9649         PR rtl-optimization/30643
9650         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
9651         dest_addr_elt.
9652         (fold_rtx): Recurse, like before 2006-11-03.
9653
9654 2007-03-09  DJ Delorie  <dj@redhat.com>
9655
9656         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
9657         m32c-pragma.o.
9658
9659 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
9660
9661         PR tree-optimization/30375
9662         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
9663         LHS of statements is not the same.
9664         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
9665
9666 2007-03-09  Chao-ying Fu  <fu@mips.com>
9667
9668         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
9669         REV 2.
9670         * doc/invoke.texi (-mdspr2): Document new option.
9671         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
9672         New unspec for DSP REV 2.
9673         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
9674         these instructions are extended in DSP REV 2.
9675         (mips-dspr2.md): Include.
9676         * config/mips/mips.opt (mdspr2): New option.
9677         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
9678         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
9679         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
9680         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
9681         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
9682         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
9683         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
9684         and 2 builtins.
9685         (bdesc_map): Add one field of unsupported_target_flags.
9686         (bdesc_arrays):  Update entries to have extra fields.  Add
9687         dsp_32only_bdesc.
9688         (mips_init_builtins): Initialize new function types.
9689         Check unsupported_target_fileds to filter out builtins.
9690         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
9691         TARGET_DSPR2.
9692         (ASM_SPEC): Pass mdspr2 to the assembler.
9693         * config/mips/mips-dspr2.md: New file.
9694
9695 2007-03-09  Sa Liu  <saliu@de.ibm.com>
9696
9697         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
9698
9699 2007-03-09  Ian Lance Taylor  <iant@google.com>
9700
9701         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
9702         argument) like -Wstrict-overflow=2.
9703         * doc/invoke.texi (Warning Options): Update documentation.
9704
9705 2007-03-09  Dirk Mueller  <dmueller@suse.de>
9706
9707         PR c++/17946
9708         * doc/invoke.texi (-Wlogical-op): Document.
9709         * common.opt (-Wlogical-op): New.
9710         * c-common.h (warn_logical_operator): Declare.
9711         * c-common.c (warn_logical_operator): Define.
9712         * c-typeck.c (parser_build_binary_op): Call
9713         warn_logical_operator.
9714
9715 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9716
9717         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
9718         * final.c (final_scan_insn): Test for non-"" file name.
9719
9720 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
9721
9722         * doc/loop.texi: Document the Omega linear constraints solver.
9723         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
9724         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
9725         omega-hash-table-size, omega-max-keys, and
9726         omega-eliminate-redundant-constraints.
9727         * tree-pass.h (pass_check_data_deps): Declared.
9728         * omega.c: New.
9729         * omega.h: New.
9730         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
9731         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
9732         pass_check_data_deps): New.
9733         * tree-data-ref.c (init_data_ref): Remove declaration.
9734         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
9735         (analyze_array): Renamed init_array_ref, move up initializations.
9736         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
9737         Removed arguments that are set to NULL.
9738         (analyze_indirect_ref): Correct indentation, correct call to
9739         init_pointer_ref.
9740         (object_analysis): Call init_array_ref instead of analyze_array.
9741         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
9742         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
9743         of DR_ACCESS_FNS_ADDR.
9744         (init_omega_eq_with_af, omega_extract_distance_vectors,
9745         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
9746         ddr_consistent_p): New.
9747         (compute_affine_dependence): Check consistency of ddrs when
9748         flag_check_data_deps is passed.
9749         (analyze_all_data_dependences): Uncomment.
9750         (tree_check_data_deps): New.
9751         * tree-data-ref.h: Include omega.h.
9752         (DR_ACCESS_FNS_ADDR): Removed.
9753         (data_dependence_relation): Add inner_loop.
9754         (DDR_INNER_LOOP): New.
9755         * common.opt (fcheck-data-deps): New.
9756         * tree-flow.h (tree_check_data_deps): Declare.
9757         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
9758         (OBJS-common): Depend on omega.o.
9759         (omega.o): Define.
9760         * passes.c (pass_check_data_deps): Scheduled.
9761         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
9762         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
9763         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
9764         PARAM_VECT_MAX_VERSION_CHECKS,
9765         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
9766
9767 2007-03-09  Richard Guenther  <rguenther@suse.de>
9768
9769         PR tree-optimization/30904
9770         PR middle-end/31058
9771         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
9772         the same way as *_DIV_EXPR.
9773
9774 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9775
9776         * recog.c (decode_asm_operands): No mixed declarations and code.
9777
9778 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9779
9780         * rtl.def (ASM_INPUT): Add location.
9781         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
9782         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
9783         (decode_asm_operands): Add loc operand.
9784         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
9785         * stmt.c (expand_asm): Rename to...
9786         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
9787         gen_rtx_ASM_INPUT_loc.
9788         (expand_asm_expr): Adjust.
9789         * recog.c (decode_asm_operands): Add loc operand.
9790         (check_asm_operands, extract_insn): Adjust.
9791         * reload1.c (maybe_fix_stack_asms): Likewise.
9792         * final.c (asm_insn_count): Likewise.
9793         (final_scan_insn): Output # line before and after asm.
9794
9795 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
9796
9797         * tree-ssa-structalias.c (variable_info): Remove
9798         finished_solution.
9799         (new_var_info): Ditto.
9800         (shared_bitmap_info_t): New structure.
9801         (shared_bitmap_table): New variable.
9802         (shared_bitmap_hash): New function.
9803         (shared_bitmap_eq): Ditto
9804         (shared_bitmap_lookup): Ditto.
9805         (shared_bitmap_add): Ditto.
9806         (merge_smts_into): Change to take bitmap directly.
9807         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
9808         (init_alias_vars): Init shared bitmap hashtable.
9809         (delete_points_to_sets): Delete shared bitmap hashtable.
9810         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
9811         is_aliased removal as a change that was still necessary was
9812         deleted.
9813
9814 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
9815
9816         * config/i386/i386.h (override_options): Conditionally disable
9817         x86_sahf for 64bit targets only.
9818
9819 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9820
9821         PR C/31072
9822         * c-decl.c (merge_decls): Don't call make_var_volatile.
9823         * varasm.c (make_var_volatile): Remove.
9824         * output.h (make_var_volatile): Remove.
9825
9826 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
9827
9828         PR tree-optimization/31085
9829         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
9830
9831 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9832
9833         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
9834         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
9835         ATTR_CONST_NOTHROW_LIST.
9836
9837         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
9838         FIX_TRUNC_EXPR.
9839
9840 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
9841
9842         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
9843
9844 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
9845
9846         PR 31013
9847         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
9848         is declared.
9849         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
9850         passed, use shared libgcc.
9851
9852 2007-03-08  Roger Sayle  <roger@eyesopen.com>
9853
9854         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
9855         instead of calling build2 with a GIMPLE_MODIFY_STMT.
9856         (honor_protect_cleanup_actions, lower_try_finally_switch):
9857         Likewise.
9858         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
9859         ifc_temp_var): Likewise.
9860         * tree-inline.c (setup_one_parameter): Likewise.
9861         * tree-mudflap.c (mf_decl_cache_locals,
9862         mf_build_check_statement_for): Likewise.
9863         * tree-nested.c (init_tmp_var, save_tmp_var,
9864         finalize_nesting_tree_1): Likewise.
9865         * tree-outof-ssa.c (insert_copy_on_edge,
9866         insert_backedge_copies): Likewise.
9867         * tree-profile.c (tree_gen_edge_profiler,
9868         tree_gen_ic_profiler): Likewise.
9869         * tree-scalar-evolution.c (scev_const_prop): Likewise.
9870         * tree-sra.c (sra_build_assignment): Likewise.
9871         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
9872         * tree-ssa-math-opts.c (insert_reciprocals,
9873         execute_cse_sincos_1): Likewise.
9874         * tree-tailcall.c (adjust_accumulator_values,
9875         adjust_return_value): Likewise.
9876         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
9877         * tree-vect-transform.c (vect_create_data_ref_ptr,
9878         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
9879         vect_create_epilog_for_reduction, vectorizable_reduction,
9880         vectorizable_call, vectorizable_conversion,
9881         vectorizable_assignment, vectorizable_operation,
9882         vectorizable_type_demotion, vect_gen_widened_results_half,
9883         vect_permute_store_chain, vectorizable_store,
9884         vect_setup_realignment, vect_permute_load_chain,
9885         vectorizable_load, vectorizable_condition,
9886         vect_create_cond_for_align_checks): Likewise.
9887         * tree-vrp.c (build_assert_expr_for): Likewise.
9888
9889 2007-03-08  Ian Lance Taylor  <iant@google.com>
9890
9891         * tree-vrp.c: Include "intl.h".
9892         (usable_range_p): New static function.
9893         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
9894         overflowed values, juts set *strict_overflow_p.
9895         (compare_values): Only return -2 if one of the operands is not a
9896         constant.
9897         (compare_ranges): Call usable_range_p.
9898         (compare_range_with_value): Likewise.
9899         (vrp_evaluate_conditional_warnv): Rename from
9900         vrp_evaluate_conditional.  Make static.  Change all callers.
9901         (vrp_evaluate_conditional): New function.
9902         (simplify_div_or_mod_using_ranges): Issue warning about reliance
9903         on signed overflow.
9904         (simplify_abs_using_ranges): Likewise.
9905         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
9906         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
9907         within_stmt parameter.
9908         * tree-ssa-propagate.c (fold_predicate_in): Update call to
9909         vrp_evaluate_conditional.
9910         * tree-ssa-threadedge.c
9911         (record_temporary_equivalences_from_stmts_at_dest): Change
9912         simplify parameter to take a second tree parameter.
9913         (simplify_control_stmt_condition): Likewise.
9914         (thread_across_edge): Likewise.
9915         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
9916         (thread_across_edge): Likewise.
9917         * Makefile.in (tree-vrp.o): Depend upon intl.h.
9918
9919 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
9920
9921         * config/i386/i386.h (TARGET_SAHF): New define.
9922         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
9923         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
9924         (x86_sahf): New global variable.
9925         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
9926         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
9927         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
9928         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
9929         for 64-bit.
9930         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
9931         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
9932         when expanding fcomi/sahf based tests.
9933         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
9934         expanding sahf based alternative. Emit sahf based sequence when
9935         optimizing for code size.
9936         * config/i386/i386.md (x86_sahf_1): Do not disable for
9937         TARGET_64BIT, enable for TARGET_SAHF.
9938
9939 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
9940
9941         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
9942         spurious whitespace from error message.
9943
9944 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
9945
9946         PR c++/30852
9947         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
9948
9949 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
9950
9951         * c-decl.c (grokdeclarator): Disable warnings for anonymous
9952         bitfields.
9953         * tree-sra.c (instantiate_element): Propagate disabled warnings
9954         from the element itself to the created variable.
9955
9956 2007-03-07  Richard Henderson  <rth@redhat.com>
9957
9958         PR target/30848
9959         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
9960         silently fix up the stack in the case of a missing register.
9961
9962 2007-03-07  Paul Brook  <paul@codesourcery.com>
9963
9964         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
9965
9966 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
9967
9968         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
9969         New.
9970         (phase1_vrs): Use them.
9971         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
9972         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
9973         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
9974         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
9975         __gnu_Unwind_Restore_WMMXC if required.
9976         (_Unwind_VRS_Pop): Implement iWMMXt support.
9977         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
9978         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
9979         gnu_Unwind_Save_WMMXC): Define.
9980
9981 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
9982
9983         * config/vxworks.h (vxworks_override_options): Declare.
9984         (VXWORKS_OVERRIDE_OPTIONS): Use it.
9985         * config/vxworks.c: Include target.h and toplev.h.
9986         (vxworks_override_options): New function.
9987         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
9988
9989 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
9990
9991         * config/s390/s390.c (override_options): Don't emit an error when
9992         -mstack-size is used without providing -mstack-guard.
9993         (s390_emit_prologue): Choose stack_guard value automatically if not
9994         provided via command line.
9995         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
9996
9997 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
9998
9999         * config/i386/i386.c (output_set_got): Add a GOT initialization
10000         sequence for VxWorks PIC.
10001         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
10002         around labels as well as symbols.  Use gotoff_operand instead
10003         of local_symbolic_operand.
10004         (legitimize_pic_address): Use gotoff_operand instead of
10005         local_symbolic_operand.  Use @GOT accesses for labels as
10006         well as symbols.
10007         (ix86_output_addr_diff_elt): Use PC-relative rather than
10008         GP-relative offsets for VxWorks PIC.
10009         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
10010         no_new_pseudos.  Check whether the returned register is op0.
10011         * config/i386/i386.md (tablejump): Use PC-relative rather than
10012         GP-relative offsets for VxWorks PIC.
10013         * config/i386/predicates.md (gotoff_operand): New predicate.
10014
10015 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10016
10017         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
10018         before defining.
10019         * config/vxworks-dummy.h: New file.
10020         * config/i386/i386.h: Include it.
10021
10022 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
10023
10024         * dwarf2out.c (is_inlined_entry_point): New
10025         (add_high_low_attributes): Emit DW_AT_entry_pc along with
10026         DW_AT_ranges if the first subblock is the entry point.
10027
10028 2007-03-06  David Daney  <ddaney@avtrex.com>
10029
10030         * doc/install.texi (mips-*-*): Change recommended binutils
10031         version.
10032
10033 2007-03-06  Anatoly Sokolov <aesok@post.ru>
10034
10035         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
10036         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
10037         devices.
10038         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10039         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10040
10041 2007-03-06  Jan Hubicka  <jh@suse.cz>
10042
10043         * errors.h (warning, error, fatal, internal_error): Mark as cold.
10044         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
10045         are hot.
10046         (probably_cold_bb_p): Cold functions are cold.
10047         (probably_never_executed_bb_p): Cold functions are cold.
10048         (tree_bb_level_predictions): Predict calls to cold functions as not
10049         taken.
10050         (compute_function_frequency): Check hot/cold attributes.
10051         * function.h (function_frequency): Update comments.
10052         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
10053         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
10054         (c_common_att): Add cold and hot.
10055
10056         * doc/extend.texi (hot,cold attributes): Document.
10057
10058 2007-03-06  Andrew Haley  <aph@redhat.com>
10059
10060         * function.c (expand_function_end): Move blockage to just after we
10061         emit the label for the naked return from the function.
10062
10063 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10064
10065         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
10066         before redefining.
10067
10068 2007-03-06  Jan Hubicka  <jh@suse.cz>
10069
10070         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
10071         loaded for constant large models.  Non-large 64bit PIC can do.
10072         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
10073         * cmodel.h: Add LARGE PIC.
10074         * i386.md (UNSPEC_PLTOFF): New.
10075         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
10076         needed.
10077         (*call_1_rex64): Disable for large models.
10078         (*call_1_rex64_large): New.
10079         (*call_value_1_rex64): Disable for large models.
10080         (*call_value_1_rex64_large): New.
10081         (set_rip_rex4): New.
10082         (set_got_offset_rex64): New.
10083         * predicates.md (constant_call_address_operand): For large model
10084         constant calls are not possible.
10085         * i386-protos.h (construct_plt_address): Declare.
10086         * i386.c (override_options): Accept large models.
10087         (ix86_expand_prologue): Expand large PIC GOT pointer load.
10088         (legitimate_constant_p): Add new UNSPECs.
10089         (legitimate_pic_operand_p): Likewise.
10090         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
10091         (legitimize_pic_address): Do easy RIP relative way for TLS only for
10092         non-large model.
10093         (output_pic_addr_const): Add PLTOFF.
10094         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
10095         (ix86_expand_move): Legitimize pic address when in PIC mode.
10096         (construct_plt_address): New function.
10097         (ix86_expand_call): Offload the address to register and use GOT pointer
10098         for large model.
10099         * invoke.texi (mcmodel=large): Update documentation.
10100
10101 2007-03-06  Richard Henderson  <rth@redhat.com>
10102
10103         * config/i386/i386.c (x86_use_leave, x86_push_memory,
10104         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
10105         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
10106         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
10107         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
10108         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
10109         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
10110         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
10111         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
10112         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
10113         x86_partial_reg_dependency, x86_memory_mismatch_stall,
10114         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
10115         x86_sse_partial_reg_dependency, x86_sse_split_regs,
10116         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
10117         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
10118         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
10119         x86_schedule, x86_use_bt, x86_pad_returns,
10120         x86_use_xchgb): Merge into ...
10121         (ix86_tune_features): ... here.  New array.
10122         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
10123         x86_bswap): Merge into ...
10124         (ix86_arch_features): ... here.  New array.
10125         (x86_3dnow_a): Remove.
10126         (x86_accumulate_outgoing_args): Make static.
10127         (x86_arch_always_fancy_math_387): Make static.
10128         (ix86_tune_mask, ix86_arch_mask): Move ...
10129         (override_options): ... to local variables here.  Apply the
10130         appropriate mask to each element of ix86_arch_features and
10131         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
10132         as were done in the old macros.
10133         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
10134         * config/i386/i386.h (x86_use_leave, x86_push_memory,
10135         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
10136         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
10137         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
10138         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
10139         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
10140         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
10141         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
10142         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
10143         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
10144         x86_partial_reg_dependency, x86_memory_mismatch_stall,
10145         x86_accumulate_outgoing_args, x86_prologue_using_move,
10146         x86_epilogue_using_move, x86_decompose_lea,
10147         x86_arch_always_fancy_math_387, x86_shift1,
10148         x86_sse_partial_reg_dependency, x86_sse_split_regs,
10149         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
10150         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
10151         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
10152         x86_use_incdec, x86_pad_returns, x86_bswap,
10153         x86_partial_flag_reg_stall): Remove.
10154         (enum ix86_tune_indices): New.
10155         (ix86_tune_features): New.
10156         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
10157         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
10158         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
10159         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
10160         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
10161         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
10162         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
10163         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
10164         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
10165         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
10166         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
10167         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
10168         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
10169         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
10170         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
10171         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
10172         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
10173         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
10174         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
10175         TARGET_EXT_80387_CONSTANTS): Use it.
10176         (enum ix86_arch_indices): New.
10177         (ix86_arch_features): New.
10178         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
10179         TARGET_BSWAP): Use it.
10180         (ix86_tune_mask, ix86_arch_mask): Remove.
10181
10182 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
10183
10184         PR bootstrap/31020
10185         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
10186         Define using $${sysroot_headers_suffix}.
10187         * configure: Regenerate.
10188         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
10189         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
10190         defined.
10191         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
10192         * gcc.c (print_sysroot_headers_suffix): New.
10193         (option_map): Include --print-sysroot-headers-suffix.
10194         (display_help): Mention -print-sysroot-headers-suffix.
10195         (process_command): Handle -print-sysroot-headers-suffix.
10196         (do_spec_1): Append multilib directory to include-fixed path if
10197         sysroot suffixes in use.
10198         (main): Handle -print-sysroot-headers-suffix.
10199         * Makefile.in (start.encap): Don't depend on xlimits.h
10200         (xlimits.h): Remove.
10201         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
10202         limits.h for each multilib in fixinc_list.
10203         (fixinc_list, s-fixinc_list): New.
10204         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
10205         generate them for each multilib in fixinc_list.
10206         (stmp-fixproto): Use include-fixed.  Run fixproto for each
10207         multilib in fixinc_list.
10208         (mostlyclean): Don't remove xlimits.h.
10209         (clean): Remove include-fixed.
10210         (real-install-headers-tar, real-install-headers-cpio,
10211         real-install-headers-cp): Don't copy include, only include-fixed.
10212         (install-mkheaders): Depend on fixinc_list.  Don't depend on
10213         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
10214         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
10215         SYSTEM_HEADER_DIR setting in mkheaders.conf.
10216
10217 2007-03-06  Jan Hubicka  <jh@suse.cz>
10218
10219         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
10220         NANs easilly.
10221
10222 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10223
10224         * configure.ac: Allow tm_file to contain build-directory files.
10225         * configure: Regenerate.
10226         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
10227         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
10228         * config/m68k/print-sysroot-suffix.sh: New file.
10229
10230 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10231
10232         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
10233         of pic_offset_table_rtx if reload_completed.
10234         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
10235         PIC_OFFSET_TABLE_REGNUM.
10236         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
10237         return true.
10238         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
10239         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
10240
10241 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10242
10243         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
10244         functions that call eh_return.
10245
10246 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10247
10248         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
10249         functions that need a constant pool.
10250
10251 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10252
10253         PR target/28181
10254         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
10255         (m68k_preferred_reload_class): Likewise.
10256         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
10257         (SECONDARY_RELOAD_CLASS): Define.
10258         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
10259         (LIMIT_RELOAD_CLASS): Delete.
10260         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
10261         registers from storing bytes.
10262         (m68k_secondary_reload_class): New function.
10263         (m68k_preferred_reload_class): Likewise.
10264
10265 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10266
10267         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
10268         leaf functions.
10269         (m68k_expand_prologue): Likewise.
10270
10271 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10272
10273         * config/m68k/m68k-protos.h (output_sibcall): Declare.
10274         (mips_expand_epilogue): Add a bool parameter.
10275         (m68k_legitimize_sibcall_address): Declare.
10276         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
10277         (m68k_expand_epilogue): Add a parameter to select between sibling
10278         and normal epilogues.  Only generate a return for the latter.
10279         (m68k_ok_for_sibcall_p): New function.
10280         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
10281         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
10282         (sibcall_value, *sibcall_value): Likewise.
10283         (*call, *call_value): Require !SIBLING_CALL_P.
10284         (epilogue): Update call to m68k_expand_epilogue.
10285         (sibcall_epilogue): New pattern.
10286         * config/m68k/predicates.md (const_call_operand): Say that this
10287         predicate applies to sibling calls too.
10288         (sibcall_operand): New predicate.
10289
10290 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10291
10292         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
10293         alternatives as movsi_cf.
10294         (movsf_cf_hard): Add commentary.
10295
10296 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
10297             Richard Sandiford  <richard@codesourcery.com>
10298
10299         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
10300         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
10301         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
10302         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
10303         as being live on exit from an interrupt function.
10304         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
10305         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
10306         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
10307         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
10308         (m68k_interrupt_function_p): Globalize.
10309         (m68k_compute_frame_layout): Remove reverse mask code.
10310         (m68k_emit_movem, m68k_set_frame_related): New functions.
10311         (m68k_output_function_prologue): Delete in favor of...
10312         (m68k_expand_prologue): ...this new function.
10313         (m68k_output_function_epilogue): Delete in favor of...
10314         (m68k_expand_epilogue): ...this new function.
10315         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
10316         functions.
10317         (print_operand): Handle %?.
10318         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
10319         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
10320         (prologue, epilogue): New patterns.
10321         (return): Turn into a define_expand.
10322         (*return): New pattern, derived from old "return" pattern.  Use rte
10323         rather than rts for interrupt functions.  Only use rtd if the pop
10324         count is nonzero.
10325         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
10326         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
10327         (link, *link, unlink, *unlink, load_got): Likewise.
10328
10329 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
10330
10331         PR target/23482
10332         PR target/17114
10333         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
10334         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
10335         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
10336         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
10337         and m68k_matches_u_p.
10338         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
10339         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
10340         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
10341         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
10342         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
10343         (REG_STRICT_P): New macro.
10344         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
10345         PCREL_GENERAL_OPERAND_OK.
10346         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
10347         m68k_legitimate_base_reg_p.
10348         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
10349         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
10350         (PIC_CASE_VECTOR_ADDRESS): Update comment.
10351         * config/m68k/m68k.c (m68k_address): New structure.
10352         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
10353         (m68k_decompose_index, m68k_legitimate_constant_address_p)
10354         (m68k_jump_table_ref_p, m68k_decompose_address)
10355         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
10356         (m68k_matches_u_p): New functions.
10357         (print_operand_address): Rewrite to use m68k_decompose_index.
10358
10359 2007-03-05  David Taylor  <dtaylor@emc.com>
10360
10361         * gcc.c: Correct copyright date in --version output.
10362
10363 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10364
10365         * pa.md: In unamed move patterns, disparge copies between general
10366         and floating point registers using '?' modifier.  Don't include 'f'
10367         constraint for register preferences in DImode, SImode, HImode and
10368         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
10369         Remove constraints for copies between general and floating registers
10370         in soft-float DFmode pattern.
10371         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
10372         floating register.
10373         (movsf): Likewise.
10374
10375 2007-03-05  Mike Stump  <mrs@apple.com>
10376
10377         * c-common.c (targetcm): Add.
10378         * c-opts.c (c_common_handle_option): Handle language specific
10379         target options.
10380         * opts.c (handle_option): Verify language for target options, if
10381         any are given.
10382         * opth-gen.awk: Add CL_LANG_ALL.
10383         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
10384         (TARGETCM_INITIALIZER): Add.
10385         * target.h (struct gcc_targetcm): Add.
10386         (targetcm): Add.
10387         * targhooks.c (default_handle_c_option): Add.
10388         * targhooks.h (default_handle_c_option): Add.
10389         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
10390
10391         * config/darwin.opt (iframework): Add.
10392         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
10393         * config/darwin-c.c (handle_c_option): Add.
10394         (TARGET_HANDLE_C_OPTION): Add.
10395         (targetcm): Add.
10396         * doc/invoke.texi (Darwin Options): Add -iframework.
10397
10398 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10399
10400         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
10401         conversion.
10402
10403 2007-03-05  Ian Lance Taylor  <iant@google.com>
10404
10405         * c.opt (fgnu89-inline): New option.
10406         * c-opts.c (c_common_post_options): Set default value for
10407         flag_gnu89_inline.
10408         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
10409         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
10410         inline functions.
10411         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
10412         (grokdeclarator, start_function): Likewise.
10413         * c-cppbuiltin.c (c_cpp_builtins): Define either
10414         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
10415         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
10416         (C Dialect Options): Document -fgnu89-inline.
10417         * doc/extend.texi (Function Attributes): Explain what the
10418         gnu_inline attribute does.
10419         * doc/cpp.texi (Common Predefined Macros): Document
10420         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
10421
10422 2007-03-05  Ian Lance Taylor  <iant@google.com>
10423
10424         PR tree-optimization/31034
10425         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
10426         half-range if the other side is an overflow infinity.
10427
10428 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
10429
10430         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
10431         (bfin*-linux-uclibc*): New configuration.
10432         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
10433         defining.
10434         * config/bfin/linux.h: New file.
10435         * config/bfin/libgcc-bfin.ver: New file.
10436         * config/bfin/t-bfin-uclinux: New file.
10437         * config/bfin/t-bfin-linux: New file.
10438         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
10439         (TARGET_OS_CPP_BUILTINS): New macro.
10440
10441 2007-03-05  Richard Guenther  <rguenther@suse.de>
10442
10443         * fold-const.c (fold_binary): Remove duplicate folding
10444         of comparison of non-null ADDR_EXPR against null.
10445
10446 2007-03-05  Richard Guenther  <rguenther@suse.de>
10447             Dorit Nuzman  <dorit@il.ibm.com>
10448
10449         PR tree-optimization/26420
10450         * tree-vectorizer.c (vectorize_loops): Bail out early if there
10451         are no loops in the function.  Only print the number of
10452         vectorized loops if it is greater than zero or we are supposed
10453         to print information about unvectorized loops.
10454
10455 2007-03-05  Revital Eres  <eres@il.ibm.com>
10456
10457         * gcc.dg/var-expand1.c: New test.
10458         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
10459         when an accumulator is expanded.
10460
10461 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10462
10463         PR other/30465
10464         * c-common.c (convert_and_check): Don't give warnings for
10465         conversion if 'expr' already overflowed.
10466
10467 2007-03-04  Roger Sayle  <roger@eyesopen.com>
10468
10469         PR middle-end/30744
10470         * fold-const.c (fold_comparison): Enforce type consistency when
10471         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
10472
10473 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
10474
10475         * tree-ssa-address.c (create_mem_ref): Do not put an expression
10476         containing a cast to the base of TARGET_MEM_REF.
10477
10478 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
10479
10480         * tree.c (tree_contains_struct_check_failed): Remove spurious
10481         whitespace from error message.
10482
10483 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
10484
10485         PR target/30406
10486         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
10487         instead of precision.
10488
10489 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
10490             Nathan Sidwell  <nathan@codesourcery.com>
10491
10492         * emit-rtl.c (find_auto_inc): New.
10493         (try_split): recreate REG_INC notes,
10494         Use regular for loops rather than whiles.
10495
10496 2007-03-03  Andreas Schwab  <schwab@suse.de>
10497
10498         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
10499         * configure: Regenerate.
10500
10501 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10502
10503         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
10504         flag_rounding_math, not flag_unsafe_math_optimizations.
10505
10506         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
10507         fold_build2.
10508         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
10509         alpha_fold_vector_minmax): Likewise.
10510         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
10511         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
10512
10513 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10514
10515         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
10516         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
10517         if the lhs has side-effects.
10518         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
10519
10520 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10521
10522         * config/i386/i386.h (TUNEMASK): Remove define.
10523         (ARCHMASK): Remove define.
10524         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
10525          Use ix86_arch_mask variable instead of ARCHMASK.
10526         * config/i386/i386.c (override_options): Ditto.
10527         (standard_80387_constant_p): Ditto.
10528
10529 2007-03-02  Ian Lance Taylor  <iant@google.com>
10530
10531         Used signed infinities in VRP.
10532         * tree-vrp.c (uses_overflow_infinity): New static function.
10533         (supports_overflow_infinity): New static function.
10534         (make_overflow_infinity): New static function.
10535         (negative_overflow_infinity): New static function.
10536         (positive_overflow_infinity): New static function.
10537         (is_negative_overflow_infinity): New static function.
10538         (is_positive_overflow_infinity): New static function.
10539         (is_overflow_infinity): New static function.
10540         (overflow_infinity_range_p): New static function.
10541         (compare_values_warnv): New function split out of compare_values.
10542         (compare_value): Call it.
10543         (set_value_range_to_nonnegative): Add overflow_infinity
10544         parameter.  Change caller.
10545         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
10546         Change callers.
10547         (vrp_expr_computes_nonzero): Likewise.
10548         (compare_ranges, compare_range_with_value): Likewise.
10549         (compare_name_with_value, compare_names): Likewise.
10550         (vrp_evaluate_conditional): Likewise.
10551         (set_value_range): Handle infinity
10552         (vrp_operand_equal_p, operand_less_p): Likewise.
10553         (extract_range_from_assert): Likewise.
10554         (vrp_int_const_binop): Likewise.
10555         (extract_range_from_binary_expr): Likewise.
10556         (extract_range_from_unary_expr): Likewise.
10557         (extract_range_from_comparison): Likewise.
10558         (extract_range_from_expr): Likewise.
10559         (dump_value_range): Likewise.
10560         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
10561         (test_for_singularity): Likewise.
10562         (vrp_int_const_binop): Remove inline qualifier.
10563         (adjust_range_with_scev): Add comment.
10564         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
10565
10566 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
10567
10568         * tree-ssa-structalias.c (could_have_pointers): Tidy.
10569         (get_constraint_for): Likewise.
10570         (do_structure_copy): Likewise.
10571         (find_func_aliases): Fix references to MODIFY_EXPR.
10572         (intra_create_variable_infos): Tidy.
10573         * tree-ssa-operands.c (add_virtual_operand): Add argument
10574         IS_CALL_SITE.
10575         When adding members of alias sets, if IS_CALL_SITE is true and
10576         the symbol is not call-clobbered, skip it.
10577         Adjust all callers.
10578
10579 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10580
10581         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
10582         entry by means of emit_insn_at_entry.
10583
10584 2007-03-02  Richard Henderson  <rth@redhat.com>
10585
10586         * expr.h (promoted_input_arg): Remove decl.
10587         * function.c (promoted_input_arg): Merge into ...
10588         * combine.c (setup_incoming_promotions): ... only caller.
10589         Rearrange to avoid double loop.
10590
10591 2007-03-02  Ben Elliston  <bje@au.ibm.com>
10592             Peter Bergner  <bergner@vnet.ibm.com>
10593             Janis Johnson  <janis187@us.ibm.com>
10594
10595         * config/rs6000/dfp.md: New file.
10596         * config/rs6000/rs6000.md: Include dfp.md.
10597         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
10598         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
10599         and TDmode decimal float modes in FP registers.
10600         (num_insns_constant): Likewise.
10601         (rs6000_legitimate_offset_address_p): Likewise.
10602         (rs6000_legitimize_address): Likewise.
10603         (rs6000_legitimize_reload_address): Likewise.
10604         (rs6000_legitimate_address): Likewise.
10605         (rs6000_emit_move): Likewise.
10606         (function_arg_boundary): Likewise.
10607         (function_arg_advance): Likewise.
10608         (rs6000_darwin64_record_arg_recurse): Likewise.
10609         (function_arg): Likewise.
10610         (rs6000_gimplify_va_arg): Likewise.
10611         (rs6000_split_multireg_move): Likewise.
10612         (rs6000_output_function_epilogue): Likewise.
10613         (rs6000_output_function_epilogue): Likewise.
10614         (rs6000_register_move_cost): Likewise.
10615         (rs6000_function_value): Likewise.
10616         (rs6000_libcall_value): Likewise.
10617
10618 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
10619
10620         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
10621
10622 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
10623
10624         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
10625         Use $MULTIDIR to choose between the kernel and RTP headers,
10626         and use $WIND_BASE and $WIND_USR to locate them.
10627
10628 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10629
10630         * config/i386/i386.c (override_options): Put initialization of
10631         ix86_tune_mask and ix86_arch_mask to the correct place.
10632
10633 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10634             Michael Meissner  <michael.meissner@amd.com>
10635
10636         PR target/31019
10637         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
10638         (ARCHMASK): Define.
10639         (TARGET_CMOVE): Use ARCHMASK.
10640         (TARGET_CMPXCHG): Ditto.
10641         (TARGET_CMPXCHG8B): Ditto.
10642         (TARGET_XADD): Ditto.
10643         (TARGET_BSWAP): Ditto.
10644         * config/i386/i386.c (ix86_tune_mask): New global variable.
10645         (ix86_arch_mask): Ditto.
10646         (override_options): Initialize ix86_tune_mask and
10647         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
10648         target_flags.
10649
10650 2007-03-02  Ben Elliston  <bje@au.ibm.com>
10651
10652         PR 30992
10653         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
10654
10655 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
10656
10657         * target.h (init_dwarf_reg_sizes_extra): New target hook.
10658         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
10659         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
10660         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
10661         hook.
10662         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
10663         rs6000_init_dwarf_reg_sizes_extra): New.
10664         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
10665         SPE register high parts.
10666
10667 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
10668
10669         * Makefile.in: Add install-pdf target as
10670         copied from automake v1.10 rules.
10671         * configure.ac: Add install-pdf to target list.
10672         * configure: Regenerate.
10673
10674 2007-03-01  Paul Brook  <paul@codesourcery.com>
10675
10676         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
10677         modes to LDRD for DImode.
10678         (output_move_double): Fixup out of range ldrd/strd.
10679         (vfp_secondary_reload_class): Rename...
10680         (coproc_secondary_reload_class): ... to this.  Add wb argument.
10681         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
10682         coproc_secondary_reload_class for CLASS_IWMMXT.
10683         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
10684         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
10685
10686 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
10687
10688         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
10689         factor by the estimated number of iterations.
10690         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
10691         prefetch latency.
10692
10693         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
10694         decode_caches_intel, detect_caches_intel): New functions.
10695         (host_detect_local_cpu): Use detect_caches_amd and
10696         detect_caches_intel.
10697
10698 2007-03-01  Richard Henderson  <rth@redhat.com>
10699
10700         * expr.c (emit_move_complex_push): Export.
10701         (emit_move_complex_parts): Split out from ...
10702         (emit_move_complex): ... here.
10703         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
10704         * config/i386/i386.md (movcdi): New.
10705
10706 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
10707
10708         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
10709         size of mode1 to check for tieable modes in MMX case.
10710
10711 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
10712
10713         * Makefile.in (rtlanal.o): Depend on tree.h.
10714         * rtl.h (offset_within_section_p, split_const): Declare.
10715         * rtlanal.c: Include tree.h.
10716         (offset_within_block_p): New function, taken from
10717         mips_offset_within_object_p.
10718         (split_const): New function, taken from mips_split_const.
10719         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
10720         Declare.
10721         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
10722         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
10723         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
10724         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
10725         (m68k_illegitimate_symbolic_constant_p): New function.
10726         * config/m68k/m68k.md (movsi): Remove misleading predicates.
10727         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
10728         symbolic constant that might be outside the symbol's section,
10729         move the symbol first and then add the offset.
10730         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
10731         Override.
10732         * config/mips/mips.c (mips_split_const): Delete.
10733         (mips_offset_within_object_p): Delete.
10734         (mips_symbolic_constant_p): Use offset_within_section_p and
10735         split_const instead of mips_offset_within_object_p and
10736         mips_split_const.
10737         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
10738         (mips_legitimize_const_move, print_operand_reloc)
10739         (mips_dangerous_for_la25_p): Use split_const instead of
10740         mips_split_const.
10741
10742 2007-02-28  Eric Christopher  <echristo@apple.com>
10743
10744         * Makefile.in (install-include-dir): Don't rm -rf include.
10745
10746 2007-02-28  Richard Guenther  <rguenther@suse.de>
10747
10748         PR middle-end/30364
10749         * fold-const.c (fold_binary): Do not associate expressions
10750         with more than one variable for integer types that do not wrap.
10751
10752 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
10753
10754         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
10755         Delete, and replace with...
10756         (fold_builtin_call_array): This.  Update callers to use it.
10757         * fold-const.c (fold_build_call_list): Delete, and replace with...
10758         (fold_build_call_array): This.
10759         (fold_build_call_list_initializer): Delete, and replace with...
10760         (fold_build_call_array_initializer): This.
10761         * tree.h: Update declarations to reflect above changes.
10762
10763         * c-typeck.c (build_function_call): Store converted arguments
10764         in a stack-allocated array instead of building a list.
10765         (convert_arguments): Store arguments in the array passed in as an
10766         argument, and return the actual number of arguments.
10767         * c-format.c: (check_function_format): Pass arguments in an
10768         array instead of a list.
10769         * c-common.c (check_function_nonnull): Likewise.
10770         (check_function_sentinel): Likewise.
10771         (check_function_arguments): Likewise.
10772         * c-common.h: Update declarations to reflect above changes.
10773
10774 2007-02-28  Jan Hubicka  <jh@suse.cz>
10775
10776         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
10777         PRED_NEGATIVE_RETURN): Update outcomes.
10778
10779 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
10780
10781         * calls.c (emit_library_call_value_1): Handle partial registers
10782         correctly when building up CALL_INSN_FUNCTION_USAGE.
10783
10784 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10785
10786         * pa/predicates.md (move_src_operand): Allow zero for mode.
10787         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
10788         move pattern.
10789
10790 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
10791
10792         PR target/30970
10793         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
10794         *movv2df_internal): Enable pattern only for valid operand
10795         combinations.
10796         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
10797         tie only 128bit modes. For MMX registers, tie only 64bit modes.
10798
10799 2007-02-27  Mike Stump  <mrs@apple.com>
10800
10801         * config/darwin-crt3.c: Avoid compilation when compiling for a
10802         kext multilib.
10803
10804 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
10805
10806         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
10807         FIXED_INCLUDE_DIR.
10808         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
10809         for fixed headers and limits.h.
10810         (install-include-dir, install-headers-tar, install-headers-cpio,
10811         install-headers-cp, real-install-headers-tar,
10812         real-install-headers-cpio, real-install-headers-cp): Handle
10813         include-fixed as well as include.
10814         (install-mkheaders): Don't install files that go only in include
10815         not include-fixed.
10816         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
10817         from GCC_INCLUDE_DIR.
10818         * gcc.c (process_command): Remove special -BstageN/ handling.
10819         (do_spec_1): Add include-fixed directories.
10820
10821 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
10822
10823         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
10824         _smulsi3_highpart.
10825         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
10826         New functions.
10827         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
10828         patterns.
10829
10830 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
10831
10832         * c-common.c (get_priority): Add check for
10833         SUPPORTS_INIT_PRIORITY.
10834
10835 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
10836
10837         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
10838
10839         * config/bfin/bfin.c: Include "cfglayout.h".
10840         (MAX_LSETUP_DISTANCE): New macro.
10841         (struct loop_info): New members incoming, incoming_src and
10842         incoming_dest.  Delete member predecessor.
10843         (length_for_loop): New function.
10844         (bfin_optimize_loop): Handle more different loop structures.
10845         (bfin_discover_loop): Rework detection of predecessor blocks by
10846         examining incoming edges.
10847         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
10848         bfin_reorg_loops.
10849         (bfin_reorder_loops): New function.
10850         (bfin_reorg_loops): Use these three new functions.
10851
10852         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
10853         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
10854         (CONSTRAINT_LEN): Add entry for 'q'.
10855         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
10856         Add 'q' constraints.
10857         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
10858         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
10859
10860         * config/bfin/bfin.md (add_with_carry): New pattern.
10861         (s_or_u, su_optab, su_modifier): New code macros/attrs.
10862         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
10863         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
10864         support unsigned multiplies too.  Removed incorrect commutativity from
10865         operand 1 constraint where appropriate.
10866         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
10867         patterns.
10868         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
10869         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
10870         New patterns.
10871         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
10872         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
10873         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
10874         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
10875         usmulhisi_hh_huh): New patterns.
10876
10877         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
10878         lshifthi3): Fix output template to use half reg for operand 2.
10879
10880         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
10881         instead of R2.
10882
10883         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
10884
10885 2007-02-27  Andreas Schwab  <schwab@suse.de>
10886
10887         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
10888
10889 2007-02-27  Jan Hubicka  <jh@suse.cz>
10890
10891         * predict.c (last_basic_block_p): Remove.
10892         (tree_estimate_probability): Update return heuristic for commonized
10893         return blocks.
10894
10895 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
10896
10897         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
10898
10899 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
10900
10901         * doc/include/gcc-common.texi (versionsubtitle): New macro.
10902         * doc/cpp.texi: Standardize title page.
10903         * doc/cppinternals.texi: Likewise.
10904         * doc/gcc.texi: Standardize title page, remove version number
10905         from copyright page.
10906         * doc/gccint.texi: Likewise.
10907         * doc/install.texi: Standardize title page, add table of
10908         contents.
10909
10910 2007-02-26  Jan Hubicka  <jh@suse.cz>
10911
10912         * predict.def: Set outcomes according to more recent results.
10913         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
10914         Remove dead predictors.
10915         * predict.c (return_prediction): Fix pasto.
10916
10917 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
10918
10919         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
10920         change; avoid a memory leak when returning early.
10921
10922 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
10923
10924         * c-decl.c (static_ctors): Move to c-common.c.
10925         (static_dtors): Likewise.
10926         (finish_function): Use c_record_cdtor_fn.
10927         (build_cdtor): Move to c-common.c.
10928         (c_write_global_declarations): Use c_build_cdtor_fns.
10929         * c-common.h (static_ctors): Declare.
10930         (static_dtors): Likewise.
10931         (c_record_cdtor_fn): Likewise.
10932         (c_build_cdtor_fns): Likewise.
10933         * c-common.c (static_ctors): New variable.
10934         (static_dtors): Likewise.
10935         (c_record_cdtor_fn): New function.
10936         (build_cdtor): Move from c-decl.c
10937         (c_build_cdtor_fns): New function.
10938
10939         * output.h (assemble_addr_to_section): Declare.
10940         (get_cdtor_priority_section): Likewise.
10941         * varasm.c (assemble_addr_to_section): New function.
10942         (get_cdtor_priority_section): Likewise.
10943         (default_named_section_asm_out_destructor): Use them.
10944         (destor_dtor_section_asm_out_destructor): Likewise.
10945         (default_named_section_asm_out_constructor): Likewise.
10946         (default_ctor_section_asm_out_constructor): Likewise.
10947         * config.gcc (*-*-vxworks*): Include vxworks.o.
10948         * config/t-vxworks (vxworks.o): New target.
10949         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
10950         (TARGET_ASM_CONSTRUCTOR): Define.
10951         (TARGET_ASM_DESTRUCTOR): Likewise.
10952         (vxworks_asm_out_constructor): Declare.
10953         (vxworks_asm_out_destructor): Likewise.
10954
10955         * c-common.c (get_priority): Check that we have not just an
10956         INTEGER_CST, but an integer constant with integeral type.
10957
10958 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
10959
10960         PR tree-optimization/30938
10961         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
10962         use &dt[nargs-1] instead of &dt[nargs] in the call to
10963         vect_is_simple_use().
10964
10965 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
10966
10967         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
10968         from register elimination as PRE_MODIFY / POST_MODIFY increments.
10969         Do not attempt to handle MEM inside auto-inc expressions.
10970         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
10971         of a register modified by an auto-inc expression.  However, do handle
10972         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
10973         (elimination_effects): Prohibit elimination of a register modified
10974         by an auto-inc expression.  Disable register elimination rules whose
10975         target register is modified by an auto-inc expression with variable
10976         increment.
10977
10978 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
10979
10980         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
10981         off-by-one error.
10982         (array_at_struct_end_p): New function.
10983         (idx_infer_loop_bounds): Use it.
10984         (estimate_numbers_of_iterations_loop): Export.
10985         * predict.c (predict_loops): Use estimated_loop_iterations_int.
10986         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
10987         (tree_estimate_probability): Call record_loop_exits.
10988         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
10989         (estimated_loop_iterations, estimated_loop_iterations_int,
10990         estimated_loop_iterations_tree): New functions.
10991         (analyze_siv_subscript_cst_affine,
10992         compute_overlap_steps_for_affine_1_2,
10993         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
10994         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
10995         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
10996         (PRED_LOOP_ITERATIONS_GUESSED): New.
10997         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
10998         * cfgloop.h (estimate_numbers_of_iterations_loop,
10999         estimated_loop_iterations_int): Declare.
11000
11001 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
11002
11003         * doc/extend.texi: Document optional priority argument to
11004         constructors and destructors.
11005         * tree.c (init_priority_for_decl): Adjust GTY markers.
11006         (init_ttree): Use priority-info hash functions for
11007         init_priority_for_decl.
11008         (tree_map_eq): Rename to ...
11009         (tree_map_base_eq): ... this.
11010         (tree_map_marked_p): Rename to ...
11011         (tree_map_base_marked_p): ... this.
11012         (tree_map_base_hash): New function.
11013         (decl_init_priority_lookup): Rework.
11014         (decl_fini_priority_lookup): New function.
11015         (decl_priority_info): New function.
11016         (decl_init_priority_insert): Use it.
11017         (decl_fini_priority_insert): Likewise.
11018         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
11019         hierarchy.
11020         (decl_restrict_base_insert): Likewise.
11021         (decl_debug_expr_insert): Likewise.
11022         (decl_value_expr_lookup): Likewise.
11023         (decl_value_expr_insert): Likewise.
11024         * tree.h (priority_type): New type.
11025         (decl_init_priority_lookup): Use priority_type.
11026         (decl_fini_priority_lookup): New function.
11027         (decl_init_priority_insert): Use priority_type.
11028         (decl_fini_priority_insert): New function.
11029         (DECL_HAS_INIT_PRIORITY): Tweak comments.
11030         (DECL_INIT_PRIORITY): Likewise.
11031         (SET_DECL_INIT_PRIORITY): Add comment.
11032         (DECL_FINI_PRIORITY): New macro.
11033         (SET_DECL_FINI_PRIORITY): Likewise.
11034         (DEFAULT_INIT_PRIORITY): Document.
11035         (MAX_INIT_PRIORITY): Likewise.
11036         (MAX_RESERVED_INIT_PRIORITY): Likewise.
11037         (tree_map_base): New type.
11038         (tree_map_base_eq): New function.
11039         (tree_map_base_hash): Likewise.
11040         (tree_map_base_marked_p): Likewise.
11041         (tree_map): Inherit from tree_map_base.
11042         (tree_map_eq): Make it a macro.
11043         (tree_map_marked_p): Likewise.
11044         (tree_int_map): Inherit from tree_map_base.
11045         (tree_int_map_eq): Make it a macro.
11046         (tree_int_map_hash): Likewise.
11047         (tree_int_map_marked_p): Likewise.
11048         (tree_priority_map): New type.
11049         (tree_priority_map_eq): New macro.
11050         (tree_priority_map_hash): Likewise.
11051         (tree_priority_map_marked_p): Likewise.
11052         * varasm.c (emults_decl): Adjust for refactoring of tree_map
11053         hierarchy.
11054         (emutls_common_1): Likewise.
11055         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
11056         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
11057         of tree_map hierarchy.
11058         * tree-cfg.c (move_stmt_r): Likewise.
11059         (new_label_mapper): Likewise.
11060         * c-tree.h (c_expand_body): Move to ...
11061         * c-common.h (c_expand_body): ... here.
11062         * c-decl.c (c_expand_body): Move to ...
11063         * c-common.c (c_expand_body): ... here.
11064         (c_common_attribute_table): Allow 1 argument for the constructor
11065         and destructor attributes.
11066         (get_priority): New function.
11067         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
11068         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
11069
11070 2007-02-24  Jan Hubicka  <jh@suse.cz>
11071
11072         PR middle-end/30509
11073         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
11074
11075 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
11076             Jan Hubicka  <jh@suse.cz>
11077
11078         PR target/30778
11079         * i386.c (counter_mode): New function.
11080         (expand_set_or_movmem_via_loop): Use it.
11081         (expand_movmem_epilogue): Likewise; fix pasto.
11082         (ix86_expand_movmem): Do emit guard even for constant counts.
11083         (ix86_expand_setmem): Likewise.
11084
11085 2007-02-25  Nick Clifton  <nickc@redhat.com>
11086
11087         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
11088         (JUMP_TABLES_IN_TEXT_SECTION): Define.
11089
11090 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
11091
11092         PR target/30770
11093         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
11094         count argument with 0x10, not with 0x16.
11095         (expand_setmem_epilogue): Ditto.
11096
11097 2007-02-24  Mike Stump  <mrs@apple.com>
11098
11099         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
11100         symbols.
11101
11102 2007-02-24  Richard Guenther  <rguenther@suse.de>
11103
11104         PR middle-end/30951
11105         * fold-const.c (fold_binary): Fold x +- CST op x for
11106         EQ_EXPR and NE_EXPR.
11107
11108 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11109
11110         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
11111
11112 2007-02-24  Jan Hubicka  <jh@suse.cz>
11113
11114         * cgraphunit.c (decide_is_function_needed): Honor
11115         -fkeep-inline-functions.
11116
11117 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11118
11119         * builtins.c (fold_builtin_modf): New.
11120         (fold_builtin_2): Use it.
11121
11122 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
11123
11124         * loop-iv.c (implies_p): Detect additional cases where A implies B.
11125         (determine_max_iter): Take additional LOOP arg; all callers changed.
11126         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
11127         one using simplifications.
11128         (simplify_using_initial_values): Return if the expression becomes
11129         invalid due to altered regs.
11130
11131 2007-02-23  DJ Delorie  <dj@redhat.com>
11132
11133         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
11134
11135 2007-02-23  Mike Stump  <mrs@apple.com>
11136
11137         * tlink.c (scan_linker_output): Parse linker messages from
11138         darwin9's linker better.
11139
11140 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
11141
11142         PR debug/29614
11143         * varpool.c (varpool_assemble_pending_decls):  Set
11144         varpool_last_needed_node to null.
11145
11146 2007-02-23  DJ Delorie  <dj@redhat.com>
11147
11148         * config/i386/i386.c (ix86_data_alignment): Don't specify an
11149         alignment bigger than the object file can handle.
11150
11151 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
11152
11153         PR target/30825
11154         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
11155         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
11156         (*movsf_1): Penalize MMX moves.
11157
11158 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
11159
11160         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
11161         2^32-1 or more times unless flag_unsafe_loop_optimizations.
11162
11163         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
11164
11165 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11166
11167         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
11168         (fold_builtin_1): Use them.
11169         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
11170         BUILT_IN_SIGNIFICAND.
11171
11172 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
11173
11174         * config/i386/i386.c (bdesc_1arg): Initialize
11175         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
11176         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
11177         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
11178         and IX86_BUILTIN_MOVSLDUP.
11179
11180 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
11181
11182         PR rtl-optimization/30841
11183         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
11184
11185 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11186
11187         * builtins.c (fold_builtin_frexp): New.
11188         (fold_builtin_2): Use it.
11189
11190 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
11191
11192         * doc/invoke.texi (Spec Files): Document getenv spec function.
11193
11194         * gcc.c (getenv_spec_function): New function.
11195         (static_spec_functions): Add it.
11196         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
11197         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
11198         header files.
11199
11200 2007-02-22  Michael Matz  <matz@suse.de
11201
11202         PR c++/29433
11203         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
11204         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
11205
11206 2007-02-22  Ian Lance Taylor  <iant@google.com>
11207
11208         PR debug/30898
11209         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
11210         (mem_loc_descriptor): Call it.
11211
11212 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
11213             Ira Rosen  <irar@il.ibm.com>
11214
11215         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
11216
11217 2007-02-22  Ira Rosen  <irar@il.ibm.com>
11218
11219         PR tree-optimization/30843
11220         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
11221         stores only after all the group is vectorized.
11222
11223 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
11224
11225         PR tree-optimization/30858
11226         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
11227         in the reduction cycle have a single use in the loop.
11228         * tree-vectorizer.h (relevant): Add documentation.
11229
11230 2007-02-20  Mike Stump  <mrs@apple.com>
11231
11232         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
11233         * configure: Regenerate.
11234
11235 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
11236
11237         Change the defaults of some parameters and options.
11238         * config/spu/spu-protos.h (spu_optimization_options): Declare.
11239         * config/spu/spu.c (spu_optimization_options): Add.
11240         (spu_override_options): Change params in spu_optimization_options.
11241         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
11242
11243         Register 127 is only 16 byte aligned when used as a frame pointer.
11244         * config/spu/spu-protos.h (spu_init_expanders): Declare.
11245         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
11246         HARD_FRAME_POINTER_REGNUM.
11247         (spu_legitimate_address):  Use regno_aligned_for_reload.
11248         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
11249         aligned when frame_pointer_needed is true.
11250         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
11251         to 8 bits.
11252         * config/spu/spu.h (INIT_EXPANDERS): Define.
11253
11254         Make sure shift and rotate instructions have valid immediate operands.
11255         * config/spu/predicates.md (spu_shift_operand): Remove.
11256         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
11257         * config/spu/constraints.md (W, O): Extend range.
11258         * config/spu/spu.md (umask, nmask): Define.
11259         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
11260         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
11261         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
11262         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
11263         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
11264         (lshr<mode>3_reg):  Fix rtl description.
11265
11266         Make sure mulhisi immediate operands are valid.
11267         * config/spu/predicates.md (imm_K_operand): Add.
11268         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
11269
11270         Generate constants using fsmbi and andi.
11271         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
11272         (print_operand, spu_split_immediate, classify_immediate,
11273         fsmbi_const_p): Handle IC_FSMBI2.
11274
11275         Correctly handle a CONST_VECTOR containing symbols.
11276         * config/spu/spu.c (print_operand): Handle HIGH correctly.
11277         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
11278         (immediate_load_p): Allow symbols that use 2 instructions to create.
11279         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
11280         with symbols when flag_pic is set.
11281         (const_vector_immediate_p): New.
11282         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
11283         accept a CONST_VECTOR with symbols.
11284         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
11285         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
11286         correctly.
11287         * config/spu/spu.md (high, low): Delete.
11288         (low_<mode>): Define.
11289
11290         Remove INTRmode and INTR_REGNUM, which didn't work.
11291         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
11292         of INTR_REGNUM.
11293         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
11294         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
11295         peephole2 pattern): Don't use INTR or 131.
11296         (movintrcc): Delete.
11297         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
11298         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
11299         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
11300         (UNSPEC_SET_INTR): Add.
11301         * config/spu/spu-modes.def (INTR): Remove.
11302
11303         More accurate warnings about run-time relocations.
11304         * config/spu/spu.c (reloc_diagnostic): Test in_section.
11305
11306         Correctly warn about immediate arguments to specific intrinsics.
11307         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
11308         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
11309         the instruction predicate.
11310
11311         Fix tree check errors with latest update.
11312         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
11313         CALL_EXPR_ARG.
11314         (spu_expand_builtin): Use CALL_EXPR_FN.
11315
11316         Add missing specific intrinsics.
11317         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
11318         si_bislede.
11319         * config/spu/spu_internals.h: Ditto.
11320
11321         Fix incorrect operand modifiers.
11322         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
11323         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
11324
11325         Optimize one case of zero_extend of a vec_select.
11326         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
11327
11328         Accept any immediate for hbr.
11329         * config/spu/spu.md (hbr):  Change s constraints to i.
11330
11331 2007-02-21  Paul Brook  <paul@codesourcery.com>
11332
11333         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
11334         condexec_count when skipping USE and CLOBBER.
11335
11336 2007-02-21  Nick Clifton  <nickc@redhat.com>
11337
11338         * common.opt (Warray-bounds): Add Warning attribute.
11339         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
11340         Likewise.
11341         (fsized-zeroes): Add Optimization attribute.
11342         (fsplit-wide-types, ftree-scev-cprop): Likewise.
11343         * c.opt (Wc++0x-compat): Add Warning attribute.
11344
11345 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
11346
11347         PR middle-end/30761
11348         * reload1.c (eliminate_regs_in_insn): In the single_set special
11349         case, attempt to re-recognize the insn before falling back to
11350         having reload fix it up.
11351
11352 2007-02-20  Eric Christopher  <echristo@gmail.com>
11353
11354         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
11355         Rewrite accordingly.
11356         (frv_read_iacc_argument): Ditto.
11357         (frv_expand_set_builtin): Take a call instead of arglist, update for
11358         above changes.
11359         (frv_expand_unop_builtin): Ditto.
11360         (frv_expand_binop_builtin): Ditto.
11361         (frv_expand_cut_builtin): Ditto.
11362         (frv_expand_binopimm_builtin): Ditto.
11363         (frv_expand_voidbinop_builtin): Ditto.
11364         (frv_expand_int_void2arg): Ditto.
11365         (frv_expand_prefetches): Ditto.
11366         (frv_expand_voidtriop_builtin): Ditto.
11367         (frv_expand_voidaccop_builtin): Ditto.
11368         (frv_expand_load_builtin): Ditto.
11369         (frv_expand_store_builtin): Ditto.
11370         (frv_expand_mdpackh_builtin): Ditto.
11371         (frv_expand_mclracc_builtin): Ditto.
11372         (frv_expand_mrdacc_builtin): Ditto.
11373         (frv_expand_mwtacc_builtin): Ditto.
11374         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
11375         calls for above.
11376
11377 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
11378
11379         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
11380         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
11381         cmpb instruction.
11382         (HAVE_GAS_DFP): Check for assembler support of decimal floating
11383         point instructions.
11384         * configure: Regenerate.
11385         * config.in: Regenerate.
11386         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
11387         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
11388         masks to power6 and power6x and to POWERPC_MASKS.
11389         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
11390         _ARCH_PWR6.
11391         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
11392         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
11393         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
11394         Access PROTOTYPE as variable, not mask.
11395
11396 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
11397
11398         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
11399         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
11400         * combine.c (adjust_for_new_dest): Use it.
11401         * postreload.c (reload_combine): Likewise.
11402
11403 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
11404
11405         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
11406         notes on an insn with multiple sets, even if single_set returns
11407         non-NULL for that insn.
11408
11409 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11410
11411         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
11412         scalbn and scalbln.
11413
11414 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
11415
11416         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
11417         if user didn't pass it.
11418         * config/i386/darwin.h (CC1_SPEC): Likewise.
11419         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
11420         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
11421         -mmacosx-version-min.
11422
11423 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11424             Uros Bizjak  <ubizjak@gmail.com>
11425
11426         * optabs.h (enum optab_index): Add new OTI_scalb.
11427         (scalb_optab): Define corresponding macro.
11428         * optabs.c (init_optabs): Initialize scalb_optab.
11429         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
11430         patterns.
11431         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
11432         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
11433         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
11434         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
11435         flag_unsafe_math_optimizations is set.
11436
11437         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
11438         to implement scalbf, scalb and scalbl built-ins as inline x87
11439         intrinsics.
11440
11441 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11442             DJ Delorie <dj@redhat.com>
11443
11444         PR other/30824
11445         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
11446         (diagnostic_report_diagnostic): ... here, and turn them into real
11447         errors. If warnings are inhibited, no need to do anything.
11448
11449 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
11450
11451         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
11452         better code generation.
11453
11454 2007-02-20  Ben Elliston  <bje@au.ibm.com>
11455
11456         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
11457
11458 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
11459
11460         * config/alpha/alpha.c, config/alpha/alpha.md,
11461         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
11462         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
11463         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
11464         config/arm/lib1funcs.asm: Follow spelling conventions.
11465
11466         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
11467         config/fr30/fr30.md, config/i386/i386.h,
11468         config/iq2000/iq2000.h, config/iq2000/predicates.md,
11469         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
11470         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
11471         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
11472         config/rs6000/altivec.md, config/rs6000/rs6000.c,
11473         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
11474         config/sparc/sparc.c, config/sparc/sparc.h,
11475         config/sparc/sparc.md, config/spu/constraints.md,
11476         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
11477         conventions.
11478
11479 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
11480
11481         PR target/29943
11482         * varasm.c (use_blocks_for_decl_p): Return false for decls with
11483         alias attribute.
11484
11485 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
11486
11487         * doc/invoke.texi (-ftree-lrs): Remove.
11488
11489 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
11490
11491         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
11492         NULL.
11493
11494 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
11495
11496         * config/ia64/ia64.c (ia64_expand_builtin): Use the
11497         new CALL_EXPR_FN macro for retrieving the function
11498         declaration of the input expression.
11499
11500 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11501
11502         * c.opt (Waddress): New.
11503         * common.opt (Walways-true): Delete.
11504         (Wstring-literal-comparison): Delete.
11505         * doc/invoke.texi (Warning Options): Delete -Walways-true and
11506         -Wstring-literal-comparison. Add -Waddress.
11507         (Waddress): New.
11508         (Walways-true): Delete.
11509         (Wstring-literal-comparison): Delete.
11510         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
11511         consistently instead of -Walways-true in example.
11512         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
11513         * c-typeck.c (parser_build_binary_op): Replace
11514         -Wstring-literal-comparison and -Walways-true with -Waddress.
11515         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
11516         with -Waddress.
11517
11518 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
11519
11520         * tree-cfg.c (dump_function_to_file): Be prepared for functions
11521         without DECL_STRUCT_FUNCTION initialized.
11522
11523 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
11524
11525         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
11526         due to calls to functions taking pointers as parameters.
11527
11528 2007-02-19  Richard Henderson  <rth@redhat.com>
11529
11530         PR debug/29558
11531         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
11532         in memory.
11533
11534 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11535
11536         * config/s390/s390.c (s390_call_saved_register_used,
11537         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
11538         accessed to the new scheme.
11539
11540 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11541
11542         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
11543         (cris_print_index, cris_print_operand, cris_print_operand_address)
11544         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
11545         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
11546         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
11547         GET_CODE () == xxx.
11548         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
11549         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
11550         GO_IF_LEGITIMATE_ADDRESS): Ditto.
11551         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
11552         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
11553         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
11554         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
11555         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
11556         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
11557         (uminsi3, call, call_value): Ditto.
11558         (define_split: indir_to_reg_split, unnamed): Ditto.
11559
11560 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
11561
11562         PR tree-optimization/30975
11563         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
11564         wrong assert.
11565
11566 2007-02-18  Eric Christopher  <echristo@gmail.com>
11567
11568         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
11569         Remove use of arglist.
11570         (mips_expand_builtin): Remove use of arglist, pass in expr.
11571         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
11572         (mips_expand_builtin_movtf): Ditto.
11573         (mips_expand_builtin_compare): Ditto.
11574
11575 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
11576
11577         * tree-sra.c (sra_build_assignment): Replace assertion
11578         checking with a comment explaining why it can't be done.
11579
11580 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
11581
11582         PR middle-end/30833
11583         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
11584         during CALL_EXPR representation conversion.
11585         * tree-ssa-propagate.c (set_rhs): Likewise.
11586
11587 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
11588
11589         * tree-sra.c (sra_build_assignment): Disable assertion checking
11590         for now.
11591
11592 2007-02-18  Roger Sayle  <roger@eyesopen.com>
11593
11594         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
11595         instead of calling build2 with a GIMPLE_MODIFY_STMT.
11596         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
11597         Likewise.
11598         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
11599         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
11600         gimplify_init_ctor_eval_range, gimple_push_cleanup,
11601         gimplify_omp_for, gimplify_omp_atomic_pipeline,
11602         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
11603         force_gimple_operand): Likewise.
11604         * ipa-cp.c (constant_val_insert): Likewise.
11605         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
11606         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
11607         perfect_nestify): Likewise.
11608         * langhooks.c (lhd_omp_assignment): Likewise.
11609         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
11610         lower_copyprivate_clauses, lower_send_clauses,
11611         lower_send_shared_vars, expand_parallel_call,
11612         expand_omp_for_generic, expand_omp_for_static_nochunk,
11613         expand_omp_for_static_chunk, expand_omp_sections,
11614         lower_omp_single_copy, lower_omp_for_lastprivate,
11615         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
11616         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
11617         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
11618         Likewise.
11619
11620 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
11621
11622         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
11623         config/sh/sh.md: Follow spelling conventions.
11624
11625         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
11626         config/frv/predicates.md: Follow spelling conventions.
11627
11628         * config/m68k/linux-unwind.h: Fix a comment typo.
11629         * target.h: Follow spelling conventions.
11630
11631 2007-02-18  Roger Sayle  <roger@eyesopen.com>
11632
11633         PR rtl-optimization/28173
11634         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
11635         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
11636         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
11637         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
11638         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
11639
11640 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11641
11642         * builtins.c (fold_builtin_load_exponent): New.
11643         (fold_builtin_2): Use it.
11644
11645 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
11646
11647         PR rtl-optimization/30773
11648         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
11649         if we fail to attach a REG_EQUIV note.
11650
11651 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
11652             Roger Sayle  <roger@eyesopen.com>
11653
11654         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
11655
11656 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
11657
11658         * calls.c (initialize_argument_information): Pass original EXP
11659         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
11660         code to split complex arguments here, as part of initializing the
11661         ARGS array.
11662         (expand_call): Remove code that builds a list of arguments and
11663         inserts implicit arguments into it.  Instead, just count how many
11664         implicit arguments there will be so we can determine the size of
11665         the ARGS array, and let initialize_argument_information do the work.
11666         (split_complex_values): Delete unused function.
11667
11668 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
11669
11670         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
11671
11672 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
11673
11674         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
11675         for arg pointer based indexed addressing.
11676
11677 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
11678
11679         * config/ia64/ia64.h, config/ia64/ia64.md,
11680         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
11681         spelling conventions.
11682
11683 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
11684
11685         * config/m68k/m68k.c (split_di): New.
11686         * config/m68k/m68k-protos.h: Declare split_di.
11687         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
11688           Improve predicate handling and split constant shifts.
11689
11690 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
11691
11692         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
11693         parameter for register bitfield operations, general predicates
11694         cleanup
11695
11696 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
11697
11698         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
11699         * config/m68k/linux-unwind.h: New file.
11700
11701 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
11702
11703         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
11704         config/i386/athlon.md, config/ia64/ia64.md,
11705         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
11706         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
11707         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
11708         tree-ssa-loop-niter.c, tree-vect-analyze.c,
11709         tree-vect-transform.c: Fix comment typos.
11710
11711 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
11712
11713         * sched-deps.c (find_insn_list): Remove.
11714         * sched-int.h: Remove the prototype for find_insn_list.
11715
11716 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
11717
11718         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
11719         to linker.
11720         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
11721         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
11722         darwin_rs6000_override_options.
11723         (C_COMMON_OVERRIDE_OPTIONS): Expect
11724         darwin_macosx_version_min to be non-NULL always.
11725         (TARGET_C99_FUNCTIONS): Likewise.
11726         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
11727         (DARWIN_MINVERSION_SPEC): New.
11728         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
11729         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
11730         to cc1*.
11731         (DARWIN_MINVERSION_SPEC): New.
11732         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
11733         value.
11734         * config/darwin-c.c (darwin_cpp_builtins): Expect
11735         darwin_macosx_version_min to be non-NULL always.
11736
11737         * config/rs6000/rs6000.c: Clean up trailing whitespace.
11738
11739 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
11740
11741         * config/i386/i386.h (x86_use_xchgb): New.
11742         (TARGET_USE_XCHGB): New macro.
11743         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
11744         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
11745         Split after reload into bswaphi for shifts of 8.
11746         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
11747         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
11748         or when optimizing for size.
11749
11750 2007-02-16  Richard Guenther  <rguenther@suse.de>
11751             Christian Bruel  <christian.bruel@st.com>
11752
11753         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
11754         DECLs but prefer SSA_NAMEs over DECLs.
11755
11756 2007-02-16  Richard Guenther  <rguenther@suse.de>
11757
11758         * tree-flow-inline.h (single_imm_use_p): Remove.
11759         (zero_imm_uses_p): Likewise.
11760         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
11761         instead of single_imm_use_p.
11762         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
11763         zero_imm_uses_p.
11764
11765 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11766
11767         PR other/27843
11768         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
11769         nested double- and backquotes.
11770
11771 2007-02-15  Roger Sayle  <roger@eyesopen.com>
11772
11773         PR middle-end/30391
11774         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
11775         should be unreachable.
11776         (build2_stat): Allow construction of MODIFY_EXPR at any time.
11777         For the time being redirect GIMPLE_MODIFY_STMT to the new
11778         (renamed) build_gimple_modify_stmt_stat.
11779         (build2_gimple_stat): Rename to...
11780         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
11781         Always build a GIMPLE_MODIFY_STMT node.
11782         * tree.h (build2_gimple, build2_gimple_stat): Delete.
11783         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
11784         declarations.
11785
11786         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
11787         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
11788         * tree-complex.c (set_component_ssa_name, expand_complex_move,
11789         expand_complex_div_wide): Likewise.
11790         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
11791         * tree-ssa-loop-im.c (schedule_sm): Likewise.
11792         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
11793         * tree-ssa-loop-manip.c (create_iv): Likewise.
11794         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
11795         abs_replacement): Likewise.
11796         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
11797         realify_fake_stores): Likewise.
11798
11799         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
11800         node rather than a GIMPLE_MODIFY_STMT node.
11801         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
11802         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
11803         Likewise.
11804         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
11805         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
11806         GIMPLE_MODIFY_STMT.
11807
11808 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11809
11810         PR middle-end/30433
11811         * fold-const.c (fold_comparison): Add back the
11812         folding of constant complex comparisions.
11813
11814 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11815
11816         PR middle-end/30729
11817         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
11818         effects unknown to this function, return early.
11819
11820 2007-02-15  Ian Lance Taylor  <iant@google.com>
11821
11822         * lower-subreg.c (move_eh_region_note): New static function.
11823         (resolve_simple_move): Call it.
11824         (decompose_multiword_subregs): Track blocks for which we resolve a
11825         simple move which is also a control flow insn.  Pass them to
11826         find_many_sub_basic_blocks.
11827         (pass_lower_subreg): Add TODO_verify_flow.
11828         (pass_lower_subreg2): Likewise.
11829
11830 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11831             Brooks Moses  <brooks.moses@codesourcery.com>
11832             Lee Millward  <lee.millward@codesourcery.com>
11833
11834         * tree.h (enum tree_code_class): Add tcc_vl_exp.
11835         (VL_EXP_CLASS_P): New.
11836         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
11837         TREE_CODE_LENGTH.
11838         (TREE_OPERAND_CHECK_CODE): Likewise.
11839         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
11840         (TREE_RTL_OPERAND_CHECK): Likewise.
11841         (tree_operand_check_failed): Make second parameter the whole tree
11842         instead of its code.  Fixed callers.
11843         (VL_EXP_CHECK): New.
11844         (TREE_OPERAND_LENGTH): New.
11845         (VL_EXP_OPERAND_LENGTH): New.
11846         (CALL_EXPR_FN): New.
11847         (CALL_EXPR_STATIC_CHAIN): New.
11848         (CALL_EXPR_ARGS): New.
11849         (CALL_EXPR_ARG): New.
11850         (call_expr_nargs): New.
11851         (CALL_EXPR_ARGP): New.
11852         (build_nt_call_list): Declare.
11853         (build_vl_exp_stat): Declare.
11854         (build_vl_exp): New.
11855         (build_call_list): Declare.
11856         (build_call_nary): Declare.
11857         (build_call_valist): Declare.
11858         (build_call_array): Declare.
11859         (call_expr_arg): Declare.
11860         (call_expr_argp): Declare.
11861         (call_expr_arglist): Declare.
11862         (fold_build_call_list): Declare.
11863         (fold_build_call_list_initializer): Declare.
11864         (fold_call_expr): Declare to replace fold_builtin.
11865         (fold_builtin_fputs): Update to agree with modified definition.
11866         (fold_builtin_strcpy): Likewise.
11867         (fold_builtin_strncpy): Likewise.
11868         (fold_builtin_memory_chk): Likewise.
11869         (fold_builtin_stxcpy_chk): Likewise.
11870         (fold_builtin_strncpy_chk): Likewise.
11871         (fold_builtin_next_arg): Likewise.
11872         (fold_build_call_expr): Declare.
11873         (fold_builtin_call_list): Declare.
11874         (fold_builtin_call_valist): Declare.
11875         (build_call_expr): Declare.
11876         (validate_arglist): Update to agree with modified definition.
11877         (tree_operand_length): New.
11878         (call_expr_arg_iterator): New.
11879         (init_call_expr_arg_iterator): New.
11880         (next_call_expr_arg): New.
11881         (first_call_expr_arg): New.
11882         (more_call_expr_args_p): New.
11883         (FOR_EACH_CALL_EXPR_ARG): New.
11884
11885         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
11886         and tcc_gimple_stmt.
11887         (tree_code_size): Update documentation.  Use sizeof (tree) rather
11888         than sizeof (char *).
11889         (tree_size): Likewise.  Add case for tcc_vl_exp.
11890         (tree_node_structure): Add case for tcc_vl_exp.
11891         (contains_placeholder_p): Likewise.
11892         (substitute_in_expr): Likewise.
11893         (substitute_placeholder_in_expr): Likewise.
11894         (stabilize_reference_1): Likewise.
11895         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
11896         to diagnose breakage of this interface for constructing CALL_EXPRs.
11897         (build_nt): Add similar assertion here.
11898         (build_nt_call_list): New.
11899         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
11900         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
11901         TREE_CODE_LENGTH.
11902         (get_callee_fndecl): Use new CALL_EXPR accessors.
11903         (tree_operand_check_failed): Change parameters to pass entire node
11904         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
11905         (process_call_operands): New.
11906         (build_vl_exp_stat): New.
11907         (build_call_list): New.
11908         (build_call_nary): New.
11909         (build_call_valist): New.
11910         (build_call_array): New.
11911         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11912         (call_expr_arglist): New.
11913
11914         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
11915         tcc_vl_exp instead of a fixed-size tcc_expression.
11916
11917         * doc/c-tree.texi (CALL_EXPR): Document new representation and
11918         accessors for CALL_EXPRs.
11919         (AGGR_INIT_EXPR): Likewise.
11920
11921 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11922             Brooks Moses  <brooks.moses@codesourcery.com>
11923             Lee Millward  <lee.millward@codesourcery.com>
11924
11925         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
11926         (expand_builtin_nonlocal_goto): Change parameter to be entire
11927         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
11928         (expand_builtin_prefetch): Likewise.
11929         (expand_builtin_classify_type): Likewise.
11930         (mathfn_built_in): Return NULL_TREE instead of 0.
11931         (expand_errno_check): Use new CALL_EXPR accessors.
11932         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
11933         Return NULL_RTX instead of 0.
11934         (expand_builtin_mathfn_2): Likewise.
11935         (expand_builtin_mathfn_3): Likewise.
11936         (expand_builtin_interclass_mathfn): Likewise.
11937         (expand_builtin_sincos): Likewise.
11938         (expand_builtin_cexpi): Likewise.
11939         (expand_builtin_int_roundingfn): Likewise.
11940         (expand_builtin_int_roundingfn_2): Likewise.
11941         (expand_builtin_pow): Likewise.
11942         (expand_builtin_powi): Likewise.
11943         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
11944         of arglist, fixing callers appropriately.  Use new CALL_EXPR
11945         accessors and constructors.  Return NULL_RTX instead of 0.
11946         (expand_builtin_strstr): Likewise.
11947         (expand_builtin_strchr): Likewise.
11948         (expand_builtin_strrchr): Likewise.
11949         (expand_builtin_strpbrk): Likewise.
11950         (expand_builtin_memcpy): Likewise.
11951         (expand_builtin_mempcpy): Likewise.
11952         (expand_builtin_mempcpy_args): New.
11953         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
11954         (expand_builtin_memmove_args): New.
11955         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
11956         (expand_movstr): Likewise.
11957         (expand_builtin_strcpy): Likewise.
11958         (expand_builtin_strcpy_args): New.
11959         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
11960         (expand_builtin_strncpy): Likewise.
11961         (expand_builtin_memset): Likewise.
11962         (expand_builtin_memset_args): New.
11963         (expand_builtin_bzero): Similarly to expand_builtin_memset.
11964         (expand_builtin_memcmp): Likewise.
11965         (expand_builtin_strcmp): Likewise.
11966         (expand_builtin_strncmp): Likewise.
11967         (expand_builtin_strcat): Likewise.
11968         (expand_builtin_strncat): Likewise.
11969         (expand_builtin_strspn): Likewise.
11970         (expand_builtin_strcspn): Likewise.
11971         (expand_builtin_args_info): Likewise.
11972         (expand_builtin_va_start): Likewise.
11973         (gimplify_va_arg_expr): Likewise.
11974         (expand_builtin_va_end): Likewise.
11975         (expand_builtin_va_copy): Likewise.
11976         (expand_builtin_frame_address): Likewise.
11977         (expand_builtin_alloca): Likewise.
11978         (expand_builtin_bswap): Likewise.
11979         (expand_builtin_unop): Likewise.
11980         (expand_builtin_fputs): Likewise.
11981         (expand_builtin_expect): Likewise.
11982         (expand_builtin_fabs): Likewise.
11983         (expand_builtin_copysign): Likewise.
11984         (expand_builtin_printf): Likewise.
11985         (expand_builtin_fprintf): Likewise.
11986         (expand_builtin_sprintf): Likewise.
11987         (expand_builtin_init_trampoline): Likewise.
11988         (expand_builtin_signbit): Likewise.
11989         (expand_builtin_fork_or_exec): Likewise.
11990         (expand_builtin_sync_operation): Likewise.
11991         (expand_builtin_compare_and_swap): Likewise.
11992         (expand_builtin_lock_test_and_set): Likewise.
11993         (expand_builtin_lock_release): Likewise.
11994         (expand_builtin): Likewise.
11995         (builtin_mathfn_code): Likewise.
11996
11997         (fold_builtin_constant_p): Pass call arguments individually instead
11998         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
11999         accessors and constructors.  Return NULL_TREE instead of 0.
12000         (fold_builtin_expect): Likewise.
12001         (fold_builtin_classify_type): Likewise.
12002         (fold_builtin_strlen): Likewise.
12003         (fold_builtin_nan): Likewise.
12004         (integer_valued_real_p): Likewise.
12005         (fold_trunc_transparent_mathfn): Likewise.
12006         (fold_fixed_mathfn): Likewise.
12007         (fold_builtin_cabs): Likewise.
12008         (fold_builtin_sqrt): Likewise.
12009         (fold_builtin_cbrt): Likewise.
12010         (fold_builtin_cos): Likewise.
12011         (fold_builtin_cosh): Likewise.
12012         (fold_builtin_tan): Likewise.
12013         (fold_builtin_sincos): Likewise.
12014         (fold_builtin_cexp): Likewise.
12015         (fold_builtin_trunc): Likewise.
12016         (fold_builtin_floor): Likewise.
12017         (fold_builtin_ceil): Likewise.
12018         (fold_builtin_round): Likewise.
12019         (fold_builtin_int_roundingfn): Likewise.
12020         (fold_builtin_bitop): Likewise.
12021         (fold_builtin_bswap): Likewise.
12022         (fold_builtin_logarithm): Likewise.
12023         (fold_builtin_hypot): Likewise.
12024         (fold_builtin_pow): Likewise.
12025         (fold_builtin_powi): Likewise.
12026         (fold_builtin_exponent): Likewise.
12027         (fold_builtin_memset): Likewise.
12028         (fold_builtin_bzero): Likewise.
12029         (fold_builtin_memory_op): Likewise.
12030         (fold_builtin_bcopy): Deleted; call site changed to invoke
12031         fold_builtin_memory_op directly.
12032         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
12033         (fold_builtin_strncpy): Likewise.
12034         (fold_builtin_memcmp): Likewise.
12035         (fold_builtin_strcmp): Likewise.
12036         (fold_builtin_strncmp): Likewise.
12037         (fold_builtin_signbit): Likewise.
12038         (fold_builtin_copysign): Likewise.
12039         (fold_builtin_isascii): Likewise.
12040         (fold_builtin_toascii): Likewise.
12041         (fold_builtin_isdigit): Likewise.
12042         (fold_builtin_fabs): Likewise.
12043         (fold_builtin_abs): Likewise.
12044         (fold_builtin_fmin_fmax): Likewise.
12045         (fold_builtin_carg): Likewise.
12046         (fold_builtin_classify): Likewise.
12047         (fold_builtin_unordered_cmp): Likewise.
12048
12049         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
12050         New functions split out from fold_builtin_1.
12051         (fold_builtin_n): New.
12052         (fold_builtin_varargs): New.
12053         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
12054         instead.
12055         (fold_call_expr): New.
12056         (build_function_call_expr): Rewrite to use new helper function.
12057         (fold_builtin_call_list): New.
12058         (build_call_expr): New.
12059         (fold_builtin_call_valist): New.
12060         (rewrite_call_expr): New.
12061         (validate_arg): New.
12062         (validate_arglist): Change parameter to be entire CALL_EXPR instead
12063         of an arglist.  Change return type to bool.  Use new CALL_EXPR
12064         accessors.
12065
12066         (fold_builtin_strstr):  Pass call arguments individually instead
12067         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12068         accessors and constructors.  Return NULL_TREE instead of 0.
12069         (fold_builtin_strchr): Likewise.
12070         (fold_builtin_strrchr): Likewise.
12071         (fold_builtin_strpbrk): Likewise.
12072         (fold_builtin_strcat): Likewise.
12073         (fold_builtin_strncat): Likewise.
12074         (fold_builtin_strspn): Likewise.
12075         (fold_builtin_strcspn): Likewise.
12076         (fold_builtin_fputs): Likewise.
12077         (fold_builtin_next_arg): Likewise.
12078         (fold_builtin_sprintf): Likewise.
12079
12080         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
12081         NULL_RTX instead of 0.
12082         (expand_builtin_memory_chk): Likewise.
12083         (maybe_emit_chk_warning): Likewise.
12084         (maybe_emit_sprintf_chk_warning): Likewise.
12085
12086         (fold_builtin_object_size): Pass call arguments individually instead
12087         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
12088         accessors and constructors.  Return NULL_TREE instead of 0.
12089         (fold_builtin_memory_chk): Likewise.
12090         (fold_builtin_stxcpy_chk): Likewise.
12091         (fold_builtin_strncpy_chk): Likewise.
12092         (fold_builtin_strcat_chk): Likewise.
12093         (fold_builtin_strcat_chk): Likewise.
12094         (fold_builtin_strncat_chk): Likewise.
12095         (fold_builtin_sprintf_chk): Likewise.
12096         (fold_builtin_snprintf_chk): Likewise.
12097         (fold_builtin_printf): Likewise.
12098         (fold_builtin_vprintf): Likewise.
12099
12100         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
12101         constructors.
12102         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
12103         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12104         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
12105         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
12106         (fold_unary): Likewise.
12107         (fold_binary): Likewise.
12108         (fold_ternary): Remove CALL_EXPR case, since they are no longer
12109         ternary expressions.
12110         (fold): Add logic for tcc_vl_exp.
12111         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
12112         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12113         (fold_build3_stat): Add assertion to flag broken interface for
12114         constructing CALL_EXPRs.
12115         (fold_build_call_list): New.
12116         (fold_build_call_list_initializer): New.
12117         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
12118         constructors.
12119         (fold_strip_sign_ops): Likewise.
12120
12121 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12122             Brooks Moses  <brooks.moses@codesourcery.com>
12123             Lee Millward  <lee.millward@codesourcery.com>
12124
12125         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
12126         accessors and dump arguments explicitly.
12127
12128         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
12129         TREE_CODE_LENGTH.
12130         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
12131         explicitly.
12132         (print_call_name): Use new CALL_EXPR accessors.
12133
12134         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
12135         CALL_EXPR arguments explicitly instead of as a list.  Use
12136         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12137
12138         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
12139         (vrp_visit_stmt): Likewise.
12140
12141         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
12142         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
12143         TREE_CODE_LENGTH.
12144         (force_move_till_expr): Likewise.
12145
12146         * targhooks.c (default_external_stack_protect_fail): Use
12147         build_call_expr instead of build_function_call_expr.
12148         (default_hidden_stack_protect_fail): Likewise.
12149
12150         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
12151         build the call.
12152
12153         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
12154         and walk arguments explicitly.
12155
12156         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
12157         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12158         (expand_simple_operations): Likewise.
12159         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
12160
12161         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
12162         of TREE_CODE_LENGTH.
12163         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
12164
12165         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
12166         instead of TREE_CODE_LENGTH.
12167
12168         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
12169         (tree_ic_transform): Likewise.
12170         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
12171         parameter instead of arglist.  Fix callers.
12172         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
12173         (tree_stringops_transform): Likewise.
12174         (tree_indirect_call_to_profile): Likewise.
12175         (tree_stringops_values_to_profile): Likewise.
12176
12177         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
12178         (eliminate_tail_call): Likewise.
12179
12180         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
12181
12182         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
12183         Use TREE_OPERAND_LENGTH and generalize to handle any number of
12184         operands.
12185         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
12186
12187         * omp-low.c (build_omp_barrier): Use build_call_expr.
12188         (lower_rec_input_clauses): Likewise.
12189         (lower_reduction_clauses): Likewise.
12190         (expand_parallel_call): Likewise.
12191         (maybe_catch_exception): Likewise.
12192         (expand_omp_for_generic): Likewise.
12193         (expand_omp_for_static_nochunk): Likewise.
12194         (expand_omp_sections): Likewise.
12195         (lower_omp_single_simple): Likewise.
12196         (lower_omp_single_copy): Likewise.
12197         (lower_omp_master): Likewise.
12198         (lower_omp_ordered): Likewise.
12199         (lower_omp_critical): Likewise.
12200
12201         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
12202         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
12203
12204         * tree-gimple.c (is_gimple_call_addr): Fix doc.
12205         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
12206         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
12207
12208         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
12209         and generalize to handle any number of operands.
12210         (chrec_contains_undetermined): Likewise.
12211         (tree_contains_chrecs): Likewise.
12212         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
12213
12214         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
12215
12216         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
12217         fold_call_expr instead of fold_builtin.
12218         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
12219         match declarations there.
12220         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
12221         updates.
12222
12223         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
12224         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12225
12226         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
12227         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
12228
12229         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
12230         accessors.
12231
12232         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
12233         (execute_cse_sincos): Use new CALL_EXPR accessors.
12234
12235         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
12236
12237         * gimple-low.c (lower_function_body): Use build_call_expr.
12238         (lower_builtin_setjmp): Likewise.
12239
12240         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
12241         (set_storage_via_libcall): Likewise.
12242         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
12243         instead of TREE_CODE_LENGTH.
12244         (expand_expr_real_1): Use new CALL_EXPR accessors.
12245
12246         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
12247         generalize to handle any number of operands.
12248         (TB_parent_eq): Likewise.
12249
12250         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
12251         (strip_builtin_expect): Likewise.
12252
12253         * function.c (gimplify_parameters): Use build_call_expr.
12254
12255         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
12256         instead of TREE_CODE_LENGTH.
12257
12258         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
12259         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
12260
12261         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
12262         iterators.
12263
12264         * gimplify.c (build_stack_save_restore): Use build_call_expr.
12265         (gimplify_decl_expr): Likewise.
12266         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
12267         Use new CALL_EXPR iterators.
12268         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
12269         (gimplify_modify_expr_to_memset): Likewise.
12270         (gimplify_variable_sized_compare): Likewise.
12271         (gimplify_omp_atomic_fetch_op): Likewise.
12272         (gimplify_omp_atomic_pipeline): Likewise.
12273         (gimplify_omp_atomic_mutex): Likewise.
12274         (gimplify_function_tree): Likewise.
12275
12276         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
12277         (call_expr_flags): Likewise.
12278         (expand_call): Likewise.
12279
12280         * except.c (expand_builtin_eh_return_data_regno): Pass entire
12281         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
12282         accessors.
12283
12284         * coverage.c (create_coverage): Use build_call_expr.
12285
12286         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
12287         (temp_call_expr_obstack): New.
12288         (pool_copy_list): Delete.
12289         (temp_copy_call_expr): New.
12290         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
12291         CALL_EXPR accessors.  Get rid of special goo for copying argument
12292         lists and use temp_copy_call_expr instead.
12293         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
12294         CALL_EXPR accessors.
12295         (create_expression_by_pieces): Likewise.  Use build_call_array
12296         to construct the result instead of fold_build3.
12297         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
12298         dealing with argument lists.
12299         (init_pre): Remove references to expression_node_pool and
12300         list_node_pool.  Init temp_call_expr_obstack instead.
12301         (fini_pre): Remove references to expression_node_pool and
12302         list_node_pool.
12303
12304         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
12305         and walk arguments explicitly instead of as a list.
12306
12307         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
12308         (mx_register_decls): Likewise.
12309         (mudflap_register_call): Likewise.
12310         (mudflap_finish_file): Likewise.
12311
12312         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
12313         (ipa_callsite_compute_param): Likewise.
12314
12315         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
12316         accessors and constructor.
12317
12318         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
12319         accessors and constructor.
12320         (convert_tramp_reference): Likewise.
12321         (convert_call_expr): Likewise.
12322         (finalize_nesting_tree_1): Likewise.
12323
12324         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
12325         accessors.
12326
12327         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
12328
12329         * tree-inline.c (initialize_inlined_parameters): Pass entire
12330         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
12331         accessors.
12332         (estimate_num_insns_1): Use new CALL_EXPR accessors.
12333         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
12334
12335         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
12336         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12337         (vectorizable_reduction): Likewise.
12338         (vectorizable_call): Use new CALL_EXPR iterators.
12339         (vectorizable_conversion): Use build_call_expr.
12340         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
12341         (vect_gen_widened_results_half): Use build_call_expr.
12342         (vect_setup_realignment): Likewise.
12343         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
12344
12345         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
12346         (pass_through_call): Likewise.
12347         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
12348         fold_builtin.
12349
12350         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
12351         (tree_gen_pow2_profiler): Likewise.
12352         (tree_gen_one_value_profiler): Likewise.
12353         (tree_gen_ic_func_profiler): Likewise.
12354         (tree_gen_average_profiler): Likewise.
12355         (tree_gen_ior_profiler): Likewise.
12356
12357         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
12358         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
12359         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
12360
12361         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
12362         of TREE_CODE_LENGTH.
12363
12364         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
12365         of TREE_CODE_LENGTH.
12366
12367         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
12368         constructor.
12369         (convert_to_integer): Likewise.
12370
12371         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
12372         accessors.
12373
12374 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12375             Brooks Moses  <brooks.moses@codesourcery.com>
12376             Lee Millward  <lee.millward@codesourcery.com>
12377
12378         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
12379         accessors.
12380         * config/frv/frv.c (frv_expand_builtin): Likewise.
12381         * config/s390/s390.c (s390_expand_builtin): Likewise.
12382
12383         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
12384         (sparc_expand_builtin): Use new CALL_EXPR accessors.
12385
12386         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
12387         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
12388         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
12389         (ix86_expand_store_builtin): Likewise.
12390         (ix86_expand_unop_builtin): Likewise.
12391         (ix86_expand_unop1_builtin): Likewise.
12392         (ix86_expand_sse_compare): Likewise.
12393         (ix86_expand_sse_comi): Likewise.
12394         (ix86_expand_vec_init_builtin): Likewise.
12395         (ix86_expand_vec_ext_builtin): Likewise.
12396         (ix86_expand_vec_set_builtin): Likewise.
12397         (ix86_expand_builtin): Use new CALL_EXPR accessors.
12398
12399         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
12400         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
12401
12402         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
12403         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12404         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
12405
12406         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
12407         build_call_expr.
12408         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
12409         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
12410         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12411         (altivec_expand_abs_builtin): Likewise.
12412         (rs6000_expand_binop_builtin): Likewise.
12413         (altivec_expand_predicate_builtin): Likewise.
12414         (altivec_expand_lv_builtin): Likewise.
12415         (spe_expand_stv_builtin): Likewise.
12416         (altivec_expand_stv_builtin): Likewise.
12417         (rs6000_expand_ternop_builtin): Likewise.
12418         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
12419         (altivec_expand_st_builtin): Likewise.
12420         (altivec_expand_dst_builtin): Likewise.
12421         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
12422         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12423         (altivec_expand_vec_set_builtin): Likewise.
12424         (altivec_expand_vec_ext_builtin): Likewise.
12425         (altivec_expand_builtin): Use new CALL_EXPR accessors.
12426         (spe_expand_builtin): Likewise.
12427         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
12428         arglist.  Use new CALL_EXPR accessors.  Fix callers.
12429         (spe_expand_evsel_builtin): Likewise.
12430         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
12431         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
12432
12433         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
12434         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12435         (arm_expand_unop_builtin): Likewise.
12436         (arm_expand_builtin): Use new CALL_EXPR accessors.
12437
12438         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
12439         accessors.
12440
12441         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
12442         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12443         (bfin_expand_unop_builtin): Likewise.
12444         (bfin_expand_builtin): Use new CALL_EXPR accessors.
12445
12446 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12447             Brooks Moses  <brooks.moses@codesourcery.com>
12448             Lee Millward  <lee.millward@codesourcery.com>
12449
12450         * c-semantics.c (build_stmt): Add internal diagnostic check.
12451
12452         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
12453         accessors.  Print arguments explicitly instead of as a list.
12454
12455         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
12456
12457         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
12458         (c_finish_omp_flish): Likewise.
12459
12460         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
12461         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
12462         instead of TREE_CODE_LENGTH.
12463         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
12464         (c_warn_unused_result): Likewise.
12465
12466 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12467
12468         PR c/26494
12469         * doc/invoke.texi (Warning Options): Remove
12470         -Werror-implicit-function-declaration.
12471         (Wimplicit-function-declaration): Update description.
12472         * opts.c (common_handle_option): Move handling of -Werror=* to...
12473         (enable_warning_as_error): ...here.
12474         * opts.h (enable_warning_as_error): Declare.
12475         * c-decl.c (implicit_decl_warning): Unless
12476         -Wno-implicit-function-declaration is given, emit a pedwarn if
12477         -std=c99 or emit a warning if -Wimplicit-function-declaration.
12478         * c.opt (Wimplicit-function-declaration): Replace
12479         mesg_implicit_function_declaration with
12480         warn_implicit_function_declaration.
12481         * c-opts.c (c_common_handle_option):
12482         -Werror-implicit-function-declaration is exactly equal as
12483         -Werror=implicit-function-declaration.
12484         (set_Wimplicit): Replace mesg_implicit_function_declaration with
12485         warn_implicit_function_declaration.
12486         (c_common_post_options): -Wimplict-function-declaration is enabled
12487         by default by -std=c99, otherwise is disabled by default.
12488         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
12489
12490 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
12491
12492         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
12493         DECL on the rhs to a DECL on the lhs for debug info purposes if the
12494         former is ignored but not the latter.
12495
12496 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
12497
12498         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
12499         is made and the reference doesn't use the alias set of its type,
12500         do not create the temporary using that type.
12501
12502 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
12503
12504         * jump.c: Remove prototypes for delete_computation and
12505         delete_prior_computation.
12506
12507 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
12508
12509         * jump.c (get_label_after): Delete.
12510         (get_label_before, delete_computation, delete_jump,
12511         delete_prior_computation, follow_jumps): Move...
12512         * reorg.c (delete_computation, delete_prior_computation): ... here...
12513         (get_label_before, delete_jump): ... making these static ...
12514         (follow_jumps): ... and simplifying this since it only runs after
12515         reload.
12516         * rtl.h (get_label_after, get_label_before, delete_jump,
12517         follow_jumps): Delete prototypes.
12518
12519 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
12520
12521         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
12522
12523 2007-02-15  Nick Clifton  <nickc@redhat.com>
12524
12525         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
12526         order to prevent it from being munged by the target.
12527
12528 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
12529
12530         * config/i386/i386.md: Remove misleading comment.
12531
12532 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12533
12534         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
12535         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
12536         invalid patterns.
12537
12538 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12539
12540         * tree-sra.c (instantiate_missing_elements): Canonicalize
12541         bit-field types.
12542         (sra_build_assignment): New.
12543         (generate_copy_inout, generate_element_copy,
12544         generate_element_zero, generate_one_element_init): Use it.
12545
12546 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12547
12548         * tree-sra.c (instantiate_missing_elements): Canonicalize
12549         bit-field types.
12550         (sra_build_assignment): New.
12551         (generate_copy_inout, generate_element_copy,
12552         generate_element_zero, generate_one_element_init): Use it.
12553
12554 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12555
12556         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
12557         limbo die nodes.
12558
12559 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
12560
12561         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
12562         types as aggregates not scalars.
12563         * function.c (assign_stack_temp_for_type): Likewise.
12564
12565 2007-02-14  Roger Sayle  <roger@eyesopen.com>
12566             Zdenek Dvorak  <dvorakz@suse.cz>
12567
12568         * tree-dump.c (dump_switch_p_1): Require exact match of the option
12569         name.
12570
12571 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
12572
12573         * passes.c (next_pass_1): Clear the next field of the copied
12574         pass structure.
12575
12576 2007-02-14  Richard Henderson  <rth@redhat.com>
12577
12578         * tree-sra.c (early_sra): New.
12579         (decl_can_be_decomposed_p): Deny va_list if early_sra.
12580         (tree_sra_early, pass_sra_early): New.
12581         * tree-pass.h (pass_sra_early): Declare.
12582         * passes.c (init_optimization_passes): Use it.
12583
12584 2007-02-14  Richard Guenther  <rguenther@suse.de>
12585
12586         * flags.h (issue_strict_overflow_warning): Convert to a macro.
12587
12588 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
12589
12590          PR tree-optimization/30771
12591         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
12592         also phi nodes.
12593         (vect_analyze_operations): Induction phis can now be marked as
12594         used_in_loop.
12595         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
12596         Update documentation accordingly.
12597
12598 2007-02-14  Nick Clifton  <nickc@redhat.com>
12599
12600         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
12601         most 3 arguments are supported.
12602         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
12603
12604 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
12605
12606         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
12607         Ensure dst->current is valid.
12608
12609 2007-02-13  Paul Brook  <paul@codesourcery.com>
12610
12611         * config.gcc: Add arm*-*-uclinux-*eabi.
12612         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
12613         (SUBTARGET_EXTRA_LINK_SPEC): Define.
12614         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
12615         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
12616         (LINK_SPEC): Define.
12617         (LIB_SPEC): Define.
12618         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
12619         register.
12620         * config/arm/uclinux-eabi.h: New file.
12621         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
12622         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
12623         based targets.
12624
12625 2007-02-13  Ian Lance Taylor  <iant@google.com>
12626
12627         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
12628         * flags.h (warn_strict_overflow): Declare.
12629         (enum warn_strict_overflow_code): Define.
12630         (issue_strict_overflow_warning): New static inline function.
12631         * opts.c (warn_strict_overflow): New variable.
12632         (common_handle_option): Handle OPT_Wstrict_overflow and
12633         OPT_Wstrict_overflow_.
12634         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
12635         OPT_Wall.
12636         * fold-const.c: Include intl.h.
12637         (fold_deferring_overflow_warnings): New static variable.
12638         (fold_deferred_overflow_warning): New static variable.
12639         (fold_deferred_overflow_code): New static variable.
12640         (fold_defer_overflow_warnings): New function.
12641         (fold_undefer_overflow_warnings): New function.
12642         (fold_undefer_and_ignore_overflow_warnings): New function.
12643         (fold_deferring_overflow_warnings_p): New function.
12644         (fold_overflow_warning): New static function.
12645         (make_range): Add strict_overflow_p parameter.  Change all
12646         callers.
12647         (extract_muldiv, extract_muldiv_1): Likewise.
12648         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
12649         tree_expr_nonnegative_p.
12650         (fold_negate_expr): Call fold_overflow_warning.
12651         (fold_range_test): Likewise.
12652         (fold_comparison): Likewise.
12653         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
12654         instead of tree_expr_nonnegative_p.
12655         (tree_expr_nonnegative_warnv_p): Rename from
12656         tree_expr_nonnegative_p, add strict_overflow_p parameter.
12657         (tree_expr_nonnegative_p): New function.
12658         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
12659         strict_overflow_p parameter.
12660         (tree_expr_nonzero_p): New function.
12661         * passes.c (verify_interpass_invariants): New static function.
12662         (execute_one_pass): Call it.
12663         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
12664         warnings.
12665         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
12666         (estimate_numbers_of_iterations): Likewise.
12667         (scev_probably_wraps_p): Likewise.
12668         * tree-ssa-ccp.c: Include "toplev.h".
12669         (evaluate_stmt): Defer fold overflow warnings until we know we are
12670         going to optimize.
12671         (struct fold_stmt_r_data): Add stmt field.
12672         (fold_stmt_r): Defer fold overflow warnings until we know we
12673         optimized.
12674         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
12675         (fold_stmt_inplace): Likewise.
12676         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
12677         (cleanup_control_expr_graph): Defer fold overflow warnings until
12678         we know we are going to optimize.
12679         * tree-cfg.c (fold_cond_expr_cond): Likewise.
12680         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
12681         Likewise.
12682         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
12683         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
12684         * tree-ssa-loop-manip.c (create_iv): Likewise.
12685         * c-typeck.c (build_conditional_expr): Likewise.
12686         (build_binary_op): Likewise.
12687         * tree-vrp.c (vrp_expr_computes_nonzero): Call
12688         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
12689         (extract_range_from_unary_expr): Likewise.
12690         * simplify-rtx.c (simplify_const_relational_operation): Warn when
12691         assuming that signed overflow does not occur.
12692         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
12693         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
12694         (fold_defer_overflow_warnings): Declare.
12695         (fold_undefer_overflow_warnings): Declare.
12696         (fold_undefer_and_ignore_overflow_warnings): Declare.
12697         (fold_deferring_overflow_warnings_p): Declare.
12698         (tree_expr_nonzero_warnv_p): Declare.
12699         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
12700         of warning options.
12701         (Warning Options): Document -Wstrict-overflow.
12702         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
12703         (tree-ssa-ccp.o): Likewise.
12704         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
12705         (fold-const.o): Depend on intl.h.
12706
12707 2007-02-13  Ian Lance Taylor  <iant@google.com>
12708
12709         PR middle-end/30751
12710         * lower-subreg.c (resolve_simple_move): Decompose subregs in
12711         addresses.
12712
12713 2007-02-13  Stuart Hastings  <stuart@apple.com>
12714
12715         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
12716
12717 2007-02-13  Richard Henderson  <rth@redhat.com>
12718
12719         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
12720         handled_component_p before looking for the indirect_ref.
12721
12722 2007-02-13  Richard Henderson  <rth@redhat.com>
12723
12724         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
12725         remove flags clobber.
12726         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
12727         (bswaphi_lowpart): New.
12728         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
12729         remove TARGET_BSWAP test.  Delete expander of the same name.
12730
12731         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
12732         (expand_unop): Use them.
12733
12734 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
12735
12736         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
12737         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
12738         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
12739         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
12740         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
12741         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
12742         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
12743         assembler dialect choice from asm templates.
12744
12745 2007-02-12  Richard Henderson  <rth@redhat.com>
12746
12747         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
12748         (fixuns_trunc<SSEMODEF>si2): Use it.
12749         * config/i386/sse.md (vec_setv4sf_0): Export.
12750         * config/i386/i386.c (ix86_build_const_vector): Export.
12751         (ix86_split_convert_uns_si_sse): Rename from
12752         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
12753         * config/i386/i386-protos.h: Update.
12754
12755 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12756
12757         PR c/29521
12758         * c-typeck.c (c_finish_return): Improve warning message.
12759
12760 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12761
12762         * alias.c (find_symbolic_term): Delete unused function.
12763
12764 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
12765
12766         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
12767         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
12768         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
12769
12770 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
12771
12772         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
12773         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
12774         the function, temporarily point the debug interface to the null one.
12775
12776 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
12777
12778         * dwarf2out.c (round_up_to_align): New static function.
12779         (field_byte_offset): Use it to round the offset.
12780
12781 2007-02-12  Richard Henderson  <rth@redhat.com>
12782
12783         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
12784         (inswl_const): Export.
12785
12786 2007-02-12  Richard Henderson  <rth@redhat.com>
12787
12788         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
12789         result mode of the libcall, convert back to outmode.
12790
12791 2007-02-12  Roger Sayle  <roger@eyesopen.com>
12792
12793         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
12794         (bswapdi2): New define_expand to implement 32-bit implementation.
12795
12796 2007-02-12  Nick Clifton  <nickc@redhat.com>
12797
12798         * doc/invoke.texi (Overall Options): Document --help=.
12799         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
12800         (cc1_options): Pass --help= on to cc1.
12801         (display_help): Add description of --help=.
12802         (process_command): Add code to handle --help=.  Allow translated
12803         --help and --target-help switches to be passed on to compiler
12804         sub-process.
12805         (main): Remove unused if statement.
12806         * opts.c (columns): Remove.
12807         (LEFT_COLUMN): Define.
12808         (wrap_help): Add columns argument.
12809         (print_filtered_help): Change parameters to be an include bitmask,
12810         an exclude bitmask, an any bitmask and the column width.  Move the
12811         code to display the params list here.  Add code to display the
12812         status of options rather than their descriptions if the quiet flag
12813         is not active.
12814         (print_specific_help): Change parameters to be an include bitmask,
12815         an exclude bitmask and an any bitmask.  Move code to look up the
12816         column width here.  Decide upon the title for an options listing.
12817         (common_handle_options): Add code to handle --help=.  Adapt code
12818         for --help and --target-help to use the revised form of the
12819         print_specific_help function.
12820         (print_help): Delete.
12821         (print_param_help): Delete.
12822         (print_switch): Delete.
12823         * opts.h (cl_lang_count): Add prototype.
12824         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
12825         CL_MAX_OPTION_CLASS): New defines.
12826         * optc-gen.awk: Add construction of cl_lang_count.
12827         * c.opt: Add Warning attribute to warning options and Optimization
12828         attribute to optimization options.
12829         * common.opt: Likewise.
12830         Add --help=.
12831         Add -fhelp and -ftarget-help as aliases for the transformed --help
12832         and --target-help options.
12833         * opt-functions.awk: Add code to handle Warning and Optimization
12834         attributes.
12835
12836 2007-02-12  Richard Henderson  <rth@redhat.com>
12837
12838         * config/alpha/constraints.md: New file.
12839         * config/alpha/alpha.c: Include tm-constrs.h.
12840         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
12841         alpha_extra_constraint): Remove.
12842         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
12843         * config/alpha/alpha-protos.h: Update.
12844         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
12845         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
12846         (EXTRA_CONSTRAINT): Remove.
12847         * config/alpha/alpha.md: Include constraints.md.
12848         (adddi splitter): Use satisfies_constraint_*.
12849         * config/alpha/predicates.md (add_operand): Likewise.
12850         (sext_add_operand, addition_operation): Likewise.
12851
12852 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
12853
12854         PR tree-optimization/29145
12855         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
12856         in our handling of restrict qualified pointers.
12857
12858 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12859
12860         PR middle-end/7651
12861         * doc/invoke.texi (Wunused-value): Update description.
12862         (Wextra): Delete item.
12863         * opts.c (set_Wextra): Don't use the value of Wextra to set the
12864         value of Wunused-value.
12865         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
12866         (c_finish_stmt_expr): Don't check extra_warnings.
12867         (emit_side_effect_warnings): The caller is responsible to check
12868         warn_unused_value.
12869
12870 2007-02-11  Roger Sayle  <roger@eyesopen.com>
12871             Matt Thomas  <matt@3am-software.com>
12872
12873         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
12874
12875 2007-02-11  Roger Sayle  <roger@eyesopen.com>
12876
12877         * simplify-rtx.c (simplify_relational_operation_1): Optimize
12878         comparisons of POPCOUNT against zero.
12879         (simplify_const_relational_operation): Likewise.
12880
12881 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12882
12883         * doc/invoke.texi (Wextra): Delete outdated paragraph.
12884
12885 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12886
12887         * dwarf2out.c (root_type): Delete unused function.
12888
12889 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12890
12891         * genattrtab.c (contained_in_p): Delete unused function.
12892         (write_expr_attr_cache): Likewise.
12893
12894 2007-02-11  Jan Hubicka  <jh@suse.cz>
12895
12896         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
12897         previous patch.
12898
12899 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
12900
12901         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
12902         to add the REG_EQ* note.
12903         * see.c (see_merge_one_use_extension): Likewise.
12904         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
12905         turn REG_EQUAL notes into REG_EQUIV notes if the target
12906         register may have more than one set.
12907         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
12908         * gcse.c (try_replace_reg): Likewise.
12909         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
12910         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
12911         more than one REG_EQUIV note.
12912         * reload1.c (gen_reload): Use set_unique_reg_note.
12913
12914 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
12915
12916         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
12917         (ix86_builtin_conversion): New function.
12918
12919 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
12920
12921         PR target/29487
12922         * tree.h (DECL_REPLACEABLE_P): New macro.
12923         * except.c (set_nothrow_function_flags): Likewise.
12924
12925 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
12926             Ira Rosen  <irar@il.ibm.com>
12927             Dorit Nuzman  <dorit@il.ibm.com>
12928
12929         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
12930         * targhooks.c (default_builtin_vectorized_conversion): New.
12931         * targhooks.h (default_builtin_vectorized_function): New declaration.
12932         * target.h (struct vectorize): Add builtin_conversion field.
12933         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
12934         stmt_vec_info_type value.
12935         (vectorizable_conversion): New declaration.
12936         * tree-vect-analyze.c (vect_analyze_operations): Add
12937         vectorizable_conversion call.
12938         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
12939         * tree-vect-transform.c (vectorizable_conversion): New function.
12940         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
12941         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
12942         mode.
12943         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
12944         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
12945         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
12946         or ALTIVEC_BUILTIN_VCFSX.
12947
12948 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12949
12950         PR target/30634
12951         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
12952         CONST_DOUBLE and operand 0 is a hard register.
12953         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
12954         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
12955         is a hard floating-point register.
12956
12957 2007-02-10  Richard Henderson  <rth@redhat.com>
12958             Jakub Jelinek  <jakub@redhat.com>
12959             Alexandre Oliva  <aoliva@redhat.com>
12960
12961         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
12962         * builtin-types.def (BT_WORD): Make unsigned.
12963         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
12964         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
12965         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
12966         * c-decl.c (grokdeclarator): Don't error if !have_tls.
12967         * c-parser.c (c_parser_omp_threadprivate): Likewise.
12968         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
12969         emulated tls.
12970         * expr.c (emutls_var_address): New.
12971         (expand_expr_real_1): Expand emulated tls.
12972         (expand_expr_addr_expr_1): Likewise.
12973         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
12974         * output.h (emutls_finish): Declare.
12975         * toplev.c (compile_file): Call it.
12976         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
12977         address before wrapping in CONST.
12978         * varasm.c (emutls_htab, emutls_object_type): New.
12979         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
12980         (get_emutls_object_name, get_emutls_object_type): New.
12981         (get_emutls_init_templ_addr, emutls_decl): New.
12982         (emutls_common_1, emutls_finish): New.
12983         (assemble_variable): When emulating tls, swap decls; generate
12984         constructor for the emutls objects.
12985         (do_assemble_alias): When emulating tls, swap decl and target name.
12986         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
12987         for emulated tls.
12988         * varpool.c (decide_is_variable_needed): Look at force_output.
12989         Recurse for emulated tls.
12990         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
12991         with decide_is_variable_needed.
12992         * emutls.c: New file.
12993         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
12994         tls_object for real tls.
12995
12996 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
12997
12998         PR rtl-optimization/29599
12999         * reload1.c (eliminate_regs_in_insn): Take the destination
13000         mode into account when computing the offset.
13001
13002 2007-02-09  Stuart Hastings  <stuart@apple.com>
13003             Richard Henderson  <rth@redhat.com>
13004
13005         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
13006         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
13007         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
13008         fixuns_truncdfhi2): New.
13009         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
13010         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
13011         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
13012         (floatunssidf2): Allow nonimmediate source.
13013         * config/i386/sse.md (movdi_to_sse): New.
13014         (vec_concatv2di): Drop '*'.
13015         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
13016         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
13017         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
13018         New.
13019         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
13020         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
13021         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
13022         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
13023         (ix86_build_signbit_mask): Fix decl of v, refactor to call
13024         ix86_build_const_vector.
13025         (x86_emit_floatuns): Rewrite.
13026
13027 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13028
13029         * genautomata.c (longest_path_length): Delete unused function.
13030         (struct state): Delete unused longest_path_length.
13031         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
13032         (get_free_state): Delete unused.
13033
13034 2007-02-09  Jan Hubicka  <jh@suse.cz>
13035
13036         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
13037         * doc/invoke.texi (inline-unit-growth): Update default value.
13038
13039         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
13040         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
13041         (rebuild_cgraph_edges): Likewise.
13042         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
13043         (dump_cgraph_node): Dump frequencies.
13044         (cgraph_clone_edge): Add frequency scales.
13045         (cgraph_clone_node): Add freuqnecy.
13046         * cgraph.h (cgraph_edge): Add freuqnecy argument.
13047         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
13048         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
13049         * tree-pass.h (TODO_rebuild_frequencies): New constant.
13050         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
13051         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
13052         (save_inline_function_body): Likewise.
13053         * ipa-inline.c: inluce rtl.h
13054         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
13055         (cgraph_edge_badness): Use frequencies.
13056         (cgraph_decide_recursive_inlining): Update clonning.
13057         (cgraph_decide_inlining_of_small_function): Dump frequency.
13058         * predict.c (estimate_bb_frequencies): Export.
13059         * predict.h (estimate_bb_frequencies): Declare.
13060         * tree-inline.c (copy_bb): Watch overflows.
13061         (expand_call_inline): Update call of cgraph_create_edge.
13062         (optimize_inline_calls): Use TODO flags to update frequnecies.
13063         * passes.h: Include predict.h
13064         (init_optimization_passes): Move profile ahead.
13065         (execute_function_todo): Handle TODO_rebuild_frequencies.
13066
13067 2007-02-09  Roger Sayle  <roger@eyesopen.com>
13068
13069         * config/alpha/alpha.c (emit_insxl): Force the first operand of
13070         the insbl or inswl pattern into a register.
13071
13072 2007-02-09  Roger Sayle  <roger@eyesopen.com>
13073
13074         * config/ia64/ia64.md (bswapdi2): New define_insn.
13075
13076 2007-02-09  Richard Henderson  <rth@redhat.com>
13077
13078         * config/i386/constraints.md (Ym): New constraint.
13079         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
13080         (movdi_1_rex64): Split sse and xmm general register moves from
13081         memory move alternatives.  Use conditional register constraints.
13082         (movsf_1, movdf_integer): Likewise.
13083         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
13084         (movdf_integer_rex64): New.
13085         (pushsf_rex64): Fix output constraints.
13086         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
13087         (sse2_stored): Likewise.
13088         (sse2_storeq_rex64): New.
13089         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
13090         amd and not generic.
13091         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
13092         for optimize_size.  Remove SF/DFmode hack.
13093
13094 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
13095
13096         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
13097         (bit_SSE4a): New.
13098
13099 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
13100             Richard Sandiford  <richard@codesourcery.com>
13101
13102         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
13103         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
13104         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
13105         m68k/t-mlib to tmake_file.
13106         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
13107         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
13108         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
13109         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
13110         variable is not empty, add t-$m68k_arch_family to tmake_file.
13111         Add t-mlibs to tmake_file.
13112         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
13113         * config/m68k/t-cf: New file.
13114         * config/m68k/t-m68k: Likewise.
13115         * config/m68k/t-mlibs: Likewise.
13116         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13117         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13118         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
13119         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13120         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
13121         Delete.
13122         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
13123         (INSTALL_LIBGCC): Delete.
13124         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
13125         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13126         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13127         (M68K_MLIB_CPU): Define.
13128         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
13129         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
13130         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
13131
13132 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
13133             Richard Guenther  <rguenther@suse.de>
13134
13135         PR middle-end/23361
13136         * fold-const.c (fold_comparison): Handle obfuscated comparisons
13137         against INT_MIN/INT_MAX.
13138         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
13139         file if a loop is removed.
13140
13141 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
13142
13143         * calls.c (store_one_arg): Pass correct alignment to
13144         emit_push_insn for non-BLKmode values.
13145         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
13146         unaligned stack slot via a suitably aligned slot.
13147
13148 2007-02-08  DJ Delorie  <dj@redhat.com>
13149
13150         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
13151         warnings.
13152         (legal_subregs): Use unsigned char, make const.
13153         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
13154
13155 2007-02-08  Paul Brook  <paul@codesourcery.com>
13156
13157         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
13158         special interworking needed.
13159
13160 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
13161
13162         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
13163         conditional to __SSE2__.
13164         (Entries below should have been added to first ChangeLog
13165         entry for amdfam10 dated 2007-02-05)
13166         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
13167         defined.
13168         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
13169         defined.
13170         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
13171         defined.
13172
13173 2007-02-08  DJ Delorie  <dj@redhat.com>
13174
13175         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
13176         * config/m32c/m32c.c (legal_subregs): New.
13177         (m32c_illegal_subreg_p): New.
13178         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
13179         unsupported subregs of hard regs.
13180
13181 2007-02-08  Jan Hubicka  <jh@suse.cz>
13182
13183         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
13184         the same one; always update histograms.
13185
13186 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
13187
13188         * passes.c (init_optimization_passes): Tidy comment.
13189
13190 2007-02-08  Roger Sayle  <roger@eyesopen.com>
13191
13192         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
13193         strip zero_extend, bswap and rotates from POCOUNT's argument.
13194         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
13195         zero_extend and rotates from PARITY's argument.
13196         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
13197         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
13198         of an integer constant at compile-time.
13199
13200 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
13201
13202         PR 30562
13203         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
13204         Update all users.
13205         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
13206         users.
13207         (init_alias_info):
13208         * tree-ssa-live.c (remove_unused_locals): Do not remove
13209         TREE_ADDRESSABLE variables.
13210         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
13211         * tree-ssa-operands.c (add_virtual_operand): Remove argument
13212         FOR_CLOBBER.  Update all users.
13213         If VAR has an associated alias set, add a virtual operand for
13214         it if no alias is found to conflict with the memory reference.
13215
13216 2007-02-07  Jan Hubicka  <jh@suse.cz>
13217             Robert Kidd <rkidd@crhc.uiuc.edu>
13218
13219         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
13220
13221 2007-02-07  Ian Lance Taylor  <iant@google.com>
13222
13223         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
13224
13225 2007-02-07  Roger Sayle  <roger@eyesopen.com>
13226
13227         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
13228         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
13229         tablejumpdi, movsi_to_cr_one): Remove constraints from
13230         define_expand's match_operands.
13231
13232 2007-02-07  Roger Sayle  <roger@eyesopen.com>
13233
13234         * global.c (compute_regsets): Move declatation of "i" inside of
13235         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
13236
13237 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
13238
13239         PR c++/30703
13240         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
13241         of INDIRECT_REF <RESULT_DECL>.
13242
13243         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
13244
13245 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
13246             Kaz Kojima  <kkojima@gcc.gnu.org>
13247
13248         PR target/29746
13249         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
13250         properly.
13251         (sh_initialize_trampoline): Add parentheses to avoid a warning.
13252
13253 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
13254
13255         * doc/loop.texi: Document possibility not to perform disambiguation
13256         of loops with multiple latches.
13257         * cfgloopmanip.c (alp_enum_p): Removed.
13258         (add_loop): Handle subloops.  Use get_loop_body_with_size.
13259         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
13260         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
13261         the new forwarder block.
13262         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
13263         Handle the case latch is NULL.
13264         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
13265         when marking loop exits.
13266         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
13267         be modified.
13268         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
13269         disambiguate_loops_with_multiple_latches.
13270         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
13271         before fix_loop_structure.
13272         * cfgloop.c: Include pointer-set.h and output.h.
13273         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
13274         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
13275         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
13276         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
13277         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
13278         disambiguate_multiple_latches, get_loop_body_with_size,
13279         disambiguate_loops_with_multiple_latches): New functions.
13280         (flow_loop_dump): Dump multiple latch edges.
13281         (flow_loop_nodes_find): Handle loops with multiple latches.
13282         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
13283         (glb_enum_p): Modified.
13284         (get_loop_body): Use get_loop_body_with_size.
13285         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
13286         (AVOID_CFG_MODIFICATIONS): New constant.
13287         (disambiguate_loops_with_multiple_latches, add_loop,
13288         get_loop_body_with_size): Declare.
13289         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
13290
13291 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
13292
13293         PR inline-asm/28686
13294         * global.c (compute_regsets): New function.
13295         (global_alloc): Refactored ELIMINABLE_REGSET
13296         and NO_GLOBAL_ALLOC_REGS computation out.
13297         (rest_of_handle_global_alloc): Call compute_regsets()
13298         for non-optimizing case.
13299
13300 2007-02-06  Richard Henderson  <rth@redhat.com>
13301
13302         * config/i386/constraints.md (Y2): Rename from Y.
13303         (Yi): New constraint.
13304         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
13305         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
13306         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
13307         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
13308         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
13309         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
13310         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
13311         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
13312         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
13313         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
13314         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
13315         vec_extractv2si_1): Change Y constraints to Y2.
13316         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
13317         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
13318         Change Y constraints to Y2.
13319         (sse2_loadld): Change Y constraints to x.
13320
13321 2007-02-06  Roger Sayle  <roger@eyesopen.com>
13322
13323         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
13324         (parity<mode>2): New define_expand using rs6000_emit_parity.
13325         * config/rs6000/rs6000.c (rs6000_emit_popcount,
13326         rs6000_emit_parity): New functions.
13327         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
13328         rs6000_emit_parity): Prototype here.
13329
13330 2007-02-06  Ian Lance Taylor  <iant@google.com>
13331
13332         * lower-subreg.c (simple_move_operand): Reject CONST.
13333         (resolve_clobber): Call validate_change rather than directly
13334         assigning to XEXP (pat, 0).
13335
13336 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
13337
13338         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
13339         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
13340         (tree-cfg.o): Remove hashtab.h dependency.
13341
13342         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
13343         (struct ivopts_data): Change niters to pointer_map_t.
13344         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
13345         (niter_for_exit): Create pointer_map on demand.  Change for
13346         pointer_map API.
13347         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
13348         (free_loop_data): Destroy data->niters if created and reset field.
13349         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
13350         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
13351
13352         * tree-ssa-reassoc.c: Include pointer-set.h.
13353         (bb_rank): Change to long *.
13354         (operand_rank): Change to pointer_map_t.
13355         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
13356         (insert_operand_rank): Accept long.
13357         (operand_entry_hash, operand_entry_eq): Remove.
13358         (get_rank): Return long.  Adjust for changes above.
13359         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
13360         and operand_rank.
13361         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
13362
13363         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
13364         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
13365         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
13366         is not NULL.
13367         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
13368         directly since it cannot be NULL.
13369         (get_vi_for_tree): Rewrite for pointer_map API.
13370         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
13371         (init_alias_vars): Create vi_for_tree as pointer_map.
13372         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
13373
13374         * tree-cfg.c: Don't include hashtab.h.
13375         (edge_to_cases): Declare as pointer_map.
13376         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
13377         Delete.
13378         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
13379         (start_recording_case_labels): Create edge_to_cases as pointer_map.
13380         (end_recoding_case_labels): Cleanup edge_to_cases manually before
13381         destroying it.
13382         (record_switch_edge): Delete.
13383         (get_cases_for_edge): Adjust for pointer_map API, inline
13384         record_switch_edge (rewritten for new API), remove goto.
13385
13386 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
13387
13388         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
13389         * tree-nested.c: Include pointer-set.h.
13390         (var_map_elt, var_map_eq, var_map_hash): Delete.
13391         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
13392         to pointer_map_t's.
13393         (nesting_info_bitmap_obstack): New.
13394         (lookup_field_for_decl): Adjust for pointer_map API.
13395         (lookup_tramp_for_decl): Adjust for pointer_map API.
13396         (get_nonlocal_debug_decl): Adjust for pointer_map API.
13397         (get_local_debug_decl): Adjust for pointer_map API.
13398         (convert_nl_goto_reference): Adjust for pointer_map API.
13399         (convert_nl_goto_receiver): Adjust for pointer_map API.
13400         (create_nesting_tree): Create outside GGC space.  Create bitmap on
13401         the new obstack.  Create field_map and var_map as pointer_maps.
13402         (free_nesting_tree): Adjust for changes to create_nesting_tree.
13403         (root): Delete.
13404         (lower_nested_functions): Move root here, no need to NULL it.
13405         Initialize and release the obstack.
13406
13407 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
13408
13409         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
13410         Remove prototypes and make them non-static.
13411         (struct tree_int_map): Remove.
13412         * tree.h (struct tree_int_map): Move here, turning TO into an
13413         unsigned int.
13414         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
13415
13416         * tree.h (TREE_COMPLEXITY): Remove.
13417         (struct tree_exp): Remove complexity field.
13418         * tree.c (build1_stat): Don't set it.
13419
13420 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
13421             Victor Kaplansky  <victork@il.ibm.com>
13422
13423         * tree-vectorizer.c (vect_is_simple_use): Support induction.
13424         (vect_is_simple_reduction): Support reduction with induction as
13425         one of the operands.
13426         (vect_is_simple_iv_evolution): Fix formatting.
13427         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
13428         formatting.  Don't mark induction phis for vectorization.
13429         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
13430         * tree-vect-transform.c (get_initial_def_for_induction): New function.
13431         (vect_get_vec_def_for_operand): Support induction.
13432         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
13433         induction case.
13434         (vectorizable_reduction): Support reduction with induction as one of
13435         the operands.
13436         (vectorizable_type_demotion): Use def-type of stmt argument rather
13437         than dummy def-type.
13438
13439         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
13440         flag_tree_scev_cprop.
13441         * common.opt (tree-scev-cprop): New flag.
13442
13443         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
13444         call to vect_get_new_vect_var.
13445
13446 2007-02-06  Ira Rosen  <irar@il.ibm.com>
13447
13448         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
13449         vectype is not NULL.
13450         (vect_pattern_recog_1): Likewise.
13451
13452 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13453
13454         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
13455         (fold_negate_expr): Likewise.
13456
13457 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
13458
13459         PR debug/30189
13460         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
13461         even if cv-qualification is the same.
13462
13463 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
13464
13465         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
13466         __enable_execute_stack on completion.
13467
13468 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13469
13470         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
13471         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
13472         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
13473         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
13474         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
13475         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
13476         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
13477         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
13478
13479 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13480
13481         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
13482         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
13483         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
13484         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
13485         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
13486         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
13487         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
13488         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
13489         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
13490         umuldi3_highpart_rex64, umulsi3_highpart_insn,
13491         umulsi3_highpart_zext, smuldi3_highpart_rex64,
13492         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
13493         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
13494         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
13495         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
13496         sqrtextenddfxf2_i387): Added amdfam10_decode.
13497
13498         * config/i386/athlon.md (athlon_idirect_amdfam10,
13499         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
13500         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
13501         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
13502         athlon_ivector_store_amdfam10): New define_insn_reservation.
13503         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
13504         amdfam10.
13505
13506 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13507
13508         * config/i386/athlon.md (athlon_call_amdfam10,
13509         athlon_pop_amdfam10, athlon_lea_amdfam10): New
13510         define_insn_reservation.
13511         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
13512         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
13513         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
13514
13515 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13516
13517         * config/i386/athlon.md (athlon_sseld_amdfam10,
13518         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
13519         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
13520
13521 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13522
13523         * config/i386/athlon.md (athlon_sseins_amdfam10): New
13524         define_insn_reservation.
13525         * config/i386/i386.md (sseins): Added sseins to define_attr type
13526         and define_attr unit.
13527         * config/i386/sse.md: Set type attribute to sseins for insertq
13528         and insertqi.
13529
13530 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13531
13532         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
13533         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
13534         ssecomi_load_amdfam10, ssecomi_amdfam10,
13535         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
13536         define_insn_reservation.
13537         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
13538
13539 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13540
13541         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
13542         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
13543         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
13544         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
13545         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
13546         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
13547         define_insn_reservation.
13548
13549         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
13550         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
13551         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
13552         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
13553         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
13554
13555 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13556
13557         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
13558         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
13559         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
13560         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
13561         athlon_ssemul_load_k8): Added amdfam10.
13562
13563 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13564
13565         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
13566         (x86_sse_unaligned_move_optimal): New variable.
13567
13568         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
13569         m_AMDFAM10.
13570         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
13571         for unaligned vector SSE double/single precision loads for AMDFAM10.
13572
13573 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13574
13575         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
13576         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
13577         Define TARGET_CPU_DEFAULT_amdfam10.
13578         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
13579         (processor_type): Add PROCESSOR_AMDFAM10.
13580
13581         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
13582         processor_type in config/i386/i386.h.
13583         Enable imul peepholes for TARGET_AMDFAM10.
13584
13585         * config.gcc: Add support for --with-cpu option for amdfam10.
13586
13587         * config/i386/i386.c (amdfam10_cost): New variable.
13588         (m_AMDFAM10): New macro.
13589         (m_ATHLON_K8_AMDFAM10): New macro.
13590         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
13591         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
13592         x86_promote_QImode, x86_integer_DFmode_moves,
13593         x86_partial_reg_dependency, x86_memory_mismatch_stall,
13594         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
13595         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
13596         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
13597         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
13598         Enable/disable for amdfam10.
13599         (override_options): Add amdfam10_cost to processor_target_table.
13600         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
13601         processor_alias_table.
13602         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
13603         (ix86_adjust_cost): Add code for amdfam10.
13604
13605 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13606
13607         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
13608         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
13609         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
13610         * config/i386/i386.h: Add builtin definition for SSE4A.
13611         * config/i386/i386.md: Add support for ABM instructions
13612         (popcnt and lzcnt).
13613         * config/i386/sse.md: Add support for SSE4A instructions
13614         (movntss, movntsd, extrq, insertq).
13615         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
13616         Add -march=amdfam10 flag.
13617         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
13618         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
13619         and amdfam10.
13620         * doc/extend.texi: Add documentation for SSE4A builtins.
13621
13622 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
13623
13624         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
13625
13626 2007-02-05  Richard Guenther  <rguenther@suse.de>
13627
13628         * tree-vectorizer.h (vectorizable_function): Add argument type
13629         argument, change return type.
13630         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
13631         * tree-vect-transform.c (vectorizable_function): Handle extra
13632         argument, return vectorized function decl.
13633         (build_vectorized_function_call): Remove.
13634         (vectorizable_call): Handle calls with result and argument types
13635         differing.  Handle loop vectorization factor correctly.
13636         * targhooks.c (default_builtin_vectorized_function): Adjust for
13637         extra argument.
13638         * targhooks.h (default_builtin_vectorized_function): Likewise.
13639         * target.h (builtin_vectorized_function): Add argument type
13640         argument.
13641         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
13642         extra argument, allow vectorizing of lrintf.
13643         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
13644         documentation of target hook.
13645
13646 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
13647
13648         PR target/30665
13649         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
13650         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
13651         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
13652
13653 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13654
13655         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
13656         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
13657         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
13658         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
13659         before canonicalizing sincos to cexpi.
13660         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
13661
13662 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13663
13664         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
13665         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
13666         (alpha_init_builtins): Use alpha_add_builtins to process tables.
13667
13668 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13669
13670         * mips-tfile.c (initialize_init_file): Correct endianness test.
13671
13672 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
13673
13674         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
13675         the 'y' constraint.
13676
13677 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
13678
13679         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
13680         saves in a PARALLEL before the register assignments.
13681
13682 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
13683
13684         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
13685         DWARF_FRAME_RETURN_COLUMN to be a general register.
13686         * dwarf2out.c (init_return_column_size): New function, split from...
13687         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
13688         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
13689         to be nongeneral registers.
13690         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
13691         integer registers.
13692         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
13693         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
13694
13695 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
13696
13697         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
13698
13699 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
13700
13701         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
13702         (remove_path): Use can_remove_branch_p and remove_branch instead
13703         of loop_delete_branch_edge.
13704         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
13705         (tree_transform_and_unroll_loop): Remove dead branches immediately.
13706         Update profile using scale_dominated_blocks_in_loop.
13707         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
13708         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
13709         (can_remove_branch_p, remove_branch): Declare.
13710         * tree-cfg.c (tree_can_remove_branch_p): New function.
13711         (tree_cfg_hooks): Add tree_can_remove_branch_p.
13712         * cfgrtl.c (rtl_can_remove_branch_p): New function.
13713         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
13714
13715 2007-02-05  Jan Hubicka  <jh@suse.cz>
13716
13717         PR middle-end/30696
13718         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
13719         nodes in cgraph, don't remove offline copy of the function.
13720
13721 2007-02-04  Jan Hubicka  <jh@suse.cz>
13722
13723         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
13724         vectors might cause maybe_lookup_element_for_expr to be called
13725         on non-sra-candidate.
13726
13727 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
13728
13729         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
13730         config/bfin/bfin.md, config/bfin/predicates.md: Follow
13731         spelling conventions.
13732
13733 2007-02-04  Richard Guenther  <rguenther@suse.de>
13734
13735         PR middle-end/30636
13736         * fold-const.c (try_move_mult_to_index): Make sure to not
13737         overflow one dimension of a multi-dimensional array access.
13738
13739 2007-02-04  Jan Hubicka  <jh@suse.cz>
13740
13741         * passes.c (init_optimization_passes): Reindent.
13742
13743 2007-02-04  Jan Hubicka  <jh@suse.cz>
13744             Eric Botcazou  <ebotcazou@adacore.com>
13745
13746         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
13747         (execute_fixup_cfg): Break out the abnormal goto code.
13748         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
13749         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
13750         (optimize_inline_calls): Call make_nonlocal_label_edges.
13751
13752 2007-02-04  Jan Hubicka  <jh@suse.cz>
13753
13754         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
13755         true when something was changed.
13756         (rename_ssa_copies): When something was changed, do
13757         TODO_remove_unused_locals.
13758         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
13759         add TODO_remove_unused_locals when instruction was removed.
13760
13761 2007-02-04  Jan Hubicka  <jh@suse.cz>
13762
13763         * ipa-inline.c (try_inline): Improve debug output; work on already
13764         inline edges too.
13765         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
13766         call try_inline for already inlined edges too when flattening;
13767         inline also functions that make callee growth but overall unit size
13768         reduce.
13769
13770 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
13771
13772         * config/m32c/bitops.md, config/m32c/jump.md,
13773         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
13774         config/m32r/m32r.h, config/m32r/m32r.md,
13775         config/m32r/predicates.md, config/m68hc11/larith.asm,
13776         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
13777         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
13778         config/mips/mips-protos.h, config/mips/mips.c,
13779         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
13780         config/mn10300/mn10300.h, config/mn10300/predicates.md,
13781         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
13782         spelling conventions.
13783
13784         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
13785         Follow spelling conventions.
13786
13787 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
13788
13789         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
13790         warn about C++0x compatibility.
13791
13792 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
13793
13794         * config/h8300/h8300.c, config/h8300/h8300.h,
13795         config/h8300/h8300.md: Follow spelling conventions.
13796
13797 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
13798
13799         PR middle-end/30667
13800         * combine.c (try_combine): Do not substitute source operand
13801         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
13802
13803 2007-02-03  Jan Hubicka  <jh@suse.cz>
13804
13805         PR gcov-profile/30650
13806         * value-prof.c (stringop_block_profile): Fix handling of size counter;
13807         do not divide by zero for never executed counters.
13808         (tree_find_values_to_profile): Fix counters.
13809         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
13810
13811 2007-02-03  Ian Lance Taylor  <iant@google.com>
13812
13813         * lower-subreg.c (simple_move_operand): New static function,
13814         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
13815         operands.
13816         (simple_move): Call simple_move_operand.
13817         (find_decomposable_subregs): Add special handling of MEMs.
13818         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
13819         meaning of return value.  If we see a hard register, test whether
13820         it can store a word_mode value.  Change all callers.
13821
13822 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13823
13824         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
13825         ftrapv insns and expanders.
13826         (subdi3): Change define_expand operand 1 to arith11_operand, and
13827         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
13828         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
13829         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
13830         respectively.
13831
13832         PR middle-end/30174
13833         * varasm.c (notice_global_symbol): Treat global objects as weak when
13834         flag_shlib is true.
13835
13836 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13837
13838         * emit-rtl.c (dconstpi): Delete.
13839         (dconstsqrt2): New.
13840         (init_emit_once): Delete dconstpi and init dconstsqrt2.
13841         * real.h (dconstpi): Delete.
13842         (dconstsqrt2): New.
13843         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
13844         (fold_builtin_hypot): Likewise.
13845
13846 2007-02-03  Tom Tromey  <tromey@redhat.com>
13847
13848         PR driver/30246
13849         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
13850         -gcoff3, -gxcoff3, -gvms3 implies -dD.
13851
13852 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
13853
13854         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
13855         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
13856         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
13857         config/rs6000/cell.md, config/rs6000/darwin.h,
13858         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
13859         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
13860         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
13861         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
13862         typos.  Follow spelling conventions.
13863         * doc/invoke.texi: Follow spelling conventions.
13864
13865 2007-02-03  Roger Sayle  <roger@eyesopen.com>
13866
13867         * simplify-rtx.c (simplify_relational_operation_1): Implement some
13868         canonicalization transformations that attempt to simplify integer
13869         constant comparisons to become comparisons against zero.
13870
13871 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13872
13873         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
13874         fabs(x)*sqrt(2).
13875         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
13876         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
13877
13878 2007-02-02  Mike Stump  <mrs@apple.com>
13879
13880         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
13881         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
13882         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
13883         generate a branch island.
13884
13885 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
13886
13887         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
13888         (xtensa_legitimate_address_p): New.
13889         (xtensa_legitimize_address): New.
13890         (xtensa_output_addr_const_extra): New.
13891         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
13892         (BASE_REG_P): New.
13893         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
13894         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
13895         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
13896         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
13897         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
13898         (xtensa_legitimize_address): New.
13899         (xtensa_output_addr_const_extra): New.
13900
13901 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
13902
13903         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
13904
13905 2007-02-02  Ian Lance Taylor  <iant@google.com>
13906
13907         * expmed.c (expand_divmod): Add comment.
13908
13909 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
13910
13911         * emit-rtl.c (renumber_insns): Remove.
13912         * flags.h: Remove the extern for flag_renumber_insns.
13913         * rtl.h: Remove the prototype for renumber_insns.
13914         * toplev.c (flag_renumber_insns): Remove.
13915
13916 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
13917
13918         Revert for x86 darwin:
13919         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
13920
13921         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
13922         code before the following patch under TARGET_MACHO.
13923         (ix86_function_value_regno_p): Likewise.
13924
13925 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13926
13927         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
13928         COMPLEX_EXPR.
13929
13930 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13931
13932         PR target/29682
13933         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
13934         general or fp registers.  Add comments.
13935         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
13936
13937 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
13938
13939         * pointer-set.c (insert_aux): Only return insertion slot.
13940         (pointer_set_insert): Adjust.
13941         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
13942         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
13943         pointer_map_traverse): New.
13944         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
13945         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
13946         pointer_map_contains, pointer_map_traverse): Declare.
13947
13948 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
13949
13950         PR middle-end/30473
13951         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
13952         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
13953
13954 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13955
13956         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
13957
13958         (struct _dep): New type.
13959         (dep_t): New typedef.
13960         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
13961         (DEP_STATUS): New access macro.  The macro with the same name was
13962         renamed to DEP_LINK_STATUS.
13963         (dep_init): Declare function
13964
13965         (struct _dep_link): New type.
13966         (dep_link_t): New typedef.
13967         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
13968         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
13969         (DEP_LINK_STATUS): New macro.
13970         (debug_dep_links): New debug function.
13971
13972         (struct _deps_list): New type.
13973         (deps_list_t): New typedef.
13974         (DEPS_LIST_FIRST): New access macro.
13975         (FOR_EACH_DEP_LINK): New cycle macro.
13976         (create_deps_list, free_deps_list, delete_deps_list): Declare
13977         functions.
13978         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
13979         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
13980         (copy_deps_list_change_con): Ditto.
13981
13982         (move_dep_link): Declare function.
13983
13984         (struct _dep_node): New type.
13985         (dep_node_t): New typedef.
13986         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
13987
13988         (struct haifa_insn_data.back_deps): New field to hold backward
13989         dependencies of the insn.
13990         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
13991         to deps_list_t.
13992         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
13993         Change its type to deps_list_t.
13994         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
13995         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
13996         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
13997
13998         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
13999
14000         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
14001
14002         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
14003         all callers.
14004         (dep_cost): Declare.
14005
14006         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
14007         (ds_to_dk, dk_to_ds): New functions.
14008
14009         (init_dep_1): New static function.
14010         (init_dep): New function.
14011         (copy_dep): New static function.
14012
14013         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
14014         functions.
14015         (detach_dep_link): New static function.
14016         (move_dep_link): New function.
14017
14018         (dep_links_consistent_p, dump_dep_links): New static functions.
14019         (debug_dep_links): New debugging function.
14020
14021         (deps_obstack, dl_obstack, dn_obstack): New static variables.
14022
14023         (alloc_deps_list, init_deps_list): New static functions.
14024         (create_deps_list): New function.
14025         (clear_deps_list): New static function.
14026         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
14027         (deps_list_consistent_p, dump_deps_list): New static functions.
14028         (debug_deps_list): New function.
14029         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
14030         functions.
14031         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
14032
14033         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
14034         use new scheduler dependencies lists.
14035         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
14036         (sched_analyze): Ditto.  Initialize dependencies lists.
14037         (add_forw_dep, compute_forward_dependences): Update to use new
14038         scheduler dependencies lists.
14039
14040         (init_dependency_caches): Init deps_obstack.
14041         (free_dependency_caches): Free deps_obstack.
14042
14043         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
14044         new scheduler dependencies lists.
14045         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
14046         (add_back_forw_dep, delete_back_forw_dep): Ditto.
14047
14048         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
14049         Update to use new scheduler dependencies lists.
14050         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
14051         (debug_dependencies): Ditto.
14052         (schedule_region): Update comments.
14053
14054         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
14055         scheduler dependencies lists.
14056         (schedule_ebb): Update comments.
14057
14058         * rtl.def (DEPS_LIST): Remove.
14059
14060         * lists.c (unused_deps_list): Remove.
14061         (free_list): Update assertions.
14062
14063         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
14064         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
14065
14066         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
14067         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
14068
14069         * haifa-sched.c (comments): Update.
14070         (insn_cost1): Remove.  Inline the code into insn_cost ().
14071         (insn_cost): Update to use new scheduler dependencies lists.  Move
14072         processing of the dependency cost to dep_cost ().
14073         (dep_cost): New function.  Use it instead of insn_cost () when
14074         evaluating cost of the dependency.  Use compatible interface to
14075         interact with the target.
14076         (priority): Update to use new scheduler dependencies lists.
14077         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
14078         with greater number of insns that depend on the insn.
14079         (schedule_insn): Update to use new scheduler dependencies lists.  Add
14080         code to free backward dependencies lists.  Inline and optimize code
14081         from resolve_dep () - see PR28071.
14082         (ok_for_early_queue_removal): Update to use new scheduler dependencies
14083         lists.  Update call to targetm.sched.is_costly_dependence hook.
14084
14085         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
14086         scheduler dependencies lists.
14087
14088         (resolve_dep): Remove.  Move the logic to schedule_insn ().
14089         (init_h_i_d): Initialize dependencies lists.
14090
14091         (process_insn_depend_be_in_spec): Rename to
14092         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
14093         dependencies lists.
14094         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
14095         Update to use new scheduler dependencies lists.
14096         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
14097
14098         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
14099         new scheduler dependencies lists.
14100         (build_intra_loop_deps): Ditto.
14101
14102         * target.h (struct _dep): Declare to use in
14103         gcc_target.sched.is_costly_dependence.
14104         (struct gcc_target.sched.adjust_cost): Fix typo.
14105         (struct gcc_target.sched.is_costly_dependence): Change signature to use
14106         single dep_t parameter instead of an equivalent triad.
14107         (struct gcc_target.sched.adjust_cost_2): Remove.
14108
14109         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
14110
14111         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
14112
14113         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
14114         documentation.
14115         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
14116
14117         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
14118         (REG_DEP_TRUE): Document.
14119
14120         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
14121         Change signature to correspond to the targetm.sched.adjust_cost hook.
14122         Update use in TARGET_SCHED_ADJUST_COST_2.
14123         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
14124         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
14125         new scheduler dependencies lists.
14126         (ia64_gen_check): Ditto.
14127
14128         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
14129         dependencies lists.
14130
14131         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
14132         signature to correspond to the targetm.sched.is_costly_dependence hook.
14133         (is_costly_group): Update to use new scheduler dependencies lists.
14134
14135         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
14136         instead of INSN_COST () macro.
14137
14138 2007-02-01  Ian Lance Taylor  <iant@google.com>
14139
14140         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
14141
14142 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
14143
14144         * pa.md (tp_load): Correct mfctl instruction syntax.
14145
14146 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
14147
14148         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
14149         altivec_padding_size calculation on AIX.  Improve comment, add
14150         assert to verify that it's right.
14151
14152         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
14153         64-bit.
14154
14155 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
14156
14157         PR inline-asm/28686
14158         * global.c (global_alloc): Add mising initialization of
14159         ELIMINABLE_REGSET.
14160
14161 2007-02-01  Roger Sayle  <roger@eyesopen.com>
14162
14163         * alias.c (init_alias_analysis): Correct whitespace.
14164         * bb-reorder.c (fix_edges_for_rarely_executed_code,
14165         partition_hot_cold_basic_blocks): Likewise.
14166         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
14167         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
14168         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
14169         fold_builtin_snprintf_chk, fold_builtin_printf,
14170         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
14171         do_mpfr_arg3, do_mpfr_sincos): Likewise.
14172         * cfgcleanup.c (cleanup_cfg): Likewise.
14173         * cfgexpand.c (tree_expand_cfg): Likewise.
14174         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
14175         * function.c (get_next_funcdef_no): Likewise.
14176         * gengtype.c (main): Likewise.
14177         * genmodes.c (main): Likewise.
14178         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
14179         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
14180         * ifcvt.c (noce_emit_move_insn): Likewise.
14181         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
14182         Likewise.
14183         * stor-layout.c (get_best_mode): Likewise.
14184         * tree-ssa-loop-niter.c (get_val_for): Likewise.
14185         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
14186         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
14187         perform_var_substitution, solve_graph): Likewise.
14188         * tree-vrp.c (vrp_finalize): Likewise.
14189
14190 2007-02-01  Ian Lance Taylor  <iant@google.com>
14191
14192         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
14193         high part of a paradoxical subreg, return a constant zero.
14194
14195 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
14196
14197         * toplev.c (lang_dependent_init): Call init_set_costs.
14198         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
14199
14200 2007-02-01  Richard Guenther  <rguenther@suse.de>
14201
14202         PR middle-end/30656
14203         * fold-const.c (fold_negate_expr): Allow negating a
14204         constant if overflow does not change.
14205
14206 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14207
14208         * doc/c-tree.texi (Expression trees): Improve markup.
14209         * doc/tm.texi (Register Classes, Addressing Modes)
14210         (Floating Point): Fix spacing after abbreviations.  Fix some
14211         typos.
14212
14213 2007-02-01  Ben Elliston  <bje@au.ibm.com>
14214
14215         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
14216         * doc/contrib.texi: Likewise.
14217         * doc/install.texi: Likewise.
14218
14219 2007-01-31  Richard Henderson  <rth@redhat.com>
14220             Ian Lance Taylor  <iant@google.com>
14221
14222         * lower-subreg.c: New file.
14223         * rtl.def (CONCATN): Define.
14224         * passes.c (init_optimization_passes): Add pass_lower_subreg and
14225         pass_lower_subreg2.
14226         * emit-rtl.c (update_reg_offset): New static function, broken out
14227         of gen_rtx_REG_offset.
14228         (gen_rtx_REG_offset): Call update_reg_offset.
14229         (gen_reg_rtx_offset): New function.
14230         * regclass.c: Revert patch of 2006-03-05, restoring
14231         reg_scan_update.
14232         (clear_reg_info_regno): New function.
14233         * dwarf2out.c (concatn_loc_descriptor): New static function.
14234         (loc_descriptor): Handle CONCATN.
14235         * common.opt (fsplit_wide_types): New option.
14236         * opts.c (decode_options): Set flag_split_wide_types when
14237         optimizing.
14238         * timevar.def (TV_LOWER_SUBREG): Define.
14239         * rtl.h (gen_reg_rtx_offset): Declare.
14240         (reg_scan_update): Declare.
14241         * regs.h (clear_reg_info_regno): Declare.
14242         * tree-pass.h (pass_lower_subreg): Declare.
14243         (pass_lower_subreg2): Declare.
14244         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
14245         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
14246         -fsplit-wide-types.
14247         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
14248         * Makefile.in (OBJS-common): Add lower-subreg.o.
14249         (lower-subreg.o): New target.
14250
14251 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14252
14253         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
14254
14255 2007-01-31  Anatoly Sokolov <aesok@post.ru>
14256
14257         PR target/19087
14258         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
14259
14260 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14261
14262         PR middle-end/29335
14263         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
14264
14265 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
14266
14267         * cfgloop.h: Include vec-prim.h.
14268         (enum li_flags): Remove LI_ONLY_OLD.
14269         (loop_iterator): Changed.
14270         (fel_next, fel_init): Iterate over loop tree.
14271         (FOR_EACH_LOOP_BREAK): New macro.
14272         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
14273         FOR_EACH_LOOP.
14274         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
14275         * modulo-sched.c (sms_schedule): Ditto.
14276         * tree-vectorizer.c (vectorize_loops): Ditto.
14277         * doc/loop.texi: Update information on loop numbering and behavior of
14278         FOR_EACH_LOOP wrto new loops.
14279         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
14280         add_to_evolution_1): Test nestedness of loops instead of comparing
14281         their numbers.
14282         * tree-chrec.c (chrec_fold_plus_poly_poly,
14283         chrec_fold_multiply_poly_poly, chrec_evaluate,
14284         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
14285         reset_evolution_in_loop): Ditto.
14286         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
14287
14288 2007-01-31  Dirk Mueller  <dmueller@suse.de>
14289
14290         * c-common.c (warn_about_parentheses): Separate warning about
14291         un-parenthized sequence of comparison operators from the one
14292         which is supposed to warn about x <= y <= z.
14293
14294 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
14295
14296         * optabs.h (enum optab_index): Add new OTI_isinf.
14297         (isinf_optab): Define corresponding macro.
14298         * optabs.c (init_optabs): Initialize isinf_optab.
14299         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
14300         patterns.
14301         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
14302         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
14303         using isinf_optab.
14304         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
14305         expand_builtin_interclass_mathfn.
14306         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
14307         * config/i386/i386.md (UNSPEC_FXAM): New constant.
14308         (fxam<mode>2_i387): New insn pattern.
14309         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
14310         built-in functions as x87 inline asm.
14311
14312 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14313
14314         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
14315
14316 2007-01-30  Eric Christopher  <echristo@apple.com>
14317
14318         * config.gcc: Add geode.
14319
14320 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
14321
14322         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
14323         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
14324         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
14325         value-prof.c: Fix comment typos.
14326
14327 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14328
14329         PR c++/24745
14330         * doc/invoke.texi (Wpointer-arith): Document warning.
14331
14332 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
14333
14334         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
14335         the list of discrepancies from the draft TR.
14336
14337 2007-01-30  Dirk Mueller  <dmueller@suse.de>
14338
14339         PR c++/30601
14340         * doc/invoke.texi (-Wreturn-type): Update description to
14341         match new behavior.
14342
14343 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
14344
14345         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
14346
14347 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
14348
14349         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
14350         to handle optabs that operate on floating point input argument and
14351         output to integer output.
14352         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
14353         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
14354         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
14355         expand_builtin_interclass_mathfn ().
14356         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
14357         (ilogbsi2): Remove.
14358         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
14359         ilogbl built-in functions as x87 intrinsics.
14360
14361 2007-01-30  Richard Guenther  <rguenther@suse.de>
14362
14363         PR middle-end/27657
14364         * dwarf2out.c (reference_to_unused): Query varpool if the
14365         variable was output.
14366
14367 2007-01-30  Richard Guenther  <rguenther@suse.de>
14368
14369         PR middle-end/30313
14370         * passes.c (execute_one_pass): Reset in_gimple_form to not
14371         confuse non-unit-at-a-time mode.
14372
14373 2007-01-29  Roger Sayle  <roger@eyesopen.com>
14374             Richard Guenther  <rguenther@suse.de>
14375
14376         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
14377         avoid undefined behaviour on overflow.  Use force_fit_type_double
14378         to construct the constant with the specified TREE_OVERFLOW.
14379
14380 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
14381
14382         * config/dfp-bit.c: Add parameterized support for fp exceptions.
14383         * config/dfp-bit.h: Ditto.
14384
14385 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14386
14387         * c-decl.c (pop_scope): Replace warnings with call to
14388         warn_for_unused_label.
14389         * c-common.h (warn_for_unused_label): Declare.
14390         * c-common.c (warn_for_unused_label): Define.
14391
14392 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14393
14394         * tree-optimize.c (update_inlined_to_pointers): Delete unused
14395         function.
14396
14397 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
14398
14399         * Makefile.in (USER_H): Remove decfloat.h.
14400         * ginclude/decfloat.h: Delete, moving contents to ...
14401         * ginclude/float.h: Add support for decimal floating point,
14402         guarded by __STDC_WANT_DEC_FP__.
14403
14404 2007-01-29  Mike Stump  <mrs@apple.com>
14405
14406         * doc/gccint.texi (Top): Rename Loop Representation to Loop
14407         Analysis and Representation to resolve case insensitive conflict.
14408         * doc/loop.texi (Loop Analysis and Representation): Likewise.
14409
14410 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
14411
14412         * tree.h (struct tree_memory_tag): Add aliases member.
14413         (MTAG_ALIASES): New macro.
14414         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
14415         (add_may_alias): Remove pointer-set. Update for may_aliases being
14416         a bitmap.
14417         (mark_aliases_call_clobbered): Update for may_aliases being a
14418         bitmap.
14419         (compute_tag_properties): Ditto.
14420         (create_partition_for): Ditto.
14421         (compute_memory_partitions): Ditto.
14422         (dump_may_aliases_for): Ditto.
14423         (is_aliased_with): Ditto.
14424         (add_may_alias_for_new_tag): Ditto.
14425         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
14426         (compute_is_aliased): New function.
14427         (compute_may_aliases): Call compute_is_aliased).
14428         (init_alias_info): Initialize alias_bitmap_obstack.
14429         (union_alias_set_into): New function.
14430         (compute_flow_sensitive_aliasing): Use union_aliases_into.
14431         (have_common_aliases_p): Rewrite to take two bitmaps and use
14432         intersection.
14433         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
14434         Update for bitmaps.
14435         (finalize_ref_all_pointers): Update for add_may_alias changes.
14436         (new_type_alias): Ditto.
14437         * tree-flow-inline.h (may_aliases): Return a bitmap.
14438         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
14439         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
14440         may_aliases being a bitmap.
14441         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
14442         may_aliases now returns a bitmap.
14443         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
14444         being a bitmap.
14445         * tree-ssa-operands.c (add_virtual_operand): Update for
14446         may_aliases being a bitmap.
14447
14448 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
14449
14450         PR tree-optimization/30630
14451         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
14452         variable as changed.
14453
14454 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
14455
14456         PR c++/28266
14457         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
14458         expanded only once even if an error occurs.
14459
14460 2007-01-29  Ben Elliston  <bje@au.ibm.com>
14461
14462         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
14463         (__gcov_average_profiler): Likewise.
14464         (__gcov_ior_profiler): Likewise.
14465         (__gcov_merge_ior): Likewise.
14466
14467 2007-01-28  Jan Hubicka  <jh@suse.cz>
14468
14469         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
14470         * value-prof.c (stringop_block_profile): Likewise.
14471
14472 2007-01-28  Jan Hubicka  <jh@suse.cz>
14473
14474         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
14475         variant handling histograms; add wrapper.
14476         (clear_storage_via_libcall): Export.
14477         (emit_block_move_hints): Break out from ...; add histograms.
14478         (emit_block_move): ... this one.
14479         (clear_storage_hints): Break out from ...; add histograms.
14480         (clear_storage): ... this one.
14481         (set_storage_via_memset): Handle histogram.
14482         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
14483         (clear_storage_hints, clear_storage_via_libcall): Declare.
14484         (set_storage_via_setmem): Update prototype.
14485         * doc/md.texi (movmem, setmem): Document new arguments.
14486
14487         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
14488         new histograms.
14489         (stringop_block_profile): New global function.
14490         (tree_stringops_values_to_profile): Profile block size and alignment.
14491         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
14492         HIST_TYPE_IOR.
14493         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
14494         (stringop_block_profile): Declare.
14495         * builtins.c: Include value-prof.h.
14496         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
14497         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
14498         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
14499         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
14500         * profile.c (instrument_values): Add new counters.
14501         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
14502         calls.
14503         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
14504         (tree_init_edge_profiler): Build new profilers.
14505         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
14506         (pass_tree_profile): Add dump.
14507         (tree_profile_hooks): Update.
14508         * Makefile.in (LIBGCOV): Add new constants.
14509         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
14510         __gcov_ior_profiler): New.
14511         * i386.md (movmem/setmem expanders): Add new optional arguments.
14512
14513 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
14514
14515         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
14516
14517 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
14518
14519         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
14520         (tree_unswitch_single_loop): Pass eni_size_weights to
14521         tree_num_loop_insns.
14522         * tree-ssa-loop-manip.c: Include tree-inline.h.
14523         (can_unroll_loop_p): Pass eni_size_weights to
14524         tree_num_loop_insns.
14525         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
14526         Pass eni_size_weights to estimate_num_insns.
14527         * tree.h (init_inline_once): Export.
14528         * toplev.c (backend_init): Call init_inline_once.
14529         * cgraphunit.c (cgraph_process_new_functions,
14530         cgraph_analyze_function): Pass eni_inlining_weights to
14531         estimate_num_insns.
14532         * ipa-inline.c (compute_inline_parameters): Ditto.
14533         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
14534         to estimate_num_insns.
14535         (try_unroll_loop_completely): Pass eni_size_weights to
14536         tree_num_loop_insns.
14537         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
14538         ot estimate_num_insns.
14539         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
14540         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
14541         * tree-inline.c (eni_inlining_weights, eni_size_weights,
14542         eni_time_weights): New variables.
14543         (init_inline_once): Initialize them.
14544         (struct eni_data): Mew.
14545         (estimate_num_insns_1, estimate_num_insns): Use weights.
14546         * tree-inline.h (struct eni_weights_d): New.
14547         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
14548         (estimate_num_insns): Declaration changed.
14549         * cfgloop.h (tree_num_loop_insns): Declaration changed.
14550         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
14551         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
14552
14553 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
14554
14555         * tree-data-ref.c (conflict_fn): Assert that the number of affine
14556         relations in the conflict function is valid.
14557
14558 2007-01-27  Ian Lance Taylor  <iant@google.com>
14559
14560         * common.opt: Add fstrict-overflow.
14561         * opts.c (decode_options): Set flag_strict_overflow if -O2.
14562         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
14563         (TYPE_OVERFLOW_UNDEFINED): Define.
14564         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
14565         Replace all uses.
14566         * tree.h (TYPE_TRAP_SIGNED): Don't define.
14567         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
14568         (fold_negate_expr): Likewise.
14569         (make_range): Likewise.
14570         (extract_muldiv_1): Likewise.
14571         (maybe_canonicalize_comparison): Likewise.
14572         (fold_comparison): Likewise.
14573         (fold_binary): Likewise.
14574         (tree_expr_nonnegative_p): Likewise.
14575         (tree_expr_nonzero_p): Likewise.
14576         * tree-vrp.c (compare_values): Likewise.
14577         (extract_range_from_binary_expr): Likewise.
14578         (extract_range_from_unary_expr): Likewise.
14579         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
14580         Likewise.
14581         (nowrap_type_p): Likewise.
14582         * tree-scalar-evolution.c (simple_iv): Likewise.
14583         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
14584         (build_range_check): Likewise.
14585         (extract_muldiv_1): Likewise.
14586         (fold_comparison): Likewise.
14587         * tree-vrp.c (vrp_int_const_binop): Likewise.
14588         (extract_range_from_unary_expr): Likewise.
14589         * convert.c (convert_to_integer): Likewise.
14590         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
14591         (fold_comparison): Likewise.
14592         (fold_binary): Likewise.
14593         * optabs.c (optab_for_tree_code): Likewise.
14594         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
14595         * simplify-rtx.c (simplify_const_relational_operation): Check
14596         flag_strict_overflow and flag_trapv.
14597         (simplify_const_relational_operation): Likewise.
14598         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
14599         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
14600         -fstrict-overflow.
14601
14602 2007-01-27  Roger Sayle  <roger@eyesopen.com>
14603
14604         * tree.c (tree_fold_gcd): Delete.
14605         * tree.h (tree_fold_gcd): Remove prototype.
14606         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
14607         test whether one constant integer is a multiple of another.  Instead
14608         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
14609         * fold-const.c (multiple_of_p):  We've determined both TOP and
14610         BOTTOM are integer constants so we can call int_const_binop directly
14611         instead of the more generic const_binop.
14612
14613 2007-01-27  Roger Sayle  <roger@eyesopen.com>
14614
14615         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
14616         1*X check that the constant hasn't overflowed, to preserve the
14617         TREE_OVERFLOW bit.
14618         (round_up): Provide an efficient implementation when rouding-up an
14619         INTEGER_CST to a power-of-two.
14620
14621 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14622
14623         * doc/sourcebuild.texi: Add comma for clarity.
14624         * doc/extend.texi: Fix some typos.
14625         * doc/passes.texi: Likewise.
14626         * doc/cppinternals.texi: Likewise.
14627         * doc/c-tree.texi: Likewise.
14628         * doc/tree-ssa.texi: Likewise.
14629         * doc/install.texi: Likewise.
14630
14631 2007-01-27  Jan Hubicka  <jh@suse.cz>
14632
14633         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
14634         (pass_sra): Do not require alias information.
14635         * passes.c (init_optimization_passes): Add SRA
14636
14637 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
14638
14639         * tracer.c (rest_of_handle_tracer): We already cleaned
14640         up the CFG in tracer() so don't do it here again.
14641         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
14642         cleanup_cfg here, either.  And don't call renumber_insns.
14643
14644         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
14645         and BB_HEAD are in the insn stream here.  Instead make sure
14646         that BB_INSN is valid on all insns.  Also, do check here that
14647         there are no pending branch predictions...
14648         (rtl_verify_flow_info): ...instead of doing it here.  Checks
14649         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
14650         here.
14651
14652 2007-01-26  Roger Sayle  <roger@eyesopen.com>
14653
14654         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
14655         function to simplify/factorize operand order canonicalization.
14656         (ix86_fixup_binary_operands): Reorganize using the above function.
14657         (ix86_binary_operator_ok): Likewise.
14658
14659 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
14660
14661         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
14662         file scope from optimize_attrs.
14663         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
14664         up search.
14665         (optimize_attrs): Clear insn_code_values after freeing it.
14666
14667 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
14668
14669         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
14670         a parts.base assignment.
14671
14672 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
14673
14674         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
14675         (compute_subscript_distance, initialize_data_dependence_relation,
14676         finalize_ddr_dependent, analyze_ziv_subscript,
14677         analyze_siv_subscript_cst_affine,
14678         compute_overlap_steps_for_affine_univar,
14679         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
14680         analyze_siv_subscript, analyze_miv_subscript,
14681         analyze_overlapping_iterations, subscript_dependence_tester_1,
14682         compute_self_dependence, free_dependence_relation): Work
14683         with affine_fn instead of chrecs.
14684         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
14685         common_affine_function, affine_function_base,
14686         affine_function_constant_p, affine_fn_op, affine_fn_plus,
14687         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
14688         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
14689         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
14690         (all_chrecs_equal_p): Removed.
14691         * tree-data-ref.h (affine_fn, conflict_function): New types.
14692         (struct subscript): Change type of conflicting_iterations_in_a
14693         and conflicting_iterations_in_b.
14694
14695 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
14696
14697         PR other/30182
14698         * config/pa/pa.h (TARGET_HPUX_11): New.
14699         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
14700         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
14701
14702 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
14703         Richard Guenther  <rguenther@suse.de>
14704
14705         * tree-ssa-structalias.c (solve_graph): Handle case
14706         we merged the variable to another.
14707
14708 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14709
14710         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
14711         functions.
14712
14713         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
14714         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
14715
14716 2007-01-25  DJ Delorie  <dj@redhat.com>
14717
14718         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
14719         allow changes to modes which don't fit in those registers.
14720
14721         * reload1.c (choose_reload_regs): Check for invalid subregs before
14722         computing their locations, not after.
14723
14724 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
14725
14726         PR 25127
14727         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
14728         save Altivec registers in an eh_return function.
14729         (compute_vrsave_mask): Likewise.
14730         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
14731         for saving Altivec registers.
14732         (rs6000_emit_prologue): Don't allocate stack twice in
14733         eh_return function.  Correct expected value of altivec_save_offset
14734         when using save_world.  Describe save of R0 to stack when using
14735         save_world.  Describe stack pointer adjustment when using
14736         save_world.  Remove duplicated eh_return parameter register saving.
14737         Update sp_offset variable after save_world.
14738         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
14739         darwin-world.asm.
14740         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
14741         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
14742         implies Altivec.
14743
14744 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
14745
14746         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
14747
14748 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
14749
14750         PR other/30182
14751         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
14752         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
14753
14754 2007-01-25  Richard Guenther  <rguenther@suse.de>
14755
14756         * doc/invoke.texi (-Wcoverage-mismatch): Document.
14757         * common.opt (-Wcoverage-mismatch): New warning option.
14758         * coverage.c (get_coverage_counts): Ignore coverage mismatch
14759         if -Wcoverage-mismatch is given.
14760
14761 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
14762
14763         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
14764         (ipcp_driver): Change to static definition.
14765         Add dumping of the ifunctions.
14766         (constant_val_insert): Remove unused parameter. Support for SSA.
14767         (ipcp_propagate_const): Support for SSA.
14768         (ipcp_profile_bb_print): Print only analyzed nodes.
14769         (ipcp_replace_map_create): Remove support for Fortran constant
14770         for now.
14771         * ipa-prop.c (ipa_method_modify_stmt,
14772         ipa_callsite_compute_param): Support for SSA.
14773         * ipa-prop.h (ipcp_driver): Remove declaration.
14774         (IS_VALID_TREE_MAP_INDEX): Add define.
14775
14776 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
14777
14778         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
14779
14780 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14781
14782         PR middle-end/30447
14783         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
14784         constant argument to cabs and do it without checking for
14785         -funsafe-math-optimizations.
14786
14787 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
14788
14789         * c-common.h (RID_FIRST_CXX0X): New.
14790         (RID_LAST_CXX0X): New.
14791         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
14792         by -Wall.
14793         * c.opt (Wc++0x-compat): New.
14794         * doc/invoke.texi (-Wc++0x-compat): Document.
14795
14796 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14797
14798         * builtins.c (fold_builtin_carg): New.
14799         (fold_builtin_1): Use it.
14800
14801 2007-01-24  Jan Hubicka  <jh@suse.cz>
14802
14803         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
14804
14805         * ipa-inline.c (initial_insns, max_insns): Delete.
14806         (compute_max_insns): New function.
14807         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
14808         of insns as base for code growth.
14809         (cgraph_decide_inlining): Make initial_insns local; do not compute
14810         max_insns.
14811         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
14812         * doc/invoke.texi (inline-unit-growth): Update docs.
14813
14814 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
14815
14816         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
14817         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
14818         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
14819         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
14820         for CPUs that have PTA_CX16 set.
14821
14822         PR middle-end/27416
14823         * gimplify.c (omp_check_private): New function.
14824         (gimplify_scan_omp_clauses): Use it for
14825         firstprivate/lastprivate/reduction.
14826
14827         PR middle-end/30494
14828         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
14829         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
14830
14831         PR middle-end/30421
14832         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
14833         If lower_lastprivate_clauses emits some statements, append them
14834         to dlist rather than body_p and to body_p append an initializer.
14835         (lower_omp_for): Adjust caller.
14836
14837 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
14838
14839         * target.h (globalize_decl_name): New.
14840         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
14841         * output.h (default_globalize_decl_name): New.
14842         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
14843         globalize_label.
14844         (globalize_decl): Ditto.
14845         (default_globalize_decl_name): New.
14846         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
14847         (ia64_handle_version_id_attribute): New.
14848         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
14849         (ia64_asm_output_external): Use globalize_decl_name instead
14850         of globalize_label.
14851         * doc/extend.texi (version_id): New pragma.
14852         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
14853
14854 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14855
14856         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
14857         _uleb128_t and _Unwind_SWord with _sleb128_t.
14858         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
14859         uw_frame_state_for, uw_update_context_1): Likewise.
14860         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
14861         * unwind-pe.h (read_uleb128, read_sleb128,
14862         read_encoded_value_with_base): Likewise.
14863         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
14864
14865 2007-01-24  Richard Guenther  <rguenther@suse.de>
14866
14867         * builtins.c (expand_builtin_cexpi): Get the fndecl
14868         for cexp in the correct way.
14869
14870 2007-01-24  Jan Hubicka  <jh@suse.cz>
14871
14872         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
14873
14874 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14875
14876         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
14877         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
14878         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
14879         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
14880         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
14881         __SIZEOF_PTRDIFF_T__.
14882         * doc/cpp.texi: Documentation for the new builtin macros added.
14883
14884 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
14885
14886         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
14887         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
14888         instead of operands[2] to avoid access past the end of array.
14889
14890 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
14891
14892         * reload1.c (emit_reload_insns): Pass the reload register
14893         for a non-spill output reload through forget_old_reloads_1.
14894
14895 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
14896
14897         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
14898         _SOFT_DOUBLE if doubles use software floating-point.
14899         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
14900         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
14901         * config/rs6000/darwin-ldouble.c: Also compile functions for
14902         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
14903         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
14904         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
14905         commented-out long double override.
14906         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
14907         * config/rs6000/eabispe.h: Likewise.
14908         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
14909         long double for non-SPE.
14910         (rs6000_handle_option): Likewise.
14911         (invalid_e500_subreg): Disallow more subregs involding DImode,
14912         DFmode, TImode or TFmode.
14913         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
14914         E500 double.
14915         (legitimate_lo_sum_address_p): Also check for TFmode for E500
14916         double.
14917         (rs6000_legitimize_address): Also handle TFmode for E500 double.
14918         (rs6000_legitimize_reload_address): Also handle TFmode for E500
14919         double.
14920         (rs6000_legitimate_address): Also check for TFmode for E500
14921         double.
14922         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
14923         (spe_build_register_parallel): Handle TFmode and TCmode.
14924         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
14925         double.
14926         (function_arg): Handle TFmode and TCmode for E500 double.
14927         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
14928         in general.
14929         (print_operand): Handle TFmode and TImode for %y.
14930         (rs6000_generate_compare): Handle TFmode comparisons for E500
14931         double.
14932         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
14933         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
14934         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
14935         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
14936         TFmode for E500 double.
14937         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
14938         (floatsidf2): Enable for E500 double.
14939         (movtf_softfloat): Use rs6000_nonimmediate_operand.
14940         (extenddftf2): Change to extenddftf2_fprs.
14941         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
14942         depending on TARGET_E500_DOUBLE.
14943         (extendsftf2): Enable for E500 double.
14944         (trunctfdf2): Enable for E500 double.
14945         (trunctfsf2): Change to trunctfsf2_fprs.
14946         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
14947         depending on TARGET_E500_DOUBLE.
14948         (floatsitf2): Enable for E500 double.
14949         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
14950         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
14951         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
14952         (negtf2): Change to negtf2_internal.
14953         (negtf2): New expander.
14954         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
14955         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
14956         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
14957         (movdi_internal32): Use rs6000_nonimmediate_operand.
14958         (unnamed splitter): Likewise.
14959         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
14960         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
14961         (SPE64TF, DITI): New mode macros.
14962         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
14963         modes.
14964         (frob_tf_ti): New.
14965         (frob_<mode>_di_2): New.
14966         (frob_tf_di_8_2): New.
14967         (frob_di_df): Change to frob_di_<mode>; allow more modes.
14968         (frob_ti_tf): New.
14969         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
14970         more modes.
14971         (frob_ti_<mode>_8_2): New.
14972         (frob_ti_tf_2): New.
14973         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
14974         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
14975         TFmode.
14976         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
14977         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
14978         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
14979         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
14980         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
14981         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
14982         tsttflt_gp): New.
14983
14984 2007-01-23  Ian Lance Taylor  <iant@google.com>
14985
14986         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
14987         insn-*.o first.
14988         (OBJS-archive): Reformat, alphabetize.
14989         (OBJS): Change out_object_file to OBJS-md.
14990
14991 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
14992
14993         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
14994         JUMP_P and CALL_P predicates where applicable.
14995         * config/i386/i386.c: Ditto.
14996         * config/i386/i386.md: Ditto.
14997         * config/i386/mmx.md: Ditto.
14998         * config/i386/predicates.md: Ditto.
14999
15000 2007-01-22  Andreas Schwab  <schwab@suse.de>
15001
15002         * config/m68k/m68k.h: Fix comment.
15003
15004 2007-01-22  Jan Hubicka  <jh@suse.cz>
15005
15006         * passes.c (init_optimization_passes): Do not rerun
15007         pass_early_warn_uninitialized.
15008
15009 2007-01-22  Richard Guenther  <rguenther@suse.de>
15010
15011         PR tree-optimization/30038
15012         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
15013         function.
15014         (execute_cse_sincos_1): Likewise.
15015         (execute_cse_sincos): Likewise.
15016         (gate_cse_sincos): Likewise.
15017         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
15018         the cexpi() canonicalization of sincos().
15019         * tree-pass.h (pass_cse_sincos): Declare.
15020         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
15021
15022 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
15023
15024         PR rtl-optimization/29329
15025         * combine.c (replaced_rhs_insn): Rename to i2mod.
15026         (replaced_rhs_value): Rename to i2mod_new_rhs.
15027         (i2mod_old_rhs): New global variable.
15028         (combine_instructions): Adjust for above change.  Save a copy of
15029         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
15030         note are substituted in the second instruction.
15031         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
15032         ditch the note if it pertains to the second eliminated register
15033         and this register is mentioned in i2mod_old_rhs.
15034
15035         Revert:
15036         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
15037
15038         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
15039         the insn to which the note was originally attached.
15040
15041 2007-01-21  Jan Hubicka  <jh@suse.cz>
15042
15043         * ipa-inline.c (inlining_mode): Comment, move up.
15044         (cgraph_decide_inlining_incrementally): Do not perform inlining
15045         itself; fix handling of flattening of self recursive functions.
15046         (cgraph_find_cycles): Remove.
15047         (cgraph_flatten_node): Remove.
15048         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
15049         (try_inline): New function.
15050         (cgraph_early_inlining): Update call of
15051         cgraph_decide_inlining_incrementally.  Apply inlining here.
15052         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
15053
15054 2007-01-21  Dirk Mueller  <dmueller@suse.de>
15055
15056         PR bootstrap/30511
15057         * tree-vrp.c (check_array_bounds): do not warn
15058         about ADDR_EXPR's of ARRAY_REF's which are immediately
15059         used in binary expressions.
15060
15061 2007-01-21  Ira Rosen  <irar@il.ibm.com>
15062
15063         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
15064         read_write_dep and macros for its access.
15065         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
15066         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
15067         argument, call vect_check_interleaving for every independent pair of
15068         data-refs. Mark loads that access the same memory location as a store
15069         in the loop.
15070         (vect_check_dependences): Remove.
15071         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
15072         call, fix the call to vect_analyze_data_ref_dependence.
15073         (vect_analyze_data_ref_access): For statements that access the same
15074         data-ref, check that they are not stores; for loads, check that there
15075         is no store that access the same location.
15076
15077 2007-01-20  Roger Sayle  <roger@eyesopen.com>
15078             Joseph Myers  <joseph@codesourcery.com>
15079
15080         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
15081         (-fdump-rtl-stack): Likewise.
15082         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
15083         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
15084         (-mpt-fixed): Use @minus{} for minus sign.
15085         (Using Precompiled Headers): Fix under/overfull hbox.
15086
15087 2007-01-20  Jan Hubicka  <jh@suse.cz>
15088
15089         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
15090         place within annotation.
15091
15092 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15093
15094         * pa.c (output_move_double): Change array size of xoperands to 4.
15095
15096 2007-01-20  Jan Hubicka  <jh@suse.cz>
15097
15098         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
15099         as temporary.
15100
15101 2007-01-19  Ian Lance Taylor  <iant@google.com>
15102
15103         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
15104         constant to unsigned HOST_WIDE_INT before negating.
15105
15106 2007-01-19  Ian Lance Taylor  <iant@google.com>
15107
15108         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
15109         to unsigned.
15110         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
15111         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
15112         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
15113         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
15114         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
15115         (realloc_vdef, realloc_vuse): Change second parameter to
15116         unsigned.
15117         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
15118         fields to unsigned.
15119         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
15120         unsigned. Change x and lim locals to unsigned.
15121         (realloc_vdef, realloc_vuse): Change num_elem parameter to
15122         unsigned.
15123         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
15124         (copy_virtual_operands): Change i and n locals to unsigned.
15125
15126 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15127
15128         PR middle-end/29335
15129         * builtins.c (fold_builtin_1): Handle builtin fdim.
15130
15131 2007-01-20  Jan Hubicka  <jh@suse.cz>
15132
15133         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
15134         * tree-ssa-structalias.c (compute_points_to_sets): Do call
15135         init_alias_heapvars.
15136         (init_alias_heapvars): Initialize only when not already initialized.
15137         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
15138
15139 2007-01-19  Roger Sayle  <roger@eyesopen.com>
15140
15141         * common.opt (fsigned-zeros): New command line option.
15142         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
15143         of flag_unsafe_math_optimizations.
15144         * opts.c (set_fast_math_flags): The -ffast-math command line option
15145         implies -fno-signed-zeros.
15146         (fast_math_flags_set_p): Likewise.
15147
15148         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
15149         the documentation of -ffast-math appropriately.  Wrap long lines.
15150
15151 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
15152
15153         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
15154         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
15155
15156 2007-01-19  Tomas Bily  <tbily@suse.cz>
15157
15158         * cgraphunit.c (cgraph_finalize_function): Updating of pid
15159         * tree-profile.c:
15160         (tree_init_ic_make_global_vars): New function
15161         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
15162         (tree_gen_ic_profiler): New function
15163         (tree_gen_ic_func_profiler): New function
15164         (tree_profiling): Added calling of tree_gen_ic_func_profiler
15165         (tree_profile_hooks): Added hook for indirec/virtual calls
15166         * value-prof.c (tree_find_values_to_profile): New case for
15167         indirect calls
15168         (tree_values_to_profile): Call for determining indirect/virtual
15169         counters
15170         (tree_indirect_call_to_profile): New function
15171         (tree_ic_transform): New function
15172         (tree_ic): New function
15173         (find_func_by_pid): New function
15174         (init_pid_map): New function
15175         (tree_value_profile_transformations): Added check for
15176         indirect/virtual call transformation
15177         * value-prof.h (enum hist_type): New counter type for
15178         indirect/virtual calls
15179         (profile_hooks): Added new hook for profiling indirect/virtual
15180         calls
15181         * profile.c (instrument_values): New case for indirect/virtual
15182         call added
15183         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
15184         (GCOV_COUNTER_V_INDIR): New counter type
15185         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
15186         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
15187         call added
15188         * cgraph.c: Definition of cgraph_max_pid
15189         (cgraph_create_node): Default init of pid attribute
15190         * cgraph.h: Declaration of cgraph_max_pid
15191         (struct cgraph_node): Added pid attribute
15192         * libgcov.c (__gcov_indirect_call_profiler): New function
15193         (__gcov_one_value_profiler_body): New function
15194         (__gcov_one_value_profiler): Body was moved to
15195         __gcov_one_value_profiler_body and calls it
15196
15197 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
15198
15199         * doc/gty.texi (Options): Document the mark_hook option to GTY.
15200         * gengtype.c (write_types_data, write_func_for_structure,
15201         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
15202         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
15203         (walk_type, write_func_for_structure): Generate the mark_hook if
15204         needed.
15205
15206 2007-01-19  Jan Hubicka  <jh@suse.cz>
15207
15208         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
15209         'early' argument take inlining mode argument specifying whether to
15210         inline for size/speeed or all functions; add support for flattening;
15211         improve dumpting.
15212         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
15213
15214 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15215
15216         PR c++/17947
15217         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
15218         the name of the declared identifier.
15219
15220 2007-01-19  Dirk Mueller  <dmueller@suse.de>
15221
15222         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
15223         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
15224         duplicate evaluation.
15225
15226 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
15227
15228         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
15229         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
15230         to XFMode, use acosxf2 and truncate result to requested mode.
15231         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
15232         (asin<mode>2): Similarly, with asin expanders.
15233         (*fscalexf4_i387): Rename from *fscalexf4.
15234         (expNcorexf3): New expander.
15235         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
15236         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
15237         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
15238         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
15239         patterns for SSE math.
15240         (exp10<mode>2): Similarly, with exp10 expanders.
15241         (exp2<mode>2): Similarly, with exp2 expanders.
15242         (expm1<mode>2): Similarly, with expm1 expanders.
15243         (ldexp<mode>3): Similarly, with ldexp expanders.
15244         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
15245         Use gen_truncxf<mode>2_i387_noop to truncate result.
15246
15247 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15248
15249         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
15250         for ColdFire targets.
15251
15252 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
15253             Richard Sandiford  <richard@codesourcery.com>
15254
15255         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
15256         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
15257         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
15258         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
15259         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
15260         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
15261
15262 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15263
15264         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
15265         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
15266         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
15267         (*adddi_dilshr32_cf): New pattern.
15268         (adddi3, subdi3): Remove first alternatives.
15269
15270 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15271
15272         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
15273         implemented using move.l, do not use its cc result for floating-point
15274         comparisons.
15275
15276 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15277
15278         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
15279         from accepting 's' constraints if flag_pic.
15280
15281 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15282
15283         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
15284         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
15285         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
15286         condition from TARGET_68881 to TARGET_HARD_FLOAT.
15287
15288 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
15289
15290         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
15291         ColdFire alternatives.
15292         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
15293         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
15294         architectures that support ff1 instruction.
15295
15296 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15297             Julian Brown  <julian@codesourcery.com>
15298
15299         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
15300         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
15301         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
15302         Add commentary.
15303
15304 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
15305
15306         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
15307         and return a bool.
15308         (output_move_const_into_data_reg, output_move_simode_const): Delete.
15309         * config/m68k/m68k.c (const_method, const_int_cost): Take a
15310         HOST_WIDE_INT instead of an rtx.
15311         (m68k_rtx_costs): Update call accordingly.
15312         (output_move_const_into_data_reg): Likewise.  Fix formatting.
15313         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
15314         Return a bool.
15315         (output_move_simode_const): Update calls after above changes.
15316         Rework to use automatic variables and predicates like MEM_P.
15317         * config/m68k/m68k.md (pushexthisi_const): Update call to
15318         valid_mov3q_const.
15319
15320 2007-01-19  Dirk Mueller  <dmueller@suse.de>
15321
15322         * tree-ssa-alias.c (perform_var_substitution): Fix typo
15323         in dump_flags test.
15324
15325 2007-01-19  Richard Guenther  <rguenther@suse.de>
15326
15327         * builtins.c (expand_builtin_cexpi): Fall back to expanding
15328         via cexp in case sincos is not available.
15329
15330 2007-01-19  Richard Guenther  <rguenther@suse.de>
15331
15332         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
15333         * defaults.h (TARGET_HAS_SINCOS): Default to off.
15334         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
15335         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
15336         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
15337         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
15338         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
15339         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
15340
15341 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
15342
15343         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
15344         New insn patterns.
15345         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
15346         (atan2xf3): Directly generate RTL pattern.
15347         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
15348         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
15349         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15350         disable patterns for SSE math.
15351         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
15352         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
15353         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15354         disable patterns for SSE math.
15355
15356 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
15357
15358         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
15359
15360 2007-01-18  Roger Sayle  <roger@eyesopen.com>
15361
15362         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
15363         VIEW_CONVERT_EXPR to the same type as it's operand.
15364
15365 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
15366
15367         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
15368         configured for long double 128.
15369
15370 2007-01-18  Mike Stump  <mrs@apple.com>
15371
15372         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
15373         error.
15374
15375 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
15376
15377         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
15378         type correct.
15379
15380 2007-01-18  Jan Hubicka  <jh@suse.cz>
15381
15382         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
15383         greater than NUM_VOP_FREE_BUCKETS.
15384
15385 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
15386
15387         * tree-ssa-structalias.c: Update comments.
15388         (ptabitmap_obstack): Removed.
15389         (pta_obstack): New.
15390         (oldpta_obstack): Ditto.
15391         (stats): Add a few members.
15392         (struct variable_info): Remove node, complex, address_taken, and
15393         indirect_target members. Add oldsolution member.
15394         (new_var_info): Do not initialize removed members.
15395         (constraint_expr_type): Remove INCLUDES.
15396         (constraint_graph): Add size, implicit_preds, rep,
15397         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
15398         (FIRST_REF_NODE): New macro.
15399         (LAST_REF_NODE): Ditto.
15400         (FIRST_ADDR_NODE): Ditto.
15401         (find): New function.
15402         (unite): Ditto.
15403         (dump_constraint): Do not handle INCLUDES.
15404         (insert_into_complex): Do not insert duplicate constraints.
15405         (condense_varmap_nodes): Renamed and rewritten into ...
15406         (merge_node_constraints): This. Also fix bug in handling of
15407         offseted copy constraints.
15408         (clear_edges_for_node): No longer need to deal with preds at all,
15409         or removing associated preds/succs.
15410         (merge_graph_nodes): Deal with indirect_cycles.
15411         Don't deal with predecessors.
15412         (add_implicit_graph_edge): New function.
15413         (add_pred_graph_edge): Ditto.
15414         (add_graph_edge): Don't deal with predecessors.
15415         (build_constraint_graph): Removed.
15416         (build_pred_graph): New function.
15417         (build_succ_graph): Ditto.
15418         (struct scc_info): Removed in_component. Added roots, dfs, and
15419         node_mapping. Remove visited_index, unification_queue.
15420         (scc_visit): Deal with union-find we do now.
15421         Deal with cycles with REF nodes.
15422         (collapse_nodes): Renamed and rewritten to ...
15423         (unify_nodes): This.
15424         (process_unification_queue): Removed.
15425         (topo_visit): Cleanup
15426         (do_da_constraint): Use find.
15427         (do_sd_constraint): Ditto.
15428         (do_ds_constraint): Ditto.
15429         (do_complex_constraint): Ditto.
15430         (init_scc_info): Update for removed and added members.
15431         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
15432         (find_indirect_cycles): This.
15433         (equivalence_class): New variable.
15434         (label_visit): New function.
15435         (perform_variable_substitution): Rewritten.
15436         (free_var_substitution_info): New function.
15437         (find_equivalent_node): Ditto.
15438         (move_complex_constraints): Ditto.
15439         (eliminate_indirect_cycles): Ditto.
15440         (solve_graph): Only propagate changed bits.
15441         Use indirect cycle elimination.
15442         Use find.
15443         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
15444         (tree_id_eq): Renamed to ...
15445         (tree_vi_eq): This. Update for member change
15446         (insert_id_for_tree): Renamed and rewritten to ...
15447         (insert_vi_for_tree): This.
15448         (lookup_id_for_tree): Renamed and rewritten to ...
15449         (lookup_vi_for_tree): This.
15450         (get_id_for_tree): Renamed and rewritten to ...
15451         (get_vi_for_tree): Ditto.
15452         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
15453         (process_constraint): Don't handle INCLUDES.
15454         Remove special ADDRESSOF case.
15455         (find_func_aliases): Rewrite to use vi functions instead of id
15456         ones.
15457         (create_function_info_for): Ditto.
15458         (create_variable_info_for): Ditto.
15459         (intra_create_variable_infos): Ditto.
15460         (merge_smts_into): Ditto.
15461         (find_what_p_points_to): Ditto.
15462         (init_base_vars): Ditto.
15463         (init_alias_vars): Ditto.
15464         (remove_preds_and_fake_succs): New function.
15465         (dump_sa_points_to_info): Dump new stats.
15466         (dump_solution_for_var): Use find.
15467         (set_used_smts): Fix formatting.
15468         (compute_points_to_sets): Updated for new functions.
15469         (ipa_pta_execute): Ditto.
15470
15471 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15472             Richard Sandiford  <richard@codesourcery.com>
15473
15474         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
15475         parallels.
15476         * calls.c (expand_call): If the return value is a PARALLEL,
15477         extract its first member.
15478         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
15479         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
15480         use FUNCTION_EXTRA_EPILOGUE.
15481         (m68k_function_value): Return a PARALLEL if the return value
15482         is of a pointer type.
15483         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
15484         (FUNCTION_EXTRA_EPILOGUE): Remove.
15485         * config/m68k/m68k.md (D0_REG): New constant.
15486
15487 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15488
15489         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
15490         output a NOP for empty epilogues.
15491
15492 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15493
15494         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
15495         before function.  Extend register save check to include all
15496         registers, not just integer ones.
15497
15498 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15499
15500         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
15501         (m68k_use_return_insn): ...this.
15502         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
15503         * config/m68k/m68k.c (use_return_insn): Rename to...
15504         (m68k_use_return_insn): ...this.
15505         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
15506         of USE_RETURN_INSN.
15507
15508 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15509
15510         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
15511         nearest even, fix denormal rounding overflow.
15512
15513 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15514
15515         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
15516         f%$smove and f%$move.
15517         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
15518         (extendsfdf2_cf): Use fdmove instead of f%&move.
15519         (truncdfsf2_cf): Use fsmove instead of f%$smove.
15520         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
15521
15522 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15523
15524         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
15525         GPR<-GPR moves.
15526
15527 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15528
15529         * real.h (real_format): Add a canonical_nan_lsbs_set field.
15530         (coldfire_single_format): Declare.
15531         (coldfire_double_format): Likewise.
15532         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
15533         of qnan_msb_set to determine the lower bits of a canonical
15534         NaN significand.
15535         (encode_ieee_double): Likewise.
15536         (encode_ieee_quad): Likewise.
15537         (ieee_single_format): Initialize canonical_nan_lsbs_set.
15538         (mips_single_format): Likewise.
15539         (ieee_double_format): Likewise.
15540         (mips_double_format): Likewise.
15541         (ieee_extended_motorola_format): Likewise.
15542         (ieee_extended_intel_96_format): Likewise.
15543         (ieee_extended_intel_128_format): Likewise.
15544         (ieee_extended_intel_96_round_53_format): Likewise.
15545         (ibm_extended_format): Likewise.
15546         (mips_extended_format): Likewise.
15547         (ieee_quad_format): Likewise.
15548         (mips_quad_format): Likewise.
15549         (vax_f_format): Likewise.
15550         (vax_d_format): Likewise.
15551         (vax_g_format): Likewise.
15552         (i370_single_format): Likewise.
15553         (i370_double_format): Likewise.
15554         (decimal_single_format): Likewise.
15555         (decimal_double_format): Likewise.
15556         (decimal_quad_format): Likewise.
15557         (c4x_single_format): Likewise.
15558         (c4x_extended_format): Likewise.
15559         (real_internal_format): Likewise.
15560         (coldfire_single_format): New real_format.
15561         (coldfire_double_format): Likewise.
15562         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
15563         canonical_nan_lsbs_set.
15564         (pdp11_d_format): Likewise.
15565         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
15566         if TARGET_COLDFIRE_CPU.
15567
15568 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15569
15570         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
15571         (output_call, m68k_legitimize_call_address): Declare.
15572         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
15573         parenthesees.  Add support for a 'W' constraint.
15574         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
15575         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
15576         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
15577         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
15578         variables.
15579         (override_options): Initialize them.  Do not set flag_no_function_cse
15580         for TARGET_ID_SHARED_LIBRARY.
15581         (m68k_output_pic_call): Delete.
15582         (m68k_legitimize_call_address): New function.
15583         (print_operand): Remove the %o prefix.  Handle the %p prefix.
15584         (output_call): New function.
15585         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
15586         target address from the GOT if symbolic jumps are not allowed.
15587         * config/m68k/m68k.md (call, general_operand): Do not set
15588         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
15589         Merge separate flag_pic and !flag_pic define_insns into...
15590         (*call, *call_value): ...these new patterns.  Match the address
15591         rather than the containing MEM and require it to be a call_operand.
15592         Use output_call to generate the asm template.
15593         * config/m68k/predicates.md (const_call_operand): New predicate.
15594         (call_operand): Likewise.
15595
15596 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15597
15598         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
15599         (STACK_GROWS_DOWNWARD): Define to 1.
15600         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
15601         comments, emphasizing that these values are only defaults.
15602         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
15603         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
15604
15605 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15606
15607         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
15608
15609 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15610             Richard Sandiford  <richard@codesourcery.com>
15611
15612         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
15613         (FP_REGNO_P): New macros.
15614         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
15615         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
15616         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
15617         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
15618
15619 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15620
15621         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15622         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
15623         to $tmake_file.
15624         * config/m68k/t-floatlib: New file, extracting common code from...
15625         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
15626         * config/m68k/t-uclinux: Here.
15627         * config/m68k/fpgnulib.c: Do not compile extendeed precision
15628         routines on ColdFire targets.
15629
15630 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15631
15632         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15633         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
15634         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
15635         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
15636         explicitly set MOTOROLA to 1.
15637         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
15638
15639 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15640             Nathan Sidwell  <nathan@codesourcery.com>
15641
15642         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
15643         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
15644         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
15645         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
15646         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
15647         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
15648         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
15649         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
15650         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
15651         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
15652         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
15653         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
15654         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
15655         (DBX_REGISTER_NUMBER): Delete.
15656         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
15657         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
15658         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
15659
15660 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15661
15662         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
15663         * config/flat.h: New file.
15664         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
15665         OBJECT_FORMAT_FLAT.
15666         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
15667         indirect references for -msep-data or -mid-shared-library.
15668         Do not use PC-relative code addresses either.
15669         * config/m68k/m68k.c (override_options): Restrict -fPIC error
15670         to -mpcrel.
15671         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
15672         for shared libraries and crt1.o for executables.  Use crti.o and
15673         crtbegin.o.
15674         (ENDFILE_SPEC): Use crtend.o and crtn.o.
15675         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
15676         Do not add -elf2flt or -shared-lib-id options here.
15677         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
15678         Pass -shared-lib-id if -mid-shared-library, taking the library
15679         identifier from -mshared-library-id if given, otherwise
15680         defaulting to 0.
15681         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
15682         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
15683         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
15684         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
15685         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
15686         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
15687         and crtend.o.
15688         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
15689         jump sequence for ISA A and ISA A+.
15690         (PICJUMP): Likewise.
15691
15692 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15693
15694         * config.gcc (m68k-*-uclinux*): Base the port on the common
15695         and m68k GNU/Linux files rather than on the generic ELF ones.
15696         * config/m68k/uclinux.h (TARGET_VERSION): Override.
15697         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
15698
15699 2007-01-18  Julian Brown  <julian@codesourcery.com>
15700             Richard Sandiford  <richard@codesourcery.com>
15701
15702         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
15703         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
15704         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
15705         before redefining.
15706         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
15707         80 unconditionally.
15708         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
15709
15710 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15711
15712         * doc/install.texi: Document m68k-uclinuxoldabi.
15713         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
15714         * config/m68k/uclinux-oldabi.h: New file, copied from
15715         config/m68k/uclinux.h.
15716
15717 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
15718
15719         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
15720         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
15721         (m32r_compute_frame_size): Use unsigned for regno.
15722         (m32r_reload_lr): Use gen_frame_mem.
15723         (pop): New.
15724         (m32r_output_function_epilogue): Don't output the function epilogue
15725         textually here.
15726         (m32r_expand_epilogue): New.
15727         (direct_return): Return false if the function has the interrupt
15728         attribute.
15729         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
15730         * config/m32r/m32r.md (epilogue): New expander.
15731         (return_lr, return_rte): New insns.
15732         (return): Make it expander.
15733         (return_normal): New expander.
15734
15735 2007-01-18  Josh Conner  <jconner@apple.com>
15736
15737         PR target/30485
15738         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
15739         support for UNLE, UNLT, UNGE, and UNGT.
15740
15741 2007-01-18  Jan Hubicka  <jh@suse.cz>
15742
15743         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
15744         * tree-tailcall (add_virtual_phis): Likewise.
15745         (optimize_tail_call): Return TODOs.
15746         (execute_tail_calls): Return TODOs.
15747         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
15748         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
15749         changed.
15750         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
15751         Cleanup cfg using TODO.
15752         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
15753         * passes.c (execute_function_todo): When cleanup did something, remove
15754         unused locals.
15755         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
15756         (make_edges): Don't cleanup_cfg.
15757
15758 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
15759
15760         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
15761         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
15762         operate on the top of stack.
15763         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
15764         register handling of instructions that output to the second
15765         stack slot.
15766         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
15767         (move_for_stack_reg): Special-case check for dead destination
15768         stack slot for constant load of 1.0 inside UNSPEC_TAN.
15769
15770         * config/i386/i386.md (UNSPEC_TAN): New constant.
15771         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
15772         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
15773         to correctly model move of constant 1.0 to top stack slot.
15774         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
15775         (unnamed peephole2 pattern): Remove corresponding peephole2
15776         pattern that optimizes tan insn and loading of constant 1.0.
15777         (tanxf2): Use fptanxf4_i387.
15778         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
15779         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
15780         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15781         disable patterns for SSE math.
15782         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
15783         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
15784
15785 2007-01-18  Dirk Mueller  <dmueller@suse.de>
15786             Richard Guenther <rguenther@suse.de>
15787
15788         PR diagnostic/8268
15789         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
15790         * common.opt (Warray-bounds): Add new warning option.
15791         * c-opts.c (c_common_handle_option): Define -Warray-bounds
15792         if -Wall is given.
15793         * Makefile.in: make tree-vrp.o depend on toplev.h
15794         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
15795         is enabled.
15796         (check_array_refs, check_array_bounds, check_array_ref): New.
15797
15798 2007-01-18  Jan Hubicka  <jh@suse.cz>
15799
15800         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
15801         (execute_ssa_ccp): Return flags conditionally.
15802         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
15803         changed.
15804         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
15805
15806 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
15807
15808         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
15809         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
15810
15811         * Makefile.c (GTFILES): Add cfglayout.h.
15812         * gengtype.c (open_base_files): Likewise.
15813         * cfglayout.c (cfg_layout_function_footer,
15814         cfg_layout_function_header) Reindent to make gengtype happy.
15815         * cfglayout.h (cfg_layout_function_footer,
15816         cfg_layout_function_header): Add GTY(()) marker.
15817
15818         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
15819
15820 2007-01-18  Ben Elliston  <bje@au.ibm.com>
15821
15822         * genautomata.c (write_automata): Include xstrerror output in the
15823         error message if writing the DFA description file fails.
15824
15825 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
15826
15827         * config/mips/mips-protos.h (mips_output_external): Make it
15828         return void.
15829         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
15830         * config/mips/mips.c (irix_output_external_libcall): Likewise.
15831         (extern_list): Likewise.
15832         (extern_head): Likewise.
15833         (TARGET_ASM_FILE_END): Likewise.
15834         (mips_file_end): Likewise.
15835         (mips_output_external): Rewritten.
15836
15837 2007-01-18  Ben Elliston  <bje@au.ibm.com>
15838
15839         * genpreds.c (write_insn_preds_c): Only write out the function
15840         body for regclass_for_constraint if we have register constraints.
15841
15842 2007-01-17  Tom Tromey  <tromey@redhat.com>
15843
15844         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
15845         * doc/install.texi (Testing): Use sourceware.org.
15846         (Binaries): Likewise.
15847         (Specific): Likewise.
15848         * doc/contrib.texi (Contributors): Use sourceware.org.
15849
15850 2007-01-17  Anatoly Sokolov <aesok@post.ru>
15851
15852         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
15853         (AVR_ENHANCED): Rename to ...
15854         (AVR_HAVE_MUL): ... new.
15855         (avr_enhanced_p): Rename to ...
15856         (avr_have_mul_p): ... new.
15857         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
15858         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
15859         * config/avr/avr.c (avr_enhanced_p): Rename to ...
15860         (avr_have_mul_p): ... new.
15861         (base_arch_s): Rename 'enhanced' to 'have_mul'.
15862         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
15863         'avr_enhanced_p' and 'enhanced'.
15864         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
15865         AVR_HAVE_MUL instead of AVR_ENHANCED.
15866         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
15867         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
15868         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
15869         instead of AVR_ENHANCED.
15870         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
15871         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
15872         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
15873
15874 2007-01-17  Ian Lance Taylor  <iant@google.com>
15875
15876         * vec.h (VEC_reserve_exact): Define.
15877         (vec_gc_p_reserve_exact): Declare.
15878         (vec_gc_o_reserve_exact): Declare.
15879         (vec_heap_p_reserve_exact): Declare.
15880         (vec_heap_o_reserve_exact): Declare.
15881         (VEC_OP (T,A,reserve_exact)): New static inline function, three
15882         versions.
15883         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
15884         negative parameter.
15885         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
15886         (VEC_OP (T,A,copy)) [all versions]: Likewise.
15887         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
15888         * vec.c (calculate_allocation): Add exact parameter.  Change all
15889         callers.
15890         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
15891         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
15892         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
15893         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
15894         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
15895         (vec_heap_p_reserve_exact): New function.
15896         (vec_heap_o_reserve_exact): New function.
15897
15898 2007-01-17  Jan Hubicka  <jh@suse.cz>
15899
15900         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
15901
15902 2007-01-17  Eric Christopher  <echristo@apple.com>
15903
15904         * config.gcc: Support core2 processor.
15905
15906 2007-01-16  Jan Hubicka  <jh@suse.cz>
15907
15908         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
15909         the names, just unlink the chain so we don't crash on dangling pointers
15910         to dead SSA names.
15911
15912 2007-01-16  Jan Hubicka  <jh@suse.cz>
15913
15914         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
15915         * tree-pass.h: Reorder to make IPA passes appear toegher.
15916         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
15917         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
15918         parameters, do not call early inliner.
15919         * ipa-inline.c: Update comments.  Include tree-flow.h
15920         (cgraph_decide_inlining): Do not compute inlining parameters.
15921         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
15922         be called with function context set up.
15923         (pass_ipa_inline): Remove unreachable functions before pass.
15924         (cgraph_early_inlining): Simplify assuming to be called from the
15925         PM as local pass.
15926         (pass_early_inline): New pass.
15927         (cgraph_gate_ipa_early_inlining): New gate.
15928         (pass_ipa_early_inline): Turn into simple wrapper.
15929         (compute_inline_parameters): New function.
15930         (gate_inline_passes): New gate.
15931         (pass_inline_parameters): New pass.
15932         (apply_inline): Move here from tree-optimize.c
15933         (pass_apply_inline): New pass.
15934         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
15935         transforming.
15936         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
15937         doing them by hand.
15938         (tree_function_versioning): Do not allocate dummy struct function.
15939         * tree-inline.h (optimize_inline_calls): Update prototype.
15940         * tree-optimize.c (execute_fixup_cfg): Export.
15941         (pass_fixup_cfg): Remove
15942         (tree_rest_of_compilation): Do not apply inlines.
15943         * tree-flow.h (execute_fixup_cfg): Declare.
15944         * Makefile.in (gt-passes.c): New.
15945         * passes.c: Include gt-passes.h
15946         (init_optimization_passes): New passes.
15947         (nnodes, order): New static vars.
15948         (do_per_function_toporder): New function.
15949         (execute_one_pass): Dump current pass here.
15950         (execute_ipa_pass_list): Don't dump current pass here.
15951
15952 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
15953
15954         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
15955         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
15956
15957 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
15958
15959         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
15960         (strong_alias): Define.
15961         (__gcc_qmul): Provide non-FMA for soft-float.
15962         (__gcc_qdiv): Same.
15963         (__gcc_qneg): New.
15964         (__gcc_qeq): New.
15965         (__gcc_qle): New.
15966         (__gcc_qge): New.
15967         (__gcc_qunord): New.
15968         (__gcc_stoq): New.
15969         (__gcc_dtoq): New.
15970         (__gcc_qtos): New.
15971         (__gcc_qtod): New.
15972         (__gcc_qtoi): New.
15973         (__gcc_qtou): New.
15974         (__gcc_itoq): New.
15975         (__gcc_utoq): New.
15976         (fmsub): New.
15977         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
15978         soft-float functions.
15979         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
15980         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
15981         about long double soft float.
15982
15983 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
15984             Tehila Meyzels  <tehila@il.ibm.com>
15985
15986         * tree-vectorizer.h (is_pattern_stmt_p): New.
15987         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
15988         formatting (tabs instead of spaces). Cleanup and clarify setting
15989         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
15990         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
15991         (vectorizable_type_demotion): Check that types are integral.
15992         (vectorizable_type_promotion): Likewise.
15993         (vectorizable_store): Fix typo.  Eliminate new-line at end of
15994         comments.
15995
15996 2007-01-16  Jan Hubicka  <jh@suse.cz>
15997
15998         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
15999         cgraph edges too.
16000
16001 2007-01-15  Eric Christopher  <echristo@apple.com>
16002
16003         * ifcvt.c: Include vec.h, vecprim.h.
16004         (check_cond_move_block): New argument regs.
16005         Reorganize. Add registers used to regs.
16006         (cond_move_process_if_block): Use regs set above as
16007         loop bounds.
16008
16009 2007-01-15  Eric Christopher  <echristo@apple.com>
16010
16011         * config/darwin.h: Update copyright.
16012         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
16013         (LINK_COMMAND_SPEC): Add -u.
16014         (LINK_SPEC): Fix umbrella for above.
16015
16016 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
16017
16018         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
16019         glibc CVS.
16020
16021 2007-01-15  Tom Tromey  <tromey@redhat.com>
16022
16023         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
16024         * doc/install.texi (Testing): Don't mention jacks.
16025         (Configuration): Document --enable-java-maintainer-mode.  Move
16026         --with-java-home to libgcj-specific section.  Document
16027         --with-ecj-jar.
16028         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
16029
16030 2007-01-15  Jan Hubicka  <jh@suse.cz>
16031
16032         * tree-ssa-dce.c (DCE_TODOs): New.
16033         (propagate_necessity): Return if something changed.
16034         (eliminate_unnecessary_stmts): Likewise.
16035         (perform_tree_ssa_dce): Return TODO flags when needed.
16036         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
16037
16038 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
16039
16040         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
16041         (fyl2x_extend<mode>xf3_i387): New insn pattern.
16042         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
16043         patterns using X87MODEF12 mode macro.  Extend operand 1
16044         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
16045         (log10<mode>2): Ditto.
16046         (log2<mode>2): Ditto.
16047         (log1p<mode>2): Ditto.
16048         (logb<mode>2): Ditto.
16049         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
16050         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
16051         (*fxtractxf3_i387): Rename from *fxtractxf3.
16052         (fxtract_extend<mode>xf3_i387): New insn pattern.
16053         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
16054         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
16055         and gen_fyl2xxf3_i387().
16056
16057 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
16058
16059         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
16060         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
16061         get_loop_exit_edges.  Changed return type to bool.
16062         * cfgloop.h (fix_loop_placement): Declaration removed.
16063
16064 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
16065
16066         * param.h (MIN_VECT_LOOP_BOUND): New.
16067         * params.def (MIN_VECT_LOOP_BOUND): New.
16068         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
16069         argument - minimum threshold for number of iterations.
16070         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
16071         argument to declaration.
16072         * tree-vect-analyze.c (vect_analyze_operations): Check value of
16073         MIN_VECT_LOOP_BOUND.
16074         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
16075         slpeel_tree_peel_loop_to_edge with additional argument.
16076         (vect_do_peeling_for_alignment): Likewise.
16077         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
16078
16079 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
16080
16081         PR target/30413
16082         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
16083         operands of size 1.
16084
16085 2007-01-14  Jan Hubicka  <jh@suse.cz>
16086
16087         * tree-dfa.c (remove_referenced_var): New function.
16088         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
16089         prune referenced vars list too.
16090         * tree-flow.h (remove_referenced_var): Declare.
16091
16092 2007-01-14  Jan Hubicka  <jh@suse.cz>
16093
16094         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
16095         separately.
16096         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
16097         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
16098         * except.h (verify_eh_throw_table_statements): Kill prototype.
16099         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
16100         into call exrepssions.
16101         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
16102         eh trhow verifier.
16103         * tree-cfg.c: Include pointer-set.h.
16104         (verify_node_sharing): Work on pointer set.
16105         (verify_eh_throw_stmt_node): New.
16106         (verify_stmts): Use pointers sets, verify throw_stmt.
16107
16108 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
16109
16110         * ipa-reference.c (analyze_function): Consider also addresses taken
16111         in phi nodes.
16112
16113 2007-01-12  Roger Sayle  <roger@eyesopen.com>
16114
16115         * c-typeck.c (null_pointer_constant_p): Replace use of
16116         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16117         (build_c_cast): Likewise.
16118
16119 2007-01-12  Roger Sayle  <roger@eyesopen.com>
16120
16121         * tree.h (force_fit_type_double): Remove unused final argument.
16122         * c-common.c (constant_expression_warning): Replace use of
16123         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16124         (convert_and_check): Likewise.
16125         (shorten_compare): Update call to force_fit_type_double.
16126         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
16127         * convert.c (convert_to_pointer): Update call to
16128         force_fit_type_double.
16129         * fold-const.c (force_fit_type_double): Remove overflowed_const
16130         argument.
16131         (int_const_binop, fold_convert_const_int_from_int,
16132         fold_convert_const_int_from_real, fold_div_compare,
16133         fold_sign_changed_comparison, fold_unary, fold_negate_const,
16134         fold_abs_const, fold_not_const): Remove the final argument from
16135         calls to force_fit_type_double.
16136
16137 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16138
16139         * configure.ac: Set insn to "nop" for spu-*-* also.
16140         * configure: Regenerate.
16141
16142 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
16143
16144         * builtins.def : Add BUILT_IN_FREE.
16145
16146 2007-01-12  Jan Hubicka  <jh@suse.cz>
16147
16148         PR tree-optimization/30443
16149         * tree-inline.c (tree_function_versioning): Do not optimize when
16150         cloning for inlining.
16151
16152 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
16153
16154         * doc/loop.texi: Document recording of loop exits.
16155         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
16156         (update_single_exits_after_duplication,
16157         update_single_exit_for_duplicated_loop,
16158         update_single_exit_for_duplicated_loops): Removed.
16159         (duplicate_loop_to_header_edge): Do not call
16160         update_single_exits_after_duplication and
16161         update_single_exit_for_duplicated_loops.
16162         (loop_version): Do not update single_exit information.
16163         (fix_loop_structure): Use record_loop_exits instead of
16164         mark_single_exit_loops.
16165         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
16166         the lists of loop exits.
16167         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
16168         split_edge, merge_blocks): Update the lists of loop exits.
16169         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
16170         loop_optimizer_init.
16171         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
16172         of mark_single_exit_loops.
16173         (loop_optimizer_finalize): Call release_recorded_exits.
16174         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
16175         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
16176         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
16177         update single exit information.
16178         * lambda-code.c (perfect_nestify): Ditto.
16179         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
16180         (mark_single_exit_loops): Removed.
16181         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
16182         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
16183         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
16184         functions.
16185         (get_loop_exit_edges, single_exit): Use recorded exit lists.
16186         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
16187         (verify_loop_structure): Verify consistency of the exit lists.
16188         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
16189         (set_single_exit): Removed.
16190         * cfgloop.h (struct loop_exit): New function.
16191         (struct loop): single_exit_ field replaced by exits field.
16192         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
16193         (struct loops): Added exits hash.
16194         (mark_single_exit_loops, set_single_exit): Declaration removed.
16195         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
16196
16197 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16198
16199         * doc/invoke.texi: Avoid use of @headitem.
16200
16201 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16202
16203         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
16204
16205 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16206
16207         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
16208         list of targets.
16209
16210 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16211             Richard Sandiford  <richard@codesourcery.com>
16212
16213         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
16214         * config/m68k/m68k.opt: Resort options.
16215         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
16216
16217 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16218             Richard Sandiford  <richard@codesourcery.com>
16219
16220         * doc/invoke.texi: Document the macros that are defined by
16221         m68k's -mtune and -mhard-float options.
16222         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
16223         (m68k_cpp_cpu_family): Likewise.
16224         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
16225         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
16226         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
16227         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
16228         (m68k_cpp_cpu_family): Likewise.
16229
16230 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16231
16232         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
16233         macros besides mc68000 as tuning macros.  Use a switch statement
16234         to set them and mcpu32.
16235
16236 2007-01-12  Julian Brown  <julian@codesourcery.com>
16237
16238         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
16239         (TARGET_68040_ONLY): Rename to...
16240         (TARGET_68040): ...this.
16241         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
16242         * config/m68k/m68k.md: Likewise.
16243
16244 2007-01-12  Julian Brown  <julian@codesourcery.com>
16245             Nathan Sidwell  <nathan@codesourcery.com>
16246             Richard Sandiford  <richard@codesourcery.com>
16247
16248         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
16249         the -mcpu= argument associated with the --with-cpu setting.
16250         Define M68K_DEFAULT_TUNE to the default -mtune= option,
16251         if different from the one implied by the -mcpu setting.
16252         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
16253         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
16254         * doc/invoke.texi: Mention ColdFire in the introduction to the
16255         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
16256         -mno-div and -mhard-float options.  Make -m68881 a synonym for
16257         -mhard-float.  Document the previously-undocumented -m5206e,
16258         -m528x, -m5307 and -m5407 options.  Tweak the existing option
16259         documentation for consistency.
16260         * doc/install.texi: Mention new --with-cpu arguments.
16261         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
16262         default CPU if neither -mcpu nor -march are specified.
16263         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
16264         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
16265         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
16266         using m68k_tune to decide between families that implement the
16267         same ISA.  Use m68k_tune to set __mcfv4e__.
16268         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
16269         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
16270         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
16271         (FL_ISA_C, FL_ISA_MMU): New macros.
16272         (MASK_COLDFIRE): Delete.
16273         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
16274         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
16275         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
16276         (TARGET_HARD_FLOAT): Do not define here.
16277         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
16278         (TUNE_68000): New macro.
16279         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
16280         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
16281         (TUNE_CFV2): Redefine in terms of m68k_tune.
16282         (uarch_type, target_device, fpu_type): New enums.
16283         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
16284         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
16285         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
16286         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
16287         (FL_FOR_isa_c): New macros.
16288         (m68k_isa): New enum.
16289         (m68k_target_selection): New structure.
16290         (all_devices, all_isas, all_microarchs): New tables.
16291         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
16292         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
16293         (MASK_ALL_CPU_BITS): Delete.
16294         (m68k_find_selection): New function.
16295         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
16296         Map the legacy target options to a combination of the new ones.
16297         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
16298         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
16299         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
16300         settings.
16301         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
16302         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
16303         properties.
16304         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
16305         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
16306         * config/m68k/m68k-devices.def: New file.
16307
16308 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16309             Nathan Sidwell  <nathan@codesourcery.com>
16310
16311         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
16312         (SUBTARGET_EXTRA_SPECS): New macros.
16313         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
16314         use %(asm_cpu_spec) instead.
16315         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
16316         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
16317         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
16318         (EXTRA_SPECS): Rename to...
16319         (SUBTARGET_EXTRA_SPECS): ...this.
16320
16321 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
16322             Richard Sandiford  <richard@codesourcery.com>
16323             Julian Brown  <julian@codesourcery.com>
16324
16325         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
16326         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
16327         to the configuration's default CPU.
16328         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
16329         Remove default masks.
16330         (m680[012]0-*-*): Set the default with_cpu to the first part of
16331         the target name.
16332         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
16333         (m68k*-*-linux): Extend the --with-cpu handling to...
16334         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
16335         and m68010.  Don't set target_cpu_default2.
16336         * doc/install.texi: Document --with-cpu for m68k.
16337         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
16338         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
16339         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
16340         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
16341         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
16342         (ASM_SPEC): Remove use of %(asm_cpu_default).
16343         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
16344         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
16345         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
16346         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
16347         __HAVE_FPU__ if TARGET_HARD_FLOAT.
16348         (TARGET_DEFAULT): Delete.
16349         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
16350         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
16351         (CPP_CPU_SPEC): Delete.
16352         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
16353         the appropriate string.
16354         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
16355         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
16356         (ASM_SPEC): Don't use %(asm_default_spec).
16357         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
16358         TARGET_DEFAULT and add MASK_68881.
16359         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
16360
16361 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16362
16363         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
16364         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
16365         MASK_68010 alongside MASK_68020.
16366         * doc/invoke.texi: Document -m68010.
16367         * config/m68k/m68k.opt (m68010): New.
16368         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
16369         if TUNE_68010.
16370         (TUNE_68010): New macro.
16371         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
16372         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
16373         (M68K_CPU_m68332): Add MASK_68010.
16374         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
16375         fallback definition.
16376         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
16377         defines.
16378         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
16379         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
16380         to all entries that use MASK_68020.
16381         (output_move_simode_const, output_move_himode, output_move_qimode)
16382         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
16383         instead of TARGET_68020 to select clr behavior.  Remove comment
16384         about there being no TARGET_68010.
16385         * config/m68k/m68k.md: Likewise throughout.
16386
16387 2007-01-12  Julian Brown  <julian@codesourcery.com>
16388
16389         * config/m68k/m68k.h (TARGET_ISAB): New macro.
16390         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
16391         * config/m68k/m68k.md: Likewise.
16392
16393 2007-01-12  Julian Brown  <julian@codesourcery.com>
16394
16395         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
16396         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
16397
16398 2007-01-12  Julian Brown  <julian@codesourcery.com>
16399
16400         * config/m68k/m68k.h (TUNE_68040_60): New macro.
16401         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
16402         * config/m68k/m68k.md: Likewise.
16403
16404 2007-01-12  Julian Brown  <julian@codesourcery.com>
16405             Richard Sandiford  <richard@codesourcery.com>
16406
16407         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
16408         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
16409         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
16410         TARGET_CPU32.
16411         (TARGET_CPU32): Rename to...
16412         (TUNE_CPU32): ...this.
16413         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
16414         (TUNE_CFV2): New macros.
16415         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
16416         remove conditions that are implied by TARGET_68020.
16417         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
16418         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
16419         (m68k_output_function_epilogue): Likewise.
16420         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
16421         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
16422         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
16423         non-68000 timings.  Refactor multiplication and division costs.
16424         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
16425         TUNE_CPU32 instead of TARGET_CPU32.
16426         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
16427         and TUNE_68060 instead of TARGET_68060.
16428         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
16429         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
16430         TARGET_CPU32.
16431         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
16432         && !TARGET_COLDFIRE" to choose between moveq and clr.
16433         Likewise in the unnamed movsf pattern.
16434         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
16435         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
16436         ashiftrt pattern.
16437
16438 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
16439
16440         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
16441         of tabbing before backslashes.
16442
16443 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16444
16445         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
16446         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
16447         (ASM_OUTPUT_INTERNAL_LABEL): Define.
16448
16449 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
16450
16451         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
16452         find_interesting_uses_cond.
16453         (find_interesting_uses_cond): Use extract_cond_operands.
16454         (rewrite_use_compare): Use extract_cond_operands and
16455         force_gimple_operand_bsi.  Do not call update_stmt.
16456         (determine_use_iv_cost_condition): Use extract_cond_operands.
16457         Return cheaper of using original bound and changing the exit bound.
16458
16459 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
16460
16461         PR tree-optimization/29516
16462         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
16463         most_expensive_mult_to_index, addr_to_parts,
16464         create_mem_ref, maybe_fold_tmr): Make the type of
16465         fields of TARGET_MEM_REF sizetype.
16466         (move_fixed_address_to_symbol, move_pointer_to_base):
16467         New functions.
16468         * tree.def (TARGET_MEM_REF): Add comment on types of
16469         the operands.
16470
16471 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
16472
16473         * c-common.c (vector_types_convertible_p): Treat opaque types as
16474         always convertible if they have the same size, but not otherwise.
16475
16476 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
16477
16478         * ifcvt.c (struct noce_if_info): Add comments to the fields.
16479         Remove the b_unconditional field.
16480         (noce_try_sign_mask): Do not look at b_unconditional.
16481         (noce_process_if_block): Do not use merge_if_blocks.  Update
16482         the CFG here.  Do not set b_unconditional.
16483         (cond_move_process_if_block): Likewise.
16484         (find_cond_trap): Likewise.
16485         (check_cond_move_block): Require simple jump insns at the end
16486         of the basic block.
16487
16488 2007-01-11  Jan Hubicka  <jh@suse.cz>
16489
16490         PR tree-optimization/1046
16491         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
16492         when alias info is not ready.
16493         (pass_tail_recursion): Do not require aliasing.
16494         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
16495         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
16496         * tree-ssa-copy.c (pass_copy_prop): Likewise.
16497         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
16498         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
16499         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
16500         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
16501         before inlining.
16502         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
16503         When aliasing is not build, mark statement as volatile.
16504
16505 2007-01-11  Tom Tromey  <tromey@redhat.com>
16506
16507         PR preprocessor/15185, PR preprocessor/20989:
16508         * doc/cppopts.texi <-MT>: Update description of algorithm for
16509         computing default target.
16510         <-M, -MD>: Reword "basename" text.
16511
16512 2007-01-11  Roger Sayle  <roger@eyesopen.com>
16513
16514         * builtins.c (expand_builtin_pow, expand_builtin_powi,
16515         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
16516         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
16517         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
16518         fold_builtin_bswap, real_constp, fold_builtin_pow,
16519         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
16520         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
16521         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16522         * convert.c (convert_to_pointer): Likewise.
16523         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
16524         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
16525         const_binop, fold_convert_const_int_from_int,
16526         fold_convert_const_int_from_real,
16527         fold_convert_const_real_from_real, sign_bit_p,
16528         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
16529         fold_sign_changed_comparison, fold_unary, fold_comparison,
16530         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
16531         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
16532         * print-tree.c (print_node_brief, print_node): Likewise.
16533         * stor-layout.c (place_field, layout_type): Likewise.
16534         * tree-chrec.c (keep_cast): Likewise.
16535         * tree.c (build_vector, build_real, build_real_from_int_cst,
16536         build_complex): Likewise.
16537
16538 2007-01-11  Roger Sayle  <roger@eyesopen.com>
16539
16540         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
16541         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
16542
16543 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
16544
16545         * configure.ac (strict1_warn): Rename to strict_warn.
16546         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
16547         cc_set_by_configure, quoted_cc_set_by_configure,
16548         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
16549         all_boot_languages, all_stagestuff): Remove.
16550         (target_list): Remove bootstrap targets.
16551         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
16552         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
16553         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
16554         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
16555         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
16556         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
16557         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
16558         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
16559         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
16560         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
16561         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
16562         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
16563         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
16564         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
16565         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
16566         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
16567         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
16568         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
16569         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
16570         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
16571         (mostlyclean): Adjust.
16572         (clean, distclean): Don't mention bootstrap stuff.
16573         * configure: Regenerate.
16574         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
16575         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
16576         treelang/config-lang.in (stagestuff): Remove.
16577         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
16578         stageprofile, stagefeedback, stagestuff): Remove mention.
16579
16580 2007-01-11  Nick Clifton  <nickc@redhat.com>
16581
16582         * config/mcore/predicates.md (mcore_general_movesrc_operand):
16583         Accept CONSTs.
16584         (mcore_general_movdst_operand): Do not accept CONST_INTs.
16585         (mcore_arith_K_S_operand): Run the test for the S constraint not
16586         the test for the M constraint.
16587         (mcore_addsub_operand): Do not accept integer values that are
16588         larger than 32 bits.
16589         * config/mcore/mcore.md: Remove unused constraints from split.
16590         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
16591         (addsi3): Likewise.
16592         (allocate_stack): Likewise.
16593         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
16594         operands to 32 bits.
16595         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
16596         INTVAL.
16597         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
16598         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
16599         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
16600         mcore_output_bclri, mcore_output_andn, output_inline_const,
16601         mcore_output_move, mcore_output_movedouble): Likewise.
16602         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
16603         (output_inline_const): Likewise.
16604         (output_inline_const): Fix format strings used in sprintf
16605         statements.
16606         * config/mcore/mcore-protos.h: Update prototypes for changed
16607         functions in mcore.c.
16608         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
16609         HOST_WIDE_INT and not int.
16610         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
16611         CONST_OK_FOR_N): Likewise.
16612         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
16613         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
16614         an INTVAL.
16615
16616 2007-01-10  Jan Hubicka  <jh@suse.cz>
16617
16618         * tree-vrp.c (remove_range_assertions): Release defs.
16619         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
16620         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
16621
16622 2007-01-10  Paul Brook  <paul@codesourcery.com>
16623
16624         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
16625         * config/arm/arm.md (mulsi3subsi): New insn.
16626
16627 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
16628
16629         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
16630         (tree_transform_and_unroll_loop): New.
16631         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
16632         Declare.
16633
16634 2007-01-10  Robert Kennedy <jimbob@google.com>
16635
16636         * fold-const.c (fold_comparison): Fold comparisons like (x *
16637         1000 < 0) to (x < 0).
16638
16639 2007-01-10  Ian Lance Taylor  <iant@google.com>
16640
16641         * tree-pretty-print.c (dump_generic_node): Print parentheses when
16642         operands have the same priority.
16643
16644 2007-01-10  Tom Tromey  <tromey@redhat.com>
16645
16646         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
16647         (fold_binary): Likewise.
16648         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
16649         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
16650         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
16651         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
16652         * langhooks.h (struct lang_hooks): Removed field
16653         'can_use_bit_fields_p'.
16654
16655 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
16656
16657         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
16658
16659 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
16660
16661         * function.c (get_last_funcdef_no): New function.
16662         * function.h (get_last_funcdef_no): Declare.
16663         * tree-inline.c (initialize_cfun): Add initialization.
16664         (tree_function_versioning): Cleanup.
16665
16666 2007-01-10  Jan Hubicka  <jh@suse.cz>
16667
16668         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
16669         PHIs.
16670
16671 2007-01-10  Sa Liu  <saliu@de.ibm.com>
16672             Ben Elliston  <bje@au.ibm.com>
16673
16674         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
16675         for SAVE_NONLOCAL and Pmode for any other save level.
16676         * spu-protos.h (spu_restore_stack_block): Declare.
16677         * spu.md (save_stack_block): Remove.
16678         (restore_stack_block): Call spu_restore_stack_block.
16679         * spu.c (spu_restore_stack_block): New function.
16680         (spu_expand_epilogue): Remove old comment.
16681
16682 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
16683
16684         PR tree-optimization/30322
16685         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
16686         (cand_value_at): Return the value as aff_tree.
16687         (may_eliminate_iv): Convert the bound from aff_tree to tree.
16688         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
16689         aff_combination_mult): New functions.
16690         (aff_combination_add): Use aff_combination_add_cst.
16691         (aff_combination_convert): Allow conversions to a wider type.
16692         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
16693         * tree-affine.h (aff_combination_mult): Declare.
16694
16695 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
16696
16697         * doc/tm.texi: Update documentation to reflect reality of exec
16698         and start file search behaviours. Update copyright year.
16699         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
16700         header file directories.
16701
16702 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
16703
16704         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
16705         (*cosxf2): Rename to cosxf2_i387.
16706         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
16707         using X87MODEF12 mode macro. Rename patterns to
16708         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
16709         for SSE math.
16710         (*cosdf2, *cossf2): Ditto.
16711         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
16712         to match extended input operands.
16713         (sincos<mode>3): New expander.
16714         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
16715         insn patterns and corresponding splitters.
16716
16717 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
16718
16719         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
16720         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
16721
16722 2007-01-09  Nicolas Pitre  <nico@cam.org>
16723
16724         PR target/30173
16725         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
16726
16727 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
16728
16729         * target.h (struct gcc_target): New field library_rtti_comdat.
16730         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
16731         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
16732         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
16733         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
16734
16735 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
16736
16737         * doc/invoke.texi (Optimize Options): Correct description of -O0.
16738
16739 2007-01-08  Richard Guenther  <rguenther@suse.de>
16740
16741         * tree.h (force_fit_type_double): Export.
16742         (force_fit_type): Remove.
16743         * fold-const.c (force_fit_type_double): New function.
16744         (force_fit_type): Remove.
16745         (int_const_binop): Use it.
16746         (fold_convert_const_int_from_int): Likewise.
16747         (fold_convert_const_int_from_real): Likewise.
16748         (fold_div_compare): Likewise.
16749         (fold_sign_changed_comparison): Likewise.
16750         (fold_unary): Likewise.
16751         (fold_negate_const): Likewise.
16752         (fold_abs_const): Likewise.
16753         (fold_not_const): Likewise.
16754         * c-common.c (shorten_compare): Use force_fit_type_double.
16755         * convert.c (convert_to_pointer): Likewise.
16756
16757 2007-01-08  Richard Guenther  <rguenther@suse.de>
16758
16759         * tree.h (build_int_cst_wide_type): Export.
16760         * tree.c (build_int_cst_wide_type): New function.
16761         (build_int_cst_wide): Fix comment.
16762         * builtins.c (fold_builtin_object_size): Use build_int_cst
16763         to build -1 or 0 of the correct type.  Use fit_double_type
16764         to check for overflow.
16765         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
16766         to build the mask.
16767         (decode_field_reference): Likewise.
16768         (all_ones_mask_p): Likewise.
16769         (native_interpret_int): Use build_int_cst_wide_type.
16770         (fold_binary): Use build_int_cst_type to build an all-ones
16771         value.
16772         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
16773
16774 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
16775
16776         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
16777
16778 2007-01-09  Ben Elliston  <bje@au.ibm.com>
16779
16780         * genautomata.c (STATS_OPTION): New option.
16781         (stats_flag): New flag.
16782         (gen_automata_option): Handle it.
16783         (initiate_automaton_gen): Ditto.
16784         (write_automata): Output statistics only if stats_flag is
16785         set. Likewise, output time statistics only if time_flag is set.
16786         * doc/md.texi (Processor pipeline description): Document new flag.
16787
16788 2007-01-08  Richard Guenther  <rguenther@suse.de>
16789
16790         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
16791         * tree.c (build_int_cst_type): Likewise.
16792         (size_in_bytes): Don't call force_fit_type on the result.
16793         (int_fits_type_p): Use fit_double_type.
16794         * fold-const.c (fit_double_type): New function.
16795         (force_fit_type): Use it.
16796         * tree.h (fit_double_type): Export.
16797
16798 2007-01-08  Jan Hubicka  <jh@suse.cz>
16799
16800         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
16801         * ipa.c (function_and_variable_visibility): Fix return type.
16802
16803 2007-01-08  Richard Guenther  <rguenther@suse.de>
16804
16805         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
16806         of offset to build the index.
16807         * tree-pretty-print.c (dump_generic_node): Don't build negated
16808         const just for printing.
16809         * c-pretty-print.c (pp_c_integer_constant): Likewise.
16810         * builtins.c (fold_builtin_int_roundingfn): Check if result
16811         fits the type by using force_fit_type and comparing the result.
16812         * predict.c (predict_loops): Use compare_tree_int for comparison.
16813         * tree.c (build_int_cst): Fall back to integer_type_node for
16814         NULL_TREE type.
16815         (build_int_cst_wide): Assert type is non-null.
16816
16817 2007-01-08  Roberto Costa  <roberto.costa@st.com>
16818
16819         * tree-vrp.c (extract_range_from_cond_expr): New.
16820         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
16821         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
16822         as expressions.
16823         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
16824         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
16825         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
16826         used as expressions.
16827         * tree-object-size.c (cond_expr_object_size): New.
16828         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
16829
16830 2007-01-08  Jan Hubicka  <jh@suse.cz>
16831
16832         * tree-ssa-forwprop.c (forward_propagate_into_cond,
16833         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
16834         statement.
16835
16836 2007-01-08  Richard Guenther  <rguenther@suse.de>
16837
16838         PR tree-optimization/23603
16839         * tree-vrp.c (set_value_range_to_truthvalue): New function.
16840         (extract_range_from_binary): Fall back to truthvalue instead of
16841         varying for TRUTH_*_EXPR.
16842         (extract_range_from_comparison): Fall back to truthvalue instead of
16843         varying.
16844         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
16845         if all visited PHI values were constant.
16846
16847 2007-01-08  Jan Hubicka  <jh@suse.cz>
16848
16849         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
16850         (cgraph_analyze_function): break out from ...
16851         (cgraph_finalize_compilation_unit): ... here.
16852         (cgraph_expand_function): Remove forgoten commented out line.
16853         (cgraph_optimize): Analyze functions.
16854
16855 2007-01-08  Jan Hubicka  <jh@suse.cz>
16856
16857         * tree-pas.h (TODO_remove_function): New flag.
16858         (TODO_update*): Renumber.
16859         (pass_ipa_increase_alignment,
16860         pass_ipa_function_and_variable_visibility): New passes.
16861         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
16862         (cgraph_function_and_variable_visibility): Move to ipa.c
16863         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
16864         cgraph_increase_alignment.
16865         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
16866         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
16867         calling tree-inline.
16868         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
16869         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
16870         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
16871         (gate_increase_alignment): New function.
16872         (pass_ipa_increase_alignment): New pass.
16873         * ipa.c: Inline tree-pass.h and timevar.h
16874         (function_and_variable_visibility): Move here from cgraphunit.c
16875         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
16876         * passes.c (init_optimization_passes): Add the two new passes.
16877         (execute_todo): Handle cgraph_remove_functions.
16878
16879 2007-01-08  Nick Clifton  <nickc@redhat.com>
16880
16881         * config/frv/predicates.md (reg_or_0_operand): Accept
16882         CONST_DOUBLEs.
16883
16884 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
16885
16886         * config/bfin/rtems.h, config/bfin/t-rtems: New.
16887         * config.gcc: Add bfin*-rtems*.
16888
16889 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
16890
16891         * c.opt: Add -flax-vector-conversions.
16892         * c-typeck.c (convert_for_assignment): Pass flag to
16893         vector_types_convertible_p to allow emission of note.
16894         (digest_init): Likewise.
16895         * c-opts.c: Handle -flax-vector-conversions.
16896         * c-common.c (flag_lax_vector_conversions): New.
16897         (vector_types_convertible_p): Unless -flax-vector conversions
16898         has been passed, disallow conversions between vectors with
16899         differing numbers of subparts and/or element types.  If such
16900         a conversion is disallowed, possibly emit a note on the first
16901         occasion only to inform the user of -flax-vector-conversions.
16902         The new last argument specifies this.
16903         * c-common.h (flag_lax_vector_conversions): New.
16904         (vector_types_convertible_p): Add extra argument.
16905         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
16906         char_type_node for V*QI type vectors.
16907         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
16908         Update to satisfy new typechecking rules.
16909         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
16910         C and C++ variants.
16911         * doc/invoke.texi (C Dialect Options): Document
16912         -flax-vector-conversions.
16913
16914 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
16915
16916         PR tree-optimization/29877
16917         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
16918         a register variable on the RHS to not be replaceable.
16919
16920 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
16921         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
16922         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
16923         const_simm15, const_pow2, const_npow2): Added.
16924         * config/score/misc.md (insv, extv, extzv, movmemsi,
16925         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
16926         * config/score/score.c (score_address_cost, score_select_cc_mode):
16927         Added.
16928         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
16929         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
16930         Update score_print_operand.
16931         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
16932         Adjust register allocate order and update some macro define.
16933         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
16934         mdx_block_move_straight, mdx_block_move_loop_head,
16935         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
16936         mdx_block_move): Added.
16937         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
16938         mdp_limm): Updated and fix some bug and typo.
16939         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
16940         (movsf, movdf, doloop_end): Added.
16941
16942 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
16943
16944         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
16945         config/arm/thumb2.md: Fix comment typos.
16946         * doc/extend.texi: Fix a typo.
16947
16948 2007-01-07  Eric Christopher  <echristo@apple.com>
16949
16950         * configure.ac: Check for __stack_chk_fail for darwin.
16951         * configure: Regenerate.
16952
16953 2007-01-07  Richard Guenther  <rguenther@suse.de>
16954
16955         * tree-vrp.c (extract_range_from_assert): CSE calls to
16956         compare_values where possible.
16957         (extract_range_from_unary_expr): Likewise.
16958
16959 2007-01-07  Anatoly Sokolov <aesok@post.ru>
16960
16961         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
16962         * config/avr/avr.c (call_insn_operand): Delete function.
16963         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
16964         instead of register number. Use predicates.
16965         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
16966         call_insn_operand): Add.
16967
16968 2007-01-06  Jan Hubicka  <jh@suse.cz>
16969
16970         * tree-pass.h (pass_build_cgraph_edges): Declare.
16971         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
16972         (visited_nodes): Remove.
16973         (cgraph_create_edges): Move to cgraphbuild.c; rename to
16974         build_cgrpah_edges; make visited_nodes local.
16975         (cgraph_process_new_functions): DO not call initialize_inline_failed.
16976         (record_references_in_initializer): Move to cgraphbuild.c
16977         (initialize_inline_failed, rebuild_cgraph_edges,
16978         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
16979         (verify_cgraph_node): Make visited_nodes local.
16980         (cgraph_analyze_function): Do not call cgraph_create_edges and
16981         initialize_inline_failed.
16982         (cgraph_expand_function): Do not call cgraph_lower_function;
16983         assert that function is already lowered.
16984         * Makefile.in (cgraphbuild.o): New.
16985         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
16986         at the end of lowering passes.
16987
16988 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
16989
16990         * ifcvt.c (cond_move_convert_if_block): New function, code
16991         factored out from...
16992         (cond_move_process_if_block): ...here.  Call the new function
16993         on the THEN and ELSE blocks.
16994         (merge_if_block): Do not copy global_live_at_end, merge_blocks
16995         already takes care of this.
16996
16997 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16998
16999         PR c/19978
17000         * tree.h (TREE_OVERFLOW_P): New.
17001         * c-typeck.c (parser_build_unary_op): Warn only if result
17002         overflowed and operands did not.
17003         (parser_build_binary_op): Likewise.
17004         (convert_for_assignment): Remove redundant overflow_warning.
17005         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
17006
17007 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17008
17009         * c-typeck.c (store_init_value): Split over two lines to follow
17010         the GNU coding style.
17011
17012 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
17013
17014         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
17015         __GXX_EXPERIMENTAL_CXX0X__.
17016         * doc/cpp.texi: Same.
17017
17018 2007-01-05  Richard Guenther  <rguenther@suse.de>
17019
17020         PR middle-end/27826
17021         * tree.c (get_narrower): Do not construct COMPONENT_REFs
17022         with mismatched types.  Instead explicitly build a
17023         conversion NOP_EXPR.
17024
17025 2007-01-05  Ian Lance Taylor  <iant@google.com>
17026
17027         * c-common.c (decl_with_nonnull_addr_p): New function.
17028         (c_common_truthvalue_conversion): Call it.
17029         * c-typeck.c (build_binary_op): Likewise.
17030         * c-common.h (decl_with_nonnull_addr_p): Declare.
17031
17032 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
17033
17034         PR c/30360
17035         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
17036         denom against 0.0.
17037
17038 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
17039
17040         * doc/install.texi (Final install): Document the fact that
17041         the GNAT runtime should not be stripped.
17042
17043 2007-01-04  Jan Hubicka  <jh@suse.cz>
17044
17045         * tree-inline.c (fold_marked_statements): Update operand caches
17046         and EH after folding
17047
17048 2007-01-04  Ian Lance Taylor  <iant@google.com>
17049
17050         * c-common.c (check_function_nonnull): Whitespace fix.
17051
17052 2007-01-04  Jan Hubicka  <jh@suse.cz>
17053
17054         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
17055         comitted older version of patch.
17056         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
17057         function, celanup cfg and collect garbage.
17058
17059 2007-01-04  Mike Stump  <mrs@apple.com>
17060
17061         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
17062         (clean): Likewise.
17063
17064 2007-01-04  Eric Christopher  <echristo@apple.com>
17065
17066         * libgcc2.c (__bswapsi2): Use SItype.
17067         (__bswapdi2): Use DItype.
17068         * libgcc2.h: Update for above.
17069
17070 2007-01-04  Paul Brook  <paul@codesourcery.com>
17071
17072         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
17073         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
17074         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
17075         umulsidi3, umulsidi3adddi, smulsi3_highpart,
17076         umulsi3_highpart): Make conditional on !arm_arch6.
17077         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
17078         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
17079         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
17080         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
17081         umulsi3_highpart_v6): New insns.
17082
17083 2007-01-04  Roger Sayle  <roger@eyesopen.com>
17084
17085         * fold-const.c (fold_convert): When casting an expression to void,
17086         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
17087         have a type.  Instead of attempting to build a NOP_EXPR, return
17088         these "special" trees directly.
17089
17090 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
17091
17092         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
17093         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
17094         rs6000_cost->fp not 0 as adjustment for outer NEG.
17095
17096 2007-01-04  Jan Hubicka  <jh@suse.cz>
17097
17098         * cgraph.c (cgraph_release_function_body): New function.
17099         (cgraph_remove_node): Use it.
17100         * cgraph.h (cgraph_release_function_body): Declare.
17101         * cgraphunit.c (cgraph_expand_function): Use it.
17102         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
17103         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
17104         is initialized and while compilation of other function is running.
17105         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
17106         statement CFG annotations from here to ...
17107         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
17108
17109 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
17110
17111         * cfgloop.h (enum li_flags): Make the constants powers of two.
17112
17113 2007-01-04  Jan Hubicka  <jh@suse.cz>
17114
17115         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
17116         set.
17117         (fold_marked_statements): New function.
17118         (optimize_inline_calls, tree_function_versioning): Fold new statements.
17119         * tree-inline.h (copy_body_data): Add statements_to_fold.
17120
17121 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
17122
17123         * config.gcc: Mention libgcc/config.host.
17124         * Makefile.in: Update comments mentioning libgcc.
17125         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
17126         (all.cross, start.encap, rest.encap, rest.cross): Update
17127         dependencies for libgcc move.
17128         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
17129         (clean-target, clean-target-libgcc): Delete.
17130         (srcdirify, GCC_EXTRA_PARTS): New macros.
17131         (libgcc-support, libgcc.mvars): New rules.
17132         (distclean): Remove mention of mklibgcc.
17133         (install): Don't reference INSTALL_LIBGCC.
17134         (install-common): Don't reference EXTRA_PARTS.
17135         (install-libgcc, install-multilib): Delete rules.
17136         * mklibgcc.in: Delete file.
17137         * doc/configfiles.texi: Don't mention mklibgcc.
17138
17139         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
17140         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
17141         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
17142         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
17143         (mklibgcc, ldblspecs): Likewise.
17144
17145         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
17146         (posixpre.def): Use $(T).
17147         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
17148         (SHLIB_SRC, SHLIB_INSTALL): Delete.
17149         (SHLIB_LINK): Make dummy.
17150         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
17151
17152         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
17153
17154         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
17155         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
17156         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
17157         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
17158
17159         * configure.ac (all_outputs): Remove mklibgcc.
17160         * configure: Regenerated.
17161
17162 2007-01-03  Josh Conner  <jconner@apple.com>
17163
17164         PR middle-end/29683
17165         * calls.c (compute_argument_addresses): Set stack and stack_slot
17166         for partial args, too.
17167         (store_one_arg): Use locate.size.constant for the size when
17168         generating a save_area.
17169
17170 2007-01-03  Robert Kennedy <jimbob@google.com>
17171
17172         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
17173         whose definitions are deleted due to basic block merging.
17174
17175 2007-01-03  Paul Brook  <paul@codesourcery.com>
17176
17177         PR target/16634
17178         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
17179         functions.
17180         (use_return_insn): Return 0 for Thumb interrupt functions.
17181         (print_multi_reg): Add rfe argument for IRQ returns.
17182         (arm_output_epilogue): Pop interrupt return address directly into PC.
17183         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
17184
17185 2007-01-03  Paul Brook  <paul@codesourcery.com>
17186
17187         Merge from sourcerygxx-4_1.
17188         * config/arm/thumb2.md: New file.
17189         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
17190         Thumb-2.
17191         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
17192         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
17193         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
17194         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
17195         tables.
17196         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
17197         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
17198         comptibility.
17199         * config/arm/ieee754-sf.S: Ditto.
17200         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
17201         (thumb1_base_register_rtx_p): ... to this.
17202         (thumb_index_register_rtx_p): Rename...
17203         (thumb1_index_register_rtx_p): ... to this.
17204         (thumb_output_function_prologue): Rename...
17205         (thumb1_output_function_prologue): ... to this.
17206         (thumb_legitimate_address_p): Rename...
17207         (thumb1_legitimate_address_p): ... to this.
17208         (thumb_rtx_costs): Rename...
17209         (thumb1_rtx_costs): ... to this.
17210         (thumb_compute_save_reg_mask): Rename...
17211         (thumb1_compute_save_reg_mask): ... to this.
17212         (thumb_final_prescan_insn): Rename...
17213         (thumb1_final_prescan_insn): ... to this.
17214         (thumb_expand_epilogue): Rename...
17215         (thumb1_expand_epilogue): ... to this.
17216         (arm_unwind_emit_stm): Rename...
17217         (arm_unwind_emit_sequence): ... to this.
17218         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
17219         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
17220         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
17221         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
17222         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
17223         thumb2_output_casesi): New functions.
17224         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
17225         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
17226         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
17227         THUMB2_WORK_REGS): Define.
17228         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
17229         arm_condexec_mask, arm_condexec_masklen)): New variables.
17230         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
17231         (arm_override_options): Check new CPU capabilities.
17232         Set new architecture flag variables.
17233         (arm_isr_value): Handle v7m interrupt functions.
17234         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
17235         Thumb-2.
17236         (const_ok_for_arm): Handle Thumb-2 constants.
17237         (arm_gen_constant): Ditto.  Use movw when available.
17238         (arm_function_ok_for_sibcall): Return false for v7m interrupt
17239         functions.
17240         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
17241         (thumb_find_work_register, arm_load_pic_register,
17242         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
17243         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
17244         print_multi_reg, output_mov_long_double_fpa_from_arm,
17245         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
17246         output_mov_double_fpa_from_arm, output_move_double,
17247         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
17248         output_return_instruction, arm_output_function_prologue,
17249         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
17250         arm_output_mi_thunk, thumb_set_return_address): Ditto.
17251         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
17252         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
17253         (arithmetic_instr, shift_op): Use arm_shift_nmem.
17254         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
17255         '!' and 'L'.
17256         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
17257         (thumb_expand_prologue): Use thumb_set_frame_pointer.
17258         (arm_file_start): Output directive for unified syntax.
17259         (arm_unwind_emit_set): Handle stack alignment instruction.
17260         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
17261         Add v6t2, v7, v7a, v7r and v7m.
17262         (RETLDM): Add Thumb-2 code.
17263         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
17264         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
17265         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
17266         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
17267         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
17268         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
17269         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
17270         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
17271         ADJUST_INSN_LENGTH): Define.
17272         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
17273         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
17274         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
17275         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
17276         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
17277         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
17278         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
17279         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
17280         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
17281         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
17282         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
17283         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
17284         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
17285         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
17286         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
17287         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
17288         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
17289         cortex-m3.
17290         * config/arm/arm-tune.md: Regenerate.
17291         * config/arm/arm-protos.h: Update prototypes.
17292         * config/arm/vfp.md: Enable patterns for Thumb-2.
17293         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
17294         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
17295         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
17296         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
17297         * config/arm/libunwind.S: Add Thumb-2 code.
17298         * config/arm/constraints.md: Update include Thumb-2.
17299         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
17300         * config/arm/ieee754-df.S: Ditto.
17301         * config/arm/bpabi.S: Ditto.
17302         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
17303         * config/arm/predicates.md (low_register_operand,
17304         low_reg_or_int_operand, thumb_16bit_operator): New.
17305         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
17306         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
17307         * config/arm/t-arm-elf: Add armv7 multilib.
17308         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
17309         Include thumb2.md.
17310         (UNSPEC_STACK_ALIGN, ce_count): New.
17311         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
17312         arm_zero_extendsidi2, arm_zero_extendqidi2): New
17313         insns/expanders.
17314         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
17315         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
17316         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
17317         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
17318         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
17319         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
17320         insns.
17321         * doc/extend.texi: Document ARMv7-M interrupt functions.
17322         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
17323
17324 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
17325
17326         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
17327         (struct _Unwind_Context): Rename args_size to flags, remove
17328         signal_frame field, add a new args_size field and version field.
17329         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
17330         _Unwind_IsExtendedContext): New inline functions.
17331         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
17332         Assume by_value array is only present if _Unwind_IsExtendedContext.
17333         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
17334         _Unwind_IsSignalFrame.
17335         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
17336         (uw_update_context_1): Use _Unwind_SetSignalFrame.
17337         (uw_init_context_1): Initialize context->flags to
17338         EXTENDED_CONTEXT_BIT.
17339         * config/rs6000/linux-unwind.h (frob_update_context): Use
17340         _Unwind_SetSignalFrame.
17341
17342 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17343
17344         PR middle-end/30353
17345         * gimplify.c (gimplify_modify_expr_complex_part): Move below
17346         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
17347         the value.
17348
17349 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
17350
17351         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
17352         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
17353         RET, AT_SP): Remove.
17354         * config/i386/i386.md (*sse_prologue_save_insn): Use return
17355         instead of RET.
17356
17357         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17358         * cfgbuild.c (find_basic_blocks): Likewise.
17359         * cfgrtl.c (rtl_create_basic_block): Likewise.
17360         * function.c (temp_slots_at_level): Likewise.
17361         * reg-stack.c (stack_regs_mentioned): Likewise.
17362         * regclass.c (allocate_reg_info): Likewise.
17363         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17364         set_bb_for_stmt, move_block_to_fn): Likewise.
17365         * tree-complex.c (tree_lower_complex): Likewise.
17366         * vec.h (VEC_safe_grow_cleared): New.
17367
17368         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
17369
17370 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
17371
17372         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
17373         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
17374         to loop_version.
17375         * cfgloopmanip.c (scale_loop_frequencies): Export.
17376         (loopify): Scale the frequencies by prescribed coefficients.
17377         (set_zero_probability): New function.
17378         (duplicate_loop_to_header_edge): Improve updating of frequencies.
17379         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
17380         and frequencies according to arguments.
17381         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
17382         correctly.
17383         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
17384         * modulo-sched.c (sms_schedule): Set probabilities for entering
17385         versioned loop correctly.
17386         * tree-vect-transform.c (vect_transform_loop): Ditto.
17387         * cfgloop.h (loopify, loop_version): Declaration changed.
17388         (scale_loop_frequencies): Declared.
17389
17390 2007-01-02  Jan Hubicka  <jh@suse.cz>
17391
17392         * cgraph.c: Include tree-flow.h
17393         (cgraph_add_new-function): Handle IPA_SSA mode; execute
17394         early_local_passes.
17395         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
17396         * tree-pass.h (pass_all_early_optimizations): Declare.
17397         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
17398         early_local_passes.
17399         (cgraph_analyze_function): Do early_local_passes.
17400         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
17401         Do not add referenced vars.
17402         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
17403         SSA form.
17404         (gate_all_early_local_passes): New gate.
17405         (pass_early_local_passes): Use new gate.
17406         (execute_early_local_optimizations): New functions.
17407         (gate_all_early_optimizations): New gate.
17408         (pass_all_early_optimizations): New pass.
17409         (execute_free_datastructures): Free SSA only when initialized.
17410         (gate_init_datastructures): Init only when optimizing.
17411         (tree_lowering_passes): Do early local passes when called late.
17412         * tree-profile.c (do_tree_profiling): Don't profile functions added
17413         late.
17414         (do_early_tree_profiling, pass_early_tree_profile): Kill.
17415         * tree-cfg.c (update_modified_stmts): Do not update when operands are
17416         not active.
17417         * passes.c (init_optimizations_passes): Reorder so we go into SSA
17418         during early_local_passes.
17419         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
17420
17421
17422 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
17423
17424         * Makefile.in: Update copyright year.
17425
17426 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
17427
17428         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
17429         in $(lang_checks) and check-consistency targets.
17430
17431 2007-01-02  Jan Hubicka  <jh@suse.cz>
17432
17433         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
17434         Do not add referenced vars.
17435         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
17436         are not active.
17437         * passes.c (init_optimization_passes): Put mudflap_2 after
17438         free_datastructures.
17439
17440 2007-01-02  Jan Hubicka  <jh@suse.cz>
17441
17442         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
17443         Set NOTHROW flag on call statements proved to be nothrow.
17444         Update statement of local calls so new pure/const functions are
17445         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
17446         goto receivers.
17447         (tree_rest_of_compilation): Register hooks and initialize bitmap
17448         early. Do not set after_inlining flag.
17449
17450 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
17451
17452         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
17453         HOST_BITS_PER_LONGLONG
17454
17455 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
17456
17457         PR c/19977
17458         * c-typeck.c (store_init_value): Don't emit pedantic overflow
17459         warning for non-static initializers.
17460
17461 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
17462
17463         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
17464         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
17465         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
17466         Always use set_unique_reg_note to add REG_EQUAL notes.
17467
17468 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17469
17470         Revert:
17471         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17472
17473         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17474         * cfgbuild.c (find_basic_blocks): Likewise.
17475         * cfgrtl.c (rtl_create_basic_block): Likewise.
17476         * function.c (temp_slots_at_level): Likewise.
17477         * reg-stack.c (stack_regs_mentioned): Likewise.
17478         * regclass.c (allocate_reg_info): Likewise.
17479         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17480         set_bb_for_stmt, move_block_to_fn): Likewise.
17481         * tree-complex.c (tree_lower_complex): Likewise.
17482         * vec.h (VEC_safe_grow_cleared): New.
17483
17484 2007-01-02  Ian Lance Taylor  <iant@google.com>
17485
17486         * c-common.c (c_common_truthvalue_conversion): When warning about
17487         using an assignment as a truth value, set TREE_NO_WARNING.
17488
17489 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17490
17491         PR middle-end/7651
17492         * c.opt (Wold-style-declaration): New.
17493         * doc/invoke.texi (C-only Warning Options): New.
17494         (Wold-style-declaration): Document it.
17495         (Wextra): Enabled by -Wextra.
17496         * c-opts.c (c_common_post_options): Enabled by -Wextra.
17497         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
17498         -Wold-style-declaration.
17499
17500 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17501
17502         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17503         * cfgbuild.c (find_basic_blocks): Likewise.
17504         * cfgrtl.c (rtl_create_basic_block): Likewise.
17505         * function.c (temp_slots_at_level): Likewise.
17506         * reg-stack.c (stack_regs_mentioned): Likewise.
17507         * regclass.c (allocate_reg_info): Likewise.
17508         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17509         set_bb_for_stmt, move_block_to_fn): Likewise.
17510         * tree-complex.c (tree_lower_complex): Likewise.
17511         * vec.h (VEC_safe_grow_cleared): New.
17512
17513 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
17514
17515         * c-common.c (c_common_nodes_and_builtins): Since variants of
17516         void_type_node get built before it is given a name, we need to
17517         give those variants the name, too.
17518         (complete_array_type): We need to work with the canonical main
17519         type of the array, from which we will build the qualified version.
17520         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
17521         * print-tree.c (print_node): Display canonical type information
17522         for each type.
17523         * stor-layout.c (layout_type): When we don't know the
17524         alignment of a type for which we're building an array, we end up
17525         guessing wrong, so make the type require structural equality.
17526         * tree.c (make_node_stat): When we build a new type, it is its
17527         own canonical type.
17528         (build_type_attribute_qual_variant): When building an attribute
17529         variant, its canonical type is the non-attribute variant. However,
17530         if the attributes are target-dependent and they differ, we need to
17531         use structural equality checks for this type.
17532         (build_qualified_type): A qualified type is not equivalent to its
17533         unqualified variant; set the canonical type appropriately.
17534         (build_distinct_type_copy): When building a distinct type from
17535         another type, the new type is its own canonical type.
17536         (build_variant_type_copy): When building a new type variant, we
17537         assume that it is equivalent to the original type.
17538         (build_pointer_type_for_mode): When building a pointer type, also
17539         build a canonical type pointer.
17540         (build_reference_type_for_mode): When building a reference type,
17541         also build a canonical type reference.
17542         (build_index_type): When we can't hash an index type (e.g.,
17543         because its maximum value is negative), the index type requires
17544         structural equality tests.
17545         (build_array_type): Build the canonical form of an array type.
17546         (build_function_type): Function types require structural equality,
17547         because they contain default arguments, attributes, etc.
17548         (build_method_type_directly): Ditto for method types.
17549         (build_offset_type): Build the canonical offset type.
17550         (build_complex_type): Build the canonical vector type.
17551         (make_vector_type): Build the canonical vector type.
17552         * tree.h (TYPE_CANONICAL): New.
17553         (TYPE_STRUCTURAL_EQUALITY_P): New.
17554         (SET_TYPE_STRUCTURAL_EQUALITY): New.
17555         (struct tree_type): Added "canonical" field.
17556         * params.h (VERIFY_CANONICAL_TYPES): New.
17557         * doc/c-tree.texi (TYPE_CANONICAL): Document.
17558         (TYPE_STRUCTURAL_EQUALITY_P): Document.
17559         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
17560         * doc/invoke.texi (verify-canonical-types): Document --param
17561         parameter for verifying canonical types.
17562
17563 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17564
17565         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
17566         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
17567         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
17568         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
17569         tm_file.
17570         * config/rs6000/e500.h: New.
17571         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
17572         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
17573         Remove.
17574         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
17575         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
17576         TARGET_E500_DOUBLE): Remove.
17577         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
17578         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
17579         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
17580         * config/rs6000/rs6000.c (rs6000_override_options): Use
17581         CHECK_E500_OPTIONS.
17582
17583 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17584
17585         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
17586         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
17587         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
17588         rs6000_emit_cmove): Don't check TARGET_E500.
17589         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
17590         sordered): Don't check TARGET_E500.
17591
17592 2007-01-01  Eric Christopher  <echristo@apple.com>
17593
17594         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
17595         HARD_REGISTER_NUM_P.
17596
17597 2007-01-01  Roger Sayle  <roger@eyesopen.com>
17598
17599         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
17600         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
17601         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
17602         eq/ne Y".
17603
17604 2007-01-01  Mike Stump  <mrs@apple.com>
17605
17606         * configure.ac: Remove support for building with Apple's gcc-3.1.
17607
17608 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17609
17610         PR middle-end/30311
17611         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
17612         REG is a hard register.  Do not modify REG before calling
17613         subreg_nregs.
17614         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
17615         multiple of the size of YMODE for certain lowpart cases.
17616
17617 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17618
17619         PR middle-end/30253
17620         * gimplify (voidify_wrapper_expr): Update for
17621         GIMPLE_MODIFY_STMT.
17622
17623 2007-01-01  Andreas Schwab  <schwab@suse.de>
17624
17625         PR target/29166
17626         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
17627         save of BR0 in extra_spill_size instead of spill_size.
17628         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
17629         area.
17630         (ia64_expand_epilogue): Restore BR0 from its new location.
17631
17632 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17633
17634         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
17635         Use a temporary variable if the left hand side is not a gimple
17636         register.
17637
17638 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17639
17640         * gimplify.c (gimplify_return_expr): Make the temporary variable
17641         for the return expression, a gimple register variable.
17642
17643 2007-01-01  Jan Hubicka  <jh@suse.cz>
17644
17645         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
17646         INSN_LIST.
17647
17648 2007-01-01  Mike Stump  <mrs@apple.com>
17649
17650         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
17651         .literal16.
17652         * config/darwin.c (machopic_select_rtx_section): Use
17653         HAVE_GAS_LITERAL16.
17654         (darwin_mergeable_constant_section): Likewise.
17655         * configure: Regenerate.
17656         * config.in: Regenerate.
17657
17658 2007-01-01  Jan Hubicka  <jh@suse.cz>
17659             Andrew Pinski  <pinskia@gmail.com>
17660
17661         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
17662         before starting IPA passes.