OSDN Git Service

924fc03da57cb288ea6e86f7baafc52d99a240bc
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
2
3         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
4         correct index when setting register save state for xd
5         registers.
6
7 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
8
9         * config/sh/sh.c (mark_use): Remove.
10
11 2007-07-12  Paul Brook  <paul@codesourcery.com>
12
13         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
14         reg does not overlap return value.
15
16 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
17
18         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
19         (set_expression_vuses): Ditto.
20         (init_pre): Initialize expression_vuses.
21
22 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
23
24         * config/i386/sse.md (storentdf, storentsf): New.
25
26 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
27
28         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
29         FUNCTION_DECL.
30         * tree.c (build_decl_stat): Move code from here...
31         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
32         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
33         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
34         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
35         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
36         FUNCTION_BOUNDARY.
37
38 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
39             Devang Patel  <dpatel@apple.com>
40
41         PR tree-optimization/25413
42         * targhooks.c (default_builtin_vector_alignment_reachable): New.
43         * targhooks.h (default_builtin_vector_alignment_reachable): New.
44         * tree.h (contains_packed_reference): New.
45         * expr.c (contains_packed_reference): New.
46         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
47         (vect_enhance_data_refs_alignment): Call
48         vector_alignment_reachable_p.
49         * target.h (vector_alignment_reachable): New builtin.
50         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
51         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
52         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
53
54 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
55
56         * target.h (builtin_vectorization_cost): Add new target builtin.
57         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
58         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
59         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
60         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
61         uninitialized variables.
62         * tree-vect-transform.c (cost_for_stmt): New function.
63         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
64         using cost 1 for all scalar stmts. Be less conservative when
65         estimating the number of prologue/epulogue iterations. Call
66         targetm.vectorize.builtin_vectorization_cost. Return
67         min_profitable_iters-1.
68         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
69         initialization cost instead of TARG_VEC_STMT_COST. Use
70         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
71         epilogue code. Fix epilogue cost computation.
72         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
73         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
74         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
75         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
76         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
77         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
78
79 2007-07-12  Richard Guenther  <rguenther@suse.de>
80
81         * gimplify.c (gimplify_conversion): Make sure that the result
82         from maybe_fold_offset_to_reference is trivially convertible
83         to the desired type before doing the simplification.
84         (gimplify_expr): Likewise.
85         * fold-const.c (fold_binary): Use the correct types for
86         building the simplified expression.
87
88 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
89
90         PR rtl-optimization/32729
91         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
92         that fallthru to exit.
93
94 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
95
96         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
97         (symDTPOFF2reg): Likewise.
98
99 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
100
101         PR tree-optimization/32663
102         
103         * tree.h (VALUE_HANDLE_VUSES): Remove.
104         (struct tree_value_handle): Remove vuses.
105
106         * tree-vn.c (create_value_handle_for_expr): Don't set
107         VALUE_HANDLE_VUSES. 
108
109         * tree-ssa-pre.c (expression_vuses): New.
110         (alloc_expression_id): Set up expression_vuses.
111         (get_expression_vuses): New.
112         (set_expression_vuses): Ditto.
113         (clear_expression_ids): Modify for expression_vuses.
114         (phi_translate_1): Ditto.
115         (phi_translate_set): Ditto.
116         (value_dies_in_block_x): Ditto
117         (valid_in_sets): Ditto.
118         (add_to_sets): Ditto.
119         (find_existing_value_expr): Ditto.
120         (create_value_handle_for_expr): Ditto.
121         (make_values_for_stmt): Ditto.
122         (vuse_equiv): Remove.
123
124 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
125
126         * Makefile.in (mostlyclean): Remove object files.
127
128 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
129
130         * toplev.c (no_new_pseudos): Deleted.
131         * rtl.h (no_new_pseudos): Deleted.
132         * tree-pass.h (pass_no_new_pseudos): Deleted. 
133         * passes.c (pass_no_new_pseudos): Deleted.
134         * final.c (rest_of_clean_state): Removed no_new_pseudos.
135         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
136         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
137         reload_completed.
138         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
139         * rtlhooks.c (gen_lowpart_general): Ditto.
140         * optabs.c (prepare_operand): Ditto.
141         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
142         no_new_pseudos.
143         * modulo-sched.c (rest_of_handle_sms): Ditto.
144         * see.c (rest_of_handle_see): Ditto.
145         * ifcvt.c (if_convert): Ditto.
146         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
147         reload_completed.
148         * init-regs.c (gate_initialize_regs): Deleted set of
149         no_new_pseudos.
150         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
151         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
152         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
153         
154 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
155
156         PR target/32661
157         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
158         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
159         (*vec_extractv2di_1_rex64): New insn pattern.
160
161 2007-07-11  David Daney  <ddaney@avtrex.com>
162
163         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
164         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
165         for SIGNAL_UNWIND_RETURN_COLUMN.
166         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
167         (DWARF_FRAME_REGNUM): Rewrite.
168         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
169
170 2007-07-11  Nick Clifton  <nickc@redhat.com>
171
172         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
173         delta and use gen_int_mode in place of GET_INT instead.
174
175 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
176
177         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
178         and letter field.
179
180 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
181
182         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
183         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
184         types or not.
185         * params.h (VERIFY_CANONICAL_TYPES): Remove.
186         (USE_CANONICAL_TYPES): New.
187         * doc/invoke.texi (verify-canonical-types): Remove.
188         (use-canonical-types): Add.
189
190 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
191
192         * config/spu/spu.c (spu_optimization_options): Remove setting of
193         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
194         (spu_override_options): Move it here.
195
196 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
197
198         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
199         * config/mips/mips.c (mips_cpu_info_table): Mention
200         MIPS_ISA_LEVEL_SPEC in the comment.
201
202 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
203
204         PR tree-optimization/32713
205         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
206
207 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
208
209         PR middle-end/30482
210         * c-opts.c (c_common_post_options): Do not change flag_complex_method
211         conditional to flag_isoc99.
212         (c_common_init_options): Do it here, unconditionally.
213
214 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
215
216         PR tree-optimization/32589
217         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
218         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
219         * tree-ssa-propagate.c (valid_gimple_expression_p): New
220         predicate, extracted from...
221         (set_rhs): ...here.  Call it for the expression on entry.
222         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
223         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
224         (simplify_binary_expression): Use valid_gimple_expression_p
225         to validate the simplification.
226         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
227
228 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
229
230         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
231         DWARF2_DEBUG on 32 bit target too.
232         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
233
234 2007-07-11  Nick Clifton  <nickc@redhat.com>
235
236         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
237         version for 64-bit hosts.
238
239 2007-07-10  David Daney  <ddaney@avtrex.com>
240
241         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
242         predicate.
243         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
244         call.
245         * config/mips/mips.c (mips_expand_synci_loop): New function.
246         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
247         (UNSPEC_RDHWR): Same.
248         (UNSPEC_SYNCI): Same.
249         (UNSPEC_SYNC): Same.
250         (clear_cache): New expand.
251         (sync): New insn.
252         (synci): Same.
253         (rdhwr): Same.
254         (clear_hazard): Same.
255         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
256         function.
257         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
258         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
259
260 2007-07-10  Ian Lance Taylor  <iant@google.com>
261
262         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
263         no_new_pseudos.
264
265 2007-07-10  David Daney  <ddaney@avtrex.com>
266
267         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
268         * builtins.c (expand_builtin___clear_cache): New function.
269         (expand_builtin): Call expand_builtin___clear_cache for
270         BUILT_IN_CLEAR_CACHE case.
271         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
272         * doc/md.texi (clear_cache): Document new instruction pattern.
273         * testsuite/gcc.dg/builtins-64.c: New test.
274
275 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
276
277         * config/cris/cris.md ("movsi"): Fix typo in last change.
278
279 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
280
281         PR 32617
282         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
283         FUNCTION_DECLs.
284         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
285         * varasm.c (assemble_start_function): Honor DECL_ALIGN
286         for FUNCTION_DECLs.  Don't use align_functions_log if
287         DECL_USER_ALIGN.
288         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
289         even for FUNCTION_DECLs.
290         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
291         FUNCTION_DECLs.
292         * tree.h (DECL_ALIGN): Update for new location of 'align'.
293         (DECL_FUNCTION_CODE): Update for new location and name of
294         'function_code'.
295         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
296         (struct tree_decl_common): Move 'align' and 'off_align' out
297         of union, ensure they're still on a 32-bit boundary.  Remove
298         other fields in union 'u1'.
299         (struct tree_function_decl): Add field 'function_code' replacing
300         'u1.f' in tree_decl_common.
301         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
302         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
303         (Variable Attributes): Cross-reference 'aligned' attribute
304         to Function Attributes.
305         * flags.h (force_align_functions_log): Delete.
306         * toplev.c (force_align_functions_log): Delete.
307
308 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
309
310         PR target/32708
311         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
312         (*vec_concatv2di_rex): New insn pattern.
313
314 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
315
316         PR target/32538
317         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
318
319 2007-07-10  Ian Lance Taylor  <iant@google.com>
320
321         Replace no_new_pseudos in backends.
322         * rtl.h (can_create_pseudo_p): Define.
323         * config/darwin.c (machopic_indirect_data_reference): Use
324         can_create_pseudo_p () instead of no_new_pseudos.
325         (machopic_indirect_data_reference): Likewise.
326         (machopic_legitimize_pic_address): Likewise.
327         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
328         (alpha_emit_set_const_1): Likewise.
329         (alpha_emit_set_const): Likewise.
330         (alpha_emit_conditional_move): Likewise.
331         (alpha_split_conditional_move): Likewise.
332         * config/alpha/alpha.md (various splitters): Likewise.
333         (movti): Likewise.
334         * config/arm/arm.c (legitimize_pic_address): Likewise.
335         (arm_load_pic_register): Likewise.
336         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
337         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
338         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
339         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
340         * config/cris/cris.md (movsi): Likewise.
341         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
342         (symGOTOFF2reg_hilo): Likewise.
343         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
344         * config/h8300/h8300.md (insv, extzv): Likewise.
345         * config/i386/i386.c (ix86_expand_move): Likewise.
346         (ix86_expand_vector_move): Likewise.
347         (ix86_prepare_fp_compare_args): Likewise.
348         (ix86_expand_carry_flag_compare): Likewise.
349         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
350         (tls_dynamic_gnu2_combine_32): Likewise.
351         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
352         * config/ia64/ia64.c (ia64_expand_move): Likewise.
353         (ia64_expand_movxf_movrf): Likewise.
354         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
355         (m32c_split_move): Likewise.
356         (m32c_expand_insv): Likewise.
357         * config/m68k/m68k.md (movsi): Likewise.
358         * config/mips/mips.c (mips_force_temporary): Likewise.
359         (mips_split_symbol): Likewise.
360         (mips_move_integer): Likewise.
361         (mips_legitimize_const_move): Likewise.
362         * config/mn10300/mn10300.md (movsi): Likewise.
363         * config/pa/pa.c (emit_move_sequence): Likewise.
364         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
365         (rs6000_got_register): Likewise.
366         (create_TOC_reference): Likewise.
367         (rs6000_machopic_legitimize_pic_address): Likewise.
368         * config/rs6000/rs6000.md (add<mode>3): Likewise.
369         (various splitters): Likewise.
370         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
371         (movsi_got): Likewise.
372         * config/s390/s390.c (emit_symbolic_move): Likewise.
373         * config/s390/s390.md (movhi, movqi): Likewise.
374         (load_multiple, store_multiple): Likewise.
375         * config/score/score.c (score_force_temporary): Likewise.
376         * config/sh/sh.c (prepare_move_operands): Likewise.
377         (prepare_cbranch_operands): Likewise.
378         (emit_fpu_switch): Likewise.
379         (fpscr_set_from_mem): Likewise.
380         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
381         (adddi3, subsi3): Likewise.
382         (various splitters): Likewise.
383         (divsi_inv_fp_combine): Likewise.
384         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
385         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
386         (sne): Likewise.
387         * config/sh/predicates.md (xor_operand): Likewise.
388         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
389         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
390         (movdi_pic_label_ref): Likewise.
391         * config/spu/spu.c (spu_split_immediate): Likewise.
392         * config/alpha/alpha.md (various splitters): Remove test
393         !no_new_pseudos || reload_completed.
394         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
395         no_new_pseudos.
396         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
397         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
398         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
399         * config/score/score.c (th_output_mi_thunk): Likewise.
400         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
401         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
402
403 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
404
405         PR rtl-optimization/32664
406         * mode-switching.c (create_pre_exit): Skip barrier insns.
407
408 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
409
410         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
411         force_gimple_operand_bsi.
412         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
413         rewrite_use_compare): Ditto.
414         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
415         Ditto.
416         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
417         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
418         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
419         * tree-profile.c (prepare_instrumented_value,
420         tree_gen_interval_profiler, tree_gen_pow2_profiler,
421         tree_gen_one_value_profiler, tree_gen_ic_profiler,
422         tree_gen_ic_func_profiler, tree_gen_average_profiler,
423         tree_gen_ior_profiler): Ditto.
424         * tree-ssa-reassoc.c (negate_value): Ditto.
425         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
426         Use force_gimple_operand_bsi.
427         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
428         * tree-if-conv.c (add_to_dst_predicate_list,
429         find_phi_replacement_condition): Ditto.
430         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
431         Call mark_symbols_for_renaming for new statements.
432         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
433
434 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
435
436         * cfghooks.c (remove_edge): New function.
437         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
438         loop exit rescans.
439         * cfghooks.h (remove_edge): Declare.
440         * cfg.c (remove_edge): Renamed to remove_edge_raw.
441         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
442
443 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
444
445         * optabs.h: Added declaration for signbit_optab.  
446         * optabs.c: (init_optabs): Added initialization for signbit_optab.
447         * genoptinit.c (optabs): Added entry for signbit insns.  
448         * builtins.c (expand_builtin_signbit): Added code to use a signbit
449         insn, if available.  
450         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
451         * config/s390/s390.md (signbit<mode>2): New expander.  
452
453 2007-07-09  Richard Guenther  <rguenther@suse.de>
454
455         PR middle-end/32698
456         * fold-const.c (fold_plusminus_mult_expr): Move constant
457         arguments second to allow decomposing.
458
459 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
460
461         Revert:
462         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
463         PR debug/23551
464         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
465         Disregard DECL_FROM_INLINE.
466
467 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
468
469         PR target/27855
470         * doc/invoke.texi: Add ftree-reassoc flag.
471         * common.opt (ftree-reassoc): New flag.
472         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
473         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
474
475 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
476
477         PR tree-optimization/32681
478         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
479         saved in second_edge->aux when first_bb is a loop header.
480
481 2007-07-09  Jan HUbicka  <jh@suse.cz>
482
483         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
484
485 2007-07-09  Richard Guenther  <rguenther@suse.de>
486
487         * c-decl.c (start_function): Do not promote return type.
488
489 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
490
491         * function.c (do_warn_unused_parameter): Do not warn if
492         TREE_NO_WARNING is set.
493
494 2007-07-08  Andreas Schwab  <schwab@suse.de>
495
496         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
497
498 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
499
500         Revert this patch:
501         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
502
503         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
504         apply to assembly language, too.
505         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
506
507 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
508
509         Revert (note the sccvn portions are *not* reverted)
510         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
511
512         Fix PR tree-optimization/23488
513
514         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
515         handles.
516         * tree-flow-inline.h (get_value_handle): Ditto.
517         * tree-ssa-pre.c (decl_vh_map): New.
518         (decl_node_pool): New.
519         (can_value_number_operation): Support DECL_P.
520         (can_PRE_operation): Ditto.
521         (create_expression_by_pieces): Ditto.
522         (find_existing_value_expr): Modify to differnetiate between
523         addressing and top level.
524         (create_value_handle_for_expr): Handle DECL's.
525         (poolify_tree): Ditto.
526         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
527         (make_values_for_stmt): Handle DECL's properly.
528         (init_pre): Reorg to not init useless things during FRE.
529         (fini_pre): Ditto.
530         * tree-flow.h: Include pointer-set.h.
531         (decl_vh_map): Declare.
532         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
533
534 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
535
536         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
537         the constraint description.
538         * doc/md.texi: Update documentation of AVR constraints.
539
540 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
541
542         * auto-inc-dec.c, config/arm/arm.c,
543         config/m32r/constraints.md, config/mips/mips.md,
544         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
545         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
546         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
547         typos.  Follow spelling conventions.
548         * doc/invoke.texi, doc/rtl.texi: Fix typos.
549
550         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
551         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
552
553         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
554         realloc_vuse): Remove.
555         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
556         and realloc_vuse.
557
558 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
559
560         Fix PR tree-optimization/23488
561
562         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
563         (try_to_simplify): Ditto.
564         (visit_use): Ditto.
565         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
566         handles.
567         * tree-flow-inline.h (get_value_handle): Ditto.
568         * tree-ssa-pre.c (decl_vh_map): New.
569         (decl_node_pool): New.
570         (can_value_number_operation): Support DECL_P.
571         (can_PRE_operation): Ditto.
572         (create_expression_by_pieces): Ditto.
573         (find_existing_value_expr): Modify to differnetiate between
574         addressing and top level.
575         (create_value_handle_for_expr): Handle DECL's.
576         (poolify_tree): Ditto.
577         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
578         (make_values_for_stmt): Handle DECL's properly.
579         (init_pre): Reorg to not init useless things during FRE.
580         (fini_pre): Ditto.
581         * tree-flow.h: Include pointer-set.h.
582         (decl_vh_map): Declare.
583         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
584                 
585 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
586
587         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
588         apply to assembly language, too.
589         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
590
591 2007-07-06  Ian Lance Taylor  <iant@google.com>
592             Zack Weinberg  <zackw@panix.com>
593
594         PR middle-end/32441
595         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
596
597 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
598
599         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
600         (prefetch): Likewise if "pref" would be used.
601
602 2007-07-06  Josh Conner  <jconner@apple.com>
603
604         PR middle-end/32602
605         PR middle-end/32603
606         * calls.c (store_one_arg): Handle arguments which are partially
607         on the stack when detecting argument overlap.
608
609 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
610
611         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
612         chosen during find_reloads.
613
614 2007-07-06  Richard Guenther  <rguenther@suse.de>
615
616         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
617         TYPE_ARG_TYPES for verification of argument types.  Use
618         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
619         parameters as variable arguments.
620
621 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
622
623         * libgcc2.h (word_type): Type definition removed.
624         (cmp_return_type, shift_count_type): Type definitions added.
625         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
626         replaced with shift_count_type.
627         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
628         cmp_return_type.
629         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
630         changed from word_type to Wtype.
631         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
632         replaced with shift_count_type.
633         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
634         cmp_return_type.
635         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
636         and libgcc_shift_count attribute added.
637         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
638         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
639         (TARGET_INITIALIZER): New target hooks added.
640         * targhooks.c (default_libgcc_cmp_return_mode,
641         default_libgcc_shift_count_mode): Default implementations for the new
642         target hooks added.
643         * targhooks.h (default_libgcc_cmp_return_mode,
644         default_libgcc_shift_count_mode): Function prototypes added.
645         * target.h (struct gcc_target): Fields for the new target hooks added.
646         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
647         as library call.
648         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
649         library call.
650
651         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
652         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
653
654         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
655         s390_libgcc_shift_count_mode): Functions added.
656         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
657         Target hooks defined.
658
659 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
660
661         * config/mips/mips.c (compute_frame_size): Restore the original
662         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
663         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
664         Document why the difference is needed.
665
666 2007-07-06  Richard Guenther  <rguenther@suse.de>
667
668         * c-common.c (boolean_increment): Use correctly typed
669         constant.
670
671 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
672
673         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
674         the topmost argument register is not also included in the save mask.
675         (mips16e_collect_argument_save_p): Take a pointer to the argument
676         register, rather than a pointer to the number of arguments.
677         (mips16e_collect_argument_saves): Only include argument saves
678         that aren't in the register mask.
679
680 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
681
682         PR rtl-optimization/32450
683         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
684         to ensure that instructions are not moved into the prologue when
685         profiling is on.  Remove unused prologue_end variable.
686         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
687         as a scheduling barrier.
688
689 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
690
691         PR debug/23551
692         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
693         Disregard DECL_FROM_INLINE.
694
695 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
696
697         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
698         IORing with a constant.
699
700 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
701
702         PR rtl-optimization/32475
703         * df-scan.c (df_def_record_1): Add a use of the stack pointer
704         for every definition of the stack pointer.
705
706 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
707
708         * arm.c (vfp3_const_double_index): Copy signed results of
709         REAL_VALUE_TO_INT into unsigned vars.
710
711 2007-07-05  Richard Guenther  <rguenther@suse.de>
712
713         PR middle-end/32639
714         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
715         FUNCTION_TYPE.
716         * tree-ssa.c (useless_type_conversion_p): Check canonical
717         types early.
718
719 2007-07-05 Anatoly Sokolov <aesok@post.ru>
720
721         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
722         zero_extendhisi2): Change to define_insn_and_split. 
723         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
724
725 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
726
727         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
728         pass_match_asm_constraints): New.
729         * passes.c (init_optimization_passes): Add new pass.
730         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
731         * function.h (struct function): Add has_asm_statement bit.
732         (current_function_has_asm_statement): New.
733         * tree-pass.h (pass_match_asm_constraints): New.
734
735 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
736
737         * config/mips/mips.c (mips_file_start): Avoid declaration
738         after code.
739
740 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
741
742         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
743
744 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
745
746         * rtl.def (NOTE): Change print format string to print
747         operand 5 as a note insn name.
748
749 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
750             David Ung  <davidu@mips.com>
751
752         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
753         * doc/invoke.texi: (MIPS Options): Document them.
754
755 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
756             David Ung  <davidu@mips.com>
757
758         Add support for SmartMIPS ASE.
759
760         * optabs.c (expand_binop_directly): New, broken out from...
761         (expand_binop): Here.  Make it try rotating in the other
762         direction even when the second operand isn't constant.
763         * config/mips/mips.md (*lwxs): New.
764         * config/mips/mips.opt (msmartmips): New.
765         * config/mips/mips.c (mips_lwxs_address_p): New.
766         (mips_rtx_costs): Make it recognize scaled indexed addressing.
767         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
768         __mips_smartmips when compiling for TARGET_SMARTMIPS.
769         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
770         (ISA_HAS_LWXS): New.
771         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
772         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
773         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
774         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
775         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
776         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
777         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
778
779 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
780
781         * tree-vectorizer.c (new_loop_vec_info): Initialize
782         LOOP_VINFO_COST_MODEL_MIN_ITERS.
783         * tree-vectorizer.h (_loop_vec_info): Added new filed
784         min_profitable_iters.
785         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
786         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
787         * tree-vect-analyze.c (vect_analyze_operations): Set
788         LOOP_VINFO_COST_MODEL_MIN_ITERS.
789         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
790         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
791         Fix calculation of peel_iters_prologue. Move consideration of epilogue
792         and prologue cost to after they are computed.
793         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
794         TARG_VEC_STMT_COST.
795         (vect_model_simple_cost): Takes additional argument dt. Consider cost
796         of creating vectors from scalars according to dt.
797         (vect_model_store_cost): Likewise.
798         (vectorizable_call): Use dt array instead of scalar dt. Call
799         vect_model_simple_cost with additional argument dt.
800         (vectorizable_assignment): Likewise.
801         (vectorizable_operation): Likewise.
802         (vectorizable_type_demotion): Likewise.
803         (vectorizable_type_promotion): Likewise.
804         (vectorizable_store): Use dt array instead of scalar dt. Call
805         vect_model_store_cost with additional argument dt.
806         (vect_do_peeling_for_loop_bound): Don't call
807         vect_estimate_min_profitable_iters. Instead, lookup
808         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
809         "may not be profitable".
810
811 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
812
813         PR testsuite/32014
814         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
815         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
816         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
817         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
818
819 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
820
821         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
822         addressing modes cheaper.
823
824 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
825
826         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
827         (dw_ranges_struct): Rename block_num to num.  Adjust.
828         (dw_ranges_by_label_struct): New.
829         (ranges_by_label, ranges_by_label_allocated,
830         ranges_by_label_in_use): New variables.
831         (add_ranges_num): Factored most of the code out of...
832         (add_ranges): ... this one.  Rewrite in terms of the former.
833         (add_ranges_by_labels): New.
834         (output_ranges): Output by-label ranges.
835         (dwarf2out_finish): Output range for multiple-section
836         compile_unit.  Output standard DW_AT_low_pc in addition to
837         unexpected DW_AT_entry_pc.
838
839 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
840
841         PR tree-optimization/32604
842         PR tree-optimization/32606
843
844         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
845         (compute_antic_safe): Removed.
846         (ANTIC_SAFE_LOADS): Ditto.
847         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
848         (execute_pre): Don't call compute_antic_safe.
849         (vuse_equiv): New function.
850         (make_values_for_stmt): Use it
851         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
852         not always true.
853
854 2007-07-04 Anatoly Sokolov <aesok@post.ru>
855
856         PR target/31331
857         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
858         rather than a decl. 
859         (avr_attribute_table): Make "naked" attribute apply to function types
860         rather than to decls.
861         (avr_handle_fntype_attribute): New function.
862
863 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
864
865         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
866         after \.
867
868 2007-07-04  David Ung  <davidu@mips.com>
869             Joseph Myers  <joseph@codesourcery.com>
870
871         * config/mips/mips.md (type): Add logical, signext and move.
872         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
873         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
874         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
875         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
876         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
877         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
878         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
879         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
880         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
881         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
882         movv2sf_hardfloat_64bit): Use the new types.
883         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
884         *movdf_softfloat, *movdf_mips16): Use "multi".
885         (extendqihi2): Replace with a define_expand.
886         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
887         Based on extend<SHORT:mode><GPR:mode>2 patterns.
888         * config/mips/74k.md (r74k_int_logical): New reservation and
889         bypasses.
890         (r74k_int_arith): Remove "slt".
891         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
892         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
893         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
894         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
895         reservations for "arith".
896
897 2007-07-04  Richard Guenther  <rguenther@suse.de>
898
899         * tree-ssa.c (useless_type_conversion_p): Add handling for
900         scalar float and vector types.  Only call the types_compatible_p
901         langhook for aggregate types as last resort.  Follow the
902         rules.
903
904 2007-07-04  Richard Guenther  <rguenther@suse.de>
905
906         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
907         the same as NOP_EXPR.
908
909 2007-07-04  Nick Clifton  <nickc@redhat.com>
910
911         * target.h (struct gcc_target): Add target_help field.
912         * target-def.h (TARGET_HELP): New.
913         (TARGET_INITIALIZER): Use TARGET_HELP.
914         * opts.c (command_handle_option): Invoke target_help function, if
915         defined, when the user has specified --target-help on the command
916         line.
917         * doc/invoke.texi: Mention that --target-help might print
918         additional information.
919         * doc/tm.texi: Document TARGET_HELP hook.
920
921         * arm.c (TARGET_HELP): Override default definition.
922         (arm_target_help): New - display a wrapped list of cores and
923         architectures supported.
924
925 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
926
927         * config/gcc/v850/v850.c (expand_prologue): Make sure
928         GEN_INT() argument is sign extended rather than zero extended.
929         (expand_epilogue): Likewise.
930         (output_move_double): Delete.
931         * config/gcc/v850/v850-protos.h (output_move_double): Delete.
932         * config/gcc/v850/v850.md (movdi): Delete.
933         (*movdi_internal): Delete.
934         (movdf): Delete.
935         (*movdf_internal): Delete.
936
937 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
938
939         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
940         unless compiling RTP PIC.
941
942 2007-07-04  Richard Guenther  <rguenther@suse.de>
943
944         PR tree-optimization/32482
945         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
946         original ssa name if we didn't find a shift expression.
947         Fix shift constant for bit zero test.
948
949 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
950
951         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
952
953 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
954
955         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
956         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
957         * config/arm/vxworks.h (ASM_SPEC): Delete.
958         (SUBTARGET_EXTRA_ASM_SPEC): Define.
959
960 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
961
962         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
963         (DDR_REVERSED_P): New.
964         * tree-data-ref.c (initialize_data_dependence_relation,
965         build_classic_dist_vector): Set DDR_REVERSED_P.
966
967 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
968
969         PR middle-end/32457
970         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
971         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
972         init_omega_for_ddr_1): Use non conservative number of iterations
973         estimations.
974         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
975         (analyze_siv_subscript): Remove FIXME and reinitialization of 
976         last_conflicts to chrec_dont_know.
977         * testsuite/gfortran.dg/vect/pr32457.f90: New.
978
979 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
980
981         * tree.c (maybe_canonicalize_argtypes): Improve description.
982
983 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
984
985         * tree.c (maybe_canonicalize_argtypes): New.
986         (build_function_type): Set canonical type.
987         (build_method_type_directly): Ditto.
988         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
989         properly.
990
991 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
992
993         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
994         like PLUS_EXPR.
995         (rewrite_use_nonlinear_expr): Likewise.
996
997 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
998
999         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
1000
1001 2007-07-04  Ben Elliston  <bje@au.ibm.com>
1002
1003         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
1004         of this file.
1005
1006         * c-objc-common.c (c_types_compatible_p): Fix indentation.
1007
1008         * doc/tm.texi (Run-time Target): Capitalise "CPU".
1009         (Exception Handling): Likewise.
1010
1011 2007-07-03  Jan Hubicka  <jh@suse.cz>
1012
1013         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
1014
1015 2007-07-03  Eric Christopher  <echristo@apple.com>
1016
1017         * doc/cppopts.texi: Add conflicting option note to -dM.
1018         * doc/invoke.texi: Add note about possible conflicts with
1019         -E for -dCHARS and note that -dM will not produce
1020         any results if there is no machine dependent reorg.
1021         
1022 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
1023
1024         * tree.h (DECL_ALIGN): Back out previous change.
1025
1026 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
1027
1028         * configure.ac: Test for .dtprelword support on MIPS.
1029         * configure, config.in: Regenerate.
1030         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
1031         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
1032
1033 2007-07-03  Julian Brown  <julian@codesourcery.com>
1034
1035         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
1036         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
1037         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
1038         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
1039         capability.
1040         (all_fpus): Add FPUTYPE_VFP3.
1041         (fp_model_for_fpu): Add VFPv3 field.
1042         (arm_rtx_costs_1): Give cost to VFPv3 constants.
1043         (vfp3_const_double_index): New function. Return integer index of
1044         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
1045         isn't suitable.
1046         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
1047         and argument represents a valid RTX for a VFPv3 constant.
1048         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
1049         two instructions.
1050         (vfp_emit_fstmd): Similar, for fstmd.
1051         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
1052         constants, represented as integer indices.
1053         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
1054         VFP_REGNO_OK_FOR_DOUBLE macros.
1055         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
1056         (arm_file_start): Set float-abi attribute for VFPv3, and output
1057         correct ".fpu" assembler directive.
1058         (arm_dbx_register_numbering): Add FIXME.
1059         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
1060         (fputype): Add FPUTYPE_VFP3.
1061         (FIXED_REGISTERS): Add 32 registers for D16-D31.
1062         (CALL_USED_REGISTERS): Likewise.
1063         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
1064         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
1065         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
1066         (D7_VFP_REGNUM): New.
1067         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
1068         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
1069         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
1070         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
1071         (REG_ALLOC_ORDER): Adjust for VFPv3.
1072         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
1073         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
1074         VFP_LO_REGS, VFP_HI_REGS.
1075         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
1076         (IS_VFP_CLASS): Define macro.
1077         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
1078         IS_VFP_CLASS.
1079         (REGISTER_MOVE_COST): Likewise.
1080         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
1081         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
1082         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
1083         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
1084         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
1085         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
1086         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
1087         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
1088         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
1089         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
1090         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
1091         where appropriate for single-word registers.
1092         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
1093         As above. Fix type attributes.
1094         * config/arm/constraints.md (register_contraint "t"): Define.
1095         (register_constraint "w"): Change to D0-D15, or D0-D31 for
1096         VFPv3/NEON.
1097         (register_constraint "x"): Define.
1098         (constraint "Dv"): Define.
1099
1100 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
1101
1102         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
1103
1104 2007-07-03  Tom Tromey  <tromey@redhat.com>
1105
1106         * c-parser.c (objc_pq_context): Removed.
1107         (objc_need_raw_identifier): Likewise.
1108         (c_parser) <objc_pq_context>: New field.
1109         <objc_need_raw_identifier>: Likewise.
1110         (OBJC_NEED_RAW_IDENTIFIER): Removed.
1111         (c_lex_one_token): Update.
1112         (c_parser_objc_protocol_definition): Update.
1113         (c_parser_objc_method_definition): Update.
1114         (c_parser_objc_methodproto): Update.
1115         (c_parser_declspecs): Update.
1116
1117 2007-07-03  David Ung  <davidu@mips.com>
1118
1119         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
1120
1121 2007-07-03  David Ung  <davidu@mips.com>
1122             Richard Sandiford  <richard@codesourcery.com>
1123
1124         * doc/invoke.texi: Document -march=74kf3_2.
1125         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
1126         (TUNE_74K): Check for it.
1127         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
1128         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
1129         * config/mips/mips.md (cpu): Add 74kf3_2.
1130         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
1131         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
1132         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
1133         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
1134         74kf3_2 to the CPU list.
1135         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
1136         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
1137         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
1138         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
1139         (r74kf3_2_fxfer_from_c1): New insn reservations.
1140
1141 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
1142             David Ung  <davidu@mips.com>
1143
1144         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
1145         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
1146         and 74k[fx].  Document aliases for the new options.
1147         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
1148         (PROCESSOR_24KF2_1): ...this.
1149         (PROCESSOR_24KX): Rename to...
1150         (PROCESSOR_24KF1_1): ...this.
1151         (PROCESSOR_74KF): Rename to...
1152         (PROCESSOR_74KF2_1): ...this.
1153         (PROCESSOR_74KX): Rename to...
1154         (PROCESSOR_74KF1_1): ...this.
1155         (TUNE_74K): Update PROCESSOR_* names.
1156         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
1157         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
1158         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
1159         (mips_rtx_cost_data): Update processor names in comments.
1160         (mips_issue_rate): Update PROCESSOR_* names.
1161         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
1162         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
1163         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
1164         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
1165         Update cpu attribute names.
1166         (r24k_fpu_iss): Rename this reservation to...
1167         (r24kf2_1_fpu_iss): ...this and update all uses.
1168         (r24kx_fpu_iss): Rename this reservation to...
1169         (r24kf1_1_fpu_iss): ...this and update all uses.
1170         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
1171         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
1172         Update cpu attribute names.
1173
1174 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
1175
1176         * config/m32r/constraints.md: New file.
1177         * config/m32r/m32r.c: Include tm-constrs.h.
1178         (small_data_operand): Use satisfies_constraint_* instead of macro.
1179         (addr24_operand, gen_compare): Likewise.
1180         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
1181         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
1182         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
1183         EXTRA_CONSTRAINT): Likewise.
1184         * config/m32r/m32r.md: Include constraints.md.
1185         (*movsi_insn): Use satisfies_constraint_* instead of macro.
1186         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
1187         * config/m32r/predicates.md (conditional_move_operand): Likewise.
1188         (two_insn_const_operand, int8_operand, uint16_operand,
1189         reg_or_int16_operand, reg_or_uint16_operand,
1190         reg_or_cmp_int16_operand, cmp_int16_operand,
1191         seth_add3_operand): Likewise.
1192
1193 2007-07-03  Eric Christopher  <echristo@gmail.com>
1194
1195         * libgcc2.h: Conditionally declare __bswapsi2 and
1196         __bswapdi2.
1197         
1198 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
1199
1200         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
1201         defined.
1202
1203 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1204
1205         PR target/28307
1206         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
1207         (__gthrw_pragma): Provide default definition.
1208         (__gthrw2): Use it.
1209         * gthr-posix.c (__gthrw_pragma): Define.
1210
1211 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
1212
1213         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
1214         before declaring inequality.
1215
1216 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1217
1218         * combine.c (recog_for_combine): Log the success or failure of
1219           matching new insn patterns against the machine description in
1220           detailed dumps.
1221
1222 2007-07-03  Revital Eres  <eres@il.ibm.com>
1223
1224         * ddg.c (print_sccs): New function.
1225         (check_sccs): New function.
1226         (create_ddg_all_sccs): Use it.
1227         * ddg.h (print_sccs): Declare.
1228         * modulo-sched.c (sms_order_nodes): Call print_sccs.
1229
1230 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
1231
1232         * targhooks.h (default_mode_for_suffix): New function declaration.
1233         * targhooks.c (default_mode_for_suffix): New default target hook.
1234         * target.h (struct c): New structure in the targetm struct.
1235         (mode_for_suffix): New target hook as part of struct c.
1236         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
1237         default_mode_for_suffix.
1238         (TARGET_C): New define.
1239         * c-lex.c: Include "target.h".
1240         (interpret_float): Use targetm.c.mode_for_suffix to determine
1241         the mode for a given non-standard suffix.
1242         Makefile.in (c-lex.o): Depend on $(TARGET_H).
1243
1244         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
1245         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
1246
1247         * doc/extend.texi (Floating Types): New node.  Document __float80 and
1248         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
1249
1250 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1251
1252         PR target/32506
1253         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
1254         predicate instead of target_operand.
1255         (divsi3_i1_media, divsi3_media_2): Likewise.
1256
1257 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
1258
1259         * tree.h (alias_sets_might_conflict_p): Rename into
1260         alias_sets_must_conflict_p.
1261         * alias.c (alias_sets_might_conflict_p): Likewise.
1262         (alias_sets_conflict_p): Use it.
1263         (objects_must_conflict_p): Likewise.
1264         * c-common.c (strict_aliasing_warning): Adjust.
1265
1266 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1267
1268         * rtlhooks.c (gen_lowpart_if_possible): Check for
1269         invalid subreg before calling gen_lowpart_SUBREG.
1270
1271 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
1272
1273         * config/darwin9.h: Add copyright notice.
1274         (LINK_COMMAND_SPEC): Add comment.
1275         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
1276         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
1277         DARWIN_LIBSYSTEM_HAS_UNWIND.
1278
1279 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
1280
1281         PR libgomp/32468
1282         * omp-low.c (check_combined_parallel): New function.
1283         (lower_omp_parallel): Call it via walk_stmts, set
1284         OMP_PARALLEL_COMBINED if appropriate.
1285         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
1286         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
1287         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
1288         don't consider it as combined parallel.
1289
1290 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
1291
1292         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
1293         (gcc_tooldir): Likewise.
1294         * configure: Regenerate.
1295         * Makefile.in (libsubdir_to_prefix): New variable, based on the
1296         old configure.ac gcc_tooldir setting.
1297         (prefix_to_exec_prefix): New variable.
1298         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
1299         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
1300
1301 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
1302
1303         Fix PR tree-optimization/32583
1304         Fix PR tree-optimization/32584
1305         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
1306         (phi_translate_set): Use phi_translate directly now.
1307         (make_values_for_stmt): Don't value number RHS if we already know
1308         it is constant.
1309
1310 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
1311             Jim Wilson <wilson@specifix.com>
1312
1313         PR target/31684
1314         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
1315         copy_insn.
1316
1317 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
1318             Richard Sandiford  <richard@codesourcery.com>
1319             Nigel Stephens  <nigel@mips.com>
1320
1321         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
1322         (mips16e_output_save_restore): Declare.
1323         (mips16e_save_restore_pattern_p): Likewise.
1324         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
1325         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
1326         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
1327         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
1328         (BITSET_P): New global macro, extracted from...
1329         (mips_for_each_saved_reg): ...here.
1330         (mips16e_save_restore_info): New struct.
1331         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
1332         (mips16e_save_restore_regs): New variable.
1333         (mips_split_plus, mips16e_find_first_register): New functions.
1334         (mips16e_mask_registers): New function.
1335         (compute_frame_size): Expand the commentary before the function.
1336         Enforce the MIPS16e save and restore register range restrictions.
1337         Pad the general register save area at the low end.
1338         (mips16e_save_restore_reg, mips16e_build_save_restore)
1339         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
1340         (mips16e_output_save_restore, mips16e_collect_propagate_value)
1341         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
1342         New functions.
1343         (mips_expand_prologue, mips_expand_epilogue): Handle
1344         GENERATE_MIPS16E_SAVE_RESTORE.
1345         * config/mips/mips.md (*mips16e_save_restore): New pattern.
1346
1347 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
1348
1349         PR tree-optimization/31966
1350         PR tree-optimization/32533
1351         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
1352         "basic_block" description as its third argument.  Update function
1353         calls to get destination bb from "edge" argument.  Save "cond" into
1354         aux field of the edge.  Update prototype for changed arguments.
1355         (if_convertible_loop_p): Clear aux field of incoming edges if bb
1356         contains phi node.
1357         (find_phi_replacement_condition): Operate on incoming edges, not
1358         on predecessor blocks.  If there is a condition saved in the
1359         incoming edge aux field, AND it with incoming bb predicate.
1360         Return source bb of the first edge.
1361         (clean_predicate_lists): Clean aux field of outgoing node edges.
1362         (tree_if_conversion): Do not initialize cond variable. Move
1363         variable declaration into the loop.
1364         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
1365         initializations of new_stmt, arg0 and arg1 variables.
1366
1367 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
1368
1369         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
1370         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
1371
1372 2007-07-02  Richard Guenther  <rguenther@suse.de>
1373
1374         * tree-ssa.c (useless_type_conversion_p): Document
1375         future intent as defining the middle-end type system.
1376         Re-structure to call langhook last, group by type class,
1377         mark questionable parts.
1378
1379 2007-07-02  Richard Guenther  <rguenther@suse.de>
1380
1381         * tree-flow.h (types_compatible_p): Declare.
1382         * tree-ssa.c (types_compatible_p): New function.
1383         * ipa-type-escape.c (discover_unique_type): Use
1384         types_compatible_p instead of lang_hooks.types_compatible_p.
1385         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
1386         * tree-vn.c (expressions_equal_p): Likewise.
1387         * tree.c (fields_compatible_p): Likewise.
1388         * tree-ssa-dom.c (avail_expr_eq): Likewise.
1389         (cprop_operand): Use useless_type_conversion_p instead of
1390         lang_hooks.types_compatible_p.
1391         * tree-inline.c (setup_one_parameter): Likewise.
1392         (declare_return_variable): Likewise.
1393         * tree-nrv.c (tree_nrv): Likewise.
1394         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
1395         (maybe_fold_offset_to_component_ref): Likewise.
1396         (maybe_fold_offset_to_reference): Likewise.
1397         * tree-ssa-copy.c (may_propagate_copy): Likewise.
1398         (merge_alias_info): Likewise.
1399         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1400         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
1401         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
1402         * tree-tailcall.c (find_tail_calls): Likewise.
1403         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
1404         * gimplify.c (canonicalize_addr_expr): Likewise.
1405         (fold_indirect_ref_rhs): Likewise.
1406         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
1407         (cpt_same_type): Likewise.
1408         (check_pointer_types_r): Swap parameters to cpt_same_type
1409         where appropriate.
1410         * fold-const.c (fold_convert): Revert fix for PR15988.
1411         * tree-inline.c (setup_one_parameter): Instead fix it here by
1412         using fold_build1 instead of fold_convert and checking for
1413         error_mark_node.  Convert only if the conversion is necessary.
1414
1415 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
1416
1417         * configure.ac: Check for .gnu_attribute on Power.
1418         * configure: Regenerate.
1419         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
1420         attribute for floating-point ABI.
1421
1422 2007-07-02  Ira Rosen  <irar@il.ibm.com>
1423
1424         PR tree-optimization/32230
1425         PR tree-optimization/32477
1426         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
1427         address is a constant.
1428
1429 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
1430
1431         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
1432         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
1433         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
1434         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
1435         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
1436         64-bit targets.  Add support for *-elfoabi*.
1437         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
1438         different settings if $(tm_defines) does not select the EABI.
1439         (MULTILIB_EXCLUSIONS): Define in those circumstances.
1440         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
1441         (MIPS_ARCH_OPTION_SPEC): Likewise.
1442         (MIPS_ISA_LEVEL_SPEC): Likewise.
1443         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
1444         * config/mips/elfoabi.h: New file.
1445
1446 2007-07-02  Richard Guenther  <rguenther@suse.de>
1447
1448         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
1449         (useless_type_conversion_p): ... this.
1450         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
1451         (useless_type_conversion_p): ... this.
1452         * builtins.c (fold_builtin_memory_op): Rename
1453         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
1454         * tree-cfg.c (verify_expr): Likewise.
1455         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
1456         * tree-ssa-ccp.c (ccp_fold): Likewise.
1457         * tree-ssa-copy.c (may_propagate_copy): Likewise.
1458         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
1459         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1460         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
1461         * tree-ssa-pre.c (eliminate): Likewise.
1462         * tree-ssa.c (delete_tree_ssa): Likewise.
1463         (tree_ssa_useless_type_conversion): Likewise.
1464         * tree.c (build2_stat): Likewise.
1465
1466 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
1467
1468         Fix PR tree-optimization/32571
1469         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
1470         simplifying them.
1471
1472 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
1473
1474         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
1475         and other expected operations explicitly, change default to
1476         gcc_unreachable. 
1477
1478 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
1479
1480         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
1481         PARALLEL.
1482         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
1483         (tls_load_dot_plus_eight): Move the label number into the unspec.
1484         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
1485
1486 2007-07-01  Andreas Schwab  <schwab@suse.de>
1487
1488         * dwarf2out.c (initial_return_save): Define only if used.
1489
1490 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
1491
1492         Unreverting Richard's Revert of:
1493
1494         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
1495
1496         * dce.c (deletable_insn_p_1): New function, split out from...
1497         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
1498         specially, not those inside PARALLELs.  Remove BODY argument
1499         and adjust recursive call accordingly.
1500         (prescan_insns_for_dce): Update call to delete_insn_p.
1501
1502 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
1503             Revital Eres  <eres@il.ibm.com>
1504
1505         * ddg.c (create_ddg_all_sccs): Fix missed
1506         initialization of scc_nodes.
1507
1508 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
1509
1510         PR middle-end/32559
1511         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
1512         X + ~X to 1 only for INTEGRAL_TYPE_P type.
1513
1514 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
1515
1516         * configure.ac: Check for .gnu_attribute on MIPS.
1517         * configure, config.in: Regenerate.
1518         * config/mips/mips.c (mips_file_start): If supported, output
1519         attribute for floating-point ABI.
1520
1521 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
1522
1523         PR target/32433
1524         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
1525         (ffs_cmove): New expander to expand using ctz pattern.
1526         (*ffs_cmove): Remove pattern.
1527         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
1528         (ffsdi2): Expand using ctz pattern.
1529         (*ffs_rex64): Remove pattern.
1530
1531 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1532
1533         PR rtl-optimization/32296
1534         * pa.md (return): Delete pattern.
1535         (return_internal): Remove "(const_int 1)" from pattern.
1536         (epilogue): Use return_internal pattern for trivial returns.
1537         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
1538         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
1539
1540 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
1541
1542         * tree-ssa-pre.c (is_exception_related): New function
1543         (can_value_number_operation): Use it.
1544
1545 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
1546         
1547         Fix PR tree-optimization/32540
1548         Fix PR tree-optimization/31651
1549
1550         * tree-ssa-sccvn.c: New file.
1551
1552         * tree-ssa-sccvn.h: Ditto.
1553         
1554         * tree-vn.c: Include tree-ssa-sccvn.h
1555         (val_expr_paid_d): Removed.
1556         (value_table): Ditto.
1557         (vn_compute): Ditto.
1558         (val_expr_pair_hash): Ditto.
1559         (val_expr_pair_expr_eq): Ditto.
1560         (copy_vuses_from_stmt): Ditto.
1561         (vn_delete): Ditto.
1562         (vn_init): Ditto.
1563         (shared_vuses_from_stmt): Ditto.
1564         (print_creation_to_file): Moved up.
1565         (sort_vuses): Ditto.
1566         (sort_vuses_heap): Ditto.
1567         (set_value_handle): Make non-static.
1568         (make_value_handle): Ditto.
1569         (vn_add): Rewritten to use sccvn lookups.
1570         (vn_add_with_vuses): Ditto.
1571         (vn_lookup): Ditto (and second argument removed).
1572         (vn_lookup_with_vuses): Ditto.
1573         (vn_lookup_or_add): Ditto (and second argument removed);
1574         (vn_lookup_or_add_with_vuses): Ditto.
1575         (vn_lookup_with_stmt): New.
1576         (vn_lookup_or_add_with_stmt): Ditto.
1577         (create_value_handle_for_expr): Ditto.
1578
1579         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
1580         (seen_during_translate): New function.
1581         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
1582         (phi_trans_add): Ditto.
1583         (constant_expr_p): FIELD_DECL is always constant.
1584         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
1585         Use constant_expr_p.
1586         Avoid infinite recursion on mutually valued expressions.
1587         Change callers of vn_lookup_or_add.
1588         (phi_translate): New function.
1589         (compute_antic_safe): Allow phi nodes.
1590         (create_component_ref_by_pieces): Update for FIELD_DECL change.
1591         (find_or_generate_expression): Rewrite slightly.
1592         (create_expression_by_pieces): Updated for vn_lookup_or_add
1593         change.
1594         Update VN_INFO for new names.
1595         (insert_into_preds_of_block): Update for new names.
1596         (add_to_exp_gen): New function.
1597         (add_to_sets): Use vn_lookup_or_add_with_stmt.
1598         (find_existing_value_expr): Rewrite to changed vn_lookup.
1599         (create_value_expr_from): Ditto, and use add_to_exp_gen.
1600         (try_look_through_load): Removed.
1601         (try_combine_conversion): Ditto.
1602         (get_sccvn_value): New function.
1603         (make_values_for_phi): Ditto.
1604         (make_values_for_stmt): Ditto.
1605         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
1606         SCCVN.
1607         (init_pre): Update for SCCVN changes.
1608         (fini_pre): Ditto.
1609         (execute_pre): Ditto.
1610
1611         * tree-flow.h (make_value_handle): Declare.
1612         (set_value_handle): Ditto.
1613         (sort_vuses_heap): Ditto.
1614         (vn_lookup_or_add_with_stmt): Ditto.
1615         (vn_lookup_with_stmt): Ditto.
1616         (vn_compute): Remove.
1617         (vn_init): Ditto.
1618         (vn_delete): Ditto.
1619         (vn_lookup): Update arguments.
1620
1621         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
1622         (tree-vn.o): Ditto.
1623         (tree-ssa-sccvn.o): New.
1624         (OBJS-common): Add tree-ssa-sccvn.o
1625         
1626 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1627
1628         PR c/4076
1629         * c-typeck.c (build_external_ref): Don't mark as used if called
1630         from itself.
1631         * calls.c (rtx_for_function_call): Likewise.
1632         
1633 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
1634
1635         Revert:
1636
1637         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
1638
1639         * dce.c (deletable_insn_p_1): New function, split out from...
1640         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
1641         specially, not those inside PARALLELs.  Remove BODY argument
1642         and adjust recursive call accordingly.
1643         (prescan_insns_for_dce): Update call to delete_insn_p.
1644
1645 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
1646
1647         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
1648         (try_combine): Move potential calls to undo_all() so they happen
1649         before we commit to using the combined insns.
1650
1651 2006-06-30  Jan Hubicka  <jh@suse.cz>
1652
1653         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
1654         code.
1655
1656 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
1657
1658         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
1659         (cgraph_remove_unreachable_nodes): Likewise.
1660         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
1661         * ipa-inline.c (update_caller_keys): Cast according to the coding
1662         conventions.
1663         (cgraph_decide_recursive_inlining): Likewise.
1664         (cgraph_decide_inlining_of_small_function): Likewise.
1665         (try_inline): Likewise.
1666         (cgraph_decide_inlining_incrementally): Likewise.
1667         * ipa-pure-const.c (get_function_state): Likewise.
1668         (scan_function): Likewise.
1669         (analyze_function): Likewise.
1670         (static_execute): Likewise.
1671         * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
1672         (merge_callee_local_info): Likewise.
1673         (analyze_function): Use type safe memory macros.
1674         (static_execute): Likewise. Cast according to the coding conventions.
1675         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
1676         conventions.
1677         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
1678         names.
1679         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
1680         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
1681         variable names.
1682
1683 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1684
1685         PR middle-end/30024
1686         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
1687         for complex modes (both int and real).
1688
1689 2007-06-29  Jan Hubicka  <jh@suse.cz>
1690
1691         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
1692
1693 2007-06-29  Jan Hubicka  <jh@suse.cz>
1694
1695         PR middle-end/32372
1696         * cse.c (cse_insn): Avoid invalid sharing in between register note and
1697         the insn pattern.
1698
1699 2007-06-29  Anatoly Sokolov <aesok@post.ru>
1700
1701         PR target/32335
1702         * config/avr/avr.c: Include dataflow header file.
1703         (expand_prologue): Adjust for prologue insn change.
1704         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
1705         inside a insn.
1706
1707 2007-06-29  Richard Guenther  <rguenther@suse.de>
1708
1709         PR middle-end/32493
1710         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
1711         during type verification.
1712
1713 2007-06-29  Jan Hubicka  <jh@suse.cz>
1714
1715         * recog.c (validate_change_rtx_1): Unshare TO argument.
1716
1717 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
1718
1719         PR tree-optimization/24659
1720         * tree-vect-transform.c (vectorizable_call): Handle
1721         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
1722
1723         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
1724         * config/i386/i386.c (enum ix86_builtins)
1725         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
1726         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
1727         description.
1728         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
1729         const using def_builtin_const.
1730         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
1731         input operands in the same modes as the result.
1732         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
1733
1734 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
1735
1736         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
1737         (df_set_dead_notes_for_mw): Likewise.
1738
1739 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
1740
1741         * c-common.c (pointer_int_sum): Do the negation in sizetype.
1742
1743 2007-06-28  DJ Delorie  <dj@redhat.com>
1744
1745         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
1746
1747 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
1748
1749         * doc/invoke.texi (C++ Dialect Options): Document
1750         fvisibility-ms-compat.
1751         * c.opt (fvisibility-ms-compat): New.
1752
1753 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1754
1755         PR tree-opt/32417
1756         * tree-affine.c (aff_combination_add_elt): Handle
1757         pointer addition specially.
1758
1759 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
1760
1761         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
1762         decl is non-external for AIX ABI.
1763
1764 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
1765
1766         * config/rs6000/predicates.md (current_file_function_operand):
1767         Ensure the symbol is non-external for AIX ABI.
1768
1769 2007-06-28  Nick Clifton  <nickc@redhat.com>
1770
1771         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
1772         (fdce, fdse, fpredictive-commoning): Likewise.
1773
1774 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
1775
1776         PR other/31400
1777         * gcc.c (process_command): Recognize the new -static-libgfortran
1778         option.
1779
1780 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1781
1782         PR target/32418
1783         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
1784         Use a call clobbered hard reg instead of a pseudo reg.
1785
1786 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
1787
1788         * config/sh/sh.md (load_gbr): Use correct operand constraint.
1789
1790 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
1791
1792         PR target/32479
1793         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
1794         REG_LIBCALL and REG_RETVAL notes.
1795         (divsi3, mulsi3): Likewise.
1796         (mulhisi3): Likewise.  Use emit_libcall_block.
1797         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
1798
1799 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
1800
1801         PR rtl-optimization/32481
1802         * combine.c (adjust_for_new_dest): Rescan the changed insn.
1803
1804 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
1805
1806         * dce.c (deletable_insn_p_1): New function, split out from...
1807         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
1808         specially, not those inside PARALLELs.  Remove BODY argument
1809         and adjust recursive call accordingly.
1810         (prescan_insns_for_dce): Update call to delete_insn_p.
1811
1812 2007-06-27  Richard Guenther  <rguenther@suse.de>
1813
1814         PR middle-end/32492
1815         * tree.h (fold_convertible_p): Declare.
1816         * fold-const.c (fold_convertible_p): New function.
1817         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
1818         instead of lang_hooks.types_compatible_p.
1819
1820 2007-06-26  Jan Hubicka  <jh@suse.cz>
1821
1822         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
1823         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
1824         early use validate_unshare_change.
1825         (reload_combine): Likewise.
1826         * recog.c (change_t): New field unshare.
1827         (validate_change_1): Rename from validate_change; add argument unshare.
1828         (validate_change): Turn into wrapper of validate_change_1; update
1829         prototype for bools.
1830         (validate_unshare_change): New.
1831         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
1832         calls of df_insn_rescan.
1833         * recog.h (validate_change): Replace ints by bools.
1834         (validate_unshare_change): Declare.
1835
1836 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
1837
1838         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
1839         
1840 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
1841
1842         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
1843
1844 2007-06-25  Jan Hubicka  <jh@suse.cz>
1845
1846         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
1847         uninlinable call.
1848         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
1849         cgraph_decide_inlining_incrementally): Move uninlinability checks to
1850         places other call site specific checks are performed.
1851
1852 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1853
1854         PR tree-opt/32421
1855         * tree-vect-transform.c (vectorizable_operation): Convert
1856         POINTER_PLUS_EXPR over to PLUS_EXPR.
1857
1858 2007-06-25  Chao-ying Fu  <fu@mips.com>
1859
1860         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
1861         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
1862         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
1863         Document GET_MODE_IBIT, and GET_MODE_FBIT.
1864
1865         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
1866         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1867         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
1868         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
1869         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
1870         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
1871         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
1872         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
1873         ALL_FIXED_POINT_MODE_P): New define.
1874         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1875         MODE_UACCUM.
1876         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
1877
1878         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
1879         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1880         MODE_VECTOR_UACCUM): New mode classes.
1881
1882         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
1883         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
1884         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
1885         USA, UDA, and UTA.
1886
1887         * genmodes.c (struct mode_data): Add ibit and fbit fields.
1888         (blank_mode): Initialize ibit and fbit.
1889         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
1890         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1891         MODE_UACCUM.
1892         (new_adjust): Change required_class to required_class_from and
1893         required_class_to for testing within a range.
1894         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1895         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1896         MODE_VECTOR_UACCUM.
1897         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
1898         (make_fixed_point_mode): New.
1899         (_ADD_ADJUST): Change C to C1 and C2.
1900         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
1901         use a range for machine classes.
1902         (ADJUST_IBIT, ADJUST_FBIT): New.
1903         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
1904         CONST_MODE_FBIT.
1905         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
1906         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1907         Emit adjustment for ibit and fbit.
1908         (emit_mode_ibit, emit_mode_fbit): New.
1909         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
1910
1911 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
1912
1913         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
1914         as the source of the set.
1915
1916 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
1917
1918         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
1919         FP_REGNO_P): Use IN_RANGE.
1920         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
1921         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
1922         (DATA_REG_P): Use DATA_REGNO_P.
1923         (FP_REG_P): Use FP_REGNO_P.
1924         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
1925         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
1926         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
1927
1928 2007-06-24  Jan Hubicka  <jh@suse.cz>
1929
1930         PR middle-end/30563
1931         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
1932
1933 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
1934
1935         PR middle-end/32461
1936         * fold-const.c (fold_binary): Strip nops of operand 0
1937         of BIT_NOT_EXPR before calling operand_equal_p.
1938         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
1939         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
1940
1941 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
1942
1943         * doc/extend.texi: Document that dllimport and dllexport imply
1944         default visibility.
1945         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
1946         imported or exported declaration, including type declarations.
1947         * c-common.c (handle_visibility_attribute): Check for conflicts
1948         with dllimport/dllexport.
1949         (c_determine_visibility): Handle dllimport/dllexport as an
1950         explicit visibility atttribute.
1951
1952 2007-06-23  Richard Guenther  <rguenther@suse.de>
1953
1954         PR tree-optimization/16876
1955         PR middle-end/29478
1956         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
1957         for CALL_EXPRs.
1958         * tree-inline.c (initialize_inlined_parameters): Do not call
1959         lang_hooks.tree_inlining.convert_parm_for_inlining.
1960         * cgraphbuild.c (initialize_inline_failed): Set inline failed
1961         reason for mismatched types.
1962         * gimplify.c (gimplify_call_expr): Verify the call expression
1963         arguments match the called function type signature.  Otherwise
1964         mark the call expression to be not considered for inlining
1965         using CALL_CANNOT_INLINE_P flag.
1966         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
1967         edges call expression.
1968         (cgraph_decide_inlining_of_small_function): Likewise.
1969         (cgraph_decide_inlining): Likewise.
1970         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
1971         Remove define.
1972         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
1973         * c-typeck.c (c_convert_parm_for_inlining): Remove.
1974         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
1975         Remove declaration.
1976         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
1977         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
1978         Remove.
1979         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
1980         convert_parm_for_inlining member.
1981
1982 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
1983
1984         PR target/31152
1985         * arm.md (negscc): Match the correct operand for optimized LT0 test.
1986         Remove optimization for GT.
1987
1988 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
1989
1990         PR middle-end/32437
1991         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
1992         is a PARALLEL.
1993         (prescan_insns_for_dce): Add extra parameter.
1994         
1995 2007-06-23  Jan Hubicka  <jh@suse.cz>
1996
1997         PR middle-end/31541
1998         * gimplify.c (mark_addressable): New function.
1999         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
2000
2001 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
2002
2003         PR middle-end/32374
2004         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
2005
2006 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
2007
2008         PR target/32413
2009         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
2010         moves between MMX/SSE registers to at least 8 units to prevent
2011         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
2012
2013 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
2014
2015         * config/i386/i386.c (override_options): Correct x86_sahf
2016         setting condition.
2017
2018 2007-06-21  David Daney  <ddaney@avtrex.com>
2019
2020         PR target/32406
2021         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
2022         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
2023         (exception_receiver): Renamed to ...
2024         (nonlocal_goto_receiver): ... this.
2025
2026 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
2027
2028         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
2029         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
2030         partial register accesses.
2031
2032 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
2033
2034         * fold-const.c (debug_fold_checksum): Move it under
2035         ENABLE_FOLD_CHECKING.
2036
2037 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
2038
2039         PR middle-end/20623
2040         * tree.h (debug_fold_checksum): Declared.
2041         * fold-const.c (build_fold_addr_expr_with_type_1): New.
2042         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
2043         build_fold_addr_expr_with_type_1.
2044         (fold_addr_expr, debug_fold_checksum): New.
2045         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
2046         (fold_unary, fold_comparison, split_address_to_core_and_offset):
2047         Use fold_addr_expr.
2048         
2049 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
2050
2051         PR tree-optimization/19590
2052         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
2053         of scev is a constant.
2054         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
2055
2056 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
2057
2058         * df-problems.c (df_note_bb_compute): Made computation of live
2059         info consistent with df_lr.
2060
2061 2007-06-21  Richard Guenther  <rguenther@suse.de>
2062
2063         PR tree-optimization/32453
2064         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
2065         for pointer anti-range.
2066
2067 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
2068
2069         * config/i386/i386.c (processor_target_table): Increase maximum
2070         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
2071         default 64bit.
2072
2073         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
2074         byte alignment if > 8 byte alignment is preferred.
2075         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2076
2077 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
2078
2079         PR tree-optimization/31866
2080         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
2081         if ASM_EXPR's input is not a SSA_NAME.
2082
2083         PR middle-end/32362
2084         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
2085         but decl is a global var, instead return decl.
2086         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
2087         even for is_global_var decls, if they are private in some outer
2088         context.
2089
2090 2007-06-21  Richard Guenther  <rguenther@suse.de>
2091
2092         PR tree-optimization/32451
2093         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
2094
2095 2007-06-21  Christian Bruel  <christian.bruel@st.com>
2096
2097         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
2098         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
2099         (push_regs): Changed saving order or banked registers.
2100         (sh_expand_epilogue): Likewise.
2101         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
2102         (FIRST_BANKED_REG): Likewise.
2103         (LAST_BANKED_REG): Likewise.
2104         * config/sh/sh.md (banked) New attribute.
2105         (in_delay_slot): Check banked attribute.
2106         
2107 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
2108
2109         PR tree-optimization/32075
2110         * tree-data-ref.c (subscript_dependence_tester_1, 
2111         analyze_miv_subscript, analyze_overlapping_iterations,
2112         add_distance_for_zero_overlaps, build_classic_dist_vector,
2113         subscript_dependence_tester_1, analyze_overlapping_iterations,
2114         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
2115         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
2116         to evolution_function_is_affine_multivariate_p.
2117
2118 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
2119
2120         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
2121
2122 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2123
2124         PR target/32335
2125         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
2126         for TARGET_A16.
2127         * config/m32c/prologue.md (epilogue_exitd_16): New.
2128         (epilogue_reit_16): New.
2129         (epilogue_exitd): Rename to epilogue_exitd_24.
2130         (epilogue_reit): Rename to epilogue_reit_24.
2131
2132 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
2133             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
2134
2135         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
2136         New counters.
2137         * haifa-sched.c (queue_to_ready): Don't requeue next insn
2138         if dbg_cnt (sched_insn) reaches the limit.
2139         (choose_ready): New parameter INSN_PTR and new return value.
2140         (schedule_block): Handle dbg_cnt (sched_insn). Handle
2141         the new return value from choose_ready.
2142         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
2143         (rest_of_handle_global_alloc): New global_alloc_at_func.
2144
2145 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
2146
2147         PR tree-optimization/25737
2148         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
2149         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
2150         * tree-flow.h (struct fieldoff): Add new field alias_set.
2151         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
2152         argument addressable_type.  Set alias_set of fieldoff.
2153         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
2154         (create_overlap_variables_for): Pass alias_set from fieldoff to
2155         create_sft.
2156         * alias.c (get_alias_set): Use alias_set from SFT if set.
2157
2158 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
2159
2160         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
2161         of a variable as an unsigned HOST_WIDE_INT integer.
2162
2163 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
2164
2165         PR rtl-optimization/32405
2166         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
2167
2168 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
2169
2170         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
2171
2172         PR middle-end/31959
2173         * builtins.c: Include diagnostic.h.
2174         (expand_builtin_expect): Make gcc_assert more permissive.
2175         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
2176
2177         PR inline-asm/32109
2178         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
2179         and !allows_mem.
2180
2181         PR middle-end/32285
2182         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
2183         if ACCUMULATE_OUTGOING_ARGS.
2184
2185 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2186
2187         * config/m68hc11/m68hc11.c: Include dataflow header file.
2188         (m68hc11_reorg): Port to dataflow.
2189
2190 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
2191
2192         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
2193         (struct df_problem.free_blocks_on_set_blocks): New field.
2194         (struct dataflow.optional_p): New field.
2195         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
2196         (df_live_set_all_dirty): New function.
2197         * df-scan.c (df_scan_alloc): Initialize optional_p.
2198         (problem_SCAN): Initialize free_blocks_on_set_blocks.
2199         * df-core.c (df_set_blocks): Removed use of
2200         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
2201         df_problem.free_blocks_on_set_blocks to determine which blocks are
2202         recycled.
2203         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
2204         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
2205         uses dataflow.optional_p to determine if problem should be
2206         deleted.
2207         (rest_of_handle_df_initialize): Only start live problem if 
2208         -02 or above.
2209         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
2210         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
2211         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
2212         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
2213         problem_NOTE):  Initialize free_blocks_on_set_blocks.
2214         (df_lr_bb_local_compute): Recompute luids if df_live problem is
2215         not active.
2216         (df_live_set_all_dirty, df_note_alloc): New function.
2217         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
2218         df_get_live_*.
2219         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
2220         * postreload.c (reload_combine): Ditto.
2221         * cse.c (cse_extended_basic_block): Ditto.
2222         * regmove.c (mark_flags_life_zones): Ditto.
2223         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
2224         erase_matching_seqs): Ditto.
2225         * bt-load.c (compute_defs_uses_and_gen): Ditto.
2226         * integrate (allocate_initial_values): Ditto.
2227         * combine.c (reg_dead_at_p): Ditto.
2228         * resource.c (mark_target_live_regs): Ditto.
2229         * sched-rgn.c (check_live_1, update_live_1): Ditto.
2230         * config/sh/sh.c (find_r0_life_regions): Ditto.
2231         * global.c (rest_of_handle_global_alloc): Only add back df_live
2232         for -O > 1.
2233         * local-alloc.c (rest_of_handle_local_alloc): Only remove
2234         df_live for -O > 1.
2235         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
2236         df_get_live_*.
2237         (if_convert): Make sure df_live is there at -O == 1.
2238         (pass_if_after_combine): Cleanup flags.
2239         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
2240         is there at -O == 1.
2241         
2242 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
2243
2244         * config/arm/arm.c (arm_get_frame_offsets): Set
2245         offsets->locals_base to avoid negative stack size.
2246         (thumb1_expand_prologue): Assert on negative stack size.
2247
2248 2007-04-19  Sebastian Pop  <sebpop@gmail.com>
2249
2250         PR tree-optimization/32367
2251         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
2252         of the chrec has no evolution in that loop.
2253         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
2254
2255 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
2256
2257         * config/xtensa/xtensa.c: Include "df.h".
2258         (xtensa_builtin_saveregs): Use adjust_address instead of
2259         change_address.
2260         (xtensa_va_start): Invoke make_tree with sizetype for
2261         expand_builtin_saveregs and then convert the result to a pointer.
2262         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
2263         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
2264         Subtract argument size from index value as integers and then use
2265         POINTER_PLUS_EXPR to add the result to the array address.
2266         
2267 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2268
2269         PR target/32335
2270         * config/m32c/m32c.c: Include dataflow header file.
2271         (m32c_emit_prologue): Adjust for prologue insn change.
2272         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
2273         once inside a PARALLEL. Assume frame size passed in operand 0
2274         includes space to save the fb register.
2275         (prologue_enter_24): Likewise.
2276         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
2277
2278 2007-06-19  David Daney  <ddaney@avtrex.com
2279
2280         PR target/32313
2281         * config/mips/mips.md (cprestore): Mark $gp as used.
2282
2283 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2284
2285         PR target/32369
2286         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
2287         (frv_ifcvt_modify_insn): Likewise.
2288
2289 2007-06-19  Richard Guenther  <rguenther@suse.de>
2290
2291         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
2292         only handle positive offsets that fit in a HOST_WIDE_INT.
2293
2294 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
2295
2296         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
2297         result of rsqrt insn for zero input argument to avoid NaN.
2298
2299 2007-06-19  Richard Guenther  <rguenther@suse.de>
2300
2301         PR middle-end/31950
2302         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
2303
2304 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
2305
2306         PR tree-optimization/32353
2307         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
2308
2309 2007-06-19  Nick Clifton  <nickc@redhat.com>
2310
2311         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
2312
2313 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
2314
2315         PR target/32389
2316         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
2317         * config/i386/i386.c (assign_386_stack_local): Assert that
2318         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
2319         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
2320         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
2321         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
2322
2323 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
2324
2325         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
2326
2327 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
2328
2329         PR rtl-optimization/32321
2330         * gcse.c (replace_store_insn): Update the note before
2331         calling emit_insn_after.
2332
2333 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
2334
2335         PR middle-end/32355
2336         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
2337         cse_main.
2338         * df-problems.c (df_note_bb_compute): Fix dumping info.
2339         
2340 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
2341
2342         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
2343         insn with emit_jump_insn.
2344
2345 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
2346
2347         PR tree-optimization/32383
2348         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
2349         * targhooks.h (default_builtin_reciprocal): Update prototype.
2350         * target.h (struct gcc_target): Update builtin_reciprocal.
2351         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
2352         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
2353         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
2354         when fndecl is in BUILT_IN_MD class.
2355         (execute_convert_to_rsqrt): Ditto.
2356
2357         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
2358         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
2359         Convert BUILT_IN_SQRTF code only  when md_fn is false.
2360
2361 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2362
2363         * bt-load.c (move_btr_def): Fix the order of arguments
2364         to validate_replace_rtx.
2365
2366 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
2367
2368         * config/m68k/m68k-devices.def: Add 54450..54455.
2369
2370 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
2371
2372         PR rtl-optimization/32366
2373         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
2374         FLOAT_EXTEND]: Prevent non-scalar modes from entering
2375         significand_size.
2376
2377 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
2378
2379         PR middle-end/32349
2380         * modulo-sched (generate_reg_moves): Added rescan parameter and if
2381         this is true, rescan insn being modified.
2382         (sms_schedule): Added rescan parameter.
2383         (rest_of_handle_sms): Moved freeing of dominance info to before
2384         getting out of cfg_layout.
2385         
2386 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
2387
2388         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
2389         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
2390         appropriate.
2391
2392         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
2393         FL_CF_EMAC from the entry for isac.
2394
2395         * config/m68k/predicates.md (const_call_operand): Adjust comment.
2396         (const_sibcall_operand): New.
2397         (sibcall_operand): Use it.
2398         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
2399         (m68k_isas): ISAC does not imply FPU or EMAC.
2400         (override_options): Add ISA_C logic for symbolic jump & call.
2401
2402 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
2403
2404         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
2405         return mode from the builtin itself.
2406         (sparc_fold_builtin): Fix cast of zero constant.
2407
2408 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
2409
2410         * targhooks.c (default_builtin_reciprocal): New default target hook.
2411         * targhooks.h (default_builtin_reciprocal): Add prototype.
2412         * hooks.c (hook_tree_tree_bool_null): Remove hook.
2413         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
2414         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
2415         default_builtin_reciprocal.
2416
2417 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
2418
2419         PR middle-end/31723
2420         * hooks.c (hook_tree_tree_bool_null): New hook.
2421         * hooks.h (hook_tree_tree_bool_null): Add prototype.
2422         * tree-pass.h (pass_convert_to_rsqrt): Declare.
2423         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
2424         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
2425         and convert it to reciprocal a*rfunc(b).
2426         (execute_convert_to_rsqrt): New function.
2427         (gate_convert_to_rsqrt): New function.
2428         (pass_convert_to_rsqrt): New pass definition.
2429         * target.h (struct gcc_target): Add builtin_reciprocal.
2430         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
2431         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
2432         TARGET_BUILTIN_RECIPROCAL.
2433         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
2434
2435         * config/i386/i386.h (TARGET_RECIP): New define.
2436         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
2437         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2438         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2439         and not optimizing for size.
2440         (*rcpsf2_sse): New insn pattern.
2441         (*rsqrtsf2_sse): Ditto.
2442         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
2443         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2444         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2445         and not optimizing for size.
2446         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
2447         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2448         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2449         and not optimizing for size.
2450         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
2451         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2452         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2453         and not optimizing for size.
2454         (*sse_rsqrtv4sf2): Do not export.
2455         (sqrtv4sf2): Ditto.
2456         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
2457         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2458         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2459         and not optimizing for size.
2460         (sqrtv4sf2): Ditto.
2461         * config/i386/i386.opt (mrecip): New option.
2462         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
2463         (ix86_emit_swsqrtsf): Ditto.
2464         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
2465         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
2466         builtin definition.
2467         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
2468         ix86_expand_unop1_builtin.
2469         (ix86_emit_swdivsf): New function.
2470         (ix86_emit_swsqrtsf): Ditto.
2471         (ix86_builtin_reciprocal): New function.
2472         (TARGET_BUILTIN_RECIPROCAL): Use it.
2473         (ix86_vectorize_builtin_conversion): Rename from
2474         ix86_builtin_conversion.
2475         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
2476         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
2477         "i386 and x86_64 Options" section.
2478         (Intel 386 and AMD x86_64 Options): Document -mrecip.
2479
2480 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
2481             Zdenek Dvorak <dvorakz@suse.cz>
2482             Richard Guenther  <rguenther@suse.de>
2483             Kaz Kojima  <kkojima@gcc.gnu.org>
2484
2485         * tree-vrp.c (compare_values_warnv): Convert val2 to
2486         the type of val1.
2487         (extract_range_from_assert): Create
2488         POINTER_PLUS_EXPR for pointer types.
2489         (extract_range_from_binary_expr): Handle
2490         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
2491         for pointer types.
2492         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
2493         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
2494         POINTER_PLUS_EXPR as PLUS_EXPR.
2495         (number_of_iterations_lt_to_ne):
2496         For pointer types, use sizetype when
2497         creating MINUS_EXPR/PLUS_EXPRs.
2498         (assert_loop_rolls_lt): For pointer types, use sizetype when
2499         creating MINUS_EXPR/PLUS_EXPRs.
2500         (number_of_iterations_le): Likewise.
2501         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
2502         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
2503         like PLUS_EXPR and MINUS_EXPR.
2504         * tree-pretty-print.c (dump_generic_node): Handle
2505         POINTER_PLUS_EXPR.
2506         (op_prio): Likewise.
2507         (op_symbol_1): Likewise.
2508         * optabs.c (optab_for_tree_code): Likewise.
2509         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
2510         specially.
2511         * tree-tailcall.c (process_assignment): Mention
2512         POINTER_PLUS_EXPR in a TODO comment.
2513         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
2514         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
2515         not used with a pointer and an integer type.
2516         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
2517         increment using chrec_convert_rhs instead of chrec_convert.
2518         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
2519         PLUS_EXPR except for the right hand side's type will be
2520         sizetype.
2521         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
2522         (fold_used_pointer_cast): Kill.
2523         (pointer_offset_p): Kill.
2524         (fold_used_pointer): Kill.
2525         (pointer_used_p): Kill.
2526         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
2527         call fold_used_pointer.
2528         (instantiate_parameters_1): Convert the increment
2529         using chrec_convert_rhs instead of chrec_convert.
2530         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
2531         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
2532         instead of PLUS_EXPR.
2533         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
2534         PLUS_EXPR for pointers.
2535         (std_gimplify_va_arg_expr): Likewise.
2536         (fold_builtin_memory_op): Likewise.
2537         (fold_builtin_strstr): Likewise.
2538         (fold_builtin_strchr): Likewise.
2539         (fold_builtin_strrchr): Likewise.
2540         (fold_builtin_strpbrk): Likewise.
2541         (expand_builtin_memory_chk): Likewise.
2542         (fold_builtin_memory_chk): Likewise.
2543         (std_expand_builtin_va_start): Use
2544         sizetype for the call to make_tree and then convert
2545         to the pointer type.
2546         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
2547         instead of PLUS_EXPR for adding to a pointer.
2548         (std_gimplify_va_arg_expr): Use fold_build2 for
2549         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
2550         the operands to sizetype first and then cast the BIT_AND_EXPR
2551         back to the pointer type.
2552         * fold-const.c (build_range_check): Handle pointer types
2553         specially.
2554         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
2555         of PLUS_EXPR's. Make sure the offset is converted to
2556         sizetype.
2557         (try_move_mult_to_index): Strip the NOPs from the offset.
2558         Remove code argument and replace all uses with PLUS_EXPR.
2559         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
2560         specially. Don't use a pointer type for MINUS_EXPR.
2561         (fold_unary): Handle for (T1)(X op Y),
2562         only p+ as that is the only as that can be handled for
2563         binary operators now.
2564         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
2565         POINTER_PLUS_EXPR.
2566         <case PLUS_EXPR>: Add folding of PTR+INT into
2567         PTR p+ INT.
2568         Don't call try_move_mult_to_index.
2569         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
2570         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
2571         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
2572         Don't call try_move_mult_to_index.
2573         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
2574         (tree_expr_nonzero_p): Likewise.
2575         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
2576         of PLUS_EXPR for the complex expression folding.
2577         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
2578         first chrec is a pointer type, then the second should
2579         be sizetype and not the first's type.
2580         For POINTER_PLUS_EXPR, use a different right hand side type.
2581         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2582         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
2583         different right hand side type.
2584         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2585         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
2586         instead of PLUS_EXPR.
2587         When either operand is zero, convert the other operand.
2588         (chrec_apply): Use chrec_convert_rhs
2589         on the argument x instead of chrec_convert.
2590         (reset_evolution_in_loop): For pointer types, the new_evol
2591         should be sizetype.
2592         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
2593         different right hand side type.
2594         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2595         (chrec_convert_rhs): New function.
2596         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
2597         different right hand side type.
2598         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2599         * tree-chrec.h (chrec_convert_rhs): New prototype.
2600         (build_polynomial_chrec): For pointer types, the right hand
2601         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
2602         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
2603         Remove subtraction case as it is always addition now.
2604         Make sure the offset is converted to sizetype.
2605         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
2606         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
2607         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
2608         PLUS_EXPR in pointer type.
2609         Handle POINTER_PLUS_EXPR.
2610         (tree_to_aff_combination): Likewise.
2611         (force_expr_to_var_cost): Likewise.
2612         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
2613         instead of PLUS_EXPR for pointers.
2614         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
2615         instead of PLUS_EXPR of pointer types.
2616         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
2617         as PLUS_EXPR.
2618         (check_va_list_escapes): Likewise.
2619         (check_all_va_list_escapes): Likewise.
2620         * dwarf2out.c (loc_descriptor_from_tree_1):
2621         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
2622         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
2623         (string_constant): Likewise.
2624         * tree-ssa-address.c (tree_mem_ref_addr): When adding
2625         the offset to the base, use POINTER_PLUS_EXPR.
2626         (add_to_parts): Convert the index to sizetype.
2627         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
2628         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
2629         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
2630         Offset only holds something for PLUS_EXPR.
2631         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
2632         a PLUS_EXPR.
2633         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
2634         and not PLUS_EXPR.
2635         (analyze_accesses_for_modify_stmt): Likewise.
2636         Remove comment about the type being integral type as it is
2637         wrong now.
2638         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
2639         PLUS_EXPR.
2640         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
2641         and not PLUS_EXPR.
2642         Correct the type which the artimentic is done in (is now
2643         sizetype).
2644         Reindent one loop.
2645         * tree-data-ref.c (split_constant_offset): Handle
2646         POINTER_PLUS_EXPR
2647         * tree-affine.c (tree_to_aff_combination): Likewise.
2648         * c-typeck.c (build_unary_op): For pointers create the increment
2649         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
2650         for pointers.
2651         * gimplify.c (gimplify_self_mod_expr): Create a
2652         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2653         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
2654         * tree.def (POINTER_PLUS_EXPR): New tree code.
2655         * tree-predcom.c (ref_at_iteration): If we have a pointer
2656         type do the multiplication in sizetype.
2657         * tree-mudflap.c (mf_xform_derefs_1): Create a
2658         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2659         * tree-ssa-forwprop.c 
2660         (forward_propagate_addr_into_variable_array_index):
2661         Don't expect there to be a cast for the index as that
2662         does not exist anymore.
2663         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
2664         instead of PLUS_EXPR.
2665         Don't check for the first operand of the POINTER_PLUS_EXPR
2666         was the index as it cannot be.
2667         Call forward_propagate_addr_into_variable_array_index with
2668         the SSA_NAME instead of the statement.
2669         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
2670         (compare_constant): Likewise.
2671         (copy_constant): Likewise.
2672         (compute_reloc_for_constant): Likewise.
2673         (output_addressed_constants): Likewise.
2674         (initializer_constant_valid_p): Likewise.
2675         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
2676         Convert the MIN/MAX of the inner type to the outer
2677         type before comparing them.
2678         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
2679         POINTER_PLUS_EXPR instead of PLUS_EXPR.
2680         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
2681         of PLUS_EXPR for pointers.
2682         * tree-inline.c (estimate_num_insns_1): Handle
2683         POINTER_PLUS_EXPR.
2684         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
2685         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2686         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
2687         instead of PLUS_EXPR for the pointer increment statement.
2688         (vect_update_ivs_after_vectorizer): For pointer types, create
2689         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
2690         MULT_EXPR in sizetype.
2691         (vect_gen_niters_for_prolog_loop): Add a cast when creating
2692         byte_misalign.
2693         * tree-object-size.c (plus_expr_object_size): Handle
2694         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
2695         code which is trying to figure out which side is a pointer and 
2696         is the index.
2697         (check_for_plus_in_loops_1): Likewise.
2698         (check_for_plus_in_loops): Likewise.
2699         * c-common.c (pointer_int_sum): Create a
2700         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2701         * tree-ssa-structalias.c (handle_ptr_arith): Handle
2702         only POINTER_PLUS_EXPR.  Removing all the extra
2703         code which is trying to figure out which side is a pointer and 
2704         is the index.
2705         * tree-cfg.c (verify_expr): Add extra checking for pointers and
2706         PLUS_EXPR and MINUS_EXPR.
2707         Also add checking to make sure the operands of POINTER_PLUS_EXPR
2708         are correct.
2709         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
2710         with make_tree, instead of a pointer type.
2711         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
2712         for pointers instead of PLUS_EXPR.
2713         (s390_gimplify_va_arg): Likewise.
2714         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
2715         instead of PLUS_EXPR when doing addition on pointer
2716         types.  Use sizetype for the second operand.
2717         (spu_gimplify_va_arg_expr): Likewise.
2718         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
2719         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
2720         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
2721         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
2722         for the pointer addition and also use size_int/sizetype
2723         for the offset.
2724         (ix86_gimplify_va_arg): Likewise.
2725         Perform BIT_AND_EXPR on sizetype arguments.
2726         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
2727         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
2728         for the pointer additions and also use size_int for the offsets.
2729         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
2730         additions and also use size_int for the offsets.  Perform
2731         BIT_AND_EXPR on sizetype arguments.
2732         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
2733         POINTER_PLUS_EXPR for pointers and create the
2734         BIT_AND_EXPR in sizetype.
2735         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
2736         instead of PLUS_EXPR for pointer addition.
2737         (rs6000_va_start): Likewise.
2738         Also use sizetype for the offset.
2739         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
2740         as PLUS_EXPR/MINUS_EXPR.
2741         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
2742         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
2743         Don't use BIT_AND_EXPR on a pointer type, convert the
2744         expression to sizetype first.
2745         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
2746         for pointers.
2747         (mips_gimplify_va_arg_expr): Likewise.
2748         Don't create BIT_AND_EXPR in a pointer type.
2749
2750 2007-06-15  Eric Christopher  <echristo@apple.com>
2751
2752         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
2753         (x86_64-*-darwin*): Ditto.
2754         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
2755         for above.
2756
2757 2007-06-15  Matthew Wilcox <matthew@wil.cx>
2758
2759         * doc/extend.texi: Document behavior of __attribute__((aligned))
2760         on typedefs.
2761
2762 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
2763
2764         * rtlanal.c (note_stores): Improve documentation.
2765
2766 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
2767
2768         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
2769         LOCAL_LABEL_PREFIX): Delete.
2770         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
2771         (bfin_internal_label): Delete.
2772
2773 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
2774
2775         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
2776         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
2777         otherwise define to LIBGCC2_TF_CEXT.
2778         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
2779         (LIBGCC_TF_CEXT): Ditto.
2780         (TF_SIZE): Ditto.
2781
2782 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
2783
2784         PR rtl-optimization/32339
2785         * df-scan.c (df_uses_record): Don't modify flags but just add to
2786         it for df_ref_record.
2787
2788 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2789
2790         * tree-mudflap.c: Fix whitespace issues.
2791
2792 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
2793
2794         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
2795
2796 2007-06-14  Eric Christopher  <echristo@apple.com>
2797
2798         * config/i386/sse.md (movdi_to_sse): Rewrite body.
2799         (movv4sf): Use gcc_unreachable instead of abort.
2800
2801 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
2802
2803         PR target/32268
2804         * config/i386/sfp-machine.h (CMPtype): New define.
2805         (mach stubs): Use CMPtype instead of int as a return type.
2806
2807 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
2808
2809         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
2810         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
2811         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
2812         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
2813         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
2814         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
2815         config/soft-fp/soft-fp.h: Update from glibc CVS.
2816
2817 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
2818
2819         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
2820
2821 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2822
2823         PR target/32341
2824         * config/v850/v850.c: Include dataflow header file.
2825         (substitute_ep_register): Fix typo.
2826
2827 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
2828
2829         * configure.ac: Fix earlier checkin.
2830         * configure: Regenerated.
2831
2832 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
2833
2834         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
2835         * aclocal.m4: Regenerate.
2836         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
2837         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
2838         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
2839         * configure: Regenerate.
2840         * Makefile.in (LOOSE_WARN): Subst loose_warn.
2841
2842         * Makefile.in (quickstrap): Build libgcc too.
2843
2844 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
2845
2846         * configure.ac: Add --enable-checking=df.  Explicitly mention that
2847         the variables are initialized as for "release".
2848         * df-core.c: Use it.
2849         * configure: Regenerate.
2850         * config.in: Regenerate.
2851
2852 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
2853
2854         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
2855         validate_replace_rtx instead of replace_rtx.
2856         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
2857
2858 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
2859
2860         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
2861         (DWARF2_UNWIND_INFO): Override default if configured with
2862         SJLJ EH disabled.
2863         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
2864         (ENDFILE_SPEC): Add crtend.o.
2865         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
2866         (ENDFILE_SPEC): Add crtend.o.
2867         (TARGET_USE_JCR_SECTION): Define.
2868         (MD_UNWIND_SUPPORT): Define for 32-bit target.
2869
2870         * config/i386/cygming-crtbegin.c: New file.
2871         * config/i386/cygming-crtend.c: New file.
2872
2873 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
2874
2875         * config/i386/w32-unwind.h: New file.
2876
2877 2007-06-13  Eric Christopher  <echristo@apple.com>
2878
2879         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
2880         the user set a value below STACK_BOUNDARY.
2881
2882 2007-06-13  Thiemo Seufer  <ths@networkno.de>
2883
2884         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
2885         imply -lpthread for -pthread.
2886
2887 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
2888
2889         * basic-block.h: Remove the prototype for
2890         free_basic_block_vars.
2891         * cfglayout.h: Remove the prototype for
2892         insn_locators_initialize.
2893         * tree.h: Remove the prototype for emit_line_note.
2894
2895         * tree-ssa-pre.c (mergephitemp): Remove.
2896         (init_pre): Don't use mergephitemp.
2897
2898 2007-06-13  Eric Christopher  <echristo@apple.com>
2899
2900         * config/i386/i386.c (override_options): If we've specified
2901         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
2902
2903 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
2904
2905         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
2906         is defined.
2907
2908 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
2909
2910         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
2911         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
2912         (eh_store_handler): New pattern.
2913         (eh_return): Emit it instead of a plain move.
2914
2915 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
2916
2917         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
2918         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
2919         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
2920         def_builtin_const.
2921
2922 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
2923
2924         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
2925         (find_next_insn_start, find_load): New functions.
2926         (bfin_reorg): Use them to deal with the fact that parallel insns are
2927         no longer represented as a SEQUENCE.
2928
2929 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
2930
2931         * config/sparc/sparc.c (sparc_override_options): Initialize
2932         fpu mask correctly.
2933
2934 2007-06-13  Dave Korn  <dave.korn@artimi.com>
2935
2936         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
2937         df_get_live_out.
2938
2939 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
2940
2941         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
2942         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
2943         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
2944         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
2945         tree-vect-transform.c: Fix comment typos.  Follow spelling
2946         conventions.
2947
2948 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
2949
2950        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
2951        to the exit block use set.
2952        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
2953        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
2954        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
2955
2956 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
2957
2958         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
2959         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
2960         to indicate an error.
2961         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
2962         New functions.
2963         (dbg_cnt_process_opt): Print an error on a bad argument.
2964         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
2965         * common.opt (-fdbg-cnt-list): New.
2966         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
2967
2968 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
2969
2970         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
2971         flag on ref-all pointers.
2972
2973 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2974
2975         PR middle-end/31579
2976         * expr.c (expand_expr_addr_expr_1): Call expand_expr
2977         for the offset with the modifier as EXPAND_INITIALIZER
2978         if the modifier is EXPAND_INITIALIZER.
2979         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
2980         a register if we had an overflow.
2981
2982 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2983
2984         * real.c (real_isfinite): New.
2985         (real_sqrt): Use it.
2986         * real.h (real_isfinite): New.
2987         * builtins.c: Use it.
2988
2989 2007-06-12  Ian Lance Taylor  <iant@google.com>
2990             Daniel Berlin  <dberlin@dberlin.org>
2991
2992         PR libstdc++/29286
2993         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
2994         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
2995         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
2996         (DECL_NO_TBAA_P): Define.
2997         (struct tree_decl_common): Add no_tbaa_flag field.
2998         * tree-ssa-structalias.c (struct variable_info): Add
2999         no_tbaa_pruning field.
3000         (new_var_info): Initialize no_tbaa_pruning field.
3001         (unify_nodes): Copy no_tbaa_pruning field.
3002         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
3003         (dump_solution_for_var): Print no_tbaa_pruning flag.
3004         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
3005         callers.
3006         (compute_tbaa_pruning): New static function.
3007         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
3008         Call compute_tbaa_pruning.
3009         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
3010         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
3011         * gimple-low.c (lower_stmt): Likewise.
3012         * tree-gimple.c (is_gimple_stmt): Likewise.
3013         * tree-ssa-operands.c (get_expr_operands): Likewise.
3014         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
3015         * tree-inline.c (estimate_num_insns_1): Likewise.
3016         (copy_result_decl_to_var): Likewise.
3017         * expr.c (expand_expr_real_1): Likewise.
3018         * tree-pretty-print.c (dump_generic_node): Likewise.
3019         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
3020         * omp-low.c (omp_copy_decl_2): Likewise.
3021         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
3022         * doc/c-tree.texi (Expression trees): Document
3023         CHANGE_DYNAMIC_TYPE_EXPR.
3024
3025 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3026
3027         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
3028         with !HONOR_NANS and !HONOR_INFINITIES.
3029         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
3030
3031 2007-06-12  Tristan Gingold  <gingold@adacore.com>
3032
3033         * gcov.c: Comments updated.
3034         (source_info): Add file_time field.
3035         (source_index): New variable.
3036         (mutiple_files): New variable.
3037         (generate_results): New function extracted from process_file.
3038         (process_file): Save and restore chain of functions, generate
3039         results and free structures only if not merging results.
3040         (release_structures): File names are now freed in create_file_names
3041         (create_file_names): Free previous file names.
3042         (find_source): File date is now read here and modifications in
3043         source files is checked here.
3044         (read_graph_file): Only reverse order of functions for the current
3045         object file.
3046         (make_gcov_file_name): Do not generate long names if input_name is
3047         NULL.
3048         (output_lines): If merging results do not display graph, data and
3049         runs informations.
3050         Checking source file modification is done in find_source.
3051
3052         * doc/gcov.texi: Append an s to sourcefile.
3053
3054 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
3055
3056         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
3057         (forced_nop): New pattern.
3058         * config/bfin/bfin.c: Include "df.h".
3059         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
3060         (bfin_discover_loop): Use df_get_live_in instead of
3061         global_live_at_start.
3062         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
3063         df_analyze when done.
3064         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
3065         the insns.  Use QImode for the final insn in a bundle.  Call
3066         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
3067         gen_nop.
3068         (reorder_var_tracking_notes): New function.
3069         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
3070         update_life_info.  Call df_analyze after scheduling and bundle
3071         generation.  Call reorder_var_tracking_notes if generating these
3072         notes.  Call df_finish_pass at the end.
3073
3074 2007-06-12  Dirk Mueller  <dmueller@suse.de>
3075
3076         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
3077         a comparison, not an assignment.
3078
3079 2007-06-12  Olivier Hainque  <hainque@adacore.com>
3080
3081         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
3082         Request walking the subtrees only, leaving the current is_lhs/val_only
3083         untouched.
3084         (convert_non_local_reference): Likewise.
3085
3086 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
3087
3088         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
3089
3090 2007-06-12  Richard Guenther  <rguenther@suse.de>
3091
3092         PR tree-optimization/15353
3093         PR tree-optimization/31657
3094         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
3095         * timevar.def: Add TV_TREE_IFCOMBINE.
3096         * tree-pass.h (pass_tree_ifcombine): Declare.
3097         * tree-ssa-ifcombine.c: New file.
3098         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
3099         * tree-flow.h (blocks_in_phiopt_order): Declare.
3100         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
3101         (tree-ssa-ifcombine.o): New dependencies.
3102
3103 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
3104
3105         PR rtl-optimization/32293
3106         * combine.c (simplify_if_then_else): Truncate return from
3107         nonzero_bits() to correct mode.
3108
3109 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
3110
3111         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
3112         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
3113
3114 2007-06-11  Diego Novillo  <dnovillo@google.com>
3115
3116         * Makefile.in (reload1.o-warn): Remove.
3117
3118 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
3119
3120         * combine.c (subst): Use reg_overlap_mentioned_p
3121         instead of comparing register numbers directly.
3122
3123 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3124
3125         * reload1.c (mark_home_live_1): Use the mode parameter.
3126
3127 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3128
3129         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
3130         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
3131         word "deferred".
3132         * df-core.c: Ditto.
3133
3134 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
3135
3136         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
3137
3138 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
3139
3140         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
3141         from integer registers.
3142         (FP mode splitters): Handle TFmode.
3143
3144 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
3145
3146         * tree-ssa-structalias.c (find_what_p_points_to): Return false
3147         for ref-all pointers that point-to anything.
3148
3149 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
3150
3151         * config/arm/arm.c (arm_output_dwarf_dtprel,
3152         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
3153
3154 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
3155
3156         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
3157         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
3158         to memory moves.
3159
3160 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
3161
3162         * gcc/tree.c (signed_or_unsigned_type_for): New.
3163         (unsigned_type_for): Use signed_or_unsigned_type_for.
3164         (signed_type_for): Use signed_or_unsigned_type_for.
3165         * gcc/tree.h (signed_or_unsigned_type_for): New.
3166         (get_signed_or_unsigned_type): Remove.
3167         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
3168         lang_hooks.types.signed_type
3169         (size_diffop): Likewise.
3170         (all_ones_mask_p): Likewise.
3171         (build_range_check): Likewise.
3172         (fold_cond_expr_with_comparison): Likewise.
3173         (fold_cond_expr_with_comparison): Likewise.
3174         (unextend): Likewise.
3175         (extract_muldiv_1): Likewise.
3176         (fold_single_bit_test_into_sign_test): Likewise.
3177         (fold_binary): Likewise.
3178         (fold_ternary): Likewise.
3179         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
3180         instead of get_signed_or_unsigned_type.
3181         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
3182         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
3183         * gcc/expr.c (signed_or_unsigned_type_for): Use
3184         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
3185         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
3186         (lhd_signed_or_unsigned_type): Remove.
3187         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
3188         signed_or_unsigned_type.
3189         (lhd_signed_or_unsigned_type): Remove.
3190         * gcc/expmed.c (make_tree): Use signed_type_for instead of
3191         lang_hooks.types.signed_type.
3192         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
3193         c_common_signed_type instead of lang_hooks.types.signed_type.
3194         (c_common_unsigned_type): New.
3195         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
3196         (shorten_compare): Use c_common_unsigned_type instead of
3197         c_common_signed_or_unsigned_type.
3198         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
3199         unsigned_type_for.
3200         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
3201         lang_hooks.types.signed_type.
3202         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
3203         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
3204         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
3205         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
3206         instead of unsigned_type_for.
3207         * gcc/c-decl.c (groakdeclarator): Likewise.
3208         * gcc/c-typeck.c (convert_for_assignment): Likewise.
3209         * gcc/c-common.h (c_common_unsigned_type): New.
3210
3211 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
3212
3213         PR target/32280
3214         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
3215         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
3216
3217 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
3218
3219         PR middle-end/32279
3220         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
3221         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
3222
3223 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
3224             Sebastian Pop  <sebpop@gmail.com>
3225
3226         * lambda-code.c (remove_iv): New.
3227         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
3228
3229 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
3230
3231         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
3232         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
3233         * tree-ssa-loop-prefetch.c: Include optabs.h.
3234         (FENCE_FOLLOWING_MOVNT): New macro.
3235         (struct mem_ref): Add independent_p and storent_p fields.
3236         (record_ref): Initalize the new fields.
3237         (gather_memory_references_ref): Return true if the reference
3238         could be analysed.
3239         (gather_memory_references): Check whether all memory accesses
3240         in loop were recorded.
3241         (should_issue_prefetch_p): Return false for nontemporal stores.
3242         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
3243         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
3244         (determine_loop_nest_reuse): Detect independent memory references.
3245         (loop_prefetch_arrays): Call mark_nontemporal_stores.
3246         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
3247         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
3248         * config/i386/i386.h (x86_mfence): Declare.
3249         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
3250         * config/i386/i386.c (x86_mfence): New variable.
3251         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
3252
3253         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
3254         * optabs.c (init_optabs): Initialize storent_optab.
3255         * optabs.h (enum optab_index): Add OTI_storent.
3256         (storent_optab): Declare.
3257         * genopinit.c (optabs): Add initialization for storent_optab.
3258         * tree.h (MOVE_NONTEMPORAL): New macro.
3259         * expr.c (expand_assignment, store_expr, store_constructor_field,
3260         store_constructor, store_field, expand_expr_real_1): Propagate
3261         nontemporality of the expanded store.
3262         (emit_storent_insn): New function.
3263         * expr.h (expand_assignment, store_expr): Declaration changed.
3264         * function.c (assign_parm_setup_reg): Pass false as nontemporality
3265         to expand_assignment.
3266         * stmt.c (expand_asm_expr): Ditto.
3267         * calls.c (initialize_argument_information): Pass false as
3268         nontemporality to store_expr.
3269         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
3270         storentsi): New.
3271
3272 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
3273
3274         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
3275         parameter, use it.
3276         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
3277
3278 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
3279
3280         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
3281         and allow DECL_P here.
3282
3283 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
3284
3285         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
3286         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
3287         track of the size of the expression.
3288         * cfghooks.c (merge_blocks): Remove block from loops structure only
3289         after call of the merge_blocks hook.
3290
3291 2007-06-09  Tom Tromey  <tromey@redhat.com>
3292
3293         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
3294         (deprecated_state): Removed.
3295         (start_decl): Update.
3296         (enum deprecated_states): Moved earlier.
3297         (groktypename): Update.
3298         (push_parm_decl): Likewise.
3299         (grokfield): Likewise.
3300         (start_function): Likewise.
3301
3302 2007-06-09  Ian Lance Taylor  <iant@google.com>
3303
3304         PR tree-optimization/32169
3305         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
3306         CONVERT_EXPR, check whether min and max both converted to an
3307         overflow infinity representation.
3308
3309 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
3310
3311         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
3312         not inserted on the edge.
3313
3314 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
3315
3316         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
3317         instructions if they are supported.
3318         (__divsi3, __umodsi3, __modsi3): Likewise.
3319         (__ashldi3, __ashrdi3, __lshrdi3): New.
3320         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
3321
3322 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
3323             Tony Linthicum <tony.linthicum@amd.com>
3324
3325         * doc/invoke.texi: Add fvect-cost-model flag.
3326         * common.opt (fvect-cost-model): New flag.
3327         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
3328         cost fields in stmt_vec_info struct for STMT.
3329         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
3330         fields in stmt_vec_info struct and access functions for the same.
3331         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
3332         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
3333         load, store and vector to scalar operation.
3334         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
3335         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
3336         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
3337         (TARG_VEC_STORE_COST): Define cost of vector store.
3338         (vect_estimate_min_profitable_iters): Define new function.
3339         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
3340         check to evaluate if loop iterations are less than minimum profitable
3341         iterations determined by cost model or minimum vect loop bound defined
3342         by user, whichever is more conservative.
3343         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
3344         run-time check to evaluate if loop iterations are less than minimum
3345         profitable iterations determined by cost model or minimum vect loop
3346         bound defined by user, whichever is more conservative.
3347         (vect_estimate_min_profitable_iterations): New function to estimate
3348         mimimimum iterartions required for vector version of loop to be
3349         profitable over scalar version.
3350         (vect_model_reduction_cost): New function.
3351         (vect_model_induction_cost): New function.
3352         (vect_model_simple_cost): New function.
3353         (vect_cost_strided_group_size): New function.
3354         (vect_model_store_cost): New function.
3355         (vect_model_load_cost): New function.
3356         (vectorizable_reduction): Call vect_model_reduction_cost during
3357         analysis phase.
3358         (vectorizable_induction): Call vect_model_induction_cost during
3359         analysis phase.
3360         (vectorizable_load): Call vect_model_load_cost during analysis phase.
3361         (vectorizable_store): Call vect_model_store_cost during analysis phase.
3362         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
3363         vectorizable_promotion, vectorizable_demotion): Call
3364         vect_model_simple_cost during analysis phase.
3365
3366 2007-06-08  Simon Baldwin  <simonb@google.com>
3367
3368         * reg-stack.c (get_true_reg): Readability change.  Moved default case
3369         label into direct switch statement scope.
3370
3371 2007-06-08  Simon Baldwin  <simonb@google.com>
3372
3373         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
3374         in gcc_assert() with '==' comparison.
3375
3376 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3377
3378         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
3379         TARGET_ABM handling of x86_popcnt variable.
3380
3381 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3382
3383         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
3384         __builtin_copysignq and __builtin_infq built-in functions.
3385
3386 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3387
3388         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
3389         SSE4.2 section.  Correct built-in function names in SSE4A section.
3390
3391 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3392
3393         PR tree-optimization/32243
3394         * tree-vect-transform.c (vectorizable_type_promotion): Move check
3395         for ncopies after ratio check between nunits_out and nunits_in.
3396         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
3397
3398 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
3399
3400         PR tree-optimization/32224
3401         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
3402         vectorization upon a non GIMPLE_MODIFY_STMT.
3403
3404 2007-06-08  Christian Bruel  <christian.bruel@st.com>
3405
3406         PR target/29953
3407         * config/sh/sh.md (doloop_end): New pattern and splitter.
3408         * loop-iv.c (simple_rhs_p): Check for hardware registers.
3409
3410 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
3411
3412         PR middle-end/32209
3413         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
3414         functions.
3415         (verify_dominators): Do not change dominance tree.
3416
3417 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3418
3419         * config/sh/constraints.md: New file.
3420         * config/sh/sh.c: Include tm-constrs.h.
3421         (reg_class_from_letter): Remove.
3422         (prepare_cbranch_operands): Use satisfies_constraint_*