OSDN Git Service

* Makefile.in (reload1.o-warn): Remove.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-06-11  Diego Novillo  <dnovillo@google.com>
2
3         * Makefile.in (reload1.o-warn): Remove.
4
5 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
6
7         * combine.c (subst): Use reg_overlap_mentioned_p
8         instead of comparing register numbers directly.
9
10 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
11
12         * reload1.c (mark_home_live_1): Use the mode parameter.
13
14 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
15
16         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
17         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
18         word "deferred".
19         * df-core.c: Ditto.
20         
21 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
22
23         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
24
25 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
26
27         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
28         from integer registers.
29         (FP mode splitters): Handle TFmode.
30
31 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
32
33         * tree-ssa-structalias.c (find_what_p_points_to): Return false
34         for ref-all pointers that point-to anything.
35
36 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
37
38         * config/arm/arm.c (arm_output_dwarf_dtprel,
39         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
40
41 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
42
43         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
44         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
45         to memory moves.
46
47 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
48
49         * gcc/tree.c (signed_or_unsigned_type_for): New.
50         (unsigned_type_for): Use signed_or_unsigned_type_for.
51         (signed_type_for): Use signed_or_unsigned_type_for.
52         * gcc/tree.h (signed_or_unsigned_type_for): New.
53         (get_signed_or_unsigned_type): Remove.
54         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
55         lang_hooks.types.signed_type
56         (size_diffop): Likewise.
57         (all_ones_mask_p): Likewise.
58         (build_range_check): Likewise.
59         (fold_cond_expr_with_comparison): Likewise.
60         (fold_cond_expr_with_comparison): Likewise.
61         (unextend): Likewise.
62         (extract_muldiv_1): Likewise.
63         (fold_single_bit_test_into_sign_test): Likewise.
64         (fold_binary): Likewise.
65         (fold_ternary): Likewise.
66         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
67         instead of get_signed_or_unsigned_type.
68         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
69         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
70         * gcc/expr.c (signed_or_unsigned_type_for): Use
71         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
72         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
73         (lhd_signed_or_unsigned_type): Remove.
74         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
75         signed_or_unsigned_type.
76         (lhd_signed_or_unsigned_type): Remove.
77         * gcc/expmed.c (make_tree): Use signed_type_for instead of
78         lang_hooks.types.signed_type.
79         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
80         c_common_signed_type instead of lang_hooks.types.signed_type.
81         (c_common_unsigned_type): New.
82         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
83         (shorten_compare): Use c_common_unsigned_type instead of
84         c_common_signed_or_unsigned_type.
85         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
86         unsigned_type_for.
87         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
88         lang_hooks.types.signed_type.
89         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
90         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
91         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
92         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
93         instead of unsigned_type_for.
94         * gcc/c-decl.c (groakdeclarator): Likewise.
95         * gcc/c-typeck.c (convert_for_assignment): Likewise.
96         * gcc/c-common.h (c_common_unsigned_type): New.
97
98 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
99
100         PR target/32280
101         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
102         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
103
104 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
105
106         PR middle-end/32279
107         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
108         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
109
110 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
111             Sebastian Pop  <sebpop@gmail.com>
112
113         * lambda-code.c (remove_iv): New.
114         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
115
116 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
117
118         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
119         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
120         * tree-ssa-loop-prefetch.c: Include optabs.h.
121         (FENCE_FOLLOWING_MOVNT): New macro.
122         (struct mem_ref): Add independent_p and storent_p fields.
123         (record_ref): Initalize the new fields.
124         (gather_memory_references_ref): Return true if the reference
125         could be analysed.
126         (gather_memory_references): Check whether all memory accesses
127         in loop were recorded.
128         (should_issue_prefetch_p): Return false for nontemporal stores.
129         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
130         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
131         (determine_loop_nest_reuse): Detect independent memory references.
132         (loop_prefetch_arrays): Call mark_nontemporal_stores.
133         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
134         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
135         * config/i386/i386.h (x86_mfence): Declare.
136         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
137         * config/i386/i386.c (x86_mfence): New variable.
138         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
139
140         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
141         * optabs.c (init_optabs): Initialize storent_optab.
142         * optabs.h (enum optab_index): Add OTI_storent.
143         (storent_optab): Declare.
144         * genopinit.c (optabs): Add initialization for storent_optab.
145         * tree.h (MOVE_NONTEMPORAL): New macro.
146         * expr.c (expand_assignment, store_expr, store_constructor_field,
147         store_constructor, store_field, expand_expr_real_1): Propagate
148         nontemporality of the expanded store.
149         (emit_storent_insn): New function.
150         * expr.h (expand_assignment, store_expr): Declaration changed.
151         * function.c (assign_parm_setup_reg): Pass false as nontemporality
152         to expand_assignment.
153         * stmt.c (expand_asm_expr): Ditto.
154         * calls.c (initialize_argument_information): Pass false as
155         nontemporality to store_expr.
156         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
157         storentsi): New.
158
159 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
160
161         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
162         parameter, use it.
163         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
164
165 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
166
167         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
168         and allow DECL_P here.
169
170 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
171
172         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
173         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
174         track of the size of the expression.
175         * cfghooks.c (merge_blocks): Remove block from loops structure only
176         after call of the merge_blocks hook.
177
178 2007-06-09  Tom Tromey  <tromey@redhat.com>
179
180         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
181         (deprecated_state): Removed.
182         (start_decl): Update.
183         (enum deprecated_states): Moved earlier.
184         (groktypename): Update.
185         (push_parm_decl): Likewise.
186         (grokfield): Likewise.
187         (start_function): Likewise.
188
189 2007-06-09  Ian Lance Taylor  <iant@google.com>
190
191         PR tree-optimization/32169
192         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
193         CONVERT_EXPR, check whether min and max both converted to an
194         overflow infinity representation.
195
196 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
197
198         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
199         not inserted on the edge.
200
201 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
202
203         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
204         instructions if they are supported.
205         (__divsi3, __umodsi3, __modsi3): Likewise.
206         (__ashldi3, __ashrdi3, __lshrdi3): New.
207         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
208         
209 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
210             Tony Linthicum <tony.linthicum@amd.com>
211
212         * doc/extend.texi: Add fvect-cost-model flag.
213         * common.opt (fvect-cost-model): New flag.
214         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
215         cost fields in stmt_vec_info struct for STMT.
216         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
217         fields in stmt_vec_info struct and access functions for the same.
218         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
219         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
220         load, store and vector to scalar operation.
221         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
222         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
223         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
224         (TARG_VEC_STORE_COST): Define cost of vector store.
225         (vect_estimate_min_profitable_iters): Define new function.
226         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
227         check to evaluate if loop iterations are less than minimum profitable
228         iterations determined by cost model or minimum vect loop bound defined
229         by user, whichever is more conservative.
230         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
231         run-time check to evaluate if loop iterations are less than minimum
232         profitable iterations determined by cost model or minimum vect loop
233         bound defined by user, whichever is more conservative.
234         (vect_estimate_min_profitable_iterations): New function to estimate
235         mimimimum iterartions required for vector version of loop to be
236         profitable over scalar version.
237         (vect_model_reduction_cost): New function.
238         (vect_model_induction_cost): New function.
239         (vect_model_simple_cost): New function.
240         (vect_cost_strided_group_size): New function.
241         (vect_model_store_cost): New function.
242         (vect_model_load_cost): New function.
243         (vectorizable_reduction): Call vect_model_reduction_cost during
244         analysis phase.
245         (vectorizable_induction): Call vect_model_induction_cost during
246         analysis phase.
247         (vectorizable_load): Call vect_model_load_cost during analysis phase.
248         (vectorizable_store): Call vect_model_store_cost during analysis phase.
249         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
250         vectorizable_promotion, vectorizable_demotion): Call 
251         vect_model_simple_cost during analysis phase.
252
253 2007-06-08  Simon Baldwin  <simonb@google.com>
254
255         * reg-stack.c (get_true_reg): Readability change.  Moved default case
256         label into direct switch statement scope.
257
258 2007-06-08  Simon Baldwin  <simonb@google.com>
259
260         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
261         in gcc_assert() with '==' comparison.
262
263 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
264
265         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
266         TARGET_ABM handling of x86_popcnt variable.
267
268 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
269
270         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
271         __builtin_copysignq and __builtin_infq built-in functions.
272
273 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
274
275         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
276         SSE4.2 section.  Correct built-in function names in SSE4A section.
277
278 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
279
280         PR tree-optimization/32243
281         * tree-vect-transform.c (vectorizable_type_promotion): Move check
282         for ncopies after ratio check between nunits_out and nunits_in.
283         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
284
285 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
286
287         PR tree-optimization/32224
288         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
289         vectorization upon a non GIMPLE_MODIFY_STMT.
290
291 2007-06-08  Christian Bruel  <christian.bruel@st.com>
292
293         PR target/29953
294         * config/sh/sh.md (doloop_end): New pattern and splitter.
295         * loop-iv.c (simple_rhs_p): Check for hardware registers.
296         
297 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
298
299         PR middle-end/32209
300         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
301         functions.
302         (verify_dominators): Do not change dominance tree.
303
304 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
305
306         * config/sh/constraints.md: New file.
307         * config/sh/sh.c: Include tm-constrs.h.
308         (reg_class_from_letter): Remove.
309         (prepare_cbranch_operands): Use satisfies_constraint_*
310         function instead of macro.
311         (andcosts, broken_move, sh_secondary_reload): Likewise.
312         * config/sh/predicates.md (trapping_target_operand): Likewise.
313         (and_operand, arith_operand, arith_reg_or_0_operand,
314         cmp_operand, logical_operand, target_operand,
315         ua_address_operand, ua_offset, xor_operand): Likewise.
316         * config/sh/sh.md: Include constraints.md.
317         (*movsicc_t_false): Use satisfies_constraint_* function
318         instead of macro.
319         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
320         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
321         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
322         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
323         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
324         (REG_CLASS_FROM_CONSTRAINT): Remove.
325         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
326         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
327         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
328         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
329         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
330         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
331         function instead of macro.
332         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
333         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
334         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
335         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
336         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
337         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
338         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
339         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
340         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
341         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
342         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
343         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
344         EXTRA_CONSTRAINT_STR): Likewise.
345         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
346
347 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
348
349         * config/i386/darwin.h (STACK_BOUNDARY): Define.
350
351 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
352
353         PR c++/30759
354         * c-common.h (flag_cpp0x): Replaced by...
355         (cxx_dialect): ... this new variable specifying the C++ dialect that
356         is used.
357         * c-common.c (flag_cpp0x): Removed.
358         (cxx_dialect): Defined.
359         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
360         cxx_dialect.
361         * c-opts.c (c_common_post_options): Likewise.
362         (set_std_cxx98): Set cxx_dialect to cxx98.
363         (set_std_cxx0x): Set cxx_dialect to cxx0x.
364
365 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
366             Hui-May Chang <hm.chang@apple.com>
367
368         * doc/invoke.texi (Darwin Options): Update documentation for
369         -mmacosx-version-min.
370         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
371         * config/darwin-driver.c: New file.
372         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
373         * config/t-darwin (darwin-driver.o): New rule.
374
375         * config/darwin-c.c (version_as_macro): Ignore low digit.
376
377 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
378
379         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
380         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
381         (CSGNMODE): New mode macro.
382         (CSGNVMODE): New mode attribute.
383         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
384         expander using CSGNMODE mode macro.  Handle TFmode.
385         (copysign<mode>3_const): Rename from copysignsf3_const and
386         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
387         Handle TFmode.
388         (copysign<mode>3_var): Rename from copysignsf3_var and
389         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
390         Handle TFmode.
391         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
392         mode macro.  Handle TFmode.
393         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
394         (iortf3, *iortf3): Ditto.
395         (xortf3, *xortf3): Ditto.
396         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
397         TFmode and TImode masks.
398         (ix86_expand_copysign): Expand TFmode copysign insn.
399         (IX86_BUILTIN_INFQ): New.
400         (IX86_BUILTIN_FABSQ): Ditto.
401         (IX86_BUILTIN_COPYSIGNQ): Ditto.
402         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
403         [__builtin_fabsq]: Ditto.
404         [__builtin_copysignq]: Ditto.
405         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
406         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
407         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
408         ix86_expand_binop_builtin().
409
410 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
411
412         * config/xtensa/lib1funcs.asm: Clean up whitespace.
413
414 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
415
416         PR target/31850
417         * rtl.h (push_to_sequence2): New.
418         * emit-rtl.c (push_to_sequence2): New.
419         * function.c (assign_parm_data_all): Add new fields.
420         (assign_parm_setup_block): Call push_to_sequence2 instead of 
421         push_to_sequence.
422         (assign_parm_setup_reg): Ditto.
423         (assign_parm_setup_stack): Ditto.
424         (assign_parms_unsplit_complex): Ditto.
425         (assign_parms): Change field name.
426
427 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
428
429         PR tree-optimization/32220
430         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
431         phi node is reached before defining statement.
432
433 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
434
435         PR tree-opt/32231
436         * tree-vect-transform.c (vectorizable_call): Call update_stmt
437         after changing the right hand side of the assignment.
438
439 2007-06-06  Eric Christopher  <echristo@apple.com>
440
441         * config.gcc (i?86-*-darwin*): Remove arch parameter.
442         (x86_64-*-darwin*): Ditto.
443         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
444         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
445
446 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
447
448         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
449         coding conventions.
450         (add_key): Likewise.
451         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
452         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
453         variable names.
454         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
455         (add_cost_one_coalesce): Likewise.
456         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
457         variable names. Rename orig to orig_name for consistency.
458         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
459         conventions.
460         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
461         (record_equivalences_from_stmt): Likewise.
462         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
463         the coding conventions.
464         (memory_ssa_name_same): Likewise.
465         (dse_optimize_stmt): Likewise.
466         (dse_record_phis): Likewise.
467         (dse_finalize_block): Likewise.
468         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
469         keywords as variable names.
470         (may_move_till): Cast according to the coding conventions.
471         (force_move_till_expr): Avoid using C++ keywords as variable names.
472         (force_move_till): Cast according to the coding conventions.
473         (memref_hash): Likewise.
474         (memref_eq): Likewise.
475         (gather_mem_refs_stmt): Likewise.
476         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
477         keywords as variable names.
478         (idx_find_step): Cast according to the coding conventions.
479         (idx_record_use): Likewise.
480         (find_depends): Likewise.
481         (prepare_decl_rtl): Likewise.
482         (mbc_entry_hash): Likewise.
483         (mbc_entry_eq): Likewise.
484         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
485         (simplify_replace_tree): Avoid using C++ keywords as variable names.
486         (idx_infer_loop_bounds): Cast according to the coding conventions.
487         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
488         * tree-ssa-math-opts.c (occ_new ): Likwise.
489         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
490         macros.
491         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
492         names.
493         (add_use_op): Likewise.
494         (add_vop): Likewise.
495         (add_vuse_op): Likewise.
496         (add_vdef_op): Likewise.
497         (get_expr_operands): Likewise.
498         (push_stmt_changes): Use type safe memory macros.
499         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
500         keywords as variable names.
501         (conditional_replacement): Likewise.
502         (minmax_replacement): Likewise.
503         (abs_replacement): Likewise.
504         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
505         coding conventions.
506         (insert_fake_stores): Avoid using C++ keywords as variable names.
507         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
508         conventions.
509         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
510         (heapvar_insert): Use type safe memory macros.
511         (new_var_info): Cast according to the coding conventions.
512         (new_constraint): Likewise.
513         (remove_preds_and_fake_succs): Use type safe memory macros.
514         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
515         conventions.
516         (thread_single_edge): Likewise.
517         (thread_through_loop_header): Likewise.
518
519 2007-06-06  Eric Christopher  <echristo@apple.com>
520
521         * config/i386/i386.c (override_options): Move handling
522         of TARGET_SUBTARGET* earlier.
523
524 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
525
526         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
527         use %n on printf.
528
529 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
530
531         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
532         emited outside of basic block.
533         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
534         the created blocks.
535         * rtl.h (delete_insn_chain): Declaration changed.
536         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
537         non-removed insns.
538         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
539         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
540         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
541         to delete_insn_chain.
542         (rtl_verify_flow_info_1): Verify that the insns in header and footer
543         do not have bb field set.
544         (rtl_verify_flow_info): Verify that insns between basic blocks do not
545         have bb field set.
546         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
547         * cfgcleanup.c (try_optimize_cfg): Ditto.
548
549 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
550
551         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
552         (lambda_body_vector_new): Use type safe memory macros.
553         (lambda_linear_expression_new): Likewise.
554         (lambda_loopnest_new): Likewise.
555         (lambda_lattice_new): Likewise.
556         (replace_uses_equiv_to_x_with_y): Cast according to the coding
557         conventions. Use type safe memory macros.
558         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
559         (lambda_body_vector_s): Likewise.
560         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
561         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
562
563 2007-06-06  Richard Guenther  <rguenther@suse.de>
564
565         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
566         if we need to schedule cfg_cleanup.
567         (tree_ssa_forward_propagate_single_use_vars): Do so.
568
569 2007-06-06  Ian Lance Taylor  <iant@google.com>
570
571         * fold-const.c (merge_ranges): If range_successor or
572         range_predecessor fail, just return 0.
573
574 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
575
576         PR tree-optimization/32216
577         * tree-vectorizer.c (supportable_widening_operation): Determine
578         signedness of FIX_TRUNC_EXPR from output operand.
579         (supportable_narrowing_operation): Ditto.
580         * tree-vect-generic.c (expand_vector_operations_1): Determine
581         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
582         from input operand.
583
584 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
585
586         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
587         (struct pta): ...from here. Change flags to unsigned to avoid
588         excessive casting (as it is used as a bit mask).
589         (override_options): Add casts according to the coding convenventions.
590         (x86_64_elf_unique_section): Likewise.
591         (examine_argument): Avoid using C++ keywords as variable names.
592         (construct_container): Likewise.
593         (legitimize_pic_address): Likewise.
594         (get_dllimport_decl): Cast according to the coding conventions. Use
595         type safe memory macros.
596         (legitimize_address): Cast according to the coding conventions.
597         (emit_i387_cw_initialization): Corrected the type of slot to enum
598         ix86_stack_slot.
599         (ix86_init_machine_status): Use type safe memory macros.
600         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
601         (bdesc_pcmpistr): Likewise.
602         (bdesc_crc32): Likewise.
603         (bdesc_sse_3arg): Likewise.
604         (bdesc_2arg): Likewise.
605         (bdesc_1arg): Likewise.
606         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
607         (ix86_expand_sse_pcmpistr): Likewise.
608         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
609         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
610         int to match the langhook definition.
611         (ix86_builtin_conversion): Change the type of code to unsigned init to
612         match the langhook definition.
613         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
614         names.
615         (ix86_preferred_output_reload_class): Likewise.
616         (ix86_cannot_change_mode_class): Likewise.
617         (ix86_memory_move_cost): Likewise.
618         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
619         avoid excessive casting later on.
620         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
621
622 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
623
624         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
625         as flags setting insn.
626         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
627
628 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
629
630         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
631         (UNSPEC_ROUND): New.
632         ("sse4_1_round<mode>2"): New insn pattern.
633         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
634         SSE4.1 targets.
635         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
636         expander using SSEMODEF mode macro.  Expand using
637         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
638         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
639         expander using SSEMODEF mode macro.  Expand using
640         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
641         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
642         expander using SSEMODEF mode macro.  Expand using
643         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
644         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
645         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
646         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
647         UNSPEC_ROUNDS.
648
649 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
650             Sebastian Pop  <sebpop@gmail.com>
651
652         * lambda.h (build_linear_expr): New.
653         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
654         Use build_linear_expr, call fold and force_gimple_operand.
655         (lambda_loopnest_to_gcc_loopnest): Check that there is
656         something to insert.
657         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
658
659 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
660
661         PR preprocessor/23479
662         * doc/extend.texi: Document the 0b-prefixed binary integer
663         constant extension.
664
665 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
666
667         PR tree-optimization/32215
668         * tree-vectorizer.c (supportable_widening_operation): Return false
669         for unsupported FIX_TRUNC_EXPR tree code.
670         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
671
672 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
673
674         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
675         register on SPE targets.  Change documentation to reflect
676         reality.
677         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
678         Change FIXED_SCRATCH to 14 and document why we're keeping r14
679         out of the register allocation pool.
680         (rs6000_reg_live_or_pic_offset_p): New function.
681         (rs6000_emit_prologue): Move the actual saving of LR up to free
682         r0 for holding r11.  Split saving of SPE 64-bit registers into
683         its own case.  Ensure that offsets will always be in-range for
684         'evstdd' by using r11 as a scratch register to point at the start
685         of the SPE save area.  Save r11 if necessary, as it is the static
686         chain register.
687         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
688         into its own case.  Ensure that offsets will always be in-range
689         for 'evldd' by using r11 as a scratch register to point at the
690         start of the SPE save area.  Also adjust r11 when restoring
691         the stack pointer to compensate for pre-loading r11.
692
693 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
694
695         * cfg.c (init_flow): Use type safe memory macros.
696         (alloc_block): Likewise.
697         (unchecked_make_edge): Likewise.
698         (dump_flow_info): Avoid using C++ keywords as variable names.
699         (copy_original_table_clear): Cast according to the coding conventions.
700         (copy_original_table_set): Likewise.
701         * cfgexpand (label_rtx_for_bb): Likewise.
702         (expand_gimple_basic_block): Likewise.
703         * cfghooks.c (dump_bb): Likewise.
704         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
705         variable names.
706         (lv_add_condition_to_bb): Likewise.
707         * cfglayout (relink_block_chain): Cast according to the coding
708         conventions.
709         (fixup_reorder_chain): Likewise.
710         (fixup_fallthru_exit_predecessor): Likewise.
711         * cfgloop.c (glb_enum_p): Likewise.
712         (get_exit_description): Likewise.
713         (dump_recorded_exit): Likewise.
714         * cfgloop.h (enum loop_estimation): Move out of struct scope...
715         (struct loop): ... from here.
716         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
717         conventions.
718         * cfgrtl.c (rtl_create_basic_block): Likewise.
719         (rtl_split_block): Likewise.
720         (rtl_dump_bb): Likewise.
721         (cfg_layout_split_block): Likewise.
722         (init_rtl_bb_info): Use typesafe memory macros.
723
724         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
725         * graphds.h: Updated all usages of edge to graph_edge.
726         * graphds.c: Likewise.
727         * cfgloopanal.c: Likewise.
728
729 2007-06-05  Ian Lance Taylor  <iant@google.com>
730
731         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
732         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
733         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
734         expression.
735         (test_for_singularity): Likewise.
736
737 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
738
739         * config/i386/constraints.md ("Y2"): Replaced by ...
740         ("Yt"): This.
741         * config/i386/i386.md: Likewise.
742         * config/i386/mmx.md: Likewise.
743         * config/i386/sse.md: Likewise.
744
745 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
746
747         * config/i386/constraints.md ("z"): Replaced by ...
748         ("Y0"): This.
749         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
750         (sse4_1_blendvps): Likewise.
751         (sse4_1_pblendvb): Likewise.
752         (sse4_2_pcmpestr): Likewise.
753         (sse4_2_pcmpestrm): Likewise.
754         (sse4_2_pcmpestr_cconly): Likewise.
755         (sse4_2_pcmpistr): Likewise.
756         (sse4_2_pcmpistrm): Likewise.
757         (sse4_2_pcmpistr_cconly): Likewise.
758
759 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
760
761         * matrix-reorg.c (transform_access_sites): Fix computation.
762         (transform_allocation_sites): Same.
763
764 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
765
766         * config/i386/i386.c (override_options): Use
767         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
768
769 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
770
771         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
772         (nonimm_not_xmm0_operand): Ditto.
773         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
774         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
775         as operand[2] predicate.  Require "z" class XMM register for
776         operand[3].  Adjust asm template.
777         ("sse4_1_blendvpd"): Ditto.
778         ("sse4_1_pblendvb"): Ditto.
779         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
780         force op2 into xmm0 register for variable blend instructions.
781
782 2007-06-04  Tom Tromey  <tromey@redhat.com>
783
784         * c-tree.h (start_enum): Update.
785         (build_enumerator): Likewise.
786         * c-decl.c (enum_next_value): Removed.
787         (enum_overflow): Likewise.
788         (start_enum): Add c_enum_contents argument.  Don't use globals.
789         (build_enumerator): Likewise.
790         * c-tree.h (struct c_enum_contents): New struct.
791
792 2007-06-04  Tom Tromey  <tromey@redhat.com>
793
794         * c-common.c (c_common_get_alias_set): Fix indentation.
795
796 2007-06-04  Ian Lance Taylor  <iant@google.com>
797
798         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
799         to overflow, reduce overflow infinity to regular infinity.
800         (vrp_var_may_overflow): New static function.
801         (vrp_visit_phi_node): Check vrp_var_may_overflow.
802
803 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
804
805         * stor-layout.c (layout_type): Remove duplicate code.
806
807 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
808
809         PR c/32191
810         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
811         before build_common_builtin_nodes ().
812
813 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
814
815         PR target/31733
816         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
817
818 2007-06-04  Jan Hubicka  <jh@suse.cz>
819
820         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
821         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
822         instead of _stat version.
823
824 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
825
826         PR tree-optimization/32194
827         * tree-predcom.c (determine_offset): Check that both references have
828         the same type.
829
830 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
831
832         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
833         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
834         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
835         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
836         Add argument to iterate_fix_dominators call.
837         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
838         * gcse.c (hoist_code): Change domby to vector.
839         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
840         Add argument to iterate_fix_dominators call.
841         * loop-doloop.c (doloop_modify): Changed recount_dominator to
842         recompute_dominator.
843         * lambda-code.c (perfect_nestify): Ditto.
844         * cfgloopanal.c: Include graphds.h.
845         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
846         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
847         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
848         add_edge call.
849         * graphds.c: New file.
850         * graphds.h: New file.
851         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
852         (get_dominated_by, get_dominated_by_region): Change return type to
853         vector.
854         (verify_dominators): Recompute all dominators and compare the results.
855         (recount_dominator): Renamed to ...
856         (recompute_dominator): ... this.  Do not check that the block is
857         dominated by entry.
858         (iterate_fix_dominators): Reimplemented.
859         (prune_bbs_to_update_dominators, root_of_dom_tree,
860         determine_dominators_for_sons): New functions.
861         * et-forest.c (et_root): New function.
862         * et-forest.h (et_root): Declare.
863         * Makefile.in (graphds.o): Add.
864         (cfgloopanal.o): Add graphds.h dependency.
865         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
866         * basic-block.h (get_dominated_by, get_dominated_by_region,
867         iterate_fix_dominators): Declaration changed.
868         (recount_dominator): Renamed to ...
869         (recompute_dominator): ... this.
870         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
871         (thread_through_all_blocks): Do not free dominance info.
872
873 2007-06-03  Andreas Schwab  <schwab@suse.de>
874
875         * config/m68k/m68k.c (override_options): Don't override
876         REAL_MODE_FORMAT.
877         * config/m68k/m68k-modes.def (SF, DF): Define to use
878         motorola_single_format and motorola_double_format, resp.
879         * real.c (motorola_single_format): Renamed from
880         coldfire_single_format.
881         (motorola_double_format): Renamed from coldfire_double_format.
882         (encode_ieee_extended): Generate a proper canonical NaN image
883         respecting canonical_nan_lsbs_set.
884         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
885         true.
886         * real.h: Adjust declarations.
887
888 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
889
890         PR target/32163
891         * config/sh/sh.md (symGOT_load): Don't schedule insns when
892         the symbol is generated with the stack protector.
893
894 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
895
896         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
897         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
898         "interrupt".
899         * doc/extend.texi (interrupt): Mention m68k.
900
901 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
902
903         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
904         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
905         (ix86_expand_sse_pcmpestr): Do not check operands for
906         "register_operand", when insn operand predicate is "register_operand".
907         (ix86_expand_sse_pcmpistr): Ditto.
908
909 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
910             Uros Bizjak  <ubizjak@gmail.com>
911
912         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
913         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
914         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
915         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
916         * config/i386/constraints.md ("z"): New register constraint
917         for members of SSE_FIRST_REG class.
918         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
919         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
920         SSE_FIRST_REG class.
921         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
922         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
923         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
924         (IX86_BUILTIN_PCMPESTRM128): Likewise.
925         (IX86_BUILTIN_PCMPESTRA128): Likewise.
926         (IX86_BUILTIN_PCMPESTRC128): Likewise.
927         (IX86_BUILTIN_PCMPESTRO128): Likewise.
928         (IX86_BUILTIN_PCMPESTRS128): Likewise.
929         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
930         (IX86_BUILTIN_PCMPISTRI128): Likewise.
931         (IX86_BUILTIN_PCMPISTRM128): Likewise.
932         (IX86_BUILTIN_PCMPISTRA128): Likewise.
933         (IX86_BUILTIN_PCMPISTRC128): Likewise.
934         (IX86_BUILTIN_PCMPISTRO128): Likewise.
935         (IX86_BUILTIN_PCMPISTRS128): Likewise.
936         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
937         (struct builtin_description): Change "flag" field to unsigned.
938         (bdesc_pcmpestr): New builtin description table.
939         (bdesc_pcmpistr): Likewise.
940         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
941         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
942         Initialize pcmp[ei]str[im] insns for SSE4.2.
943         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
944         (ix86_expand_sse_pcmpistr): Likewise.
945         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
946         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
947         (UNSPEC_PCMPISTR): Likewise.
948         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
949         (sse4_2_pcmpestri):New isns pattern.
950         (sse4_2_pcmpestrm): Likewise.
951         (sse4_2_pcmpestr_cconly): Likewise.
952         (sse4_2_pcmpistr): New insn patern and splitter.
953         (sse4_2_pcmpistri):New isns pattern.
954         (sse4_2_pcmpistrm): Likewise.
955         (sse4_2_pcmpistr_cconly): Likewise.
956         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
957         in SSE4.2.
958
959 2007-06-01  David Daney  <ddaney@avtrex.com>
960
961         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
962         LOADGP_ABSOLUTE and not binds_local_p.
963
964 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
965
966         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
967
968 2007-06-01  Ian Lance Taylor  <iant@google.com>
969
970         * tree-vrp.c (compare_name_with_value): Always set
971         used_strict_overflow if we get a result from the variable itself.
972
973 2007-06-01  Ian Lance Taylor  <iant@google.com>
974
975         PR rtl-optimization/31455
976         * lower-subreg.c (find_decomposable_subregs): Don't decompose
977         subregs which have a cast between modes which are not tieable.
978
979 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
980
981         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
982         breaks after return statements.
983
984 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
985
986         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
987         only after no_new_pseudos.
988
989 2007-05-31  Eric Christopher  <echristo@apple.com>
990
991         * expr.c (convert_move): Assert that we don't have a BLKmode
992         operand.
993         (store_expr): Handle BLKmode moves by calling emit_block_move.
994
995 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
996
997         * c-typeck.c (build_indirect_ref): Include type in error message.
998         (build_binary_op): Pass types to binary_op_error.
999         * c-common.c (binary_op_error): Take two type arguments, print out
1000         types with error.
1001         * c-common.h (binary_op_error): Update prototype.
1002
1003 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
1004
1005         * config/i386/i386.c: Correct coments on -mno-sse4.
1006
1007 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
1008
1009         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
1010         (x86_64-*-*): Likewise.
1011         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
1012         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
1013         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
1014         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
1015         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
1016         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
1017         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
1018         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
1019         (OPTION_MASK_ISA_SSE4): Likewise.
1020         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
1021         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
1022         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
1023         (override_options): Support SSE4.2.
1024         (ix86_build_const_vector): Support SImode and DImode.
1025         (ix86_build_signbit_mask): Likewise.
1026         (ix86_expand_int_vcond): Support V2DImode.
1027         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
1028         (IX86_BUILTIN_CRC32HI): Likewise.
1029         (IX86_BUILTIN_CRC32SI): Likewise.
1030         (IX86_BUILTIN_CRC32DI): Likewise.
1031         (IX86_BUILTIN_PCMPGTQ): Likewise.
1032         (bdesc_crc32): Likewise.
1033         (bdesc_sse_3arg): Likewise.
1034         (ix86_expand_crc32): Likewise.
1035         (ix86_init_mmx_sse_builtins): Support SSE4.2.
1036         (ix86_expand_builtin): Likewise.
1037         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
1038         __SSE4_2__ for -msse4.2.
1039         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
1040         (CRC32MODE): Likewise.
1041         (crc32modesuffix): Likewise.
1042         (crc32modeconstraint): Likewise.
1043         (sse4_2_crc32<mode>): Likewise.
1044         (sse4_2_crc32di): Likewise.
1045         * config/i386/i386.opt (msse4.2): New for SSE4.2.
1046         (msse4): Likewise.
1047         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
1048         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
1049         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
1050         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
1051         (vcondu<mode>): Likewise.
1052         * doc/extend.texi: Document SSE4.2 built-in functions.
1053         * doc/invoke.texi: Document -msse4.2/-msse4.
1054
1055 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
1056
1057         PR tree-optimization/32160
1058         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
1059         variable as gimple reg.
1060         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
1061
1062 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
1063
1064         * gcc.c (main): Don't consider linker options when issuing the
1065         warning about a linker input file not being used.
1066
1067 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1068
1069         * tree-vrp.c (compare_names): Initialize sop.
1070
1071 2007-05-30  Dirk Mueller  <dmueller@suse.de>
1072
1073         * cgraphunit.c (cgraph_analyze_function): Remove
1074         computation of inline parameters.
1075
1076 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
1077
1078         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
1079
1080 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
1081
1082         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
1083         Add vx-common.h.  Include vxworks.h between vx-common.h and
1084         arm/vxworks.h.
1085         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
1086         redefining.
1087         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
1088         (TARGET_ASM_DESTRUCTOR): Likewise.
1089         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
1090         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
1091         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
1092         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
1093         (VXWORKS_ENDIAN_SPEC): Define.
1094         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
1095         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
1096         VXWORKS_* equivalents.
1097         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
1098         (ASM_FILE_START): Delete.
1099         (TARGET_VERSION): Reformat.
1100         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
1101         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
1102         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
1103         (FPBIT, DPBIT): Define.
1104         (fp-bit.c, dp-bit.c): New rules.
1105         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
1106         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
1107         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
1108         * config/arm/arm.h: Include vxworks-dummy.h.
1109         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
1110         Mark with ATTRIBUTE_UNUSED.
1111         (arm_override_options): Do not allow VxWorks RTP PIC to be used
1112         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
1113         make it incompatible with -msingle-pic-base.
1114         (arm_function_ok_for_sibcall): Return false for calls that might
1115         go through a VxWorks PIC PLT entry.
1116         (require_pic_register): New function, split out from...
1117         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
1118         for VxWorks RTPs.
1119         (arm_load_pic_register): Handle the VxWorks RTP initialization
1120         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
1121         (arm_emit_call_insn): New function.
1122         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
1123         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
1124         (pic_offset_arm): New pattern.
1125         (call, call_value): Use arm_emit_call_insn.
1126         (call_internal, call_value_internal): New expanders.
1127         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
1128         VxWorks unless __PIC__.
1129
1130 2007-05-30  Eric Christopher  <echristo@gmail.com>
1131
1132         * genrecog.c: Include regs.h in generated file.
1133         * genemit.c: Ditto. Fix up formatting.
1134         * config/mn10300/constraints.md: New.
1135         * config/mn10300/mn10300.md: Include.
1136         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
1137         Fix up for removed macro.
1138         * config/mn10300/predicates.md (call_address_operand):  Ditto.
1139         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
1140         (CONST_OK_FOR_I): Ditto.
1141         (CONST_OK_FOR_J): Ditto.
1142         (CONST_OK_FOR_K): Ditto.
1143         (CONST_OK_FOR_L): Ditto.
1144         (CONST_OK_FOR_M): Ditto.
1145         (CONST_OK_FOR_N): Ditto.
1146         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
1147         (OK_FOR_Q): Ditto.
1148         (OK_FOR_R): Ditto.
1149         (OK_FOR_T): Ditto.
1150         (EXTRA_CONSTRAINT): Ditto.
1151
1152 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
1153
1154         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
1155         Remove defines.
1156         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
1157         OPTION_MASK_ISA_64BIT.
1158         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
1159
1160 2007-05-30  Richard Guenther  <rguenther@suse.de>
1161
1162         PR middle-end/32152
1163         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
1164         types for comparison.
1165         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
1166         with original typed arguments.
1167         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
1168
1169 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
1170
1171         PR tree-optimization/31769
1172         * except.c (duplicate_eh_regions): Clear prev_try if
1173         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
1174
1175 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
1176
1177         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
1178         * tree-ssa-sink.c (statement_sink_location): Return basic block and
1179         bsi of the location where statements should be inserted.
1180         (sink_code_in_bb): Take bsi from statement_sink_location.
1181         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
1182         instead of bsi_start.
1183         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
1184         bsi_insert_after.
1185         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
1186         (bsi_move_before): Document inconsistency with bsi_move_after.
1187         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
1188
1189 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
1190
1191         * config/i386/i386.h (TARGET_ABM): New define.
1192         (TARGET_POPCNT): Ditto.
1193         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
1194         New temporary defines to redefine from OPTION_ISA_* defines.
1195         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
1196         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
1197         (ix86_isa_flags): New extern int declaration.
1198         (TARGET_SUBTARGET_DEFAULT): New define.
1199         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
1200         (TARGET_SUBTARGET32_DEFAULT): Ditto.
1201         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
1202         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
1203         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
1204         * config/i386/darwin.h: Change TARGET_64BIT define to
1205         OPTION_ISA_64BIT.
1206
1207         * config/i386/i386.opt (m3dnowa): Define as undocumented option
1208         using existing "ix86_isa_flags" varible.
1209         (m32, m64): Use existing "ix86_isa_flags" variable.
1210         (mmmx, m3dnow): Ditto.
1211         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
1212         (mabm): Define as non-negative option using "x86_abm" variable.
1213         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
1214
1215         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
1216         Rewrite feature test bitmap.
1217         (ix86_isa_flags): New initialized global int varible.
1218         (ix86_isa_flags_explicit): New static int variable.
1219         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
1220         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
1221         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
1222         target_flags_explicit.
1223         (override_options): Remove "target_enable" and "target_disable" fields
1224         from "struct ptt". Update processor_target_table accordingly. Remove
1225         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
1226         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
1227         "target_flags" and "ix86_isa_flags_explicit" instead of
1228         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
1229         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
1230         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
1231         to true when either of PTA_POPCNT or PTA_ABM is set in
1232         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
1233         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
1234         processor_alias_table flags entry.  Remove handling of
1235         "target_enable" and "target_disable" fields of processor_target_table.
1236         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
1237         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
1238         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
1239         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
1240         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
1241         "target_flags".
1242         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
1243
1244 2007-05-29  David Daney  <ddaney@avtrex.com>
1245
1246         PR gcc/31975
1247         * config/mips/mips.c (mips_output_mi_thunk): Emit
1248         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
1249
1250 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
1251         * config/i386/i386.c (ix86_function_regparm): Added checking of
1252         ix86_force_align_arg_pointer to determine the number of
1253         register parameters.
1254
1255 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
1256
1257         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
1258         (SET_DR_MISALIGNMENT): New.
1259         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
1260         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
1261         Use SET_DR_MISALIGNMENT.
1262         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
1263         pointer.
1264         * tree-data-ref.c (create_data_ref, compute_all_dependences,
1265         find_loop_nest): Export.
1266         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
1267         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
1268         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
1269         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
1270         New macros.
1271         (struct mem_ref): Add field reuse_distance.
1272         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
1273         Initialize reuse_distance field.
1274         (issue_prefetch_ref): Select temporality of prefetch according to
1275         reuse_distance.
1276         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
1277         self_reuse_distance, determine_loop_nest_reuse): New functions.
1278         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
1279         (tree_ssa_prefetch_arrays): Dump L2 cache size.
1280         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
1281         dependency.
1282
1283 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
1284
1285         * tree-ssa-alias.c: Add aliasing overview.
1286
1287 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
1288             Danny Smith  <dannysmith@users.sourceforge.net>
1289
1290         PR target/29498
1291         * config/i386/t-crtfm: Compile crtfastmath.o with
1292         -minline-all-stringops.
1293         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
1294         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
1295
1296 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1297
1298         * doc/md.texi: Document constraints on HP PA-RISC.
1299
1300         * pa/constraints.md: New file.
1301         * pa.md: Include constraints.md.
1302         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
1303         (integer_store_memory_operand, ldil_cint_p): New functions.
1304         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
1305         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
1306         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
1307         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
1308         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
1309
1310 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
1311
1312         PR c/31339
1313         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
1314         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
1315         case POSTDECREMENT_EXPR>): Return the error_mark_node
1316         if either the real or imaginary parts would an
1317         error_mark_node.
1318
1319 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
1320
1321         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
1322         name when we remove it from a call.
1323
1324 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
1325
1326         * targhooks.c (default_narrow_bitfield): Remove.
1327         * targhooks.h: Remove the prototype for
1328         default_narrow_bitfield.
1329
1330         * langhooks-def.h: Remove the prototype for
1331         hook_get_alias_set_0.
1332         * langhooks.c (hook_get_alias_set_0): Remove.
1333
1334         * global.c (EXECUTE_IF_CONFLICT): Remove.
1335
1336 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1337
1338         PR tree-opt/32100
1339         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
1340         return true when truth_value_p is true and the type
1341         is of signed:1.
1342
1343 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
1344
1345         * doc/install.texi (Prerequisites): We no longer require Autoconf
1346         2.13 for the top-level.
1347
1348 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
1349
1350         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
1351         memory access via x86_expand_vector_move_misalign() only for
1352         TImode values on 32-bit targets.
1353
1354 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
1355
1356         * matrix-reorg.c: New file. Implement matrix flattening and
1357         transposing optimization.
1358         * tree-pass.h: Add matrix reorg pass.
1359         * common.opt: Add fipa-mreorg flag.
1360         * Makefile.in: Add matrix-reorg.c.
1361         * passes.c: Add matrix reorg pass.
1362         * varpool.c (add_new_static_var): New function.
1363         * cgraph.h (add_new_static_var): Declare.
1364
1365 2007-05-27  Eric Christopher  <echristo@apple.com>
1366
1367         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
1368         sp_offset depending on stack size. Save r12 depending
1369         on registers we're saving later.
1370         (rs6000_emit_epilogue): Update sp_offset depending only
1371         on stack size.
1372
1373 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
1374
1375         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
1376         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
1377         * ifcvt.c (if_convert): Ditto.
1378         * tree-ssa-threadupdate.c (thread_block): Ditto.
1379         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
1380         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
1381         verify_loop_closed_ssa): Check number_of_loops instead of
1382         current_loops.
1383         * predict.c (tree_estimate_probability): Ditto.
1384         * tree-if-conv.c (main_tree_if_conversion): Ditto.
1385         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
1386         * modulo-sched.c (sms_schedule): Ditto.
1387         * tree-scalar-evolution.c (scev_const_prop): Ditto.
1388         (scev_finalize): Do not do anything if scev analysis was not
1389         initialized.
1390         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
1391         current_loops == NULL.
1392         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
1393         * loop-init.c (loop_optimizer_init): Do not free current_loops when
1394         there are no loops.
1395         (loop_optimizer_finalize): Assert that loops were analyzed.
1396         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
1397         rtl_doloop): Check number_of_loops instead of current_loops.
1398         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
1399         current_loops == NULL.
1400         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
1401         gate_tree_vectorize tree_linear_transform, check_data_deps,
1402         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
1403         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
1404         Check number_of_loops instead of current_loops.
1405         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
1406         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
1407         free loops if available.
1408         (execute_pre): Do not pass do_fre to fini_pre.
1409
1410 2007-05-27  Tobias Burnus  <burnus@net-b.de>
1411
1412         PR middle-end/32083
1413         * real.c (mpfr_from_real): Fix sign of -Inf.
1414
1415 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
1416
1417         * tree-vect-transform.c (vectorizable_conversion): Initialize
1418         tree_code variables to ERROR_MARK.
1419         (vectorizable_type_demotion): Likewise.
1420         (vectorizable_type_promotion): Likewise.
1421
1422 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
1423
1424         PR target/32065
1425         * config/i386/i386.md (movti): Handle push operands via
1426         ix86_expand_push().
1427
1428 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
1429
1430         * basic-block.h: Remove the prototype for merge_seq_blocks.
1431         * cfgcleanup.c (merge_seq_blocks): Remove.
1432
1433         * tree-flow.h: Remove the prototype for is_aliased_with.
1434         * tree-ssa-alias.c (is_aliased_with): Remove.
1435
1436 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
1437
1438         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
1439
1440         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
1441
1442         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
1443         ix86_expand_sse4_unpack if SSE4.1 is enabled.
1444         (vec_unpacks_hi_v16qi): Likewise.
1445         (vec_unpacku_lo_v16qi): Likewise.
1446         (vec_unpacks_lo_v16qi): Likewise.
1447         (vec_unpacku_hi_v8hi): Likewise.
1448         (vec_unpacks_hi_v8hi): Likewise.
1449         (vec_unpacku_lo_v8hi): Likewise.
1450         (vec_unpacks_lo_v8hi): Likewise.
1451         (vec_unpacku_hi_v4si): Likewise.
1452         (vec_unpacks_hi_v4si): Likewise.
1453         (vec_unpacku_lo_v4si): Likewise.
1454         (vec_unpacks_lo_v4si): Likewise.
1455
1456 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
1457
1458         * c-typeck.c, config/arm/arm.c, config/darwin.c,
1459         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
1460         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
1461         follow spelling conventions in various
1462         warning/error/diagnostic messages.
1463
1464         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
1465         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
1466         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
1467         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
1468         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
1469         * doc/tm.texi: Follow spelling conventions.
1470
1471 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1472
1473         PR tree-opt/32090
1474         * tree-ssa-forwprop.c
1475         (forward_propagate_addr_into_variable_array_index): Remove
1476         the lhs argument.  Use the type of def_rhs instead of lhs.
1477         (forward_propagate_addr_expr_1): Update use of
1478         forward_propagate_addr_into_variable_array_index.
1479
1480 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
1481             Nigel Stephens  <nigel@mips.com>
1482
1483         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
1484         function attributes, "far" being an alias for "long_call".
1485         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
1486         (mips_near_type_p, mips_far_type_p): New.
1487         (mips_comp_type_attributes): New function to check that attributes
1488         attached to a function type are compatible.
1489         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
1490         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
1491         to the target function of the thunk.
1492         (mips_encode_section_info): Check for "near" and "far" function
1493         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
1494
1495         * config/mips/predicates.md (const_call_insn_operand): Test only
1496         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
1497
1498         * doc/extend.texi (Function Attributes): Document MIPS "near" and
1499         "far" attributes.
1500
1501         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
1502         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
1503         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
1504         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
1505
1506 2007-05-25  Eric Christopher  <echristo@apple.com>
1507
1508         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
1509         to x86-darwin configurations.
1510         * config/i386/t-darwin: Add softfp support.
1511         * config/i386/t-darwin64: Ditto.
1512         * config/i386/sfp-machine.h: If mach then don't use
1513         aliasing, emit a stub to call.
1514
1515 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
1516
1517         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
1518         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
1519         tree-predcom.c, tree-ssa-alias-warnings.c,
1520         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
1521         comment typos.  Follow spelling conventions.
1522         * doc/cpp.texi, doc/invoke.texi: Fix typos.
1523
1524 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
1525
1526         PR target/32065
1527         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
1528         constants into memory.  Expand unaligned memory references for
1529         SSE modes via x86_expand_vector_move_misalign() function.
1530
1531 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
1532
1533         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
1534         "memory" attribute for "sseishft" type insn without operands[2].
1535
1536 2007-05-25  Dirk Mueller  <dmueller@suse.de>
1537             Marcus Meissner <meissner@suse.de>
1538
1539         * doc/extend.texi (alloc_size): New attribute.
1540         * c-common.c (handle_alloc_size_attribute): New.
1541         * tree-object-size.c (alloc_object_size): Use alloc_size
1542         attribute, if available.
1543
1544 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
1545
1546         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
1547         with MASK_SSE2.
1548         (__builtin_ia32_vec_ext_v2di): Likewise.
1549         (__builtin_ia32_vec_ext_v4si): Likewise.
1550         (__builtin_ia32_vec_ext_v8hi): Likewise.
1551         (__builtin_ia32_vec_ext_v16qi): Likewise.
1552         (__builtin_ia32_vec_set_v8hi): Likewise.
1553
1554 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
1555
1556         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
1557
1558 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
1559
1560         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
1561         (arm_is_longcall_p): Rename to...
1562         (arm_is_long_call_p): ...this.  Take a single tree argument and
1563         return a bool.
1564         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
1565         (CUMULATIVE_ARGS): Remove call_cookie.
1566         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
1567         (ENCODED_LONG_CALL_ATTR_P): Delete.
1568         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
1569         LONG_CALL_FLAG_CHAR cases.
1570         (ARM_DECLARE_FUNCTION_SIZE): Delete.
1571         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
1572         ARM_DECLARE_FUNCTION_SIZE.
1573         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
1574         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
1575         (arm_encode_call_attribute, current_file_function_operand): Delete.
1576         (arm_function_in_section_p): New function.
1577         (arm_is_longcall_p): Rename to...
1578         (arm_is_long_call_p): ...this.  Take the target function as a single
1579         argument and return a bool.  Do not rely on call cookies.  Check
1580         whether the target symbol is in the same section as the current
1581         function, not just the same compilation unit.
1582         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
1583         (arm_encode_section_info): Don't encode a call type.
1584         * config/arm/arm.md (call, call_value): Update calls to
1585         arm_is_long(_)call_p.  Simplify logic.
1586         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
1587         Update calls to arm_is_long(_)call_p.
1588
1589 2007-05-25  Richard Guenther  <rguenther@suse.de>
1590
1591         PR tree-optimization/31982
1592         * tree-ssa-forwprop.c
1593         (forward_propagate_addr_into_variable_array_index): Handle arrays
1594         with element size one.
1595
1596 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1597
1598         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
1599         (umulsi3_highpart): Likewise.
1600
1601 2007-05-24  Ian Lance Taylor  <iant@google.com>
1602
1603         PR rtl-optimization/32069
1604         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
1605         is NULL.
1606
1607 2007-05-24  Ollie Wild  <aaw@google.com>
1608
1609         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
1610         description.
1611
1612 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1613
1614         * postreload-gcse.c (reg_changed_after_insn_p): New function.
1615         (oprs_unchanged_p): Use it to check all registers in a REG.
1616         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
1617         (reg_set_between_after_reload_p): Delete.
1618         (reg_used_between_after_reload_p): Likewise.
1619         (reg_set_or_used_since_bb_start): Likewise.
1620         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
1621         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
1622         Use reg_set_between_p instead of reg_set_between_after_reload_p.
1623         * rtlanal.c (reg_set_p): Check whether REG overlaps
1624         regs_invalidated_by_call, rather than just checking the
1625         membership of REGNO (REG).
1626
1627 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
1628
1629         * doc/passes.texi: Document predictive commoning.
1630         * doc/invoke.texi (-fpredictive-commoning): Document.
1631         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
1632         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
1633         adding indices to the generated name.
1634         (schedule_sm): Pass 0 to get_lsm_tmp_name.
1635         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
1636         * tree-pretty-print.c (op_symbol_1): Renamed to ...
1637         (op_symbol_code): ... and exported.
1638         (dump_omp_clause, op_symbol): Use op_symbol_code
1639         instead of op_symbol_1.
1640         * tree-pass.h (pass_predcom): Declare.
1641         * timevar.def (TV_PREDCOM): New timevar.
1642         * tree-ssa-loop.c (run_tree_predictive_commoning,
1643         gate_tree_predictive_commoning, pass_predcom): New.
1644         * tree-data-ref.c (find_data_references_in_loop): Find the
1645         references in dominance order.
1646         (canonicalize_base_object_address): Ensure that the result has
1647         pointer type.
1648         (dr_analyze_innermost): Export.
1649         (create_data_ref): Code to fail for references with invariant
1650         address moved ...
1651         (find_data_references_in_stmt): ... here.
1652         * tree-data-ref.h (dr_analyze_innermost): Declare.
1653         * tree-affine.c: Include tree-gimple.h and hashtab.h.
1654         (aff_combination_find_elt, name_expansion_hash,
1655         name_expansion_eq, tree_to_aff_combination_expand,
1656         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
1657         New functions.
1658         * tree-affine.h (aff_combination_constant_multiple_p,
1659         tree_to_aff_combination_expand): Declare.
1660         * tree-predcom.c: New file.
1661         * common.opt (fpredictive-commoning): New option.
1662         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
1663         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
1664         * Makefile.in (tree-predcom.o): Add.
1665         (tree-affine.o): Add TREE_GIMPLE_H dependency.
1666         * passes.c (init_optimization_passes):  Add dceloop after
1667         copy propagation in loop optimizer.  Add predictive commoning
1668         to loop optimizer passes.
1669
1670 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1671
1672         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
1673         default hook.
1674
1675 2007-05-24  Jan Hubicka  <jh@suse.cz>
1676
1677         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
1678         statistics.
1679         (genheader): Include statistics.h.
1680
1681         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
1682         notes are gone.
1683         * print-rtl.c (flag_dump_unnumbered): Update comments.
1684         (print_rtl): Fix my previous change.
1685         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
1686         specific data.
1687
1688 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
1689
1690         PR middle-end/32018
1691         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
1692         set_loop_copy.
1693         (thread_through_all_blocks): Call initialize_original_copy_tables
1694         and free_original_copy_tables.
1695         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
1696         Use set_loop_copy.
1697         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
1698         * cfghooks.c (duplicate_block): Use get_loop_copy.
1699         * cfg.c: Include cfgloop.h.
1700         (loop_copy): New hash table.
1701         (initialize_original_copy_tables): Initialize loop_copy table.
1702         (free_original_copy_tables): Free loop_copy table.
1703         (copy_original_table_clear, copy_original_table_set,
1704         set_loop_copy, get_loop_copy): New functions.
1705         (set_bb_original, set_bb_copy): Use copy_original_table_set.
1706         * cfgloop.h (struct loop): Remove copy field.
1707         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
1708         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
1709
1710 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1711
1712         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
1713         -msse/-msse2/-msse3.
1714
1715 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1716
1717         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
1718         __builtin_ia32_vec_set_v2di with MASK_64BIT.
1719
1720 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
1721
1722         PR target/27067
1723         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
1724         * targhooks.h (default_mangle_decl_assembler_name): Declare
1725         default hook.
1726         * targhooks.c (default_mangle_decl_assembler_name): Define
1727         default hook.
1728         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
1729         default hook.
1730         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
1731         * langhooks.c (lhd_set_decl_assembler_name): Call
1732         targetm.mangle_decl_assembler_name for names with global scope.
1733
1734         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
1735         default.
1736         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
1737         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
1738         Declare.
1739         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
1740         New. Factored out of i386_pe_encode_section_info.
1741         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
1742         Move check for prior decoration of stdcall
1743         symbols to i386_pe_encode_section_info.
1744         (i386_pe_encode_section_info): Adjust call to
1745         gen_stdcall_or_fastcall_suffix.  Use
1746         i386_pe_maybe_mangle_decl_assembler_name, if needed.
1747         (i386_pe_mangle_decl_assembler_name): New. Wrap
1748         i386_pe_maybe_mangle_decl_assembler_name.
1749
1750 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
1751
1752         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
1753         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
1754         * langhooks.c (get_signed_or_unsigned_type): Don't check for
1755         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
1756         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
1757         TYPE_UNSIGNED.
1758
1759 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
1760             Nigel Stephens  <nigel@mips.com>
1761             Richard Sandiford  <richard@codesourcery.com>
1762
1763         Fix up MIPS16 hard float and add support for complex.
1764
1765         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
1766         (TARGET_SOFT_FLOAT_ABI): New.
1767         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
1768         __mips_soft_float to reflect the ABI in use, not whether the
1769         FPU is directly accessible (e.g., in MIPS16 mode).
1770         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
1771         (UNITS_PER_FPVALUE): Likewise.
1772
1773         * config/mips/mips.c (mips_expand_call): Remove redundant
1774         TARGET_MIPS16 check.
1775         (mips_arg_regno): New.
1776         (function_arg_advance): When setting bits in cum->fp_code for
1777         MIPS16, don't subtract 1 from cum->arg_number, since it is now
1778         zero-based.
1779         (function_arg): Use mips_arg_regno.
1780         (mips_return_mode_in_fpr_p): New.
1781         (mips16_call_stub_mode_suffix): New.
1782         (mips16_cfun_returns_in_fpr_p): New.
1783         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
1784         (mips_output_function_prologue): Test mips16_hard_float, not
1785         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
1786         (mips_expand_epilogue): Call MIPS16 helper routines to copy
1787         return value into a floating-point register.
1788         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
1789         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
1790         (mips16_fp_args): Handle MIPS32r2 ISA which supports
1791         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
1792         word of double arguments from or to the high bits of 64-bit
1793         floating point registers.
1794         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
1795         (mips16_fpret_double): New helper function.
1796         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
1797         support for complex modes.  Fill in DECL_RESULT for stubdecl.
1798         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
1799
1800         * config/mips/mips16.S
1801         (RET, ARG1, ARG2): New.
1802         (MERGE_GPRf, MERGE_GPRt): New.
1803         (DELAYt, DELAYf): New.
1804         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
1805         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
1806         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
1807         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
1808         (SFOP): Renamed to...
1809         (OPSF3): This, and macro-ified.  Updated all uses.
1810         (SFOP2): Renamed to...
1811         (OPSF2): This, and macro-ified.  Updated all uses.
1812         (SFCMP): Renamed to...
1813         (CMPSF): This, and macro-ified.  Updated all uses.
1814         (SFREVCMP): Renamed to...
1815         (REVCMPSF): This, and macro-ified.  Updated all uses.
1816         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
1817         (LDDBL1, LDDBL2, RETDBL): Deleted.
1818         (DFOP): Renamed to...
1819         (OPDF3): This, and macro-ified.  Updated all uses.
1820         (DFOP2): Renamed to...
1821         (OPDF2): This, and macro-ified.  Updated all uses.
1822         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
1823         (DFCMP): Renamed to...
1824         (CMPDF): This, and macro-ified.  Updated all uses.
1825         (DFREVCMP): Renamed to...
1826         (REVCMPDF): This, and macro-ified.  Updated all uses.
1827         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
1828         (RET_FUNCTION): New.
1829         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
1830         (__mips16_ret_sc, __mips16_ret_dc): New.
1831         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
1832         STUB_ARGS_6, STUB_ARGS_10): New.
1833         (CALL_STUB_NO_RET): New.
1834         (__mips16_call_stub_1): Macro-ified.
1835         (__mips16_call_stub_5): Macro-ified.
1836         (__mips16_call_stub_2): Macro-ified.
1837         (__mips16_call_stub_6): Macro-ified.
1838         (__mips16_call_stub_9): Macro-ified.
1839         (__mips16_call_stub_10): Macro-ified.
1840         (CALL_STUB_RET): New.
1841         (__mips16_call_stub_sf_0): Macro-ified.
1842         (__mips16_call_stub_sf_1): Macro-ified.
1843         (__mips16_call_stub_sf_5): Macro-ified.
1844         (__mips16_call_stub_sf_2): Macro-ified.
1845         (__mips16_call_stub_sf_6): Macro-ified.
1846         (__mips16_call_stub_sf_9): Macro-ified.
1847         (__mips16_call_stub_sf_10): Macro-ified.
1848         (__mips16_call_stub_df_0): Macro-ified.
1849         (__mips16_call_stub_df_1): Macro-ified.
1850         (__mips16_call_stub_df_5): Macro-ified.
1851         (__mips16_call_stub_df_2): Macro-ified.
1852         (__mips16_call_stub_df_6): Macro-ified.
1853         (__mips16_call_stub_df_9): Macro-ified.
1854         (__mips16_call_stub_df_10): Macro-ified.
1855         (__mips16_call_stub_sc_0): New.
1856         (__mips16_call_stub_sc_1): New.
1857         (__mips16_call_stub_sc_5): New.
1858         (__mips16_call_stub_sc_2): New.
1859         (__mips16_call_stub_sc_6): New.
1860         (__mips16_call_stub_sc_9): New.
1861         (__mips16_call_stub_sc_10): New.
1862         (__mips16_call_stub_dc_0): New.
1863         (__mips16_call_stub_dc_1): New.
1864         (__mips16_call_stub_dc_5): New.
1865         (__mips16_call_stub_dc_2): New.
1866         (__mips16_call_stub_dc_6): New.
1867         (__mips16_call_stub_dc_9): New.
1868         (__mips16_call_stub_dc_10): New.
1869
1870         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
1871         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
1872         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
1873
1874 2007-05-23  Ian Lance Taylor  <iant@google.com>
1875
1876         * doc/invoke.texi (Invoking GCC): Document that the order of the
1877         -l option matters.
1878
1879 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
1880
1881         PR target/30987
1882         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
1883         * config/score/predicate.md (const_pow2, const_npow2): Remove.
1884         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
1885         undef.
1886
1887         PR target/30474
1888         * config/score/score.c (score_print_operand): Make sure that only
1889         lower bits are used.
1890
1891 2007-05-22  Ian Lance Taylor  <iant@google.com>
1892
1893         * tree-vrp.c (avoid_overflow_infinity): New static function,
1894         broken out of set_value_range_to_value.
1895         (set_value_range_to_value): Call avoid_overflow_infinity.
1896         (extract_range_from_assert): Likewise.
1897
1898 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1899
1900         PR middle-end/31095
1901          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
1902         change the type before looking for a COMPOUND_EXPR.
1903
1904 2007-05-22  Ian Lance Taylor  <iant@google.com>
1905
1906         * lower-subreg.c (decompose_multiword_subregs): If we change an
1907         insn, call remove_retval_note on it.
1908
1909 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1910
1911         * regs.h (end_hard_regno): New function.
1912         (END_HARD_REGNO, END_REGNO): New macros.
1913         (add_to_hard_reg_set): New function.
1914         (remove_from_hard_reg_set): Likewise.
1915         (in_hard_reg_set_p): Likewise.
1916         (overlaps_hard_reg_set_p): Likewise.
1917         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
1918         (note_btr_set): Use END_HARD_REGNO.
1919         * caller-save.c (setup_save_areas): Use end_hard_regno.
1920         (mark_set_regs): Use END_HARD_REGNO.
1921         (add_stored_regs): Use end_hard_regno.
1922         (mark_referenced_regs): Use add_to_hard_reg_set.
1923         * combine.c (update_table_tick): Use END_REGNO.
1924         (record_value_for_reg): Likewise.
1925         (record_dead_and_set_regs): Likewise.
1926         (get_last_value_validate): Likewise.
1927         (use_crosses_set_p): Likewise.
1928         (reg_dead_at_p_1): Likewise.
1929         (reg_dead_at_p): Likewise.
1930         (mark_used_regs_combine): Use add_to_hard_reg_set.
1931         (move_deaths): Use END_HARD_REGNO.
1932         (reg_bitfield_target_p): Use end_hard_regno.
1933         (distribute_notes): Use END_HARD_REGNO.
1934         * cse.c (mention_regs): Use END_REGNO.
1935         (insert): Use add_to_hard_reg_set.
1936         (invalidate): Use END_HARD_REGNO.
1937         (invalidate_for_call): Likewise.
1938         (exp_equiv_p): Use END_REGNO.
1939         (cse_insn): Likewise.
1940         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
1941         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
1942         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
1943         * function.c (keep_stack_depressed): Use end_hard_regno.
1944         * global.c (global_alloc): Use end_hard_regno.
1945         (global_conflicts): Use add_to_hard_reg_set instead of
1946         mark_reg_live_nc.
1947         (find_reg): Likewise.
1948         (mark_reg_store): Likewise.
1949         (mark_reg_conflicts): Likewise.
1950         (mark_reg_death): Use remove_from_hard_reg_set.
1951         (mark_reg_live_nc): Delete.
1952         (set_preference): Use end_hard_regno.
1953         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
1954         remove_from_hard_reg_set.
1955         (post_mark_life): Use add_to_hard_reg_set.
1956         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
1957         (reg_becomes_live): Use add_to_hard_reg_set.
1958         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
1959         (peep2_find_free_register): Use add_to_hard_reg_set.
1960         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
1961         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
1962         * regrename.c (note_sets): Use add_to_hard_reg_set.
1963         (clear_dead_regs): Use remove_from_hard_reg_set.
1964         (regrename_optimize): Use add_to_hard_reg_set.
1965         (find_oldest_value_reg): Use in_hard_reg_set_p.
1966         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
1967         (hard_reg_set_here_p): Use end_hard_regno.
1968         (decompose): Likewise.
1969         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
1970         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
1971         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
1972         (mark_home_live): Use end_hard_regno.
1973         (spill_hard_reg): Likewise.
1974         (clear_reload_reg_in_use): Likewise.
1975         * reorg.c (delete_prior_computation): Use END_REGNO.
1976         * resource.c (update_live_status): Use END_HARD_REGNO.
1977         (mark_referenced_resources): Use add_to_hard_reg_set.
1978         (mark_set_resources): Likewise.
1979         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
1980         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
1981         (reg_overlap_mentioned_p): Likewise.
1982         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
1983         (covers_regno_no_parallel_p): Use END_REGNO.
1984         (find_regno_note): Likewise.
1985         (find_reg_fusage): Use END_HARD_REGNO.
1986         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
1987         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
1988
1989 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1990
1991         * mode-switching.c (reg_dies): Change type of second argument to
1992         "HARD_REG_SET *".
1993         (optimize_mode_switching): Update accordingly.
1994
1995 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
1996
1997         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
1998         in favor of...
1999         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
2000         (hard_reg_set_empty_p): ...these new functions.
2001         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
2002         GO_IF_HARD_REG_SUBSET.
2003         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
2004         instead of GO_IF_HARD_REG_EQUAL.
2005         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
2006         instead of GO_IF_HARD_REG_EQUAL.
2007         * global.c (find_reg): Use hard_reg_set_empty_p instead of
2008         GO_IF_HARD_REG_SUBSET.
2009         (modify_reg_pav): Use hard_reg_set_empty_p instead of
2010         GO_IF_HARD_REG_EQUAL.
2011         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
2012         of GO_IF_HARD_REG_SUBSET.
2013         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
2014         instead of GO_IF_HARD_REG_EQUAL.
2015         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
2016         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
2017         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
2018         of GO_IF_HARD_REG_SUBSET,
2019         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
2020         GO_IF_HARD_REG_SUBSET.
2021         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
2022         instead of GO_IF_HARD_REG_EQUAL.
2023         * config/sh/sh.c (push_regs, calc_live_regs): Use
2024         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
2025         (hard_regs_intersect_p): Delete.
2026
2027 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
2028
2029         * doc/sourcebuild.texi (Test Directives) Add dg-message.
2030
2031 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
2032             Richard Henderson  <rth@redhat.com>
2033
2034         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
2035         extra_headers.
2036         (x86_64-*-*): Likewise.
2037
2038         * i386/i386-modes.def (V2QI): New.
2039
2040         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
2041         SSE4A.
2042         (override_options): Support SSE4.1.
2043         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
2044         (IX86_BUILTIN_BLENDPS): Likewise.
2045         (IX86_BUILTIN_BLENDVPD): Likewise.
2046         (IX86_BUILTIN_BLENDVPS): Likewise.
2047         (IX86_BUILTIN_PBLENDVB128): Likewise.
2048         (IX86_BUILTIN_PBLENDW128): Likewise.
2049         (IX86_BUILTIN_DPPD): Likewise.
2050         (IX86_BUILTIN_DPPS): Likewise.
2051         (IX86_BUILTIN_INSERTPS128): Likewise.
2052         (IX86_BUILTIN_MOVNTDQA): Likewise.
2053         (IX86_BUILTIN_MPSADBW128): Likewise.
2054         (IX86_BUILTIN_PACKUSDW128): Likewise.
2055         (IX86_BUILTIN_PCMPEQQ): Likewise.
2056         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
2057         (IX86_BUILTIN_PMAXSB128): Likewise.
2058         (IX86_BUILTIN_PMAXSD128): Likewise.
2059         (IX86_BUILTIN_PMAXUD128): Likewise.
2060         (IX86_BUILTIN_PMAXUW128): Likewise.
2061         (IX86_BUILTIN_PMINSB128): Likewise.
2062         (IX86_BUILTIN_PMINSD128): Likewise.
2063         (IX86_BUILTIN_PMINUD128): Likewise.
2064         (IX86_BUILTIN_PMINUW128): Likewise.
2065         (IX86_BUILTIN_PMOVSXBW128): Likewise.
2066         (IX86_BUILTIN_PMOVSXBD128): Likewise.
2067         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
2068         (IX86_BUILTIN_PMOVSXWD128): Likewise.
2069         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
2070         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
2071         (IX86_BUILTIN_PMOVZXBW128): Likewise.
2072         (IX86_BUILTIN_PMOVZXBD128): Likewise.
2073         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
2074         (IX86_BUILTIN_PMOVZXWD128): Likewise.
2075         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
2076         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
2077         (IX86_BUILTIN_PMULDQ128): Likewise.
2078         (IX86_BUILTIN_PMULLD128): Likewise.
2079         (IX86_BUILTIN_ROUNDPD): Likewise.
2080         (IX86_BUILTIN_ROUNDPS): Likewise.
2081         (IX86_BUILTIN_ROUNDSD): Likewise.
2082         (IX86_BUILTIN_ROUNDSS): Likewise.
2083         (IX86_BUILTIN_PTESTZ): Likewise.
2084         (IX86_BUILTIN_PTESTC): Likewise.
2085         (IX86_BUILTIN_PTESTNZC): Likewise.
2086         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
2087         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
2088         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
2089         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
2090         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
2091         (bdesc_ptest): New.
2092         (bdesc_sse_3arg): Likewise.
2093         (bdesc_2arg): Likewise.
2094         (bdesc_1arg): Likewise.
2095         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
2096         with 3 args.
2097         (ix86_expand_sse_4_operands_builtin): New.
2098         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
2099         smaller than 8 bits as the 2nd arg.
2100         (ix86_expand_sse_ptest): New.
2101         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
2102         (ix86_expand_vector_set): Support SSE4.1.
2103         (ix86_expand_vector_extract): Likewise.
2104
2105         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2106         __SSE4_1__ for -msse4.1.
2107
2108         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
2109         (UNSPEC_INSERTPS): Likewise.
2110         (UNSPEC_DP): Likewise.
2111         (UNSPEC_MOVNTDQA): Likewise.
2112         (UNSPEC_MPSADBW): Likewise.
2113         (UNSPEC_PHMINPOSUW): Likewise.
2114         (UNSPEC_PTEST): Likewise.
2115         (UNSPEC_ROUNDP): Likewise.
2116         (UNSPEC_ROUNDS): Likewise.
2117
2118         * config/i386/i386.opt (msse4.1): New for SSE4.1.
2119
2120         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
2121         (const_pow2_1_to_32768_operand): Likewise.
2122
2123         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
2124         file.
2125
2126         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
2127         SSE4.1.
2128         (sse4_1_insertps): Likewise.
2129         (*sse4_1_extractps): Likewise.
2130         (sse4_1_ptest): Likewise.
2131         (sse4_1_mulv2siv2di3): Likewise.
2132         (*sse4_1_mulv4si3): Likewise.
2133         (*sse4_1_smax<mode>3): Likewise.
2134         (*sse4_1_umax<mode>3): Likewise.
2135         (*sse4_1_smin<mode>3): Likewise.
2136         (*sse4_1_umin<mode>3): Likewise.
2137         (sse4_1_eqv2di3): Likewise.
2138         (*sse4_1_pinsrb): Likewise.
2139         (*sse4_1_pinsrd): Likewise.
2140         (*sse4_1_pinsrq): Likewise.
2141         (*sse4_1_pextrb): Likewise.
2142         (*sse4_1_pextrb_memory): Likewise.
2143         (*sse4_1_pextrw_memory): Likewise.
2144         (*sse4_1_pextrq): Likewise.
2145         (sse4_1_blendpd): Likewise.
2146         (sse4_1_blendps): Likewise.
2147         (sse4_1_blendvpd): Likewise.
2148         (sse4_1_blendvps): Likewise.
2149         (sse4_1_dppd): Likewise.
2150         (sse4_1_dpps): Likewise.
2151         (sse4_1_movntdqa): Likewise.
2152         (sse4_1_mpsadbw): Likewise.
2153         (sse4_1_packusdw): Likewise.
2154         (sse4_1_pblendvb): Likewise.
2155         (sse4_1_pblendw): Likewise.
2156         (sse4_1_phminposuw): Likewise.
2157         (sse4_1_extendv8qiv8hi2): Likewise.
2158         (*sse4_1_extendv8qiv8hi2): Likewise.
2159         (sse4_1_extendv4qiv4si2): Likewise.
2160         (*sse4_1_extendv4qiv4si2): Likewise.
2161         (sse4_1_extendv2qiv2di2): Likewise.
2162         (*sse4_1_extendv2qiv2di2): Likewise.
2163         (sse4_1_extendv4hiv4si2): Likewise.
2164         (*sse4_1_extendv4hiv4si2): Likewise.
2165         (sse4_1_extendv2hiv2di2): Likewise.
2166         (*sse4_1_extendv2hiv2di2): Likewise.
2167         (sse4_1_extendv2siv2di2): Likewise.
2168         (*sse4_1_extendv2siv2di2): Likewise.
2169         (sse4_1_zero_extendv8qiv8hi2): Likewise.
2170         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
2171         (sse4_1_zero_extendv4qiv4si2): Likewise.
2172         (*sse4_1_zero_extendv4qiv4si2): Likewise.
2173         (sse4_1_zero_extendv2qiv2di2): Likewise.
2174         (*sse4_1_zero_extendv2qiv2di2): Likewise.
2175         (sse4_1_zero_extendv4hiv4si2): Likewise.
2176         (*sse4_1_zero_extendv4hiv4si2): Likewise.
2177         (sse4_1_zero_extendv2hiv2di2): Likewise.
2178         (*sse4_1_zero_extendv2hiv2di2): Likewise.
2179         (sse4_1_zero_extendv2siv2di2): Likewise.
2180         (*sse4_1_zero_extendv2siv2di2): Likewise.
2181         (sse4_1_roundpd): Likewise.
2182         (sse4_1_roundps): Likewise.
2183         (sse4_1_roundsd): Likewise.
2184         (sse4_1_roundss): Likewise.
2185         (mulv4si3): Don't expand for SSE4.1.
2186         (smax<mode>3): Likewise.
2187         (umaxv4si3): Likewise.
2188         (uminv16qi3): Likewise.
2189         (umin<mode>3): Likewise.
2190         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
2191
2192         * doc/extend.texi: Document SSE4.1 built-in functions.
2193
2194         * doc/invoke.texi: Document -msse4.1.
2195
2196 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
2197
2198         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
2199         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
2200         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
2201         (ASM_SPEC): Add asm_pcrel_spec.
2202         (EXTRA_SPECS): Add asm_pcrel_spec.
2203
2204 2007-05-21  David Daney  <ddaney@avtrex.com>
2205
2206         * doc/install.texi (Building a cross compiler): Add requirements
2207         for Java cross compiler.
2208
2209 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2210
2211         PR middle-end/31995
2212         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
2213         Add loopno argument.  Use evolution_function_is_invariant_rec_p
2214         instead of evolution_function_is_constant_p.
2215         Update calls to evolution_function_is_affine_multivariate_p.
2216         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
2217         Add loopno argument.
2218         * tree-scalar-evolution.c (gather_chrec_stats): Call
2219         evolution_function_is_affine_multivariate_p with a loop
2220         number of 0.
2221         * tree-data-ref.c (analyze_miv_subscript): Likewise.
2222         (analyze_overlapping_iterations): Likewise.
2223         (access_functions_are_affine_or_constant_p): Likewise.
2224         (build_classic_dist_vector_1): If the access functions
2225         are equal, don't do anything.
2226
2227 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
2228             Paolo Carlini  <pcarlini@suse.de>
2229             Uros Bizjak  <ubizjak@gmail.com>
2230
2231         * c-cppbuiltin.c (c_cpp_builtins): Define
2232         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
2233         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
2234         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
2235         * doc/cpp.texi ([Standard Predefined Macros]): Document.
2236
2237 2007-05-21  Mike Stump  <mrs@apple.com>
2238
2239         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
2240         handling as well.
2241         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
2242
2243 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
2244
2245         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
2246         implementation if __OPTIMIZE__ is not defined.
2247         (_mm_alignr_pi8): Ditto.
2248         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
2249         (_mm_inserti_si64): Ditto.
2250         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
2251         (_mm_slli_epi16): Ditto.
2252         (_mm_slli_epi32): Ditto.
2253         (_mm_slli_epi64): Ditto.
2254         (_mm_srai_epi16): Ditto.
2255         (_mm_srai_epi32): Ditto.
2256         (_mm_srli_si128): Ditto.
2257         (_mm_slli_si128): Ditto.
2258         (_mm_srli_epi16): Ditto.
2259         (_mm_srli_epi32): Ditto.
2260         (_mm_srli_epi64): Ditto.
2261         (_mm_extract_epi16): Ditto.
2262         (_mm_insert_epi16): Ditto.
2263         (_mm_shufflehi_epi16): Ditto.
2264         (_mm_shufflelo_epi16): Ditto.
2265         (_mm_shuffle_epi32): Ditto.
2266         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
2267         (_m_pextrw): Ditto.
2268         (_mm_insert_pi16): Ditto.
2269         (_m_pinsrw): Ditto.
2270         (_mm_shuffle_pi16): Ditto.
2271         (_m_pshufw): Ditto.
2272         (_mm_shufle_ps): Ditto.
2273         (_mm_prefetch): Ditto.
2274
2275 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
2276
2277         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
2278         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
2279         * real.c (encode_i370_single, decode_i370_single,
2280         encode_i370_double, decode_i370_double): Functions removed.
2281         (i370_single_format, i370_double_format): Initializations removed.
2282         (real_maxval, round_for_format, exact_real_truncate, significand_size):
2283         Consider the log2_b field to always be one.
2284         (ieee_single_format, mips_single_format, coldfire_single_format,
2285         ieee_double_format, mips_double_format, coldfire_double_format,
2286         ieee_extended_motorola_format, ieee_extended_intel_96_format,
2287         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
2288         ibm_extended_format, mips_extended_format, ieee_quad_format,
2289         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
2290         decimal_single_format, decimal_double_format, decimal_quad_format,
2291         c4x_single_format, c4x_extended_format, real_internal_format): Remove
2292         initialization of log2_b.
2293         * real.h (i370_single_format, i370_double_format): Declarations removed.
2294         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
2295         field to always be one.
2296
2297 2007-05-21  Andreas Schwab  <schwab@suse.de>
2298
2299         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
2300         NOTE_INSN_BASIC_BLOCK_P.
2301         (process_for_unwind_directive): Likewise.
2302
2303 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
2304
2305         * builtins.c (expand_builtin_setjmp_setup): Update comment.
2306         * function.h (struct function): Move va_list_gpr_size,
2307         va_list_fpr_size, function_frequency to front of bitfields.  Add
2308         calls_unwind_init.
2309         (current_function_calls_unwind_init): New.
2310         * except.c (expand_builtin_unwind_init): Set
2311         current_function_calls_unwind_init not
2312         current_function_has_nonlocal_label.
2313         * reload1.c (has_nonexceptional_receiver): New.
2314         (reload): Use it and current_function_calls_unwind_init to
2315         determine whether call-saved regs must be saved.
2316
2317 2007-05-20  Jan Hubicka  <jh@suse.cz>
2318
2319         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
2320         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
2321         * ddg.c (create_ddg): LIkewise.
2322         * final.c (final): Remove hunk moving line numbernotes around since
2323         they are no longer present at this stage.
2324         (final_scan_insn): Use NOTE_KIND instead of
2325         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
2326         (output_asm_label): Likewise.
2327         * reorg.c (dbr_schedule): Likewise.
2328         * haifa-sched.c (unlink_other_notes): Likewise.
2329         * mode-switching.c (optimize_mode_switching): Likewise.
2330         * graph.c (start_bb): Likewise.
2331         * rtl.def (NOTE): Update description.
2332         * jump.c (squeeze_notes): Delete.
2333         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
2334         NOTE_INSN_BASIC_BLOCK_P when possible.
2335         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
2336         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
2337         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
2338         (dwarf2out_var_location): Likewise.
2339         * cfgbuild.c (make_edges): Likewise.
2340         (find_basic_blocks_1): Likewise.
2341         * function.c (reorder_blocks_1): Likewise.
2342         (epilogue_done): Likewise.
2343         (reposition_prologue_and_epilogue_notes): Likewise.
2344         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
2345         notes.
2346         (print_rtl): Likewise.
2347         (print_rtl_single): Likewise.
2348         * gcse.c (insert_insn_start_bb): Likewise.
2349         * alias.c (init_alias_analysis): Likewise.
2350         * calls.c (fixup_tail_calls): Likewise.
2351         * except.c (sjlj_emit_function_enter): Likewise.
2352         * emit-rtl.c (add_insn_after): Likeiwse.
2353         (emit_label_before): Likewise.
2354         (emit_label_after): Likewise.
2355         (emit_note_before, emit_note_after, emit_note): Update
2356         parameter to be enum insn_note; do not deal with source
2357         files.
2358         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
2359         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
2360         when possible.
2361         (merge_blocks_move_successor_nojumps): Simplify now when
2362         we don't have BLOCK notes.
2363         (try_optimize_cfg): Likewise.
2364         * cfglayout.c (skip_insns_after_block): Likewise.
2365         (record_effective_endpoints): Likewise.
2366         (duplicate_insn_chain): Likewise.
2367         * varasm.c (output_constant_pool_1): Likewise.
2368         * sched-deps.c (sched_analyze): Likewise.
2369         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
2370         Exterminate.
2371         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
2372         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
2373         (SET_INSN_DELETED): Simplify.
2374         (NOTE_LINE_NUMBER): Exterminate.
2375         (NOTE_LINE_KIND): New.
2376         (NOTE_INSN_BASIC_BLOCK_P): Update.
2377         (enum insn_note): Simplify.
2378         (GET_NOTE_INSN_NAME) Simplify.
2379         (emit_note_before, emit_note_after, emit_note): Update prototype.
2380         (squeeze_notes): Remove.
2381         * sched-int.h (NOTE_NOT_BB_P): Update.
2382         * resource.c (mark_target_live_regs): Update.
2383         * sched-rgn.c (debug_dependencies): Update.
2384         * sched-vis.c (print_insn): Update.
2385         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
2386         * config/i386/i386.c (ix86_output_function_epilogue): Update.
2387         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
2388         (TARGET_ADJUST_UNROLL_MAX): Likewise.
2389         (split_branches): Update.
2390         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
2391         4.0.0.
2392         (sh_adjust_unroll_max): Exterminate.
2393         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
2394         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
2395         (m68hc11_reorg): Likewise.
2396         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
2397         (emit_predicate_relation_info): Update.
2398         (process_for_unwind_directive): Update.
2399         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
2400         (output_call): Update.
2401         * config/pa/pa.c (output_lbranch): Update.
2402         (output_millicode_call): Update.
2403         (output_call): Update.
2404         (pa_combine_instructions): Update.
2405         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
2406         * config/bfin/bfin.c (gen_one_bundle): Update.
2407         * cfgrtl.c (can_delete_note_p): Update.
2408         (delete_insn): Update.
2409         (rtl_merge_blocks): Update.
2410         (commit_one_edge_insertion): Update.
2411         (rtl_verify_flow_info): Update.
2412         * stmt.c (expand_case): Do not call squeeze_notes.
2413
2414 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2415
2416         PR middle-end/7651
2417         PR c++/11856
2418         PR c/12963
2419         PR c/23587
2420         PR other/29694
2421         * c.opt (Wtype-limits): New.
2422         * doc/invoke.texi (Wtype-limits): Document it.
2423         (Wextra): Enabled by -Wextra.
2424         * c-opts.c (c_common_post_options): Enabled by -Wextra.
2425         * c-common.c (shorten_compare): Warn with Wtype-limits.
2426
2427 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
2428
2429         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
2430         inlined function, not as a macro.
2431         (_mm_alignr_pi8): Ditto.
2432         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
2433         (_mm_inserti_si64): Ditto.
2434         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
2435         (_mm_extract_epi16): Ditto.
2436         (_mm_insert_epi16): Ditto.
2437         (_mm_shufflehi_epi16): Ditto.
2438         (_mm_shufflelo_epi16): Ditto.
2439         (_mm_shuffle_epi32): Ditto.
2440         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
2441         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
2442         all functions.
2443         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
2444         float constant.
2445         (_m_to_float): Use C89 compatible assignment.
2446
2447 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
2448
2449         PR target/32007
2450         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
2451
2452 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2453
2454         PR middle-end/7651
2455         * doc/invoke.texi (Wreturn-type): Complete description.
2456         (Wextra): Delete item about return-type warning.
2457         * c-decl.c: Delete redundant Wextra warning.
2458
2459 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
2460
2461         PR target/31585
2462         * config/i386/pmmintrin.h: Do not include xmmintrin.h
2463         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
2464         inlined function, not as a macro.
2465         (_mm_prefetch): Ditto.
2466         (_m_pextrw): Ditto.
2467         (_mm_insert_pi16): Ditto.
2468         (_m_pinsrw): Ditto.
2469         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
2470         (_m_pshufw): Ditto. Add const to __N argument.
2471         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
2472         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
2473         (_mm_slli_epi32): Ditto.
2474         (_mm_srli_si128): Implement as always inlined function, not as a macro.
2475         Add __inline to function declaration.
2476         (_mm_slli_si128): Ditto.
2477
2478 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
2479
2480         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
2481         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
2482         New constants.
2483         (struct fenv): New structure.
2484         (FP_HANDLE_EXCEPTIONS): New define.
2485         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
2486         (_FP_DECL_EXP): New define.
2487         (FP_INIT_ROUNDMODE): New define.
2488         (FP_ROUNDMODE): New define.
2489
2490 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2491
2492         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
2493         (Wconversion): Update description.
2494         (Wconversion-sign): New.
2495         * c.opt (Wconversion-sign): New.
2496         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
2497         means disabled for C++. Otherwise, take the status of Wconversion.
2498         * c-common.c (conversion_warning): Warn with either Wconversion or
2499         Wconversion-sign.
2500         (warnings_for_convert_and_check): Conditions are already checked by
2501         conversion_warning.
2502         (convert_and_check): Don't check warnings if the conversion failed.
2503
2504 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
2505            Anatoly Sokolov <aesok@dol.ru>
2506
2507         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
2508         avr_epilogue_uses) : Add declaration.
2509         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
2510         * config/avr/constraints.md (R): New constraint.
2511         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
2512         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
2513         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
2514         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
2515         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
2516         call_prologue_saves, epilogue_restores, return_from_epilogue,
2517         return_from_main_epilogue, return_from_interrupt_epilogue,
2518         return_from_naked_epilogue, prologue, epilogue): New patterns.
2519         (jump): Handle symbol reference.
2520         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
2521         avr_output_function_prologue, avr_output_function_epilogue): Remove
2522         functions.
2523         (avr_init_machine_status, expand_prologue, expand_epilogue,
2524         avr_asm_function_end_prologue, avr_epilogue_uses,
2525         avr_asm_function_begin_epilogue): New functions.
2526         (prologue_size, epilogue_size, jump_tables_size): Remove global
2527         variables.
2528         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
2529         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
2530         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
2531         (avr_override_options): Initialise init_machine_status.
2532         (output_movhi): Handle all stack pointer loads.
2533         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
2534         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
2535         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
2536         (EPILOGUE_USES) Redefine.
2537         (machine_function) Declare.
2538
2539 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
2540
2541         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
2542         Use a single return statement.
2543
2544 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2545
2546         PR middle-end/30250
2547         * builtins.c (do_mpfr_lgamma_r): New.
2548         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
2549         * tree.h (CASE_FLT_FN_REENT): New.
2550
2551 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
2552
2553         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
2554         (output_die): Use 'unsigned long' with %x.
2555         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
2556         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
2557         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
2558
2559         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
2560
2561 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
2562
2563         PR target/31989
2564         PR target/31681
2565         PR target/31666
2566         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
2567         true if function has no argument.
2568
2569 2007-05-18  DJ Delorie  <dj@redhat.com>
2570
2571         * config/mips/mips.c (mips_offset_within_alignment_p): New.
2572         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
2573
2574 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
2575
2576         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
2577         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
2578         count_trailing_zeros.
2579         (__i386__): Implement count_leading_zeros using __builtin_clz().
2580         Implement count_trailing_zeros usign __builtin_ctz().
2581
2582 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
2583
2584         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
2585
2586 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
2587
2588         PR middle-end/31344
2589         * expr.c (emit_move_change_mode): Change mode of push operands here.
2590
2591 2007-05-17  Ian Lance Taylor  <iant@google.com>
2592
2593         PR tree-optimization/31953
2594         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
2595         Change all callers.
2596         (set_value_range_to_null): Call set_value_range_to_value.
2597         (extract_range_from_comparison): Likewise.
2598
2599 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2600
2601         * toplev.c (print_version): Output GMP/MPFR version info.
2602
2603         * builtins.c (CASE_MATHFN_REENT): New macro.
2604         (mathfn_built_in): Use it.
2605         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
2606         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
2607         BUILT_IN_LGAMMAL_R): New.
2608         * doc/extend.texi: Document new builtins.
2609
2610         PR middle-end/31796
2611         * builtins.c (do_mpfr_remquo): New.
2612         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
2613         (fold_builtin_3): Handle BUILT_IN_REMQUO.
2614
2615         PR middle-end/30251
2616         * builtins.c (fold_builtin_1): Handle y0, y1.
2617         (fold_builtin_2): Handle yn.
2618
2619         PR middle-end/30251
2620         * builtins.c (do_mpfr_bessel_n): New.
2621         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
2622         (fold_builtin_2): Handle BUILT_IN_JN.
2623
2624 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
2625
2626         PR target/31965
2627         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
2628         TYPE_PRECISION (intmax_type_node).
2629
2630 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
2631
2632         PR target/31850
2633         * reload.c (subst_reloads): Remove checking.
2634
2635 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
2636
2637         PR rtl-optimization/31691
2638         * combine.c (simplify_set): Build a new src pattern instead of
2639         substituting its operands in the COMPARE case.
2640
2641 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
2642
2643         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
2644         (execute_vrp): Preserve loops through jump threading.
2645         * tree-ssa-threadupdate.c (thread_single_edge,
2646         dbds_continue_enumeration_p, determine_bb_domination_status,
2647         thread_through_loop_header): New functions.
2648         (create_edge_and_update_destination_phis,
2649         create_edge_and_update_destination_phis): Set loops for the new blocks.
2650         (prune_undesirable_thread_requests): Removed.
2651         (redirect_edges): Do not pretend that redirect_edge_and_branch can
2652         create new blocks.
2653         (thread_block): Do not call prune_undesirable_thread_requests.
2654         Update loops.
2655         (mark_threaded_blocks): Select edges to thread here.
2656         (thread_through_all_blocks): Take may_peel_loop_headers argument.
2657         Thread edges through loop headers independently.
2658         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
2659         * tree-pass.h (TODO_mark_first_instance): New.
2660         (first_pass_instance): Declare.
2661         * cfghooks.c (duplicate_block): Put the block to the original loop
2662         if copy is not specified.
2663         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
2664         jump threading.  Pass may_peel_loop_headers to
2665         thread_through_all_blocks according to first_pass_instance.
2666         * cfgloop.h (create_preheader): Declare.
2667         * tree-flow.h (thread_through_all_blocks): Declaration changed.
2668         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
2669         * passes.c (first_pass_instance): New variable.
2670         (next_pass_1): Set TODO_mark_first_instance.
2671         (execute_todo): Set first_pass_instance.
2672
2673 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
2674
2675         PR tree-optimization/24659
2676         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
2677         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
2678         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
2679         OTI_vec_pack_ufix_trunc.
2680         (vec_unpacks_float_hi_optab): Define new macro.
2681         (vec_unpacks_float_lo_optab): Ditto.
2682         (vec_unpacku_float_hi_optab): Ditto.
2683         (vec_unpacku_float_lo_optab): Ditto.
2684         (vec_pack_sfix_trunc_optab): Ditto.
2685         (vec_pack_ufix_trunc_optab): Ditto.
2686         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
2687         and vec_pack_[s|u]fix_trunc_optab using
2688         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
2689         * tree-vectorizer.c (supportable_widening_operation): Handle
2690         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
2691         (supportable_narrowing_operation): New function.
2692         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
2693         * tree-vect-transform.c (vectorizable_conversion): Handle
2694         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
2695         (vect_gen_widened_results_half): Move before vectorizable_conversion.
2696         (vectorizable_type_demotion): Call supportable_narrowing_operation()
2697         to check for target support.
2698         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
2699         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
2700         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
2701         for VEC_PACK_FIX_TRUNC_EXPR.
2702         (expand_binop): Special case mode of the result for
2703         vec_pack_[u|s]fix_trunc_optab.
2704         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
2705         vec_pack_[u|s]fix_trunc_optab.
2706
2707         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
2708         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
2709         * tree-pretty-print.c (dump_generic_node): Handle
2710         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
2711         VEC_PACK_FIX_TRUNC_EXPR.
2712         (op_prio): Ditto.
2713         * expr.c (expand_expr_real_1): Ditto.
2714         * tree-inline.c (estimate_num_insns_1): Ditto.
2715         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
2716
2717         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
2718         (vec_unpacks_float_lo_v8hi): Ditto.
2719         (vec_unpacku_float_hi_v8hi): Ditto.
2720         (vec_unpacku_float_lo_v8hi): Ditto.
2721         (vec_unpacks_float_hi_v4si): Ditto.
2722         (vec_unpacks_float_lo_v4si): Ditto.
2723         (vec_pack_sfix_trunc_v2df): Ditto.
2724
2725         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
2726         Document.
2727         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
2728         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
2729         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
2730         [vec_pack_ufix_trunc]: Ditto.
2731         [vec_unpacks_float_hi]: Ditto.
2732         [vec_unpacks_float_lo]: Ditto.
2733         [vec_unpacku_float_hi]: Ditto.
2734         [vec_unpacku_float_lo]: Ditto.
2735
2736 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
2737
2738         * soft-fp/README: Update for new files.
2739         * soft-fp/floattisf.c: New file.
2740         * soft-fp/floattidf.c: New file.
2741         * soft-fp/floattitf.c: New file.
2742         * soft-fp/floatuntisf.c: New file.
2743         * soft-fp/floatuntidf.c: New file.
2744         * soft-fp/floatuntitf.c: New file.
2745         * soft-fp/fixsfti.c: New file.
2746         * soft-fp/fixdfti.c: New file.
2747         * soft-fp/fixtfti.c: New file.
2748         * soft-fp/fixunssfti.c: New file.
2749         * soft-fp/fixunsdfti.c: New file.
2750         * soft-fp/fixunstfti.c: New file.
2751         * soft-fp/extendxftf.c: New file.
2752         * soft-fp/trunctfxf.c: New file.
2753
2754         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
2755         (__trunctfxf2): Ditto.
2756
2757         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
2758         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
2759         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
2760         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
2761         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
2762         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
2763
2764         * config/i386/t-fprules-softfp64: New file.
2765         * config/i386/sfp-machine.h: New file.
2766         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
2767         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
2768         and soft-fp/t-softfp to tmake_file.
2769         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
2770         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
2771
2772         * config/i386/t-linux64 (softfp_wrap_start): New.
2773         (softfp_wrap_end): New.
2774         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
2775         supported for TARGET_64BIT.
2776
2777 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
2778
2779         * c-common.c (c_common_signed_or_unsigned_type): Emulate
2780         c_common_unsigned_type behavior.
2781
2782 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
2783
2784         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
2785         calls as pure.
2786
2787 2007-05-16  Eric Christopher  <echristo@apple.com>
2788
2789         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
2790         saving after stack push. Set sp_offset whenever we push.
2791         (rs6000_emit_epilogue): Move altivec register restore before
2792         stack push.
2793
2794 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
2795
2796         * configure.ac: Allow sysroots to be relocated under $prefix as
2797         well as $exec_prefix.
2798         * configure: Regenerate.
2799
2800 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
2801
2802         Revert:
2803
2804         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
2805
2806         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
2807         (gcc_tooldir): Likewise.
2808         * configure: Regenerate.
2809         * Makefile.in (libsubdir_to_prefix): New variable, based on the
2810         old configure.ac gcc_tooldir setting.
2811         (prefix_to_exec_prefix): New variable.
2812         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
2813         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
2814
2815 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
2816
2817         * c-typeck.c (build_binary_op): Return early for error.
2818
2819 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
2820
2821         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
2822         struct nb_iter_bound.
2823         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
2824         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
2825         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
2826         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
2827         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
2828         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
2829         (del_scev_info): Use ggc_free.
2830         (scev_initialize): Allocate scalar_evolution_info in gc memory.
2831         * loop-init.c: Include ggc.h.
2832         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
2833         (loop_optimizer_finalize): Use ggc_free.
2834         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
2835         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
2836         pass_iv_optimize): Add TODO_ggc_collect.
2837         * function.h (struct function): Remove skip marker from x_current_loops.
2838         * cfgloop.c: Include ggc.h.
2839         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
2840         memory.
2841         (establish_preds): Vector superloops is gc allocated.
2842         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
2843         loop->exits list.
2844         (flow_loops_find): Vector larray is gc allocated.
2845         (loop_exit_free): Use ggc_free.
2846         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
2847         that head of exits list is now not a part of struct loop.
2848         (record_loop_exits): Allocate exits table in gc memory.
2849         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
2850         head of exits list is now not a part of struct loop.
2851         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
2852         struct loop_exit): Add GTY marker.
2853         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
2854         Add skip marker to aux field.  Make head of exits list a separate
2855         object.
2856         (struct loops): Add GTY marker.  Make larray vector gc allocated.
2857         Add param marker to exits table.
2858         (get_loops): Type changed.
2859         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
2860         dependency.
2861         (cfgloop.o, loop-init.o): Add ggc.h dependency.
2862         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
2863         * basic-block.h (struct basic_block_def): Remove skip marker from
2864         loop_father field.
2865
2866 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
2867
2868         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
2869         of 0 in the call to expand_expr().
2870         (expand_builtin_mathfn_3): Ditto.
2871         (expand_builtin_interclass_mathfn): Ditto.
2872         (expand_builtin_cexpi): Ditto.
2873         (expand_builtin_int_roundingfn): Ditto.
2874         (expand_builtin_int_roundingfn_2): Ditto.
2875         (expand_builtin_pow): Ditto.
2876         (expand_builtin_powi): Ditto.
2877         (expand_builtin_bswap): Ditto.
2878         (expand_builtin_unop): Ditto.
2879         (expand_builtin_fabs): Ditto.
2880         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
2881         the call to expand_expr().
2882         (expand_builtin_sync_operation): Ditto.
2883         (expand_builtin_compare_and_swap): Ditto.
2884         (expand_builtin_lock_test_and_set): Ditto.
2885         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
2886         instead of 0 in the call to expand_expr().
2887         (expand_builtin_extract_return_addr): Ditto.
2888         (expand_builtin_eh_return): Ditto.
2889         (expand_eh_return): Ditto.
2890         * explow.c (expr_size): Ditto.
2891         * expr.c (optimize_bitfield_assignment_op): Ditto.
2892         (expand_assignement): Ditto.
2893         (store_expr): Ditto.
2894         (store_field): Ditto.
2895         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
2896         the call to expand_expr().
2897         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
2898         in the call to expand_expr().
2899         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
2900         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
2901         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
2902         of expand_expr().
2903         * optabs.c (expand_vec_shift_expr): Ditto.
2904         (expand_vec_cond_expr): Ditto.
2905         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
2906         call to expand_expr().
2907         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
2908         in the call to expand_expr().
2909
2910 2007-05-14  Dave Korn  <dave.korn@artimi.com>
2911
2912         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
2913
2914 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
2915
2916         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
2917         instead of c_common_unsigned_type.
2918         (c_common_unsigned_type): Remove.
2919         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
2920         c_common_unsigned_type.
2921         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
2922         c_common_unsigned_type.
2923         * c-common.h (c_common_unsigned_type): Remove.
2924         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
2925         c_common_unsigned_type.
2926         * c-format.c (check_format_types): Use unsigned_type_for instead of
2927         c_common_unsigned_type.
2928         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
2929         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
2930         c_common_unsigned_type.
2931         * convert.c (convert_to_integer): Use unsigned_type_for instead of
2932         lang_hooks.types.unsigned_type.
2933         * expmed.c (make_tree): Use unsigned_type_for instead of
2934         lang_hooks.types.unsigned_type.
2935         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
2936         lang_hooks.types.unsigned_type.
2937         (build_range_check): Likewise.
2938         (fold_unary): Likewise.
2939         (fold_binary): Likewise.
2940         (fold_ternary): Likewise.
2941         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
2942         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
2943         * tree.c (get_unsigned_type): New.
2944         (unsigned_type_for): Use get_unsigned_type instead of
2945         lang_hooks.types.unsigned_type.
2946
2947 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
2948
2949         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
2950         to m68k_get_function_kind.  Update its prototype.
2951         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
2952         interrupt_thread.
2953         (m68k_interrupt_function_p): Return enum m68k_function_type
2954         instead of bool.  Rename to m68k_get_function_kind.
2955         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
2956         target is not fido.
2957         (m68k_compute_frame_layout): Don't mark any register for save
2958         if an interrupt_thread attribute is specified.
2959         (m68k_hard_regno_rename_ok): Update a use of
2960         m68k_interrupt_function_p.
2961         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
2962         m68k_interrupt_function_p.
2963         (m68k_function_type): New.
2964         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
2965         for a function with an interrupt_thread attribute.
2966         * doc/extend.texi: Document the interrupt_thread attribute.
2967
2968 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
2969
2970         Fix PR tree-optimization/31911
2971         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
2972         if they didn't change the expression.
2973
2974 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
2975
2976         * tree-scalar-evolution.c (resolve_mixers): Exported.
2977         * tree-scalar-evolution.h (resolve_mixers): Declare.
2978         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
2979         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
2980         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
2981         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
2982         init_array_ref, init_pointer_ref, analyze_indirect_ref,
2983         strip_conversion, analyze_offset_expr, address_analysis,
2984         object_analysis, analyze_offset): Removed.
2985         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
2986         split_constant_offset, canonicalize_base_object_address,
2987         object_address_invariant_in_loop_p, disjoint_objects_p,
2988         dr_may_alias_p, dr_address_invariant_p): New functions.
2989         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
2990         and dr_analyze_alias.
2991         (initialize_data_dependence_relation): Use dr_may_alias_p
2992         and object_address_invariant_in_loop_p.
2993         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
2994         is chrec_dont_know.
2995         (find_data_references_in_stmt): Restrict the analysis of data references
2996         to the given loop nest.
2997         (find_data_references_in_loop): Made static.  Pass loop nest to
2998         find_data_references_in_stmt.
2999         (compute_data_dependences_for_loop): Use DR_VOPS.
3000         (free_data_ref): Free DR_VOPS.
3001         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
3002         (struct innermost_loop_behavior): ... new.
3003         (struct base_object_info): Replaced by ...
3004         (struct indices): ... new.
3005         (struct dr_alias): New.
3006         (enum data_ref_type): Removed.
3007         (struct data_reference): Consist of struct innermost_loop_behavior,
3008         struct indices and struct dr_alias.
3009         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
3010         (DR_MEMTAG): Renamed to ...
3011         (DR_SYMBOL_TAG): ... this.
3012         (find_data_references_in_loop): Declaration removed.
3013         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
3014         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
3015         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
3016         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
3017
3018 2007-05-13  Revital Eres  <eres@il.ibm.com>
3019
3020         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
3021         which walks virtual def-use chains to find redundant stores.
3022         (dse_optimize_stmt): Call it.
3023
3024 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
3025
3026         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
3027         * passes.c (init_optimization_passes): Move pass_jump_bypass
3028         after loop2.
3029
3030         * basic-block.h (bb_has_eh_pred): Fix style issue.
3031
3032 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
3033
3034         PR rtl-optimization/31848
3035         * loop-invariant.c (move_invariant_reg): If we move an insn
3036         with a REG_EQUAL note, and that insn is not always executed,
3037         remove the REG_EQUAL note.
3038
3039 2007-05-12  Richard Guenther  <rguenther@suse.de>
3040
3041         PR tree-optimization/31797
3042         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
3043         propagate into a stmt that has volatile ops.
3044
3045 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
3046
3047         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
3048         (gcc_tooldir): Likewise.
3049         * configure: Regenerate.
3050         * Makefile.in (libsubdir_to_prefix): New variable, based on the
3051         old configure.ac gcc_tooldir setting.
3052         (prefix_to_exec_prefix): New variable.
3053         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
3054         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
3055
3056 2007-05-11  Silvius Rus  <rus@google.com>
3057
3058         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
3059         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
3060         * c-common.h (strict_aliasing_warning): Change return type.
3061         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
3062         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
3063         (build_c_cast): Condition call to strict_aliasing_warning.
3064         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
3065         * flags.h (set_Wstrict_aliasing): Declare.
3066         * opts.c (set_Wstrict_alising): Define, add call to.
3067         * tree-flow.h (strict_aliasing_warning_backend): Declare.
3068         * tree-ssa-alias-warnings.c: New file.
3069         * tree-ssa-alias.c (compute_may_aliases): Add call to
3070         strict_aliasing_warning_backend.
3071
3072 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
3073
3074         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
3075         Use loop_depth and loop_outer accessor functions.
3076         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
3077         determine_invariantness_stmt, move_computations_stmt): Ditto.
3078         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
3079         add_loop, loopify, unloop, fix_loop_structure): Ditto.
3080         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
3081         * tree-scalar-evolution.c (interpret_loop_phi,
3082         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
3083         instantiate_parameters_1, scev_const_prop): Ditto.
3084         * cfghooks.c (make_forwarder_block): Ditto.
3085         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
3086         * modulo-sched.c (loop_canon_p): Ditto.
3087         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
3088         slpeel_can_duplicate_loop_p): Ditto.
3089         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
3090         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
3091         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
3092         cancel_loop, verify_loop_structure): Ditto.
3093         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
3094         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
3095         superloops vector instead of "pred" array.
3096         (establish_preds): Take father loop as an argument.  Initialize the
3097         superloops vector.
3098         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
3099         initialize loop->outer.
3100         (flow_loop_tree_node_remove): Truncate the superloops vector.
3101         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
3102         "pred" merged to "superloops" vector.
3103         (loop_depth, loop_outer): New.
3104         (fel_init): Use loop_outer.
3105
3106 2007-05-11  Jan Hubicka  <jh@suse.cz>
3107
3108         * cgraphunit.c: Include gt-cgraphunit.h
3109         (static_ctors, static_dtors): New static vars.
3110         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
3111         based on implementation in c-common.c
3112         (cgraph_finalize_function): Call record_cdtor_fn.
3113         (cgraph_optimize): Call cgraph_build_cdtor_fns.
3114         * decl.c (finish_function): Do not call c_record_cdtor_fn.
3115         (c_write_global_declarations): Do not call c_build_cdtor_fns.
3116         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
3117         build_cdtor, c_build_cdtor_fns): Remove.
3118         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
3119         c_build_cdtor_fns): Remove prototype.
3120
3121 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
3122
3123         PR other/31852
3124         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
3125         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
3126         * builtins.c (fold_builtin_memchr): New.
3127         (expand_builtin_memchr): Call the latter.
3128         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
3129         * doc/extend.texi ([Other built-in functions provided by GCC]):
3130         Document memchr.
3131
3132 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
3133
3134         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
3135         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
3136         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
3137         PFPO_OP1_TYPE_SHIFT): Constants added.
3138         (DFP_ALL): Mode macro defined.
3139         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
3140         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
3141         Insn definitions added.
3142         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
3143         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
3144         Expanders added.
3145
3146 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
3147
3148         PR tree-optimization/31885
3149         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
3150         to be undetermined.
3151         (automatically_generated_chrec_p): Return false for NULL.
3152
3153 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
3154
3155         * config/bfin/bfin.h (MOVE_RATIO): Define.
3156
3157 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
3158
3159         * config.gcc (sparc-wrs-vxworks): New target.
3160         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
3161         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
3162         * config/sparc/sparc.h: Include vxworks-dummy.h.
3163         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
3164         include LABEL_REFs too.
3165         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
3166         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
3167         VxWorks.
3168         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
3169         on VxWorks.
3170         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
3171         (sparc_emit_call_insn): New function.
3172         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
3173         functions when generating VxWorks PIC.
3174         * config/sparc/sparc.md (vxworks_load_got): New pattern.
3175         (call, call_value): Use sparc_emit_call_insn instead of
3176         emit_call_insn.
3177
3178 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
3179
3180         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
3181
3182 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
3183
3184         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
3185         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
3186         instead of operand_subword.
3187
3188 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
3189
3190         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
3191         * config/bfin/bfin.c (bfin_local_alignment): New function.
3192         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
3193
3194 2007-05-08  Chao-ying Fu  <fu@mips.com>
3195
3196         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
3197         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
3198         (smsub_widen_optab, umsub_widen_optab): Define.
3199         * optabs.c (init_optabs): Initialize smsub_widen_optab and
3200         umsub_widen_optab.
3201         * genopinit.c (optabs): Fill in smsub_widen_optab and
3202         umsub_widen_optab.
3203         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
3204         and umsub_widen_optab to implement multiply-subtract sequences.
3205         * config/mips/mips.md (*msac<u>_di): Rename to...
3206         (<u>msubsidi4): ...this.  Extend condition to include
3207         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
3208         of operand 0 to "ka" and use the three-operand form of msub<u>
3209         for TARGET_DSPR2.
3210         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
3211         to define_expands.
3212
3213 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3214
3215         PR rtl-optimization/28011
3216         * reload.c (push_reload): Set dont_share if IN appears in OUT
3217         also when IN is a PLUS rtx.
3218         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
3219         are same PLUS rtx.
3220
3221 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
3222
3223         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
3224         call unshare_all_decls.
3225         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
3226         (unshare_all_decls): Remove.
3227
3228 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
3229
3230         PR 31847
3231         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
3232         dumps.
3233
3234 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
3235             Nigel Stephens  <nigel@mips.com>
3236
3237         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
3238         Update comments and all uses.
3239         (MIN_FPRS_PER_FMT): Define.
3240         * config/mips/mips.c (function_arg): Fix to correctly handle
3241         the -mips32r2 -mfp64 -mabi=32 case.
3242         (override_options): Enable use of odd-numbered registers for
3243         SFmode values on MIPS32.
3244         (mips_save_reg_p): Save whole floating-point register pair if
3245         either half is used.
3246         (compute_frame_size): Fix comment.
3247
3248 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
3249
3250         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
3251         argument of type bool.
3252         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
3253         argument. Safely select temporary P register according to it.
3254         (do_link): Change call site of add_to_reg accordingly.
3255         (do_unlink): Add epilogue_p as a fourth argument and pass it
3256         to add_to_reg.
3257         (expand_interrupt_handler_epilogue): Change call of do_unlink
3258         accordingly.
3259         (bfin_expand_prologue): Add a third argument sibcall_p.
3260         * config/bfin/bfin.md (epilogue): Change call of
3261         bfin_expand_epilogue accordingly.
3262         (sibcall_epilogue): Likewise.
3263         (eh_return_internal): Likewise.
3264
3265         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
3266         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
3267         * config/bfin/bfin.c (bfin_handle_option): Handle
3268         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
3269         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
3270         Support bf534, bf536 and bf561.
3271         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
3272
3273 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
3274
3275         PR target/31854
3276         * config/i386/i386.c (ix86_function_regparm): Process local
3277         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
3278
3279 2007-05-07  Mike Stump  <mrs@apple.com>
3280
3281         * doc/invoke.texi (Warning Options): Document that -Wempty-body
3282         also checks for and while statements in C++.
3283
3284 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
3285
3286         * gcc.c (at_file_supplied): New variable.
3287         (main): Set it if we expanded argv.
3288         (do_spec_1): Pass an @-file to the linker if we were called with
3289         an @-file argument and HAVE_GNU_LD.
3290         * collect2.c (at_file_supplied): New variable.
3291         (response_file): New variable.
3292         (collect_exit): Unlink response_file if necessary.
3293         (handler): Likewise.
3294         (do_wait): Likewise.
3295         (main): Set at_file_supplied if we expanded argv.
3296         (collect_execute): Pass an @-file to subprocesses if we were called
3297         with an @-file argument.
3298         * configure.ac: Add define for HAVE_GNU_LD.
3299         * configure: Regenerate.
3300         * config.in: Regenerate.
3301
3302 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
3303
3304         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
3305         operand to HI mode.
3306         (mulsi3): New.
3307         (divsi3): New.
3308         (udivsi3): New.
3309
3310 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
3311
3312         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
3313         (TARGET_ENCODE_SECTION_INFO): Re-define.
3314         (m32c_encode_section_info): New
3315         (function_vector_handler): New
3316         (current_function_special_page_vector): New
3317         (m32c_special_page_vector_p): New.
3318         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
3319         Prototype.
3320         * config/m32c/jump.md: Added instruction JSRS for functions
3321         with attribute "function_vector".
3322         * doc/extend.texi (function_vector): Added description
3323         for M16C, M32C targets.
3324
3325 2007-05-07  DJ Delorie  <dj@redhat.com>
3326
3327         PR 31794
3328         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
3329         ashrpsi3, lshrpsi3): Update shift count constraint.
3330
3331 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
3332             Nathan Froyd  <froydnj@codesourcery.com>
3333
3334         PR 22133
3335         * c-incpath.c (add_path): Strip trailing path separators.
3336
3337 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
3338
3339         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
3340         Free dominance info before purging EH edges.
3341         (eliminate_degenerate_phis): Likewise.
3342         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
3343
3344 2007-05-07  Jan Hubicka  <jh@suse.cz>
3345
3346         * gimplify.c (gimplify_expr): Do not crash when folding
3347         (void *)(int)&a + 4.
3348
3349 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3350
3351         PR driver/31694
3352         * c-opts.c (lang_fortran): Make it non static.
3353         * c-common.h (lang_fortran): New prototype.
3354         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
3355         -lang-fortran option was passed by the driver.
3356
3357 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
3358
3359         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
3360         of ASSERT_CHECKING.  Tweak message.
3361
3362 2007-05-06  Revital Eres  <eres@il.ibm.com>
3363
3364         PR 30957
3365         * loop-unroll.c (insert_var_expansion_initialization):
3366         Initialize the expansions with -zero instead of +zero.
3367
3368 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
3369
3370         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
3371         into pic and non-pic versions. Mark r19 as used for
3372         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
3373         for tgd_load, tld_load and tie_load .
3374         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
3375         version of tgd_load, tld_load and tie_load depending on the
3376         value of flag_pic.
3377
3378 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
3379             Jakub Jelinek  <jakub@redhat.com>
3380
3381         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
3382     &nbs